[{"channel_id":1285566241,"post_id":4211,"date":1775413304000,"forwards":"4","views":"85","text":"\ud83d\udd25 <b>5 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/b>  <br><br>\u0412 \u043c\u0438\u0440\u0435 Java \u0435\u0441\u0442\u044c \u0441\u043e\u0442\u043d\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e <b>\u044d\u0442\u0438 5<\/b> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0445 \u043e\u0441\u0432\u043e\u0438\u0442\u0435, \u0432\u0430\u0448 \u043a\u043e\u0434 \u0441\u0442\u0430\u043d\u0435\u0442 <b>\u0447\u0438\u0449\u0435, \u0433\u0438\u0431\u0447\u0435 \u0438 \u043b\u0435\u0433\u0447\u0435 \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435<\/b>.  <br><br><br>1\ufe0f\u20e3 <b>Singleton<\/b>  <br>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043e\u0434\u043d\u0438\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c. \u041f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f <b>\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u044d\u0448\u0435\u0439<\/b>.  <br><br>\ud83d\udd39 <b>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 (Lazy Initialization, thread-safe)<\/b>:<pre>public class Singleton {<br>    private static volatile Singleton instance;<br>    private Singleton() {}<br>    public static Singleton getInstance() {<br>        if (instance == null) {<br>            synchronized (Singleton.class) {<br>                if (instance == null) {<br>                    instance = new Singleton();<br>                }<br>            }<br>        }<br>        return instance;<br>    }<br>}<\/pre>\u26a1 <b>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Spring Bean, Hibernate SessionFactory<\/b>.<br><br><br><br>2\ufe0f\u20e3 <b>Factory Method<\/b>  <br>\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443. \u041e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 <b>\u043c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/b> \u0441 \u043e\u0431\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439.  <br><br>\ud83d\udd39 <b>\u041f\u0440\u0438\u043c\u0435\u0440<\/b>:<pre>interface Product {<br>    void create();<br>}<br><br>class ConcreteProductA implements Product {<br>    public void create() { System.out.println(&quot;\u0421\u043e\u0437\u0434\u0430\u043d \u043f\u0440\u043e\u0434\u0443\u043a\u0442 A&quot;); }<br>}<br><br>class ProductFactory {<br>    public static Product createProduct(String type) {<br>        if (&quot;A&quot;.equals(type)) return new ConcreteProductA();<br>        throw new IllegalArgumentException(&quot;\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0442\u0438\u043f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430&quot;);<br>    }<br>}<\/pre>\u26a1 <b>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 JDBC (DriverManager.getConnection)<\/b>.<br><br><br><br>3\ufe0f\u20e3 <b>Builder<\/b>  <br>\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e. <b>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u0434\u043b\u0438\u043d\u043d\u044b\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u043c \u0441 \u043a\u0443\u0447\u0435\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/b>.  <br><br>\ud83d\udd39 <b>\u041f\u0440\u0438\u043c\u0435\u0440 (Lombok <\/b><code>@Builder<\/code><b> \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u0440\u043e\u0449\u0435!)<\/b>:<pre>@Builder<br>public class Car {<br>    private String model;<br>    private int year;<br>    private String engine;<br>}<br><br>Car car = Car.builder().model(&quot;Tesla&quot;).year(2024).engine(&quot;Electric&quot;).build();<\/pre>\u26a1 <b>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 StringBuilder, HttpRequest \u0432 Java 11+<\/b>.<br><br><br><br>4\ufe0f\u20e3 <b>Observer<\/b>  <br>\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445. \u0427\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 <b>GUI, event-driven \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445<\/b>.  <br><br>\ud83d\udd39 <b>\u041f\u0440\u0438\u043c\u0435\u0440 (\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c \u0437\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438)<\/b>:<pre>interface Observer {<br>    void update(String message);<br>}<br><br>class User implements Observer {<br>    private String name;<br>    public User(String name) { this.name = name; }<br>    public void update(String message) {<br>        System.out.println(name + &quot; \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435: &quot; + message);<br>    }<br>}<br><br>class Channel {<br>    private List&lt;Observer&gt; observers = new ArrayList&lt;&gt;();<br>    public void subscribe(Observer o) { observers.add(o); }<br>    public void notifyAll(String message) {<br>        for (Observer o : observers) { o.update(message); }<br>    }<br>}<\/pre>\u26a1 <b>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Spring Events, RxJava<\/b>.<br><br><br><br>5\ufe0f\u20e3 <b>Decorator<\/b>  <br>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. <b>\u0427\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u043f\u043e\u0442\u043e\u043a\u0430\u0445 IO<\/b>.  <br><br>\ud83d\udd39 <b>\u041f\u0440\u0438\u043c\u0435\u0440 (\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u043d\u0430\u0434 OutputStream)<\/b>:<pre>class LoggingOutputStream extends OutputStream {<br>    private OutputStream wrapped;<br>    public LoggingOutputStream(OutputStream wrapped) { this.wrapped = wrapped; }<br>    @Override<br>    public void write(int b) throws IOException {<br>        System.out.println(&quot;\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0431\u0430\u0439\u0442: &quot; + b);<br>        wrapped.write(b);<br>    }<br>}<\/pre>\u26a1 <b>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 BufferedReader, Logger, Spring Security Filters<\/b>.<br><br><br>\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0438\u0441\u0430\u0442\u044c <b>\u0433\u0438\u0431\u043a\u0438\u0439 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434<\/b>, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <b>\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/b>.<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":3324},{"channel_id":1285566241,"post_id":4210,"date":1775288296000,"views":"95","text":"<b>\ud83d\ude80 \u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 IT \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0432 Max<\/b><br><br><br><b>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, DevOps \ud83d\udccc<\/b><br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/i_odmin\">https:\/\/max.ru\/i_odmin<\/a> \u0412\u0441\u0435 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bash_srv\">https:\/\/max.ru\/bash_srv<\/a> Bash \u0421\u043e\u0432\u0435\u0442\u044b<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/sysadminof\">https:\/\/max.ru\/sysadminof<\/a> \u041a\u043d\u0438\u0433\u0438 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u043e\u0432, \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/i_odmin_book\">https:\/\/max.ru\/i_odmin_book<\/a> \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/i_devops\">https:\/\/max.ru\/i_devops<\/a> DevOps: \u041f\u0438\u0448\u0435\u043c \u043e Docker, Kubernetes \u0438 \u0434\u0440.<br><br><b>1C \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/odin1c_rus\">https:\/\/max.ru\/odin1c_rus<\/a> C\u0442\u0430\u0442\u044c\u0438, \u043a\u0443\u0440\u0441\u044b, \u0441\u043e\u0432\u0435\u0442\u044b, \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043a\u043e\u0434\u0430 1\u0421<br><b><br>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 C++\ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/cpp_lib\">https:\/\/max.ru\/cpp_lib<\/a> \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 C\/C++ \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<br><br><b>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Go\ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/golang_lib\">https:\/\/max.ru\/golang_lib<\/a> \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Go (Golang) \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<br><br><b>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 React\ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/react_lib\">https:\/\/max.ru\/react_lib<\/a> React<br><br><b>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Python \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/python_of\">https:\/\/max.ru\/python_of<\/a> Python \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u044f. <br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/BookPython\">https:\/\/max.ru\/BookPython<\/a> \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Python \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<br><br><b>Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\">https:\/\/max.ru\/bookjava<\/a> \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<br><br><b>GitHub \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/githublib\">https:\/\/max.ru\/githublib<\/a> \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0438\u0437 GitHub<br><br><b>\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (Data Base) \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/database_info\">https:\/\/max.ru\/database_info<\/a> \u0412\u0441\u0435 \u043f\u0440\u043e \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<br><br><b>\u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/frontend_1\">https:\/\/max.ru\/frontend_1<\/a> \u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0438 \u0434\u043b\u044f frontend \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<br><br><b>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/programmist_of\">https:\/\/max.ru\/programmist_of<\/a> \u041a\u043d\u0438\u0433\u0438 \u043f\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/proglb\">https:\/\/max.ru\/proglb<\/a> \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bfbook\">https:\/\/max.ru\/bfbook<\/a> \u041a\u043d\u0438\u0433\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432<br><br><b>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookflow\">https:\/\/max.ru\/bookflow<\/a> \u041b\u0435\u043a\u0446\u0438\u0438, \u0432\u0438\u0434\u0435\u043e\u0443\u0440\u043e\u043a\u0438, \u0434\u043e\u043a\u043b\u0430\u0434\u044b \u0441 IT \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0439<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/itmozg\">https:\/\/max.ru\/itmozg<\/a> \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b, \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u044b, \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438\u0437 \u043c\u0438\u0440\u0430 IT<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/php_lib\">https:\/\/max.ru\/php_lib<\/a>    \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 PHP \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \ud83d\udc68\ud83c\udffc\u200d\ud83d\udcbb\ud83d\udc69\u200d\ud83d\udcbb<br><br><b>\u0428\u0443\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/itumor\">https:\/\/max.ru\/itumor<\/a> \u0428\u0443\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432<br><br><b>\u0417\u0430\u0449\u0438\u0442\u0430, \u0432\u0437\u043b\u043e\u043c, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/thehaking\">https:\/\/max.ru\/thehaking<\/a> \u041a\u0430\u043d\u0430\u043b \u043e \u043a\u0438\u0431\u0435\u0440\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/xakkep_1\">https:\/\/max.ru\/xakkep_1<\/a> \u0425\u0430\u043a\u0435\u0440 Free<br><b><br>\u041a\u043d\u0438\u0433\u0438, \u0441\u0442\u0430\u0442\u044c\u0438 \u0434\u043b\u044f \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432 \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/odesigners\">https:\/\/max.ru\/odesigners<\/a> \u0421\u0442\u0430\u0442\u044c\u0438, \u043a\u043d\u0438\u0433\u0438 \u0434\u043b\u044f \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432<br><br><b>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \ud83d\udccc<\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/Pomatematike\">https:\/\/max.ru\/Pomatematike<\/a> \u041a\u0430\u043d\u0430\u043b \u043f\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/phismat_1\">https:\/\/max.ru\/phismat_1<\/a> \u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u0432\u0438\u0434\u0435\u043e, \u043a\u043d\u0438\u0433\u0438 \u043f\u043e \u0424\u0438\u0437\u0438\u043a\u0435 \u0438 \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435<br><br><b>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438 \ud83d\udccc <\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/progjob\">https:\/\/max.ru\/progjob<\/a> \u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438 \u0432 IT<br><br><b>\u041c\u0438\u0440 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \ud83d\udccc <\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/mir_teh\">https:\/\/max.ru\/mir_teh<\/a> \u041a\u0430\u043d\u0430\u043b \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445<br><br><br><b>\u0411\u043e\u043d\u0443\u0441 \ud83d\udccc <\/b><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/piterspb_78\">https:\/\/max.ru\/piterspb_78<\/a> \u0421\u0432\u0435\u0436\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0430<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/mockva_life\">https:\/\/max.ru\/mockva_life<\/a> \u0421\u0432\u0435\u0436\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u041c\u043e\u0441\u043a\u0432\u044b","text_length":2131,"media":{"root":"\/00e\/chAAACEvoEwAAAAAT602gVqs218","webpage":{"url":"https:\/\/max.ru\/i_odmin","type":"article","title":"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 | Sysadmin Windows & Linux Server. \u2026","site_name":"MAX","display_url":"max.ru\/i_odmin","description":"\u0411\u043b\u043e\u0433 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u044e\u0449\u0435\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0430. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Windows Server, Active Directory (AD), GPO \u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 (RDP). \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 Linux: Ubuntu, CentOS, Debian. \u0421\u0435\u0442\u0435\u0432\u043e\u0435 \u2026","thumbs":{"m":{"w":190,"h":190,"hash":"xhuNro6cYlnAHhSpbsEOCg&ts=1775617880"},"i":{"bytes":"AoACg|C4B5L715hPXFUby4dJHit9wUntjmryjAOw+ZEeq9xVOCwiu3uG5UB9qMDyMdauTMoJf1\/Wxnrd3EZCl2+U\/dbtWpY3Bmje4kwXXj8aR9I8yYM8xK4AJxyT\/wDqpbu2S0+zywAgLIFK9jnvUpltJlhSIU8x+ZW6A0UAgNk\/PP6DoKK0MdegoQg58lkPqrU2NxaiULG7ksZG4x1pRsbOwSSn1JwKSCVFn2NwcEptyc+o9+gqZFw3JRdZAHlSbz0TH9elQSyi5gVXiZckMMnAwCM1P9oXJ\/cTY3fe2fr60yWdTcpHHkuy5bsQO3X\/ADxUo0ewxX28CVUHoozRTssWOxlY\/wB11ANFaaHPr\/Vxcl03P8kI\/hHeo5IzIiMh2S5\/c\/7PrRRQ1oNPqVt94bhZPs5IIxt8z5S3rjNTxRkAyzEFpDiRh\/CR0ooqUtS3JtErY3bJuG\/hkHeiiiqS0Mpy5Xax\/9k="}}}}},{"channel_id":1285566241,"post_id":4209,"date":1775200590000,"forwards":"3","views":"252","text":"<b>1\ufe0f\u20e3 \u0427\u0435\u043c <\/b><code>record<\/code><b> \u043b\u0443\u0447\u0448\u0435 <\/b><code>class<\/code><b> \u0432 Java?<\/b>  <br><br>\u0412 Java 14 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f <code>record<\/code> \u2013 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0427\u0435\u043c \u043e\u043d \u043b\u0443\u0447\u0448\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e <code>class<\/code>? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f!  <br><br>\ud83d\udd39 <b>\u0417\u0430\u043f\u0438\u0441\u044c \u043f\u0440\u043e\u0442\u0438\u0432 \u043a\u043b\u0430\u0441\u0441\u0430<\/b>  <br>\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441:<pre>class Person {<br>    private final String name;<br>    private final int age;<br>    <br>    public Person(String name, int age) {<br>        this.name = name;<br>        this.age = age;<br>    }<br>    <br>    public String getName() { return name; }<br>    public int getAge() { return age; }<br><br>    @Override<br>    public String toString() {<br>        return &quot;Person{name=&#039;&quot; + name + &quot;&#039;, age=&quot; + age + &quot;}&quot;;<br>    }<br>}<\/pre>\u041c\u043d\u043e\u0433\u043e \u0431\u043e\u0439\u043b\u0435\u0440\u043f\u043b\u0435\u0439\u0442\u0430\u2026  <br><br>\u0422\u0435\u043f\u0435\u0440\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441 <code>record<\/code>:<pre>record Person(String name, int age) {}<\/pre>\u2705 \u041c\u0435\u043d\u044c\u0448\u0435 \u043a\u043e\u0434\u0430  <br>\u2705 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f <code>toString()<\/code>, <code>equals()<\/code>, <code>hashCode()<\/code>  <br>\u2705 \u0418\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e  <br><br>\u26a0\ufe0f <b>\u041a\u043e\u0433\u0434\u0430 \u041d\u0415 \u0441\u0442\u043e\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <\/b><code>record<\/code><b>?<\/b>  <br>- \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u0435\u043d \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442  <br>- \u0415\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0430  <br><br>\u0412\u044b \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 <code>record<\/code> \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445? \u0414\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u043e\u043f\u044b\u0442\u043e\u043c! \ud83d\ude80  <br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":1041},{"channel_id":1285566241,"post_id":4208,"date":1775110847000,"forwards":"9","views":"163","text":"\ud83d\udd25 \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c <code>CompletableFuture<\/code>: \u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0432 Java \u0431\u0435\u0437 \u0431\u043e\u043b\u0438  <br><br>\u041f\u0440\u0438\u0432\u0435\u0442, \u043a\u043e\u043b\u043b\u0435\u0433\u0438! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e <code>CompletableFuture<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c <b>\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0434<\/b> \u0432 Java <b>\u0431\u0435\u0437 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u043e\u0432<\/b> \u0438 <b>\u043f\u043e\u0442\u0435\u0440\u044c \u0432 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/b>.  <br><br>\ud83d\udccc 1. \u041f\u043e\u0447\u0435\u043c\u0443 <code>CompletableFuture<\/code>?  <br>\u0412 Java \u0434\u0430\u0432\u043d\u043e \u0435\u0441\u0442\u044c <code>Future<\/code>, \u043d\u043e \u043e\u043d <b>\u043d\u0435\u0443\u0434\u043e\u0431\u0435\u043d<\/b>:  <br>\u274c \u041d\u0435\u043b\u044c\u0437\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u0447.  <br>\u274c \u0411\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 <code>.get()<\/code>.  <br>\u274c \u041d\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.  <br><br>\ud83d\udc49 <code>CompletableFuture<\/code> \u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f <b>\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438<\/b>, <b>\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438<\/b> \u0438 <b>\u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438<\/b>.<br><br><br><br>\ud83d\udccc 2. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<pre>import java.util.concurrent.CompletableFuture;<br><br>public class AsyncExample {<br>    public static void main(String[] args) {<br>        CompletableFuture&lt;String&gt; future = CompletableFuture.supplyAsync(() -&gt; {<br>            sleep(2000);<br>            return &quot;\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!&quot;;<br>        });<br><br>        future.thenAccept(result -&gt; System.out.println(&quot;\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: &quot; + result));<br><br>        System.out.println(&quot;\u042d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430!&quot;);<br>        sleep(3000); \/\/ \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438<br>    }<br><br>    private static void sleep(int ms) {<br>        try { Thread.sleep(ms); } catch (InterruptedException ignored) {}<br>    }<br>}<\/pre>\ud83d\udd39 \u0417\u0434\u0435\u0441\u044c <code>supplyAsync()<\/code> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 <b>\u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435<\/b>, \u0430 <code>thenAccept()<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 <b>\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/b>.  <br><br><br><br>\ud83d\udccc 3. \u041a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447<pre>CompletableFuture&lt;String&gt; future1 = CompletableFuture.supplyAsync(() -&gt; &quot;Hello&quot;);<br>CompletableFuture&lt;String&gt; future2 = CompletableFuture.supplyAsync(() -&gt; &quot;World&quot;);<br><br>CompletableFuture&lt;String&gt; result = future1.thenCombine(future2, (s1, s2) -&gt; s1 + &quot; &quot; + s2);<br><br>System.out.println(result.join()); \/\/ Hello World<\/pre>\u2705 <code>thenCombine()<\/code> \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b <b>\u0434\u0432\u0443\u0445 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447<\/b>.  <br><br><br><br>\ud83d\udccc 4. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a (<code>exceptionally<\/code>)<pre>CompletableFuture&lt;String&gt; future = CompletableFuture.supplyAsync(() -&gt; {<br>    if (Math.random() &gt; 0.5) {<br>        throw new RuntimeException(&quot;\u0427\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a!&quot;);<br>    }<br>    return &quot;\u0412\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e!&quot;;<br>}).exceptionally(ex -&gt; &quot;\u041e\u0448\u0438\u0431\u043a\u0430: &quot; + ex.getMessage());<br><br>System.out.println(future.join());<\/pre>\u2705 \u0415\u0441\u043b\u0438 \u0432 <code>supplyAsync()<\/code> \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u043e\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0441\u044f \u0432 <code>exceptionally()<\/code>, \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0443\u043f\u0430\u0434\u0451\u0442.  <br><br><br><br>\ud83d\udccc 5. \u0417\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e<pre>CompletableFuture&lt;Void&gt; allTasks = CompletableFuture.allOf(<br>    CompletableFuture.runAsync(() -&gt; sleepAndPrint(&quot;\u0417\u0430\u0434\u0430\u0447\u0430 1&quot;, 1000)),<br>    CompletableFuture.runAsync(() -&gt; sleepAndPrint(&quot;\u0417\u0430\u0434\u0430\u0447\u0430 2&quot;, 2000)),<br>    CompletableFuture.runAsync(() -&gt; sleepAndPrint(&quot;\u0417\u0430\u0434\u0430\u0447\u0430 3&quot;, 1500))<br>);<br><br>allTasks.join(); \/\/ \u0414\u043e\u0436\u0434\u0451\u043c\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u0434\u0430\u0447<br><br>private static void sleepAndPrint(String msg, int ms) {<br>    try { Thread.sleep(ms); } catch (InterruptedException ignored) {}<br>    System.out.println(msg);<br>}<\/pre>\u2705 <code>allOf()<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c <b>\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u0447 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e<\/b> \u0438 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0438\u0445 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f.  <br><br><br><br>\ud83d\udccc \u0418\u0442\u043e\u0433  <br>\ud83d\udd39 <code>CompletableFuture<\/code> \u2013 \u044d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 <b>\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0432 Java<\/b>.  <br>\ud83d\udd39 \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 <b>\u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a<\/b>, <b>\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438<\/b>, <b>\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438<\/b>.  <br>\ud83d\udd39 \u0423\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 <code>Future<\/code> \u0438 <code>ExecutorService<\/code>.  <br><br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":3074},{"channel_id":1285566241,"post_id":4207,"date":1775020097000,"forwards":"2","views":"188","comments":"4","text":"\ud83d\ude80<b>\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Optional \u0432 Java<\/b>  <br><br><code>Optional&lt;T&gt;<\/code> \u0432 Java \u2014 \u044d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 <code>null<\/code> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438.  <br><br>\u274c <b>\u041f\u043b\u043e\u0445\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b<\/b>:  <br><br>1\ufe0f\u20e3 <b>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <\/b><code>Optional<\/code><b> \u043a\u0430\u043a \u043f\u043e\u043b\u044f \u0432 \u043a\u043b\u0430\u0441\u0441\u0435<\/b><pre>class User {<br>    Optional&lt;String&gt; name; \/\/ \u274c \u041f\u043b\u043e\u0445\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430<br>}<\/pre>\u041b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>String<\/code>, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u0442\u043e \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 <code>Optional<\/code> \u043f\u0440\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0435.  <br><br>2\ufe0f\u20e3 <b>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <\/b><code>isPresent()<\/code><b> \u0432\u043c\u0435\u0441\u0442\u043e <\/b><code>ifPresent()<\/code><pre>if (optionalValue.isPresent()) {<br>    process(optionalValue.get()); \/\/ \u274c \u041d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e<br>}<\/pre>\u041b\u0443\u0447\u0448\u0435 \u0442\u0430\u043a:<pre>optionalValue.ifPresent(this::process); \/\/ \u2705 \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434<\/pre>\ud83d\udccc <b>\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/b>:<pre>public Optional&lt;User&gt; findUserById(int id) {<br>    return Optional.ofNullable(userRepository.get(id));<br>}<\/pre>\ud83d\udca1 <b>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <\/b><code>Optional<\/code> \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c <code>NullPointerException<\/code> \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u0434 \u0447\u0438\u0449\u0435.  <br><br>\ud83d\udd25 \u0410 \u043a\u0430\u043a \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 <code>Optional<\/code>? \u041f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445! \ud83d\ude80<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":1000},{"channel_id":1285566241,"post_id":4206,"date":1774951230000,"forwards":"2","views":"190","text":"<img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5411225014148014586\/thumb.webp?hash=mf0CTFUPux35v_3k7ahDAQ&ts=1775617880' alt='\ud83d\udd34'><b> \u0417\u0430\u0432\u0442\u0440\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c<\/b><br><br><b>1 \u0430\u043f\u0440\u0435\u043b\u044f(\u0443\u0436\u0435 \u0437\u0430\u0432\u0442\u0440\u0430!) \u0432 19:00 \u043f\u043e \u043c\u0441\u043a<\/b> \u043f\u0440\u0438\u0445\u043e\u0434\u0438 \u043e\u043d\u043b\u0430\u0439\u043d \u043d\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0435 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u043d\u0430 Middle Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<br><br><b>\u041a\u0430\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442:<\/b><br>\ud83d\udcc2 \u0412\u0438\u043a\u0442\u043e\u0440 \u0410\u043d\u043e\u0445\u0438\u043d, \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0437 WildBerries, \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443-\u0434\u043e\u0431\u0440\u043e\u0432\u043e\u043b\u044c\u0446\u0443<br>\ud83d\udcc2 \u0412\u0438\u043a\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0435\u0433\u043e \u043e\u0442 \u0432\u0430\u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e<br>\ud83d\udcc2 \u0412 \u043a\u043e\u043d\u0446\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0412\u0438\u043a\u0442\u043e\u0440\u0443<br><br><b>\u042d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. <\/b>\u042d\u0444\u0438\u0440 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0435\u043d\u0442\u043e\u0440\u0441\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/shortcut.education\">\u0428\u041e\u0420\u0422\u041a\u0410\u0422<\/a> \u0434\u043b\u044f Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f\u0442 \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0433\u0440\u0435\u0439\u0434, \u0417\u041f \u0438 \u043f\u0440\u043e\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u043a\u0438\u043b\u043b\u044b.<br><b><br>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438 \u0432 \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u043e\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u044d\u0444\u0438\u0440 \u2192<\/b><a href=\"https:\/\/t.me\/shortcut_sh_bot?start=webinar_java_BookJava_03_31_2026\" target=\"_blank\" rel=\"noreferrer nofollow\"><b> @shortcut_sh_bot<\/b><\/a><br><br>\u0420\u0435\u043a\u043b\u0430\u043c\u0430.<br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/ord.vk.com\/adv_info\">\u041e \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0434\u0430\u0442\u0435\u043b\u0435.<\/a>","text_length":762,"media":{"root":"\/003\/bhAAACEvoEwAAAAALJmk5WW6RSU","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"rIqLtsA6CrCWdjC5fsaQ4Q&ts=1775617880"},"x":{"w":800,"h":800,"hash":"QQlC6sW59CZLfR5QnIz07Q&ts=1775617880"},"y":{"w":1080,"h":1080,"hash":"SeaFnCufwDOAueNpJM0F3Q&ts=1775617880"},"i":{"bytes":"AoACg|DJUoByuT9aOGwEU7jVi3SORAChLYxxjr+ftVpESOPzhEQSc8gDjpigaV2Uvsc+3Oz8M1LYSBHZGGO+PWrEMpE2PLZQSRzjr6VFfQSG6LRRkfLnik1dDlFNaF\/zBjBNFZuy9CfdOPXg0VnyMx9mwtYiyqxlKKOvFXA0Jj8vzT0wDjmpoxJBa28YXBwd2BnvVlW3IhZSjHOQAP61qdEWktjMihdZV\/eFlBzwoxViSJWYM7s3GNvaryneNybtp6EAU7B3ZIYj04oBSS0sZrORkyPx6UVNq7BbKRSh5xhsd8jiigr2q7D2uEiiDSPtH0\/+tUTahasQTMMjpx\/9jRRVS0ZhF6EaXwM6xxS4iH+yP8KtifP\/AC2b9P8ACiipOlQTjcivHW4tpIRJkn\/H6UUUUC5Ef\/\/Z"}}}}},{"channel_id":1285566241,"post_id":4205,"date":1774937282000,"forwards":"3","views":"231","comments":"2","text":"\ud83d\ude80<b>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b ConcurrentHashMap<\/b>  <br><br>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 <code>ConcurrentHashMap<\/code> \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0447\u0435\u043c <code>HashMap<\/code>, \u0438 \u043a\u0430\u043a \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438.  <br><br>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>HashMap<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u0430\u043c \u043f\u0440\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, <code>ConcurrentHashMap<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <b>\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443<\/b>, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0431\u0435\u0437 \u043f\u043e\u043b\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.  <br><br>\ud83d\udccc <b>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/b>:<br>- \u0414\u0435\u043b\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b (\u0434\u043e JDK 8 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <code>synchronized<\/code> \u0438 <code>CAS<\/code> \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 JDK 8).<br>- \u0427\u0442\u0435\u043d\u0438\u0435 (<code>get()<\/code>) \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438.<br>- \u0417\u0430\u043f\u0438\u0441\u044c (<code>put()<\/code>) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438.<br>- \u041d\u0435\u0442 <code>null<\/code> \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 (\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>HashMap<\/code>).<br><br>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<pre>import java.util.concurrent.ConcurrentHashMap;<br><br>public class Main {<br>    public static void main(String[] args) {<br>        ConcurrentHashMap&lt;String, Integer&gt; map = new ConcurrentHashMap&lt;&gt;();<br><br>        map.put(&quot;Java&quot;, 1);<br>        map.put(&quot;Python&quot;, 2);<br>        map.put(&quot;C++&quot;, 3);<br><br>        System.out.println(map.get(&quot;Java&quot;)); \/\/ 1<br>    }<br>}<\/pre><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":1118},{"channel_id":1285566241,"post_id":4204,"date":1774852255000,"forwards":"3","views":"165","comments":"3","text":"<b>\u0412 \u0447\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 Checked \u0438 Unchecked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f?<\/b><br><br>\u0414\u0430, \u0432 Java \u0435\u0441\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 <b>checked (\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u043c\u0438)<\/b> \u0438 <b>unchecked (\u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u043c\u0438)<\/b> \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. <br><br>1. <b>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/b><br>   - <b>Checked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043b\u0438\u0431\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>try-catch<\/code>), \u043b\u0438\u0431\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u0435\u0433\u043e \u0432 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>throws<\/code>). \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043a\u043e\u0434 \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<br>   - <b>Unchecked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u041d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043b\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f. \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0438\u0437-\u0437\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043a\u043e\u0434\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>NullPointerException<\/code>, <code>ArrayIndexOutOfBoundsException<\/code>).<br><br>2. <b>\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/b><br>   - <b>Checked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u042d\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u043c \u0432\u0432\u043e\u0434\u043e\u043c-\u0432\u044b\u0432\u043e\u0434\u043e\u043c, \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u043c\u0438) \u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0432 \u0445\u043e\u0434\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u0441\u0442\u0435\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0447\u0435\u043d\u043e \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f.<br>   - <b>Unchecked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u042d\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0432 \u043a\u043e\u0434\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043d\u043e\u043b\u044c, \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a null). \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u0441\u0442\u0435\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0445 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<br><br>3. <b>\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/b><br>   - <b>Checked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u0412\u0441\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442 <code>Exception<\/code> (\u043d\u043e \u043d\u0435 <code>RuntimeException<\/code>), \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u043c\u0438.<br>   - <b>Unchecked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u0412\u0441\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442 <code>RuntimeException<\/code> \u0438\u043b\u0438 <code>Error<\/code>, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u043c\u0438.<br><br>4. <b>\u041f\u0440\u0438\u043c\u0435\u0440\u044b<\/b><br>   - <b>Checked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: <code>IOException<\/code>, <code>SQLException<\/code>, <code>ClassNotFoundException<\/code>.<br>   - <b>Unchecked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: <code>NullPointerException<\/code>, <code>ArrayIndexOutOfBoundsException<\/code>, <code>ArithmeticException<\/code>.<br><br>5. <b>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/b><br>   - <b>Checked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0432\u044b \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u044f\u0432\u043d\u043e \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u043c, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043c.<br>   - <b>Unchecked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0438\u0445 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c\u0438 \u0432 \u043a\u043e\u0434\u0435.<br><br>6. <b>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/b><br>   - \u041d\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 checked \u0438 unchecked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430 \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0442\u0438\u043f\u043e\u0432.<br><br>\u0418\u0442\u043e\u0433<br>- <b>Checked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0438\u043b\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b, \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f recoverable (\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0445) \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439.<br>- <b>Unchecked \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/b>: \u041d\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c, \u0447\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043a\u043e\u0434\u0435 \u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u043c\u0443 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b.<br><br>\u041e\u0431\u0430 \u0442\u0438\u043f\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u0441\u0445\u043e\u0436\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u043d\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":2979},{"channel_id":1285566241,"post_id":4203,"date":1774595688000,"forwards":"2","views":"229","text":"<b>\ud83d\ude80 \u0421\u043e\u0432\u0435\u0442 \u043f\u043e Java API <\/b>\ud83d\ude80<br><br>\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>Integer.valueOf(int)<\/code> \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 -128 \u0434\u043e 127 \u043a\u044d\u0448\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0417\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u044d\u0442\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.  <br><br>\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u044d\u0448\u0430 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0446\u0438\u0438 <code>-XX:AutoBoxCacheMax=&lt;\u0440\u0430\u0437\u043c\u0435\u0440&gt;<\/code>. \ud83d\udd25  <br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":324},{"channel_id":1285566241,"post_id":4202,"date":1774513979000,"forwards":"1","views":"220","text":"<b>\u0421\u043e\u0432\u0435\u0442 \u043f\u043e Java \ud83d\udca1\u2615\ufe0f<\/b><br><br>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u0434\u043d\u0438 \u043c\u0435\u0441\u044f\u0446\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>YearMonth<\/code>, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u043d\u044c, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>datesUntil()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 Stream \u0432\u0441\u0435\u0445 \u0434\u043d\u0435\u0439 \u0434\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0434\u0430\u0442\u044b. <br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":239,"media":{"root":"\/006\/ahAAACEvoEwAAAAAnGykLQHSnB8","photo":{"thumbs":{"m":{"w":320,"h":254,"hash":"UMT7vlgOJ0K3BflmKe3pXg&ts=1775617880"},"x":{"w":800,"h":634,"hash":"ge2FI1vNN-7qyOGfraZIrw&ts=1775617880"},"y":{"w":1134,"h":898,"hash":"88eovOSFuwHoddef3jkHoQ&ts=1775617880"},"i":{"bytes":"AgACg|COe5dJWUHgdOKj+1v3P6U24P8ApD\/h\/KoySB1pJFtu5N9qb+8fyFMN1J2P6VGSD1IpvHrVWFdlmG4d5QCRg+1FQwcTLzRVpXKTY645nb8P5UwuRU00bmViBkH3qIwv\/d\/WlysTG7zTSc0\/yX9KTyX9KfKxWFg\/1q0UsUbLICRRWsIuxSP\/2Q=="}}}}},{"channel_id":1285566241,"post_id":4201,"date":1774438395000,"forwards":"3","views":"114","text":"\ud83d\udc69\u200d\ud83d\udcbb \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0443\u0440\u043e\u043a <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/otus.ru\/lessons\/javaspring#event-6983\"><b>\u00abSpring Boot Actuator: \u043e\u0441\u043d\u043e\u0432\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c\u00bb<\/b><\/a><br><br>\ud83d\uddd3 <b>30 \u043c\u0430\u0440\u0442\u0430 \u0432 20:00 <\/b>\u041c\u0421\u041a<br><br>\ud83c\udd93 \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. \u0423\u0440\u043e\u043a \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 Spring Framework\u00bb \u043e\u0442 Otus.<br><br>\u0423\u0437\u043d\u0430\u0439\u0442\u0435, \u043a\u0430\u043a \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432 Spring-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.<br><br>\u041d\u0430 \u0432\u0435\u0431\u0438\u043d\u0430\u0440\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c: <br><br>\u0417\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 Spring Boot Actuator \u2014 \u0432\u0430\u0436\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<br><br>\u041e \u0447\u0451\u043c \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c:<br>\u2714\ufe0f \u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d Spring Boot Actuator.<br>\u2714\ufe0f \u041a\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438.<br>\u2714\ufe0f \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Actuator.<br>\u2714\ufe0f \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043c\u0435\u0442\u0440\u0438\u043a \u0438 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<br><br><br>\u041a\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e:<br>\u041d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c, \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u0441 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<br><br>\ud83d\udd17 \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/vk.cc\/cVR0CO\">https:\/\/vk.cc\/cVR0CO<\/a><br><br>\u0420\u0435\u043a\u043b\u0430\u043c\u0430. \u041e\u041e\u041e \u00ab\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u00bb, \u041e\u0413\u0420\u041d 1177746618576","text_length":822,"media":{"root":"\/00e\/aRAAACEvoEwAAAAAT602gVqs218","photo":{"thumbs":{"m":{"w":320,"h":320,"hash":"uCJqsTlrsO6QaBLp2jH1KA&ts=1775617880"},"x":{"w":800,"h":800,"hash":"_2CjMRQI3sUP9GIbpyNOyA&ts=1775617880"},"y":{"w":1080,"h":1080,"hash":"4z3mpRHiyG2qyFBMUr6jPw&ts=1775617880"},"i":{"bytes":"AoACg|DKHTpUgwDlTjA5B703IIGSDgelAwe9BLJwqi3B43VGQCOnC9T607aSu7iom6Ecc0kKw53BziJcY468UUisRlAeCO1FMY1Cfu468DilWNicAEe5pgxxg81OJtxAYAc8nmgYeUwGzk+9RtGye\/0qbeOvmAfnTWlC5xhs9+aAImO0gAYIopHbccn+tFAxoQnpj8xUkeVdd\/KA8jdRRQBZM9sP+WDf9\/D\/AI1Ukk3OxTIUngE5ooo5eUGR0UUUAf\/Z"}}}}},{"channel_id":1285566241,"post_id":4200,"date":1774436156000,"forwards":"4","views":"177","text":"\ud83d\udda5\ufe0f Java: \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0438\u043b\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435? \ud83e\udd14  <br><br>\u0412 <b>Java \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0422\u041e\u041b\u042c\u041a\u041e \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e<\/b> (<b>pass-by-value<\/b>). \u041e\u0434\u043d\u0430\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0438\u0434\u0435\u0442 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435.  <br><br>\ud83d\udd39 \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0432 Java?  <br>\u2705 <b>\u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0435 \u0442\u0438\u043f\u044b (<\/b><code>int<\/code><b>, <\/b><code>double<\/code><b>, <\/b><code>char<\/code><b>)<\/b>: \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043f\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 <b>\u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442<\/b> \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e.  <br><br>\u2705 <b>\u041e\u0431\u044a\u0435\u043a\u0442\u044b (\u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432)<\/b>: \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f <b>\u043a\u043e\u043f\u0438\u044f \u0441\u0441\u044b\u043b\u043a\u0438<\/b> \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442, \u0430 \u043d\u0435 \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442. <b>\u0412\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043d\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0430\u043c\u0443 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043d\u0435\u0433\u043e<\/b>.  <br><br>\ud83d\udccc \u041f\u0440\u0438\u043c\u0435\u0440\u044b  <br>\ud83d\udd39 <b>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f)<\/b><pre>public class Test {<br>    public static void modifyPrimitive(int num) {<br>        num = 10;  \/\/ \u042d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435<br>    }<br><br>    public static void main(String[] args) {<br>        int x = 5;<br>        modifyPrimitive(x);<br>        System.out.println(x);  \/\/ \u0412\u044b\u0432\u0435\u0434\u0435\u0442: 5 (\u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c)<br>    }<br>}<\/pre>\ud83d\udd39 <b>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f)<\/b><pre>class Person {<br>    String name;<br>}<br><br>public class Test {<br>    public static void modifyObject(Person p) {<br>        p.name = &quot;Alice&quot;;  \/\/ \u0418\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<br>    }<br><br>    public static void main(String[] args) {<br>        Person person = new Person();<br>        person.name = &quot;Bob&quot;;<br>        modifyObject(person);<br>        System.out.println(person.name);  \/\/ \u0412\u044b\u0432\u0435\u0434\u0435\u0442: Alice<br>    }<br>}<\/pre>\ud83d\udd39 <b>\u041f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 (\u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442)<\/b><pre>class Person {<br>    String name;<br>}<br><br>public class Test {<br>    public static void reassignReference(Person p) {<br>        p = new Person();  \/\/ \u041f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e)<br>        p.name = &quot;Charlie&quot;;<br>    }<br><br>    public static void main(String[] args) {<br>        Person person = new Person();<br>        person.name = &quot;Bob&quot;;<br>        reassignReference(person);<br>        System.out.println(person.name);  \/\/ \u0412\u044b\u0432\u0435\u0434\u0435\u0442: Bob (\u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c)<br>    }<br>}<\/pre>\ud83d\udd25 \u0418\u0442\u043e\u0433  <br>\ud83d\udd39 <b>Java \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e!<\/b>  <br>\ud83d\udd39 <b>\u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b<\/b> \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043a\u043e\u043f\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.  <br>\ud83d\udd39 <b>\u041e\u0431\u044a\u0435\u043a\u0442\u044b<\/b> \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043a\u043e\u043f\u0438\u0438 \u0441\u0441\u044b\u043b\u043e\u043a, \u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f.  <br>\ud83d\udd39 \u0415\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0430\u043c\u0443 \u0441\u0441\u044b\u043b\u043a\u0443, \u044d\u0442\u043e <b>\u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442<\/b> \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442.  <br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":2162},{"channel_id":1285566241,"post_id":4199,"date":1774420808000,"forwards":"1","views":"149","text":"<b>\u0421\u043e\u0432\u0435\u0442 \u043f\u043e Java \ud83d\udca1<\/b><br><br>\u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c\u0438, \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0430\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c, \u0438\u043c\u0435\u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 &quot;<b>by<\/b>&quot;. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0437\u043e\u0432 <code>sorted() <\/code>\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043c\u043f\u043e\u0440\u0442.<br><br><img class='tg-emoji' loading='lazy' src='https:\/\/televisor.tlgrm.dev\/emoji\/5449407131675558756\/thumb.webp?hash=qFYkwnr5ny6bb-iJ1CNVZQ&ts=1775617880' alt='\ud83d\udcf2'> <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":338,"media":{"root":"\/00c\/ZxAAACEvoEwAAAAAyFP14qOVkbI","photo":{"thumbs":{"m":{"w":320,"h":129,"hash":"0NEIjuodOjQb4zf-eQQgxA&ts=1775617880"},"x":{"w":800,"h":323,"hash":"j-xvXVQ6CL9vAvaf-5mzLg&ts=1775617880"},"y":{"w":1200,"h":484,"hash":"LKBdVHgBo8a5jjlk1-P8WQ&ts=1775617880"},"i":{"bytes":"AQACg|CsXO4\/MetG9v75\/OmnqflNLj\/ZNasaY4SP\/wA9D+dKJZP75\/OmYP8AdNAVv7p\/KoaHqTxSyeagLkjPrRTIlbzVO09fSis3HUpXP\/\/Z"}}}}},{"channel_id":1285566241,"post_id":4198,"date":1774251931000,"forwards":"1","views":"348","text":"Scala \u0441\u043e\u0437\u0434\u0430\u043d \u043d\u0430 \u0431\u0430\u0437\u0435 Java, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u044b\u043c \u0438 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d\u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u044e\u0442\u0441\u044f: \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Java-\u043a\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0438 Scala. \u041d\u0430 Scala \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438, \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b.<br>\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u043d\u0430 \u0441\u0435\u0440\u0438\u044e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0443\u0440\u043e\u043a\u043e\u0432 \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0430\u0440\u0442\u043e\u043c \u043a\u0443\u0440\u0441\u0430 \u00abScala-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u00bb:<br><br>\ud83d\udcc6<b>1 \u0430\u043f\u0440\u0435\u043b\u044f \u0432 20:00<\/b><br>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Cats Validated. \u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 Either \u043d\u0435\u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0440\u0430\u0437\u0443 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e \u0444\u043e\u0440\u043c\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438. \u0412\u044b \u043f\u043e\u0439\u043c\u0451\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Validated, \u0430 \u043a\u043e\u0433\u0434\u0430 Either, \u0438 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u0434\u0435.<br><br>\ud83d\udcc6<b>14 \u0430\u043f\u0440\u0435\u043b\u044f \u0432 20:00<\/b><br>\u0418\u0437\u0443\u0447\u0438\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Scala \u0447\u0435\u0440\u0435\u0437 case classes \u0438 pattern matching. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0438\u0441\u0442\u044b\u0439, \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 production.<br><br>\ud83d\udcc6<b>20 \u0430\u043f\u0440\u0435\u043b\u044f \u0432 20:00<\/b><br>\u041f\u043e\u0433\u0440\u0443\u0437\u0438\u043c\u0441\u044f \u0432 \u0442\u0435\u043c\u0443 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0432 Scala. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0439 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Option, Either, Future, \u0430 \u0442\u0430\u043a\u0436\u0435 Cats Effect \u0438 ZIO, \u0438 \u043f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0445 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445.<br><br>\ud83d\udca5\u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043a\u0430\u0447\u0430\u0442\u044c \u043d\u0430\u0432\u044b\u043a\u0438 Scala \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043e\u0431 \u0443\u0440\u043e\u043a\u0430\u0445 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f: <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/vk.cc\/cVMvN3\">https:\/\/vk.cc\/cVMvN3<\/a><br><br>\u0420\u0435\u043a\u043b\u0430\u043c\u0430. \u041e\u041e\u041e \u00ab\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u00bb, \u041e\u0413\u0420\u041d 1177746618576, <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"http:\/\/www.otus.ru\">www.otus.ru<\/a>","text_length":1427,"media":{"root":"\/00b\/ZhAAACEvoEwAAAAAxNmI0pyk26Q","photo":{"thumbs":{"m":{"w":320,"h":168,"hash":"nc_d3_4_7HNBEx4Rx_mkUQ&ts=1775617880"},"x":{"w":800,"h":419,"hash":"1pEIjnCmoaI27u9Dm4QPRQ&ts=1775617880"},"y":{"w":1200,"h":628,"hash":"uFrF6vR6f59hwj-3XmSTMA&ts=1775617880"},"i":{"bytes":"AVACg|DVLKr9TnpjNKJATgdfTIqOQP5hKj0oEbnBDYPvQBPWbeyXSzFYd2zggY6n2qS5vGgdVJQ+o5qI3AkInMjfuxnytvbpmlcrldrlq1uhJb7pWVXXhxnoaKxIpSLluN+\/IK\/3s0UyToHRSckH86cDgYAooqUldjZRk09ZJGbzGGSO2cU6HT4o337nJ56miimVzOxOttCOfLXOd340UUUyD\/\/Z"}}}}},{"channel_id":1285566241,"post_id":4197,"date":1774241497000,"forwards":"14","views":"157","text":"<b>\ud83d\udd0c \u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 API: REST, GraphQL \u0438\u043b\u0438 gRPC?<\/b><br><br><br><b>\ud83e\uddf1 1. REST (\u041a\u043b\u0430\u0441\u0441\u0438\u043a\u0430 \u0438 \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442)<\/b><br><br>REST (Representational State Transfer) - \u044d\u0442\u043e \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 API (GitHub, Stripe, Telegram) \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430 \u043d\u0435\u043c.<br><br><b>\u0421\u0443\u0442\u044c:<\/b> \u0412 \u0446\u0435\u043d\u0442\u0440\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <b>\u0420\u0435\u0441\u0443\u0440\u0441<\/b> (\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435). \u0410 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u043d\u0438\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 HTTP-\u043c\u0435\u0442\u043e\u0434\u044b (\u0413\u043b\u0430\u0433\u043e\u043b\u044b).<br>\u2022 <code>GET \/users\/123<\/code> - \u0414\u0430\u0439 \u043c\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f 123.<br>\u2022 <code>POST \/users<\/code> - \u0421\u043e\u0437\u0434\u0430\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<br>\u2022 <code>DELETE \/users\/123<\/code> - \u0423\u0434\u0430\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<br><br><b>\u2705 \u041f\u043b\u044e\u0441\u044b:<\/b><br><br>\u2022 <b>\u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430:<\/b> \u041f\u043e\u043d\u044f\u0442\u0435\u043d \u0432\u0441\u0435\u043c, \u043b\u0435\u0433\u043a\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Postman \u0438\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440.<br><br>\u2022 <b>\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/b> \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 CDN (\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435), \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b HTTP.<br><br><b>\u274c \u041c\u0438\u043d\u0443\u0441\u044b:<\/b><br><br>\u2022 <b>Over-fetching (\u0418\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c):<\/b> \u041c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u043e \u043c\u0435\u0442\u043e\u0434 <code>GET \/users\/1<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 JSON \u043d\u0430 50 \u043f\u043e\u043b\u0435\u0439 (\u0441 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438, \u0434\u0430\u0442\u0430\u043c\u0438 \u0438 \u0442.\u0434.). \u0412\u044b \u0442\u0440\u0430\u0442\u0438\u0442\u0435 \u0442\u0440\u0430\u0444\u0438\u043a \u0432\u043f\u0443\u0441\u0442\u0443\u044e.<br><br>\u2022 <b>Under-fetching (\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c) \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 N+1:<\/b> \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0435\u0433\u043e 10 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043f\u043e\u0441\u0442\u043e\u0432, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0443 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c 1 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a <code>\/users\/1<\/code> \u0438 \u0435\u0449\u0435 10 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a <code>\/posts?userId=1<\/code>. \u042d\u0442\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e.<br><br><br><b>\ud83d\udd78\ufe0f 2. GraphQL (\u041c\u0435\u0447\u0442\u0430 \u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435\u0440\u0430)<\/b><br><br>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0432 Facebook \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c REST \u043f\u0440\u0438 \u0441\u043b\u0430\u0431\u043e\u043c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435.<br><br><b>\u0421\u0443\u0442\u044c:<\/b> \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e <b>\u043e\u0434\u0438\u043d Endpoint<\/b> (\u043e\u0431\u044b\u0447\u043d\u043e <code>POST \/graphql<\/code>). \u041a\u043b\u0438\u0435\u043d\u0442 \u0441\u0430\u043c \u043f\u0438\u0448\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441-\u0441\u0445\u0435\u043c\u0443, \u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043f\u043e\u043b\u044f \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u044b.<br><br><b>\u0417\u0430\u043f\u0440\u043e\u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430:<\/b><pre>query {<br>  user(id: &quot;123&quot;) {<br>    name<br>    email<br>    posts(last: 10) {<br>      title<br>    }<br>  }<br>}<\/pre><b>\u041e\u0442\u0432\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/b> \u0412\u0435\u0440\u043d\u0435\u0442\u0441\u044f JSON \u0441\u0442\u0440\u043e\u0433\u043e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c, email \u0438 10 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 \u043f\u043e\u0441\u0442\u043e\u0432. \u041d\u0438 \u043e\u0434\u043d\u0438\u043c \u0431\u0430\u0439\u0442\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0435!<br><br><b>\u2705 \u041f\u043b\u044e\u0441\u044b:<\/b><br><br>\u2022 \u0420\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b Over-fetching \u0438 Under-fetching. \u041e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 = \u0440\u043e\u0432\u043d\u043e \u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u044d\u043a\u0440\u0430\u043d\u0430.<br><br>\u2022 \u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430: UI-\u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0431\u044d\u043a\u0435\u043d\u0434\u0435\u0440\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 endpoint <code>\/users-with-posts-and-comments<\/code>.<br><br><br><b>\u274c \u041c\u0438\u043d\u0443\u0441\u044b:<\/b><br><br>\u2022 <b>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/b> \u0422\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0451 \u0438\u0434\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u0438\u043d URL <code>POST \/graphql<\/code>, \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 CDN (Cloudflare).<br><br>\u2022 <b>\u0423\u0433\u0440\u043e\u0437\u0430 \u0434\u043b\u044f \u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445:<\/b> \u0415\u0441\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0448\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 (\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c -&gt; \u041f\u043e\u0441\u0442\u044b -&gt; \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 -&gt; \u0410\u0432\u0442\u043e\u0440\u044b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 -&gt; \u0418\u0445 \u043f\u043e\u0441\u0442\u044b), \u0432\u0430\u0448\u0430 \u0411\u0414 \u043f\u0440\u043e\u0441\u0442\u043e &quot;\u043b\u044f\u0436\u0435\u0442&quot;.<br><br><br><b>\ud83d\ude80 3. gRPC (\u0421\u043f\u0438\u0434\u0440\u0430\u043d\u043d\u0435\u0440 \u0434\u043b\u044f \u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432)<\/b><br><br>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0432 Google. \u0415\u0441\u043b\u0438 REST \u0438 GraphQL \u043e\u0431\u0449\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 (JSON) \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u0442\u0430\u0440\u043e\u0433\u043e HTTP\/1.1, \u0442\u043e gRPC \u043b\u043e\u043c\u0430\u0435\u0442 \u044d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430.<br><br><b>\u0421\u0443\u0442\u044c:<\/b> \u0412\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u043e\u043d\u0430 \u043b\u0435\u0436\u0438\u0442 \u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435.<br>\u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <b>HTTP\/2<\/b> (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433) \u0438 <b>Protobuf<\/b> (Protocol Buffers).<br>Protobuf - \u044d\u0442\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0438 <code>&quot;name&quot;: &quot;Alex&quot;<\/code>, \u043e\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0430\u0439\u0442\u044b \u043f\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u0433\u043e\u0432\u043e\u0440\u0435\u043d\u043d\u043e\u0439 \u0436\u0435\u0441\u0442\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 (<code>.proto<\/code> \u0444\u0430\u0439\u043b).<br><br><br><br><b>\u2705 \u041f\u043b\u044e\u0441\u044b:<\/b><br><br>\u2022 <b>\u041d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c:<\/b> \u0411\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0435\u0441\u0438\u0442 \u0432 \u0440\u0430\u0437\u044b \u043c\u0435\u043d\u044c\u0448\u0435 JSON \u0438 \u043f\u0430\u0440\u0441\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e. gRPC \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e 10 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 REST.<br><br>\u2022 <b>\u0421\u0442\u0440\u043e\u0433\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f:<\/b> \u0412\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0432 <code>.proto<\/code> \u0444\u0430\u0439\u043b\u0435, \u0438 \u0438\u0437 \u043d\u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u0438 \u0434\u043b\u044f Java-\u0431\u044d\u043a\u0435\u043d\u0434\u0430, \u0438 \u0434\u043b\u044f Python-\u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a &quot;\u043e\u0436\u0438\u0434\u0430\u043b \u0441\u0442\u0440\u043e\u043a\u0443, \u043f\u0440\u0438\u0448\u043b\u043e \u0447\u0438\u0441\u043b\u043e&quot;.<br><br>\u2022 <b>\u0421\u0442\u0440\u0438\u043c\u0438\u043d\u0433:<\/b> \u041c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b.<br><br><br><b>\u274c \u041c\u0438\u043d\u0443\u0441\u044b:<\/b><br><br>\u2022 <b>\u041d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c:<\/b> \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c payload, \u0442\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b.<br><br>\u2022 <b>\u041f\u043b\u043e\u0445\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u043c\u0438:<\/b> \u041d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 JavaScript \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 gRPC \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e (\u043d\u0443\u0436\u0435\u043d \u043f\u0440\u043e\u043a\u0441\u0438 <code>grpc-web<\/code>), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0435\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442.<br><br><br>\u0412 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435:<br>\u041c\u043e\u0431\u0438\u043b\u043a\u0430 \u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u0441 API Gateway \u043f\u043e <b>GraphQL<\/b> \u2014&gt; Gateway \u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u043f\u043e <b>gRPC<\/b>.<br><br>#SystemDesign #API #REST #GraphQL #gRPC #Java<br><br>\ud83d\udcf2 <a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/max.ru\/bookjava\"><b>\u041c\u044b \u0432 MAX<\/b><\/a><br><br>\ud83d\udc49<a href=\"\/channels\/@BookJava\" title=\"\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\">@BookJava<\/a>","text_length":3624,"media":{"root":"\/002\/ZRAAACEvoEwAAAAAzBFCBR1pwcs","photo":{"thumbs":{"m":{"w":320,"h":141,"hash":"2M87ogxaRdhztqCxxUWutA&ts=1775617880"},"x":{"w":800,"h":352,"hash":"7ZNV9tCBZULJy3Z-kmSmkQ&ts=1775617880"},"y":{"w":1280,"h":563,"hash":"JOZyKezH-4FA1XuZhNWEpw&ts=1775617880"},"i":{"bytes":"ASACg|DYxzk\/zoI5B\/rQMZPWgn60ADdOBmmgn+6fxNKxG3qR+FM3L\/eb9aAJAT3BFFNUjPDMfrRQA+iiigAIyKQADtRRQAtFFFAH\/9k="}}}}}]