{"id":313543,"date":"2020-11-21T21:01:35","date_gmt":"2020-11-21T21:01:35","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=313543"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=313543","title":{"rendered":"\u0421\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 Backend-Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430: \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u0433\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b. \u0427\u0430\u0441\u0442\u044c 2"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gv\/gr\/wk\/gvgrwkv6qr399p-m3pig-tgoxsq.jpeg\"><\/div>\n<p>  <\/p>\n<p>\u041f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0431\u043e\u0440\u043d\u0438\u043a\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432-\u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0441 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 Backend-Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. <a href=\"https:\/\/habr.com\/ru\/post\/529210\/\">\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043c\u044b \u043f\u0440\u043e\u0448\u043b\u0438\u0441\u044c \u043f\u043e Java \u0438 Spring. \u0410 \u0432 \u044d\u0442\u043e\u0439 \u043f\u043e\u0433\u043e\u0432\u0440\u0438\u043c \u043e Hibernate, \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0438 \u0438 \u043f\u043e\u0434\u0432\u0435\u0434\u0451\u043c \u0438\u0442\u043e\u0433\u0438.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">TL;DR<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>GitHub-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u043e\u0439 <a href=\"https:\/\/github.com\/jmorozov\/awesome-java-backend-interview\" rel=\"nofollow\">\u0442\u0443\u0442<\/a>, \u0430 \u0425\u0430\u0431\u0440 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0442\u043e\u0440\u0442.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<h2 id=\"voprosy\">\u0412\u043e\u043f\u0440\u043e\u0441\u044b<\/h2>\n<p>  <\/p>\n<h3 id=\"hibernate\">Hibernate<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">28. \u041a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u043a\u044d\u0448\u0438 \u0432 Hibernate \u0438 \u043a\u0430\u043a\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>3 \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041a\u0435\u0448 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (First-level cache). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u043a\u043b\u044e\u0447\u0435\u043d.<\/li>\n<li>\u041a\u0435\u0448 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (Second-level cache). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d.<\/li>\n<li>\u041a\u0435\u0448 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (Query cache). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/135176\/\">\u0421\u0442\u0430\u0442\u044c\u044f<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/docs.jboss.org\/hibernate\/stable\/orm\/userguide\/html_single\/Hibernate_User_Guide.html#caching\" rel=\"nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> \u0438 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/post\/268747\/\">\u043f\u0435\u0440\u0435\u0432\u043e\u0434<\/a><\/li>\n<li><a href=\"https:\/\/www.baeldung.com\/hibernate-second-level-cache\" rel=\"nofollow\">\u0421\u0442\u0430\u0442\u044c\u044f<\/a> \u043d\u0430 Baeldung<\/li>\n<li>\u0421\u0442\u0430\u0442\u044c\u0438 \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043e <a href=\"https:\/\/howtodoinjava.com\/hibernate\/understanding-hibernate-first-level-cache-with-example\/\" rel=\"nofollow\">First Level Cache<\/a> \u0438 <a href=\"https:\/\/howtodoinjava.com\/hibernate\/how-hibernate-second-level-cache-works\/\" rel=\"nofollow\">Second Level Cache<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0423\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432 Hibernate \u043d\u0430\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 <a href=\"https:\/\/vladmihalcea.com\/\" rel=\"nofollow\">Vlad Mihalcea<\/a>:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0432 \u0435\u0433\u043e \u043a\u043d\u0438\u0433\u0435 <a href=\"https:\/\/vladmihalcea.teachable.com\/p\/high-performance-java-persistence-ebook\/?utm_source=blog&amp;utm_medium=banner&amp;utm_campaign=banner\" rel=\"nofollow\">High-Performance Java Persistence<\/a>: \u0427\u0430\u0441\u0442\u044c 2, \u0433\u043b\u0430\u0432\u0430 16 \u2014 <a href=\"https:\/\/vladmihalcea.com\/high-performance-java-persistence-chapter-16-caching\/\" rel=\"nofollow\">Caching<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-hibernate-query-cache-work\/\" rel=\"nofollow\">How does Hibernate Query Cache work<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-hibernate-collection-cache-work\/\" rel=\"nofollow\">How does Hibernate Collection Cache work<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-hibernate-store-second-level-cache-entries\/\" rel=\"nofollow\">How does Hibernate store second-level cache entries<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-hibernate-nonstrict_read_write-cacheconcurrencystrategy-work\/\" rel=\"nofollow\">How does Hibernate NONSTRICT_READ_WRITE CacheConcurrencyStrategy work<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-hibernate-transactional-cacheconcurrencystrategy-work\/\" rel=\"nofollow\">How does Hibernate TRANSACTIONAL CacheConcurrencyStrategy work<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-hibernate-read_only-cacheconcurrencystrategy-work\/\" rel=\"nofollow\">How does Hibernate READ_ONLY CacheConcurrencyStrategy work<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-hibernate-read_write-cacheconcurrencystrategy-work\/\" rel=\"nofollow\">How does Hibernate READ_WRITE CacheConcurrencyStrategy work<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">29. \u0427\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f Lazy \u043e\u0442 Eager \u0432 Hibernate?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><a href=\"https:\/\/docs.oracle.com\/javaee\/7\/api\/javax\/persistence\/FetchType.html#EAGER\" rel=\"nofollow\">Eager Loading<\/a> \u2014 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0440\u0430\u0437\u0443. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f (<code>@OneToOne<\/code>, <code>@ManyToOne<\/code>, <code>@OneToMany<\/code>, <code>@ManyToMany<\/code>) \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c <code>fetch = FetchType.EAGER<\/code>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 <code>@OneToOne<\/code> \u0438 <code>@ManyToOne<\/code>.<\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/javaee\/7\/api\/javax\/persistence\/FetchType.html#LAZY\" rel=\"nofollow\">Lazy Loading<\/a> \u2014 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043b\u044c\u0448\u0435. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0434\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043d\u0443\u0436\u043d\u043e \u0432 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f (<code>@OneToOne<\/code>, <code>@ManyToOne<\/code>, <code>@OneToMany<\/code>, <code>@ManyToMany<\/code>) \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c <code>fetch = FetchType.LAZY<\/code>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 <code>@OneToMany<\/code>, <code>@ManyToMany<\/code>. \u0414\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f proxy-\u043e\u0431\u044a\u0435\u043a\u0442, \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e. \u0415\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0442\u0430\u043a\u043e\u043c\u0443 LAZY-\u043f\u043e\u043b\u044e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438 Hibernate, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c <a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/5.4\/javadocs\/org\/hibernate\/LazyInitializationException.html\" rel=\"nofollow\">LazyInitializationException<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412\u043e\u043f\u0440\u043e\u0441 \u0442\u0430\u043a\u0436\u0435 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 &quot;N+1&quot; \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0442\u0435\u0447\u044c \u0432 \u0435\u0451 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0438 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0432 \u0431\u043b\u043e\u0433\u0435 Vlad Mihalcea: <a href=\"https:\/\/vladmihalcea.com\/hibernate-facts-the-importance-of-fetch-strategy\/\" rel=\"nofollow\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/vladmihalcea.com\/eager-fetching-is-a-code-smell\/\" rel=\"nofollow\">\u0434\u0432\u0430<\/a> \u0438 \u043f\u0440\u043e LazyInitializationException <a href=\"https:\/\/vladmihalcea.com\/the-best-way-to-handle-the-lazyinitializationexception\/\" rel=\"nofollow\">\u0442\u0440\u0438<\/a>.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">30. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 &#39;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 N+1 \u0437\u0430\u043f\u0440\u043e\u0441\u0430&#39; \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Hibernate? \u041a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442? \u041a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c? \u041a\u0430\u043a \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 N+1 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Hibernate, \u043d\u043e \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 N+1 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043a\u043e\u0433\u0434\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 N \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u0438\u043c. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 N \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u0443 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>slow query log<\/code>, \u0438\u0431\u043e \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e, \u043d\u043e \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 plain sql (jdbc, JOOQ), \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u043e\u0434\u043d\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c (\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430) \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439. \u0418 \u0432\u043e\u0442 \u043c\u044b \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0448\u043b\u0438 \u0438 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443. &quot;\u0414\u0430 \u043a\u0430\u043a \u0432\u044b \u044d\u0442\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438!?&quot;. \u0414\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e \u0437\u0430\u043f\u0430\u0440\u043a\u0435 \u043a\u0442\u043e-\u0442\u043e \u0432 \u0446\u0438\u043a\u043b\u0435 \u043d\u0430\u0447\u0430\u043b \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0435 \u0433\u0434\u0435-\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043f\u0440\u0438\u0432\u0435\u0442. \u041a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c? \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>JOIN<\/code> \u0441\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a Hibernate. \u0415\u0441\u043b\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 <a href=\"https:\/\/docs.jboss.org\/hibernate\/stable\/core\/userguide\/html_single\/Hibernate_User_Guide.html\" rel=\"nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c &quot;N+1&quot;, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0439 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0422\u0443\u0442 \u043e\u043f\u0438\u0448\u0443 \u0441\u0430\u043c\u044b\u0435 \u044f\u0432\u043d\u044b\u0435 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0438 <code>FetchType.EAGER<\/code>. \u041e\u043d\u0430 \u0441\u043a\u043b\u043e\u043d\u043d\u0430 \u043a \u043f\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044e N+1. \u0410 \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 <code>@ManyToOne<\/code> \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430. \u0417\u0430\u0431\u044b\u043b\u0438 \u0432 \u0441\u0432\u043e\u0451\u043c JPQL \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0437\u0430\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>JOIN FETCH<\/code> \u0438 \u043f\u0440\u0438\u0432\u0435\u0442. \u0410 \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0442\u043e \u0442\u043e\u0433\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e <code>FetchType.LAZY<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0436 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b\u0438 <code>FetchType.LAZY<\/code>, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u0434\u043d\u043e \u0435\u0451 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b N+1. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u043b\u0438\u0441\u044c. \u0410 \u043c\u044b \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0448\u043b\u0438 \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443 \u0438 \u0441\u0442\u0430\u043b\u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043f\u043e\u043b\u044f\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u2014 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435. \u0412\u0441\u0451 \u0442\u043e\u0442 \u0436\u0435 <code>JOIN FETCH<\/code> \u043d\u0430\u0441 \u0441\u043f\u0430\u0441\u0451\u0442 \u0438 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e <code>JOIN FETCH<\/code> \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e\u043c\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c bonjour. \u0414\u043b\u044f \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f <code>@OneToMany<\/code> \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>FetchMode.SUBSELECT<\/code> \u2014 \u0431\u0443\u0434\u0435\u0442 2 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043d\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439. \u0422.\u0435. \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u044f\u0436\u0435\u043b\u043e\u0432\u0435\u0441\u043d\u044b\u043c.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043b\u0443\u0447\u0448\u0435 \u2014 \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043f\u0430\u0447\u043a\u0430\u043c\u0438. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e <code>@BatchSize<\/code> \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0439 \u043f\u0430\u0447\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435.<\/p>\n<p>  <\/p>\n<p>\u0415\u0449\u0451 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.baeldung.com\/jpa-entity-graph\" rel=\"nofollow\">JPA EntityGraph<\/a><\/li>\n<li><a href=\"https:\/\/docs.jboss.org\/hibernate\/stable\/core\/userguide\/html_single\/Hibernate_User_Guide.html#fetching-strategies-dynamic-fetching-profile-example\" rel=\"nofollow\">Hibernate FetchProfile<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 N+1, \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/vladmihalcea\/db-util\" rel=\"nofollow\">db-util<\/a> \u043e\u0442 Vlad Mihalcea. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0443 \u043d\u0435\u0433\u043e \u0436\u0435 \u0432 <a href=\"https:\/\/vladmihalcea.com\/how-to-detect-the-n-plus-one-query-problem-during-testing\/\" rel=\"nofollow\">\u0431\u043b\u043e\u0433\u0435<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0432\u043e\u0442 JOOQ \u0443\u043c\u0435\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c N+1 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432 <a href=\"https:\/\/it.asm0dey.ru\/podcast\/%d0%bf%d0%b0%d1%88%d0%b0-%d1%81%d0%bb%d0%b0%d0%b2%d0%b0-%d1%8d%d0%bf%d0%b8%d0%b7%d0%be%d0%b4-17\/\" rel=\"nofollow\">17-\u043c \u044d\u043f\u0438\u0437\u043e\u0434\u0435<\/a> (01:16:36) \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u0430 \u041f\u0430\u0448\u0430+\u0421\u043b\u0430\u0432\u0430. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 <a href=\"https:\/\/www.jooq.org\/doc\/3.11\/manual-single-page\/#diagnostics-repeated-statements\" rel=\"nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> JOOQ.<\/p>\n<p>  <\/p>\n<p>\u0423\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0412 \u0431\u043b\u043e\u0433\u0435 Vlad Mihalcea: <a href=\"https:\/\/vladmihalcea.com\/n-plus-1-query-problem\/\" rel=\"nofollow\">\u0440\u0430\u0437<\/a> \u0438 <a href=\"https:\/\/vladmihalcea.com\/hibernate-query-cache-n-plus-1-issue\/\" rel=\"nofollow\">\u0434\u0432\u0430<\/a><\/li>\n<li>\u041d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/416851\/\">Hibernate \u2014 \u043e \u0447\u0435\u043c \u043c\u043e\u043b\u0447\u0430\u0442 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u044b<\/a><\/li>\n<li>\u041d\u0430 DOU \u043f\u0440\u043e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0432 <a href=\"https:\/\/dou.ua\/lenta\/articles\/jpa-fetch-types\/\" rel=\"nofollow\">JPA<\/a> \u0438 <a href=\"https:\/\/dou.ua\/lenta\/articles\/hibernate-fetch-types\/\" rel=\"nofollow\">Hibernate<\/a><\/li>\n<li>\u0412 \u0432\u0438\u0434\u0435\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u041d\u0438\u043a\u043e\u043b\u0430\u044f \u0410\u043b\u0438\u043c\u0435\u043d\u043a\u043e\u0432\u0430 \u043d\u0430 JPoint <a href=\"https:\/\/youtu.be\/b52Qz6qlic0?t=1224\" rel=\"nofollow\">&quot;\u0421\u0434\u0435\u043b\u0430\u0435\u043c Hibernate \u0441\u043d\u043e\u0432\u0430 \u0431\u044b\u0441\u0442\u0440\u044b\u043c&quot;<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">31. \u041a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0439 \u043a\u043b\u044e\u0447 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Hibernate?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: <code>\u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0439 \u043a\u043b\u044e\u0447<\/code> \u2014 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432. \u0412\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u043e \u043a\u043b\u044e\u0447\u0438 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0430\u044f <a href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/348172\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0441 \u0446\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0439 \u043a\u043b\u044e\u0447 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Hibernate, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434 \u044d\u0442\u043e\u0442 \u043a\u043b\u044e\u0447 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u043c\u0443 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e <code>@Embeddable<\/code>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c <code>Serializable<\/code> \u0438 \u0438\u043c\u0435\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e <code>equals<\/code> \u0438 <code>hashcode<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u0430\u043c\u043e\u0439 \u0436\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0439 \u043a\u043b\u044e\u0447, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043a\u043b\u044e\u0447\u0430 \u0438 \u0432\u0435\u0448\u0430\u0435\u043c \u043d\u0430 \u043d\u0435\u0433\u043e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e <code>@EmbeddedId<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0432 <a href=\"https:\/\/vladmihalcea.com\/the-best-way-to-map-a-composite-primary-key-with-jpa-and-hibernate\/\" rel=\"nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> Vlad Mihalcea \u0438\u043b\u0438 \u0432 <a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/5.4\/userguide\/html_single\/Hibernate_User_Guide.html#identifiers-composite-aggregated\" rel=\"nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> Hibernate.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">32. \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0411\u0414 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JPA (Hibernate)?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u0415\u0441\u0442\u044c 4 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0411\u0414 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JPA (Hibernate):<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/5.4\/userguide\/html_single\/Hibernate_User_Guide.html#entity-inheritance-mapped-superclass\" rel=\"nofollow\">MappedSuperclass<\/a> \u2014 \u043f\u043e\u043b\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u041d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u043c <a href=\"https:\/\/docs.jboss.org\/hibernate\/jpa\/2.1\/api\/javax\/persistence\/MappedSuperclass.html\" rel=\"nofollow\">@MappedSuperClass<\/a>, \u0430 \u0432\u043e\u0442 \u043d\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 <code>@Entity<\/code>. \u0415\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043e\u0442\u043e\u043c\u043a\u0430 \u043f\u043e\u043b\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435, \u0442\u043e \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u0430\u043f\u043f\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 <a href=\"https:\/\/docs.jboss.org\/hibernate\/jpa\/2.1\/api\/javax\/persistence\/AttributeOverride.html\" rel=\"nofollow\">@AttributeOverride<\/a> \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043c\u043a\u0430. \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438. \u041f\u0440\u0438 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/li>\n<li><a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/5.4\/userguide\/html_single\/Hibernate_User_Guide.html#entity-inheritance-single-table\" rel=\"nofollow\">Single table<\/a> \u2014 \u0432\u0441\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043a\u0443-\u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 <code>@Entity<\/code>-\u043a\u043b\u0430\u0441\u0441 \u043d\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f <code>@Inheritance(strategy = InheritanceType.SINGLE_TABLE)<\/code> \u0438 <code>@DiscriminatorColumn(name = &quot;YOUR_DISCRIMINATOR_COLUMN_NAME&quot;)<\/code> (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043c\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0438 <code>DTYPE<\/code> \u0438 \u0442\u0438\u043f <code>VARCHAR<\/code>). \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c <code>@DiscriminatorValue(&quot;ThisChildName&quot;)<\/code> \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435-\u0434\u0438\u0441\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0435 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043a\u0443, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e <a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/5.4\/javadocs\/org\/hibernate\/annotations\/DiscriminatorFormula.html\" rel=\"nofollow\">@DiscriminatorFormula<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>CASE...WHEN<\/code> \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e JPA, \u0444\u0438\u0448\u043a\u0430 Hibernate. \u0414\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f. \u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c <code>NULL<\/code>.<\/li>\n<li><a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/5.4\/userguide\/html_single\/Hibernate_User_Guide.html#entity-inheritance-joined-table\" rel=\"nofollow\">Joined table<\/a> \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438 \u043f\u043e\u043b\u044f, \u0430 \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0439 (\u043e\u043d \u0436\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439) \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0441 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439. \u0412 <code>@Entity<\/code>-\u043a\u043b\u0430\u0441\u0441 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c <code>@Inheritance(strategy = InheritanceType.JOINED)<\/code>. \u0414\u043b\u044f \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f <code>JOIN<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>CASE...WHEN<\/code>, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f <code>_clazz<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430\u043c\u0438 (0 (\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c), 1, 2 \u0438 \u0442.\u0434.) \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 Hibernate \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440.<\/li>\n<li><a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/5.4\/userguide\/html_single\/Hibernate_User_Guide.html#entity-inheritance-table-per-class\" rel=\"nofollow\">Table per class<\/a> \u2014 \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 <code>MappedSuperclass<\/code>, \u0438\u043c\u0435\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u0430. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u041f\u043e <a href=\"https:\/\/download.oracle.com\/otn-pub\/jcp\/persistence-2_2-mrel-spec\/JavaPersistence.pdf\" rel=\"nofollow\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/a> JPA 2.2 (\u0440\u0430\u0437\u0434\u0435\u043b 2.12) \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439, \u043d\u043e \u0432 Hibernate \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043c\u044b \u043d\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u043c <code>@Entity<\/code> \u0438 <code>@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)<\/code>. \u041f\u043e\u043b\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 (<code>@Id<\/code>) \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u0422\u0430\u043a\u0436\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f <code>@AttributeOverride<\/code> \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u2014 \u043d\u0430\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u043e\u043b\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0441\u0440\u0430\u0437\u0443 \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e. \u041f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>UNION<\/code> \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u044b, Hibernate \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0435 <code>_clazz<\/code> \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u044b (1, 2 \u0438 \u0442.\u0434.). \u0410 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <code>NULL AS some_field<\/code>. \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0449\u0451 \u043f\u043e \u0442\u0435\u043c\u0435 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430 \u0425\u0430\u0431\u0440\u0435: <a href=\"https:\/\/habr.com\/ru\/post\/337488\/\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/416851\/\">\u0434\u0432\u0430<\/a><\/li>\n<li>\u0412 \u0431\u043b\u043e\u0433\u0435 Vlad Mahalcea: <a href=\"https:\/\/vladmihalcea.com\/the-best-way-to-use-entity-inheritance-with-jpa-and-hibernate\/\" rel=\"nofollow\">\u0412\u043b\u0430\u0434 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043b\u0443\u0447\u0448\u0443\u044e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e<\/a> \u0438 <a href=\"https:\/\/vladmihalcea.com\/how-to-inherit-properties-from-a-base-class-entity-using-mappedsuperclass-with-jpa-and-hibernate\/\" rel=\"nofollow\">\u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e MappedSuperclass<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 JavaDoc \u0441 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u043c\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/docs.jboss.org\/hibernate\/jpa\/2.2\/api\/javax\/persistence\/package-summary.html\" rel=\"nofollow\">JPA<\/a><\/li>\n<li><a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/5.4\/javadocs\/org\/hibernate\/annotations\/package-summary.html\" rel=\"nofollow\">Hibernate<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0418\u043b\u0438 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e <a href=\"https:\/\/download.oracle.com\/otn-pub\/jcp\/persistence-2_2-mrel-spec\/JavaPersistence.pdf\" rel=\"nofollow\">JPA<\/a> 2.2. \u0415\u0449\u0451 \u0435\u0441\u0442\u044c <a href=\"https:\/\/www.amazon.com\/Understanding-JPA-2-2-Persistence-fascicle-ebook\/dp\/B07RWPXPS6\" rel=\"nofollow\">\u043a\u043d\u0438\u0436\u043a\u0430<\/a> \u0441 \u0442\u043e\u043b\u043a\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u043e\u0433\u043e pdf.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<h3 id=\"bazy-dannyh\">\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">33. \u0412 \u0447\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 where \u0438 having \u0432 SQL?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u0415\u0441\u0442\u044c \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u0439 <a href=\"https:\/\/www.postgresql.org\/docs\/12\/tutorial-agg.html\" rel=\"nofollow\">\u043e\u0442\u0432\u0435\u0442<\/a> \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a Postgresql. \u0412\u043e\u0442 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441 \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/tutorial-agg\" rel=\"nofollow\">Postgres Pro<\/a>:<\/p>\n<p>  <\/p>\n<blockquote><p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 WHERE \u043e\u0442 HAVING \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e WHERE \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u043d\u0430 \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0432), \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a HAVING \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u0441\u043b\u0435 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 WHERE \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439; \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 HAVING, \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432, \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. (\u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 HAVING, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u044b, \u043d\u043e \u044d\u0442\u043e \u0440\u0435\u0434\u043a\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 WHERE.)<\/p><\/blockquote>\n<p>\u041d\u043e \u0432\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/266811\/\">\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0411\u0414<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-a-relational-database-work\/\" rel=\"nofollow\">How does a relational database work<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/relational-database-sql-prepared-statements\/\" rel=\"nofollow\">How does a relational database execute SQL statements and prepared statements<\/a><\/li>\n<li><a href=\"https:\/\/dev.to\/dhanushkadev\/how-database-internally-works-pfh\" rel=\"nofollow\">How Database Internally Works<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/playlist?list=PL-_cKNuVAYAWMRG7iKHGZMg9Az8HX735w\" rel=\"nofollow\">\u041a\u0443\u0440\u0441<\/a> \u043f\u043e \u0411\u0414 \u043e\u0442 \u0418\u043b\u044c\u0438 \u0422\u0435\u0442\u0435\u0440\u0438\u043d\u0430 \u0438\u043b\u0438 <a href=\"https:\/\/www.youtube.com\/playlist?list=PL-_cKNuVAYAU-CO9NXtjzqdUsXoK047DZ\" rel=\"nofollow\">\u043a\u0443\u0440\u0441<\/a> \u043e\u0442 \u0412\u0430\u0434\u0438\u043c\u0430 \u0426\u0435\u0441\u044c\u043a\u043e<\/li>\n<li><a href=\"https:\/\/cstack.github.io\/db_tutorial\/\" rel=\"nofollow\">Let&#8217;s Build a Simple Database<\/a><\/li>\n<li><a href=\"https:\/\/www.databass.dev\/\" rel=\"nofollow\">Database internals<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">34. ACID &#8212; \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044c<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><em>A<\/em> \u2014 \u0410\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u044c (Atomicity). \u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0430\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e.<\/li>\n<li><em>C<\/em> \u2014 \u0421\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c (Consistency). \u041a\u0430\u0436\u0434\u0430\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/li>\n<li><em>I<\/em> \u2014 \u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c (Isolation). \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u0435\u0451 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/li>\n<li><em>D<\/em> \u2014 \u0421\u0442\u043e\u0439\u043a\u043e\u0441\u0442\u044c (Durability). \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437-\u0437\u0430 \u0441\u0431\u043e\u044f).<\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">35. \u0423\u0440\u043e\u0432\u043d\u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438. \u041a\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0440\u0435\u0448\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c? \u041a\u0430\u043a\u043e\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0411\u0414? \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A3%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C_%D0%B8%D0%B7%D0%BE%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%82%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D0%B9\" rel=\"nofollow\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0438\u0437 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>Read uncommitted<\/code> (\u0447\u0442\u0435\u043d\u0438\u0435 \u043d\u0435\u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445). \u041e\u043d \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 (\u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f).<\/li>\n<li><code>Read committed<\/code> (\u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445). \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u00ab\u0433\u0440\u044f\u0437\u043d\u043e\u0433\u043e\u00bb \u0447\u0442\u0435\u043d\u0438\u044f (\u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u0441\u044f).<\/li>\n<li><code>Repeatable read<\/code> (\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u044f). \u0420\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0435\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0447\u0442\u0435\u043d\u0438\u044f (\u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u0447\u0442\u0435\u043d\u0438\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u043c\u0438).<\/li>\n<li><code>Serializable<\/code> (\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u0435\u043c\u043e\u0441\u0442\u044c). \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u043e\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u043a\u0430\u0436\u0434\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u2014 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442 \u0444\u0430\u043d\u0442\u043e\u043c\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f (\u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u0447\u0442\u0435\u043d\u0438\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u043e \u0442\u0435\u043c\u0435 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u043a\u0443\u0441:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/469415\/\">\u0414\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445<\/a><\/li>\n<li>\u0414\u043b\u044f MSSQL: <a href=\"https:\/\/habr.com\/ru\/post\/305600\/\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/infopulse\/blog\/261097\/\">\u0434\u0432\u0430<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/infopulse\/blog\/261101\/\">\u0442\u0440\u0438<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/317884\/\">\u0414\u043b\u044f PostgreSQL<\/a>. \u0422\u0443\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043c\u0443 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/\">Postgres Professional<\/a>, \u0438 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0446\u0438\u043a\u043b \u0441\u0442\u0430\u0442\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/users\/egorov\/\" class=\"user_link\">egorov<\/a> \u043f\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 PostgreSQL (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/442804\/\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/462877\/\">\u0434\u0432\u0430<\/a> \u0438 \u0442.\u0434.). \u0410 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Postgres Professional \u0435\u0441\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/transaction-iso\" rel=\"nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/a> \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443.<\/li>\n<li>\u0414\u043b\u044f MySQL: <a href=\"https:\/\/habr.com\/ru\/post\/135217\/\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/238513\/\">\u0434\u0432\u0430<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/446662\/\">\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0438\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">36. \u041a\u0430\u043a\u0438\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 \u0442\u0438\u043f\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0432 \u0411\u0414 \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438\u043d\u0434\u0435\u043a\u0441 \u0432\u043e\u043e\u0431\u0449\u0435?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Database_index\" rel=\"nofollow\">\u0418\u043d\u0434\u0435\u043a\u0441 \u0411\u0414<\/a> \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0411\u0414 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u0430. \u0418\u043d\u0434\u0435\u043a\u0441\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0411\u0414. \u041a\u043b\u044e\u0447\u043e\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430\/\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0411\u0414 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043b\u0435\u0436\u0430\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0421\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e <a href=\"https:\/\/en.wikipedia.org\/wiki\/B-tree\" rel=\"nofollow\">B-Tree<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Hash_table\" rel=\"nofollow\">HASH-\u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/a><\/li>\n<li><a href=\"http:\/\/citforum.ru\/database\/oracle\/bitmap_index\/\" rel=\"nofollow\">Bitmap<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Bloom_filter\" rel=\"nofollow\">\u0424\u0438\u043b\u044c\u0442\u0440 \u0411\u043b\u0443\u043c\u0430<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Grid_(spatial_index)\" rel=\"nofollow\">Spatial grid<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Quadtree\" rel=\"nofollow\">Quadtree<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Hilbert_R-tree\" rel=\"nofollow\">R-Tree<\/a><\/li>\n<li>\u0438 \u0434\u0440\u0443\u0433\u0438\u0435.<\/li>\n<\/ul>\n<p>  <\/p>\n<p><a href=\"http:\/\/tokarchuk.ru\/2012\/08\/indexes-classification\/\" rel=\"nofollow\">\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432<\/a> \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c. \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e\u0432\u0435\u0440\u0443 \u043a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0443.<br \/>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0423\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u2014 \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u044b \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e. \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0430 B-\u0434\u0435\u0440\u0435\u0432\u044c\u044f\u0445.<\/li>\n<li>\u041d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u2014 \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b. \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u0445\u0435\u0448\u0430\u0445.<br \/>  \u0418\u043b\u0438 \u043f\u043e \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044e \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445:<\/li>\n<li>\u041d\u0435\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0435 \u2014 \u0442\u0430\u043a\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u044e\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0421\u0441\u044b\u043b\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 ID \u0444\u0430\u0439\u043b\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430; ID \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445; \u043d\u043e\u043c\u0435\u0440 \u0438\u0441\u043a\u043e\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u0430. \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0411\u0414 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432.<\/li>\n<li>\u041a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0435 \u2014 \u0442\u0430\u043a\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0411\u0414.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/102785\/\">\u041e\u0431\u0437\u043e\u0440 \u0442\u0438\u043f\u043e\u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 Oracle, MySQL, PostgreSQL, MS SQL<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li>\u0412\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u0430\u044f \u0441\u0435\u0440\u0438\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u043e\u0442 \u0415\u0433\u043e\u0440\u0430 \u0420\u043e\u0433\u043e\u0432\u0430 \u043f\u0440\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0432 PostgreSQL: <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/326096\/\">\u0447\u0430\u0441\u0442\u044c 1<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/326106\/\">\u0447\u0430\u0441\u0442\u044c 2<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/328280\/\">\u0447\u0430\u0441\u0442\u044c 3<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/330544\/\">\u0447\u0430\u0441\u0442\u044c 4<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/333878\/\">\u0447\u0430\u0441\u0442\u044c 5<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/337502\/\">\u0447\u0430\u0441\u0442\u044c 6<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/340978\/\">\u0447\u0430\u0441\u0442\u044c 7<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/343488\/\">\u0447\u0430\u0441\u0442\u044c 8<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/346460\/\">\u0447\u0430\u0441\u0442\u044c 9<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/349224\/\">\u0447\u0430\u0441\u0442\u044c 10<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/141767\/\">\u041a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0435 \u0438 \u00ab\u043e\u0431\u044b\u0447\u043d\u044b\u0435\u00bb \u0438\u043d\u0434\u0435\u043a\u0441\u044b MySQL (InnoDB)<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/261871\/\">\u00ab\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 Postgres<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"http:\/\/tokarchuk.ru\/2012\/08\/indexes-classification\/\" rel=\"nofollow\">\u0422\u0438\u043f\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432, \u0432\u0438\u0434\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432, \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u044b?<\/a><\/li>\n<li><a href=\"https:\/\/alextoolsblog.blogspot.com\/2019\/11\/database-index-types.html\" rel=\"nofollow\">\u0418\u043d\u0434\u0435\u043a\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445: \u0442\u0438\u043f\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432<\/a><\/li>\n<li><a href=\"https:\/\/alextoolsblog.blogspot.com\/2019\/11\/database-index-methods.html\" rel=\"nofollow\">\u0418\u043d\u0434\u0435\u043a\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445: \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/a><\/li>\n<li><a href=\"https:\/\/alextoolsblog.blogspot.com\/2019\/11\/database-index.html\" rel=\"nofollow\">\u0418\u043d\u0434\u0435\u043a\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/li>\n<li><a href=\"https:\/\/www.essentialsql.com\/what-is-a-database-index\/\" rel=\"nofollow\">Database Indexes Explained<\/a><\/li>\n<li><a href=\"http:\/\/citforum.ru\/database\/oracle\/bb_indexes\/\" rel=\"nofollow\">Bitmap-\u0438\u043d\u0434\u0435\u043a\u0441 \u0438\u043b\u0438 B*tree-\u0438\u043d\u0434\u0435\u043a\u0441: \u043a\u0430\u043a\u043e\u0439 \u0438 \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c?<\/a><\/li>\n<li><a href=\"https:\/\/ruhighload.com\/%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D1%8B+%D0%B2+mysql\" rel=\"nofollow\">\u0418\u043d\u0434\u0435\u043a\u0441\u044b \u0432 MySQL<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/266811\/\">\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0411\u0414<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/490824\/\">\u0417\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0432 PostgreSQL \u0433\u043b\u0430\u0437\u0430\u043c\u0438 Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/247373\/\">14 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0431 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0445 \u0432 SQL Server, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0441\u0442\u0435\u0441\u043d\u044f\u043b\u0438\u0441\u044c \u0437\u0430\u0434\u0430\u0442\u044c<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/247949\/\">\u0412\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/453046\/\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0432 PostgreSQL<\/a><\/li>\n<li><a href=\"https:\/\/use-the-index-luke.com\/sql\/anatomy\" rel=\"nofollow\">Anatomy of an SQL Index<\/a><\/li>\n<li><a href=\"https:\/\/use-the-index-luke.com\/\" rel=\"nofollow\">SQL Indexing and Tuning e-Book<\/a><\/li>\n<li><a href=\"https:\/\/www.sqlshack.com\/deep-dive-hash-indexes-memory-oltp-tables\/#:~:text=Simply%20explained%2C%20in%20the%20In,in%20an%20in%2Dmemory%20table.\" rel=\"nofollow\">Deep dive into Hash indexes for In-Memory OLTP tables<\/a><\/li>\n<li><a href=\"http:\/\/www.mathcs.emory.edu\/~cheung\/Courses\/554\/Syllabus\/3-index\/hashing.html\" rel=\"nofollow\">Indexing based on Hashing<\/a><\/li>\n<li><a href=\"https:\/\/dotnettutorials.net\/lesson\/sql-server-indexes-interview-questions-answers\/\" rel=\"nofollow\">SQL Server Indexes Interview Questions and Answers<\/a><\/li>\n<li><a href=\"https:\/\/www.sqlshack.com\/top-25-sql-interview-questions-and-answers-about-indexes\/\" rel=\"nofollow\">Top 25 SQL interview questions and answers about indexes<\/a><\/li>\n<li><a href=\"https:\/\/www.freecodecamp.org\/news\/database-indexing-at-a-glance-bb50809d48bd\/\" rel=\"nofollow\">An in-depth look at Database Indexin<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">37. \u0412 \u0447\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438 \u043f\u0435\u0441\u0441\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_(%D0%A1%D0%A3%D0%91%D0%94)\" rel=\"nofollow\">\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430<\/a> (lock) \u0432 \u0421\u0423\u0411\u0414 \u2014 \u043e\u0442\u043c\u0435\u0442\u043a\u0430 \u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439 \u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0441\u0441\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u2014 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u0430\u043a\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0441\u0435\u0441\u0441\u0438\u0439, \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0443\u0440\u043e\u0432\u043d\u044e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438. \u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u044f \u043e\u0431\u0449\u0443\u044e \u0440\u0435\u0430\u043a\u0446\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<br \/>  \u041f\u0435\u0441\u0441\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0432\u0443\u0445 \u0442\u0438\u043f\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>shared (read) \u2014 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u0435\u0439, \u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u043c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435, \u043d\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c.<\/li>\n<li>exclusive (write) \u2014 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0438 \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u0435\u0439, \u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439. \u0414\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u043c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c.<\/li>\n<\/ul>\n<p>  <\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Optimistic_concurrency_control\" rel=\"nofollow\">\u041e\u043f\u0442\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430<\/a> \u2014 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u0441\u0435\u0441\u0441\u0438\u044f\u043c\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0441\u0442\u0440\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 (\u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 <code>VERSION<\/code> \u0438 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0441 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>0<\/code>). \u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430, \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0442\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u2014 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u043e\u043c) \u0434\u043b\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u0435\u0441\u0441\u0438\u044f\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c.<\/p>\n<p>  <\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u043c \u0440\u0430\u0441\u0445\u043e\u0434\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043f\u0435\u0441\u0441\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043d\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044e\u0442.<\/p>\n<p>  <\/p>\n<p>\u041c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0441 \u043a\u043e\u0434\u043e\u043c \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0431\u043b\u043e\u0433\u0435 Vlad Mihalcea:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/vladmihalcea.com\/a-beginners-guide-to-java-persistence-locking\/\" rel=\"nofollow\">A beginner\u2019s guide to Java Persistence locking<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/a-beginners-guide-to-database-locking-and-the-lost-update-phenomena\/\" rel=\"nofollow\">A beginner\u2019s guide to database locking and the lost update phenomena<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/hibernate-locking-patterns-how-do-pessimistic_read-and-pessimistic_write-work\/\" rel=\"nofollow\">How do LockModeType.PESSIMISTIC_READ and LockModeType.PESSIMISTIC_WRITE work in JPA and Hibernate<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/hibernate-locking-patterns-how-does-pessimistic_force_increment-lock-mode-work\/\" rel=\"nofollow\">How does LockModeType.PESSIMISTIC_FORCE_INCREMENT work in JPA and Hibernate<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/hibernate-locking-patterns-how-does-optimistic-lock-mode-work\/\" rel=\"nofollow\">How does LockModeType.OPTIMISTIC work in JPA and Hibernate<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/hibernate-locking-patterns-how-does-optimistic_force_increment-lock-mode-work\/\" rel=\"nofollow\">How does LockModeType.OPTIMISTIC_FORCE_INCREMENT work in JPA and Hibernate<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-to-prevent-optimisticlockexception-using-hibernate-versionless-optimistic-locking\/\" rel=\"nofollow\">How to prevent OptimisticLockException with Hibernate versionless optimistic locking<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-database-pessimistic-locking-interact-with-insert-update-and-delete-sql-statements\/\" rel=\"nofollow\">How does database pessimistic locking interact with INSERT, UPDATE, and DELETE SQL statements<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/how-does-mvcc-multi-version-concurrency-control-work\/\" rel=\"nofollow\">How does MVCC (Multi-Version Concurrency Control) work<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/2pl-two-phase-locking\/\" rel=\"nofollow\">How does the 2PL (Two-Phase Locking) algorithm work<\/a><\/li>\n<li><a href=\"https:\/\/vladmihalcea.com\/preventing-lost-updates-in-long-conversations\/\" rel=\"nofollow\">How to prevent lost updates in long conversations<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/121858\/\">\u041a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/86302\/\">\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/434836\/\">\u0417\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f Version \u0432 JPA<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/268903\/\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 Hibernate \u2013 \u0413\u043b\u0430\u0432\u0430 V. \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/462877\/\">\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 PostgreSQL: 1. \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/463819\/\">\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 PostgreSQL: 2. \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u0442\u0440\u043e\u043a<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/465263\/\">\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 PostgreSQL: 3. \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/466199\/\">\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 PostgreSQL: 4. \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.baeldung.com\/jpa-pessimistic-locking\" rel=\"nofollow\">Pessimistic Locking in JPA<\/a><\/li>\n<li><a href=\"https:\/\/www.baeldung.com\/jpa-optimistic-locking\" rel=\"nofollow\">Optimistic Locking in JPA<\/a><\/li>\n<li><a href=\"https:\/\/www.baeldung.com\/java-jpa-transaction-locks\" rel=\"nofollow\">Enabling Transaction Locks in Spring Data JPA<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Deadlock\" rel=\"nofollow\">Deadlock<\/a><\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/javaee\/7\/api\/javax\/persistence\/LockModeType.html\" rel=\"nofollow\">Enum LockModeType<\/a><\/li>\n<li><a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/explicit-locking\" rel=\"nofollow\">\u042f\u0432\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 Postgresql<\/a><\/li>\n<li><a href=\"https:\/\/devcenter.heroku.com\/articles\/postgresql-concurrency\" rel=\"nofollow\">PostgreSQL Concurrency with MVCC<\/a><\/li>\n<li><a href=\"https:\/\/docs.jboss.org\/hibernate\/orm\/current\/userguide\/html_single\/Hibernate_User_Guide.html#locking\" rel=\"nofollow\">Locking<\/a> \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Hibernate<\/li>\n<li><a href=\"https:\/\/www.jooq.org\/doc\/latest\/manual\/sql-execution\/crud-with-updatablerecords\/optimistic-locking\/\" rel=\"nofollow\">Optimistic locking<\/a> \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 JOOQ<\/li>\n<li><a href=\"https:\/\/medium.com\/slalom-build\/optimistically-locking-your-spring-boot-web-services-187662eb8a91\" rel=\"nofollow\">Optimistically Locking Your Spring Boot Web Services<\/a><\/li>\n<li><a href=\"https:\/\/convincedcoder.com\/2018\/09\/01\/Optimistic-pessimistic-locking-sql\/\" rel=\"nofollow\">Optimistic and pessimistic locking with SQL<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<h3 id=\"principy-patterny-praktiki-i-podhody-razrabotki-po\">\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b, \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b, \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041f\u041e<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">38. SOLID<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u044f\u0442 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c. \u041d\u0438\u043a\u0442\u043e \u0438\u0437 \u043c\u043e\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e\u0435\u0440\u043e\u0432 \u043d\u0435 \u0441\u0442\u0430\u043b \u0440\u0430\u0437\u043c\u0443\u0441\u043e\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0442\u044c. \u041e\u0434\u0438\u043d \u0440\u0430\u0437 \u0441\u043f\u0440\u043e\u0441\u0438\u043b\u0438, \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0430\u0434\u043e. \u041d\u043e, \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0435\u043d\u044c\u043e\u0440\u043d\u043e\u0441\u0442\u0438 \u0432 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0438, \u0442\u0435\u043c \u0433\u043b\u0443\u0431\u0436\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c.<\/p>\n<p>  <\/p>\n<ul>\n<li><em>S<\/em> \u2014 \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (The Single Responsibility Principle). \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u043e\u0434\u043d\u0443 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/li>\n<li><em>O<\/em> \u2014 \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u0438\/\u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u0438 (The Open Closed Principle). \u0421\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/li>\n<li><em>L<\/em> \u2014 \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0411\u0430\u0440\u0431\u0430\u0440\u044b \u041b\u0438\u0441\u043a\u043e\u0432 (The Liskov Substitution Principle). \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c\u0438 \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u0438\u0445 \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u0432 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c, \u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439.<\/li>\n<li><em>I<\/em> \u2014 \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (The Interface Segregation Principle). \u041c\u043d\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u043e\u0434\u0438\u043d \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439.<\/li>\n<li><em>D<\/em> \u2014 \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 (The Dependency Inversion Principle). \u0417\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439, \u0430 \u043d\u0435 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c, \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u044f\u0434\u044e\u0448\u043a\u0430 &quot;\u0421\u0432\u0435\u0442 \u043d\u0430\u0448 \u0447\u0438\u0441\u0442\u044b\u0439 \u043a\u043e\u0434&quot; <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%B0%D1%80%D1%82%D0%B8%D0%BD,_%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82_(%D0%B8%D0%BD%D0%B6%D0%B5%D0%BD%D0%B5%D1%80)\" rel=\"nofollow\">\u0411\u043e\u0431 \u041c\u0430\u0440\u0442\u0438\u043d<\/a>, \u0430 \u0430\u043a\u0440\u043e\u043d\u0438\u043c \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u043e\u0434\u0438\u043d \u0438\u0437 \u0435\u0433\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439. \u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0433\u043b\u0443\u0431\u0436\u0435? \u0422\u043e\u0433\u0434\u0430 \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0447\u0430\u0441\u0442\u044c 3 \u0435\u0433\u043e \u043a\u043d\u0438\u0433\u0438 <a href=\"https:\/\/www.piter.com\/product\/chistaya-arhitektura-iskusstvo-razrabotki-programmnogo-obespecheniya\" rel=\"nofollow\">&quot;\u0427\u0438\u0441\u0442\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430&quot;<\/a>. \u041a\u043d\u0438\u0436\u043a\u0430 \u0433\u043e\u0434\u043d\u0430\u044f, \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e, \u043d\u0435 \u043f\u043e\u0436\u0430\u043b\u0435\u0435\u0442\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0432\u0441\u0451 \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0439 \u043e\u043f\u044b\u0442 \u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0439\u0442\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u0430\u043b\u043e \u043b\u0438 \u0447\u0442\u043e \ud83d\ude42<\/p>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0442\u0435\u043c\u0430 \u0431\u043e\u0433\u0430\u0442\u0430\u044f \u0438 \u0445\u043e\u043b\u0438\u0432\u043e\u0440\u043d\u0430\u044f, \u0438\u0431\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0442\u0440\u0430\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443. \u041d\u0430 \u044d\u0442\u043e\u0439 \u043f\u043e\u0447\u0432\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0434\u043e\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0441 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u0443\u044e\u0449\u0438\u043c, \u0431\u0443\u0434\u044c\u0442\u0435 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b \u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e <a href=\"https:\/\/habr.com\/ru\/search\/?q=SOLID#h\">\u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/a> \u043f\u043e SOLID \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438. \u041a\u043e\u043c\u0443-\u0442\u043e SOLID \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e \u0434\u0443\u0448\u0435.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435, \u043c\u043e\u0433\u0443 \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c, \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u0438\u0431\u043e \u0437\u0430 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c. \u0418\u043b\u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 <a href=\"https:\/\/www.baeldung.com\/solid-principles\" rel=\"nofollow\">Baeldung<\/a>.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">39. \u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b. \u041a\u0430\u043a\u0438\u0435 \u0437\u043d\u0430\u0435\u0442\u0435? \u041a\u0430\u043a\u0438\u0445 \u0432\u0438\u0434\u043e\u0432 \u0431\u044b\u0432\u0430\u044e\u0442? \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u0447\u043a\u0443 (\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432)? \u041a\u0430\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0438\u043b\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u0433\u0434\u0435-\u0442\u043e? \u0427\u0435\u043c \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u043a\u0441\u0438, \u0430 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u0430\u0431\u0440\u0438\u043a\u0430 \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0439?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u0438 \u0432 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u044f\u0445 \u043f\u0438\u0448\u0443\u0442 \u043f\u0440\u043e <a href=\"https:\/\/www.ozon.ru\/context\/detail\/id\/2457392\/\" rel=\"nofollow\">\u043a\u043d\u0438\u0436\u043a\u0443 GoF<\/a>. \u041d\u043e, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0441\u0435\u0439\u0447\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u0430\u0436\u0435 \u043b\u0443\u0447\u0448\u0435 \u2014 <a href=\"https:\/\/refactoring.guru\/ru\/design-patterns\" rel=\"nofollow\">refactoring.guru<\/a>. \u0422\u0430\u043c \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435, \u0438 \u043d\u0430 \u0440\u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0432\u0435 (\u0440\u0443\u0441\u0441\u043a\u0438\u0439, \u0443\u043a\u0440\u0430\u0438\u043d\u0441\u043a\u0438\u0439, \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439, \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439), \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043b\u044e\u0431\u0438\u043c\u043e\u043c \u042f\u041f, \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b. \u0422\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u0443\u043f\u0438\u0442\u044c \u043a\u043d\u0438\u0436\u043a\u0443 \u043f\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c. \u0410\u0432\u0442\u043e\u0440\u0443 \u0431\u043e\u043b\u044c\u0448\u043e\u0439-\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u0435\u0441\u043f\u0435\u043a\u0442.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">40. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 coupling \u0438 cohesion? \u0427\u0442\u043e \u0438\u0437 \u043d\u0438\u0445 (\u0438\u043b\u0438 \u043e\u0431\u0430) \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u0438\u043b\u044c\u043d\u044b\u043c (\u0432\u044b\u0441\u043e\u043a\u0438\u043c) \u0438\/\u0438\u043b\u0438 \u0441\u043b\u0430\u0431\u044b\u043c (\u043d\u0438\u0437\u043a\u0438\u043c)?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D1%86%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)\" rel=\"nofollow\">Coupling<\/a> (\u0417\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u0438\u0435) \u2014 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438. \u0414\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c <em>\u043d\u0438\u0437\u043a\u043e\u0439<\/em>.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%B2%D1%8F%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D1%8C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)\" rel=\"nofollow\">Cohesion<\/a> (\u0421\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c) \u2014 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430. \u0414\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c <em>\u0432\u044b\u0441\u043e\u043a\u043e\u0439<\/em>.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/thebojan.ninja\/2015\/04\/08\/high-cohesion-loose-coupling\/\" rel=\"nofollow\">\u0442\u0443\u0442<\/a> \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u0438\u043b\u0438 <a href=\"https:\/\/medium.com\/german-gorelkin\/low-coupling-high-cohesion-d36369fb1be9\" rel=\"nofollow\">\u0442\u0443\u0442<\/a> \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043c\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041a\u0430\u043a \u0438 \u0432\u0441\u0435\u0433\u0434\u0430, \u043e\u0441\u043e\u0431\u0443\u044e \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/276593\/\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u043b\u0438 \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u0443\u0440\u0435\u0442\u043a\u0443<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/465507\/\">\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438: \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/a>. \u0415\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b, \u0433\u0434\u0435 \u0442\u0435\u043c\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u0430 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043a\u043e\u0434\u0430.<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/206684\/\">\u0423\u0442\u0440\u0430\u0442\u0430 \u0441\u043b\u0430\u0431\u043e\u0439 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 coupling \u0438 cohesion \u0447\u0430\u0441\u0442\u043e \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0438\u043b\u0438 \u0432\u0435\u0434\u0443\u0442 \u043a \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/GRASP\" rel=\"nofollow\">GRASP<\/a>. \u041e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 \u0425\u0430\u0431\u0440\u0435: <a href=\"https:\/\/habr.com\/ru\/post\/38323\/\">\u0440\u0430\u0437<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/post\/92570\/\">\u0434\u0432\u0430<\/a>.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">41. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043a\u0443\u0431 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041a\u0443\u0431 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (scale cube, \u0438\u0437 \u043a\u043d\u0438\u0433\u0438 <a href=\"https:\/\/www.oreilly.com\/library\/view\/the-art-of\/9780134031408\/\" rel=\"nofollow\">The Art of Scalability<\/a>) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0442\u0440\u0451\u0445 \u043e\u0440\u0442\u043e\u0433\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: sharding, mirrorring \u0438 microservices.<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Shard_(database_architecture)\" rel=\"nofollow\">Sharding<\/a> (data partioning) \u2014 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0443\u0437\u043b\u0430\u043c.<\/li>\n<li><a href=\"https:\/\/www.techopedia.com\/definition\/30664\/database-mirroring\" rel=\"nofollow\">Mirroring<\/a> (horizontal duplication) \u2014 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442\u043a\u043b\u0438\u043a\u0430.<\/li>\n<li><a href=\"https:\/\/microservices.io\/\" rel=\"nofollow\">Microservices<\/a> \u2014 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0443\u0442\u0440\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043f\u043e \u0431\u0438\u0437\u043d\u0435\u0441-\u0437\u0430\u0434\u0430\u0447\u0430\u043c.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/-g\/0u\/yz\/-g0uyzdy4zcr5o6176dlmip6s28.png\"><\/div>\n<p>  <\/p>\n<p>\u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0423\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/dataart\/blog\/280083\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435.<\/li>\n<li>\u0412 <a href=\"https:\/\/microservices.io\/articles\/scalecube.html\" rel=\"nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043d\u0430 microservices.io.<\/li>\n<li>\u0414\u0430\u0436\u0435 \u0432 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Scale_cube\" rel=\"nofollow\">wiki<\/a> \u0435\u0441\u0442\u044c \u0441 pros \u0438 cons.<\/li>\n<li><a href=\"https:\/\/geeknarrator.com\/2018\/03\/06\/scaling-applications-the-scale-cube\/\" rel=\"nofollow\">SCALING APPLICATIONS: THE SCALE CUBE<\/a>.<\/li>\n<li>\u0418 \u0432\u043e\u0442 <a href=\"https:\/\/www.instana.com\/blog\/scaling-microservices-advanced-approaches-with-the-akf-scaling-cube\/\" rel=\"nofollow\">\u0435\u0449\u0451<\/a>.<\/li>\n<li>\u0410 <a href=\"https:\/\/akfpartners.com\/growth-blog\/scale-cube\" rel=\"nofollow\">\u0442\u0443\u0442<\/a> \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438.<\/li>\n<li>\u0422\u0430\u043a\u0436\u0435 \u043a\u0443\u0431 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043d\u0438\u0433\u0430\u0445 <a href=\"https:\/\/www.packtpub.com\/application-development\/microservice-patterns-and-best-practices\" rel=\"nofollow\">Microservice Patterns and Best Practices<\/a> \u0438 <a href=\"https:\/\/www.manning.com\/books\/microservices-patterns\" rel=\"nofollow\">Microservices Patterns<\/a> (\u0435\u0441\u0442\u044c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c).<\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">42. \u041a\u0430\u043a\u0438\u0435 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u041e\u041e\u041f-\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c\u0438, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 <a href=\"https:\/\/microservices.io\/book\" rel=\"nofollow\">\u043a\u043d\u0438\u0436\u043a\u0430<\/a> \u0441 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c. \u041f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439. \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 <a href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/462519\/\">\u0441\u0442\u0430\u0442\u044c\u044f-\u0437\u0430\u0442\u0440\u0430\u0432\u043e\u0447\u043a\u0430<\/a> \u043e\u0442 \u0418\u0414 &quot;\u041f\u0438\u0442\u0435\u0440&quot;.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0430\u044f \u043a\u043d\u0438\u0436\u043a\u0430 \u2014 <a href=\"https:\/\/www.packtpub.com\/application-development\/microservice-patterns-and-best-practices\" rel=\"nofollow\">Microservice Patterns and Best Practices<\/a>. \u041d\u0430 Medium \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u0451 <a href=\"https:\/\/medium.com\/@alexanderpolomodov\/%D0%BE%D0%B1%D0%B7%D0%BE%D1%80-%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8-microservice-patterns-and-best-practices-dce7785b9c45\" rel=\"nofollow\">\u043e\u0431\u0437\u043e\u0440<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 microservices.io \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b: <a href=\"https:\/\/microservices.io\/patterns\/microservices.html\" rel=\"nofollow\">\u0442\u0443\u0442<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/microservices.io\/patterns\/\" rel=\"nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041a\u0430\u0436\u0434\u044b\u0439 \u0431\u043b\u043e\u043a \u043d\u0430 \u0441\u0445\u0435\u043c\u0430\u0445 \u2014 \u044d\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0443. \u0421\u0442\u0440\u043e\u0433\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/275633\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u043f\u043e \u0442\u0435\u043c\u0435. \u041f\u0435\u0440\u0432\u044b\u043c \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c \u043a \u043d\u0435\u0439 \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u0442\u043e\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u043a\u043d\u0438\u0436\u043a\u0443 \u2014 <a href=\"https:\/\/www.enterpriseintegrationpatterns.com\/index.html\" rel=\"nofollow\">Enterprise Integration Patterns<\/a> \u0438 <a href=\"https:\/\/www.enterpriseintegrationpatterns.com\/patterns\/messaging\/toc.html\" rel=\"nofollow\">\u0441\u043f\u0438\u0441\u043e\u043a<\/a> \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0438\u0437 \u043d\u0435\u0451.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">43. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043e CAP-\u0442\u0435\u043e\u0440\u0435\u043c\u0435. \u041a\u0430\u043a MongoDB (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440) \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 CAP-\u0442\u0435\u043e\u0440\u0435\u043c\u0435?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/CAP_theorem\" rel=\"nofollow\">\u0422\u0435\u043e\u0440\u0435\u043c\u0430 CAP<\/a> \u2014 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0435\u043e\u0440\u0435\u043c\u0430, \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0449\u0430\u044f, \u0447\u0442\u043e \u043b\u044e\u0431\u0430\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0442\u044c \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u043c \u0438\u0437 \u0442\u0440\u0451\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Consistency_model\" rel=\"nofollow\">Consistency<\/a> (\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c) \u2014 \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0437\u043b\u0430\u0445 \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0430\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u2014 \u043a\u0430\u0436\u0434\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u043d\u0451\u0442 \u0441\u0430\u043c\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0437\u0430\u043f\u0438\u0441\u044c. \u041f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043f\u043e\u0434 \u0441\u043e\u0431\u043e\u0439 <a href=\"http:\/\/cs.brown.edu\/~mph\/HerlihyW90\/p463-herlihy.pdf\" rel=\"nofollow\">\u043b\u0438\u043d\u0435\u0430\u0440\u0438\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c<\/a> \u2014 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043a\u0430\u043a\u0430\u044f-\u043b\u0438\u0431\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u0442\u043e \u0435\u0451 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043e\u0442\u0432\u0435\u0442 \u043e \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438.<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Availability\" rel=\"nofollow\">Availability<\/a> (\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c) \u2014 \u043b\u044e\u0431\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0431\u0435\u0437 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438, \u0447\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u044b \u0441\u043e \u0432\u0441\u0435\u0445 \u0443\u0437\u043b\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442.<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Network_partition\" rel=\"nofollow\">Partition tolerance<\/a> (\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044e) \u2014 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u043e\u0442\u0435\u0440\u044e (\u0438\u043b\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443) \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u0438\u0437-\u0437\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c (\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>MongoDB, \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 (<a href=\"https:\/\/www.ibm.com\/cloud\/learn\/cap-theorem\" rel=\"nofollow\">\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/a>), \u044d\u0442\u043e \u2014 CP, \u043d\u043e \u0432\u043e\u0442 \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/post\/258145\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a>\u2026 \u0414\u0435\u0440\u0436\u0438\u043c \u0432 \u0443\u043c\u0435, \u0447\u0442\u043e \u0442\u0435\u043e\u0440\u0435\u043c\u0430 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438 \u043d\u043e\u0441\u0438\u0442 \u0443\u043f\u0440\u043e\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u0422\u0430\u043a\u0436\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0411\u0414 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u044b \u0432 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043f\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043d\u0438\u0436\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435: <a href=\"https:\/\/habr.com\/ru\/post\/328792\/\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/130577\/\">\u0434\u0432\u0430<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/258145\/\">\u0442\u0440\u0438<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/231703\/\">\u0447\u0435\u0442\u044b\u0440\u0435<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/322276\/\">\u043f\u044f\u0442\u044c<\/a><\/li>\n<li><a href=\"https:\/\/blog.nahurst.com\/visual-guide-to-nosql-systems\" rel=\"nofollow\">Visual Guide to NoSQL Systems<\/a> \u0441 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430 CAP \u0438 \u0411\u0414 \u043d\u0430 \u0435\u0433\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u0445<\/li>\n<li><a href=\"https:\/\/www.the-paper-trail.org\/page\/cap-faq\/\" rel=\"nofollow\">The CAP FAQ<\/a><\/li>\n<li><a href=\"https:\/\/www.bigdataschool.ru\/wiki\/cap\" rel=\"nofollow\">\u0421\u0442\u0430\u0442\u044c\u044f<\/a> \u043d\u0430 bigdataschool<\/li>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/11292215\/where-does-mongodb-stand-in-the-cap-theorem\" rel=\"nofollow\">\u0421\u043f\u043e\u0440\u044b<\/a> \u0432\u043e\u043a\u0440\u0443\u0433 MongoDB \u043d\u0430 stackoverflow<\/li>\n<li><a href=\"https:\/\/www.ibm.com\/cloud\/learn\/cap-theorem\" rel=\"nofollow\">CAP Theorem<\/a> \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u043b\u0435 IBM<\/li>\n<li><a href=\"https:\/\/towardsdatascience.com\/cap-theorem-and-distributed-database-management-systems-5c2be977950e\" rel=\"nofollow\">CAP Theorem and Distributed Database Management Systems<\/a> \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438<\/li>\n<li><a href=\"https:\/\/medium.com\/@bikas.katwal10\/mongodb-vs-cassandra-vs-rdbms-where-do-they-stand-in-the-cap-theorem-1bae779a7a15\" rel=\"nofollow\">What is the CAP Theorem?<\/a> \u043d\u0430 \u0431\u043e\u0433\u043e\u043c\u0435\u0440\u0437\u043a\u043e\u043c medium<\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">44. \u0427\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Service-oriented_architecture\" rel=\"nofollow\">\u0421\u0435\u0440\u0432\u0438\u0441-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/a> (SOA) \u2014 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043e\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445, \u0441\u043b\u0430\u0431\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441 \u0447\u0451\u0442\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u041e\u0431\u043b\u0430\u0441\u0442\u044c \u043e\u0445\u0432\u0430\u0442\u0430 SOA \u2014 \u044d\u0442\u043e \u0432\u0441\u0451 \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. SOA \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0438\u0437\u043d\u0435\u0441-\u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.<br \/>  <a href=\"https:\/\/web.archive.org\/web\/20160819141303\/http:\/\/opengroup.org\/soa\/source-book\/soa\/soa.htm\" rel=\"nofollow\">\u0421\u0435\u0440\u0432\u0438\u0441<\/a> \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c (\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0435\u0434\u0438\u043d\u043e\u0439 \u0431\u0438\u0437\u043d\u0435\u0441-\u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e, \u0446\u0435\u043b\u044c\u044e, \u0441\u043c\u044b\u0441\u043b\u043e\u043c \u0438 \u0442.\u043f.);<\/li>\n<li>\u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u043b\u0438 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043d\u0438\u0445;<\/li>\n<li>\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f &quot;\u0447\u0451\u0440\u043d\u044b\u043c \u044f\u0449\u0438\u043a\u043e\u043c&quot; \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.<br \/>  \u041a\u0430\u043a \u0438 \u0432\u0441\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0447\u0435\u043c\u0443-\u043b\u0438\u0431\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 <a href=\"http:\/\/www.soa-manifesto.org\/default_russian.html\" rel=\"nofollow\">\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442<\/a><br \/>  <a href=\"https:\/\/en.wikipedia.org\/wiki\/Microservices\" rel=\"nofollow\">\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/a> (MSA) \u2014 \u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 SOA, \u043f\u043e\u0431\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0439 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445, \u0441\u043b\u0430\u0431\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445, \u043b\u0435\u0433\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432). MSA \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<br \/>  \u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441:<\/li>\n<li>\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u0443\u044e \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e (Unix way \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c);<\/li>\n<li>\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u0441\u044f \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432;<\/li>\n<li>\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430);<\/li>\n<li>\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f &quot;\u0447\u0451\u0440\u043d\u044b\u043c \u044f\u0449\u0438\u043a\u043e\u043c&quot; \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0433\u0434\u0435 MSA \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0435\u0447\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0435, \u0430 SOA \u2014 \u0441\u0442\u0430\u0440\u043e\u0435 \u0438 \u0443\u043c\u0438\u0440\u0430\u044e\u0449\u0435\u0435. \u0427\u0430\u0441\u0442\u043e \u044d\u0442\u043e \u0435\u0449\u0451 \u0438 \u043f\u043e\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0434 \u0441\u043e\u0443\u0441\u043e\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. \u0418\u041c\u0425\u041e \u2014 \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u0430\u044f \u0442\u0443\u0444\u0442\u0430, \u0447\u0435\u043c \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435. MSA \u0438 SOA \u043d\u0435 \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u044b \u043d\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0432 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043e\u0431\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u0442\u044c \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0439 \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/publications.opengroup.org\/standards\/soa\" rel=\"nofollow\">\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b SOA<\/a><\/li>\n<li><a href=\"https:\/\/www.ibm.com\/developerworks\/ru\/library\/1601_clark-trs\/index.html\" rel=\"nofollow\">\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b, SOA \u0438 API<\/a> \u043d\u0430 ibm \u0441 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f\u0445 SOA \u0438 MSA<\/li>\n<li><a href=\"https:\/\/medium.com\/@leprosus\/monolith-vs-soa-vs-msa-8767bfebe00\" rel=\"nofollow\">Monolith vs SOA vs MSA<\/a> \u043d\u0430 medium<\/li>\n<li><a href=\"https:\/\/dzone.com\/articles\/microservices-vs-soa-whats-the-difference\" rel=\"nofollow\">Microservices vs SOA<\/a> \u043d\u0430 DZone<\/li>\n<li><a href=\"https:\/\/martinfowler.com\/articles\/microservices.html#MicroservicesAndSoa\" rel=\"nofollow\">\u041a\u043e\u043b\u043e\u043d\u043a\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f MSA \u0438 SOA<\/a> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u041c\u0430\u0440\u0442\u0438\u043d\u0430 \u0424\u0430\u0443\u043b\u0435\u0440\u0430<\/li>\n<li><a href=\"https:\/\/www.opengroup.org\/soa\/source-book\/msawp\/p3.htm\" rel=\"nofollow\">SOA \u0438 MSA<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">45. \u041a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432? \u041d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u0414\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041c\u0435\u043d\u044c\u0448\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441) -&gt; \u043f\u0440\u043e\u0449\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430 \u043d\u043e\u0432\u044c\u0435)<\/li>\n<li>\u041c\u0435\u043d\u044c\u0448\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 -&gt; \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u043f\u0440\u0438 \u043c\u0451\u0440\u0436\u0435 \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435<\/li>\n<li>\u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/li>\n<li>\u0411\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u043f\u0440\u043e\u0449\u0435 \u043a\u0430\u043a \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c, \u0442\u0430\u043a \u0438 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 (\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438) \u2014 \u043e\u0431\u043c\u0435\u043d \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u0435\u0442\u0438 \u0441\u043e \u0432\u0441\u0435\u043c \u0432\u044b\u0442\u0435\u043a\u0430\u044e\u0449\u0438\u043c (\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\/\u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u0442.\u0434.)<\/li>\n<li>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439<\/li>\n<li>\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0451\u043c\u043e\u0432 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430<\/li>\n<li>\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430<\/li>\n<li>\u0421\u043b\u043e\u0436\u043d\u0435\u0435 \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u0438 \u043e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438<\/li>\n<li>\u041d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043e\u0442\u0432\u0430\u043b\u0438\u0442\u0441\u044f<\/li>\n<li>\u041e\u0431\u0449\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0442\u0451\u0442 \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u044b\u0439 <a href=\"https:\/\/habr.com\/ru\/hub\/microservices\/\">\u0445\u0430\u0431<\/a> \u043d\u0430 \u0442\u0435\u043c\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041e\u0442\u043c\u0435\u0447\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0443: <a href=\"https:\/\/habr.com\/ru\/post\/416819\/\">\u0440\u0430\u0437<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/427215\/\">\u0434\u0432\u0430<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/311208\/\">\u0442\u0440\u0438<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/303778\/\">\u0447\u0435\u0442\u044b\u0440\u0435<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/427953\/\">\u043f\u044f\u0442\u044c<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/489912\/\">\u0448\u0435\u0441\u0442\u044c<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/347518\/\">\u0421\u043c\u0435\u0440\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0431\u0435\u0437\u0443\u043c\u0438\u044f \u0432 2018 \u0433\u043e\u0434\u0443<\/a><\/li>\n<li>\u0417\u0430\u043f\u0438\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 <a href=\"https:\/\/eax.me\/micro-service-architecture\/\" rel=\"nofollow\">\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Microservices\" rel=\"nofollow\">\u0421\u0442\u0430\u0442\u044c\u044f<\/a> \u043d\u0430 Wikipedia<\/li>\n<li><a href=\"http:\/\/highscalability.com\/blog\/2014\/4\/8\/microservices-not-a-free-lunch.html\" rel=\"nofollow\">Microservices \u2014 Not A Free Lunch!<\/a><\/li>\n<li><a href=\"http:\/\/devopsru.com\/news\/2016-05-10-microservice-trade-offs.html\" rel=\"nofollow\">\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u2014 \u0437\u0430 \u0438 \u043f\u0440\u043e\u0442\u0438\u0432<\/a><\/li>\n<li><a href=\"https:\/\/raygun.com\/blog\/what-are-microservices\/\" rel=\"nofollow\">What are microservices?<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@goodrebels\/to-go-or-not-to-go-micro-the-pros-and-cons-of-microservices-7967418ff06\" rel=\"nofollow\">To go or not to go micro: the pros and cons of microservices<\/a><\/li>\n<li><a href=\"https:\/\/phauer.com\/2015\/microservices-nutshell-pros-cons\/\" rel=\"nofollow\">Microservices in a Nutshell. Pros and Cons<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=7WT_Rl6m2DU\" rel=\"nofollow\">\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 HeadHunter<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=GIslwdE2DWY\" rel=\"nofollow\">\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0430\u044f \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430: \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=wXaoKroEnp4\" rel=\"nofollow\">\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=FF-GZ7iipwc\" rel=\"nofollow\">\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">46. \u0427\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f (composition) \u2014 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 &quot;\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e&quot; (HAS-A Relationship), \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0446\u0435\u043b\u043e\u0435 \u044f\u0432\u043d\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0441\u0432\u043e\u0435\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u0410\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044f (aggregation) \u2014 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 &quot;\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e&quot; (HAS-A Relationship), \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0446\u0435\u043b\u043e\u0435 \u0445\u043e\u0442\u044c \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0432\u043e\u044e \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u0432\u0440\u0435\u043c\u044f \u0438\u0445 \u0436\u0438\u0437\u043d\u0438 \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/sergeyteplyakov.blogspot.com\/2012\/12\/vs-vs.html#:~:text=%D0%A0%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0%20%D0%BC%D0%B5%D0%B6%D0%B4%D1%83%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D0%B5%D0%B9%20%D0%B8%20%D0%B0%D0%B3%D1%80%D0%B5%D0%B3%D0%B0%D1%86%D0%B8%D0%B5%D0%B9,%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F%20%D1%87%D0%B0%D1%81%D1%82%D1%8C%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B\" rel=\"nofollow\">\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 vs \u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f vs \u0410\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044f<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/354046\/\">\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f, \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044f<\/a><\/li>\n<li><a href=\"https:\/\/ru.stackoverflow.com\/questions\/596697\/%D0%90%D0%B3%D1%80%D0%B5%D0%B3%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F\" rel=\"nofollow\">\u0410\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044f \u0438 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">47. \u041a\u0430\u043a\u0438\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438)? \u0427\u0435\u043c \u0441\u0442\u0430\u0431 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043c\u043e\u043a\u0430?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (Test Double) \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0432 \u0442\u0435\u0441\u0442\u0430\u0445 \u0434\u043b\u044f \u043f\u043e\u0434\u043c\u0435\u043d\u044b \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430<br \/>  \u0422\u0438\u043f\u044b \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong>Dummy<\/strong> \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u0435\u0442\u043e\u0434\u044b, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e null<\/li>\n<li><strong>Fake<\/strong> \u2014 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430, \u044f\u0432\u043b\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u043d\u043e \u0441 \u0443\u0440\u0435\u0437\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043d\u0435\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u0430 \u0432 production-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: in-memory \u0411\u0414 (fake database)<\/li>\n<li><strong>Stub<\/strong> \u2014 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430 \u0441 \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u044b \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (system under test \u2014 SUT) \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0442\u0435\u0441\u0442\u0430<\/li>\n<li><strong>Spy<\/strong> \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c Stub, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u0434\u0448\u0435\u043c \u0441 \u043d\u0435\u0439, \u043a\u0430\u043a\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0435\u0451 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0431\u044b\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u043a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0442.\u043f.<\/li>\n<li><strong>Mock<\/strong> \u2014 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430 \u0441 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u043c\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430 \u043d\u0435\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0432 \u0445\u043e\u0434\u0435 \u0442\u0435\u0441\u0442\u0430<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0418\u0437 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0437\u0430\u0433\u043b\u0443\u0448\u0435\u043a \u0442\u043e\u043b\u044c\u043a\u043e Mock \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u2014 \u0434\u043b\u044f \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 .<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0412 <a href=\"https:\/\/habr.com\/ru\/post\/116372\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/www.maxshulga.ru\/2012\/03\/mock-vs-stub.html\" rel=\"nofollow\">Mock vs Stub<\/a><\/li>\n<li><a href=\"https:\/\/www.martinfowler.com\/articles\/mocksArentStubs.html\" rel=\"nofollow\">Mocks Aren&#8217;t Stubs<\/a> \u043e\u0442 \u041c\u0430\u0440\u0442\u0438\u043d\u0430 \u0424\u0430\u0443\u043b\u0435\u0440\u0430<\/li>\n<li><a href=\"http:\/\/xunitpatterns.com\/Test%20Double.html\" rel=\"nofollow\">Test Double<\/a><\/li>\n<li><a href=\"http:\/\/xunitpatterns.com\/Test%20Stub.html\" rel=\"nofollow\">Test Stub<\/a><\/li>\n<li><a href=\"http:\/\/xunitpatterns.com\/Test%20Spy.html\" rel=\"nofollow\">Test Spy<\/a><\/li>\n<li><a href=\"http:\/\/xunitpatterns.com\/Mock%20Object.html\" rel=\"nofollow\">Mock Object<\/a><\/li>\n<li><a href=\"http:\/\/xunitpatterns.com\/Fake%20Object.html\" rel=\"nofollow\">Fake Object<\/a><\/li>\n<li><a href=\"http:\/\/spockframework.org\/spock\/docs\/1.0\/interaction_based_testing.html\" rel=\"nofollow\">Interaction Based Testing<\/a> \u0432 Spock Framework<\/li>\n<li><a href=\"https:\/\/javadoc.io\/doc\/org.mockito\/mockito-core\/latest\/org\/mockito\/Mockito.html\" rel=\"nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> Mockito<\/li>\n<li><a href=\"https:\/\/dzone.com\/articles\/mockito-mock-vs-spy-in-spring-boot-tests\" rel=\"nofollow\">Mockito Mock vs. Spy in Spring Boot Tests<\/a><\/li>\n<li><a href=\"https:\/\/www.baeldung.com\/tag\/mockito\/\" rel=\"nofollow\">Tag: Mockito<\/a> \u043d\u0430 Bealdung<\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">48. \u0414\u0430\u0439\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c\u0443<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u0432\u0438\u0434\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Polymorphism_(computer_science)\" rel=\"nofollow\">\u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c\u0430<\/a> \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0411\u0435\u043d\u0434\u0436\u0430\u043c\u0438\u043d \u041f\u0438\u0440\u0441 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043a\u043d\u0438\u0433\u0435 <a href=\"https:\/\/medium.com\/devschacht\/polymorphism-207d9f9cd78\" rel=\"nofollow\">\u0422\u0438\u043f\u044b \u0432 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a>:<\/p>\n<p>  <\/p>\n<blockquote><p>\u0422\u0435\u0440\u043c\u0438\u043d \u201c\u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c\u201d \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u0445.<\/p><\/blockquote>\n<p>\u041f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0438\u0434\u043e\u0432:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c. \u041e\u043d \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430:<br \/> \n<ul>\n<li><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BF%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC\" rel=\"nofollow\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c<\/a> \u2014 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u043e\u0431\u0449\u0435\u043c \u0432\u0438\u0434\u0435, \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u0443\u044f\u0441\u044c \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u043c\u0438 (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Generic_programming\" rel=\"nofollow\">Generic<\/a>).<\/li>\n<li>\u041f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 (inclusive) \u2014 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043d\u043e \u0434\u043b\u044f \u0438 \u0432\u0441\u0435\u0445 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u0432. \u041e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Liskov_substitution_principle\" rel=\"nofollow\">\u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0411\u0430\u0440\u0431\u0430\u0440\u044b \u041b\u0438\u0441\u043a\u043e\u0432<\/a>.<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Ad_hoc_polymorphism\" rel=\"nofollow\">\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c<\/a> (\u0438\u043b\u0438 ad-hoc) \u2014 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f (\u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435) \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430. \u0418\u0437 \u043d\u0435\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442 \u043f\u043e\u0434\u0442\u0438\u043f\u044b:<br \/> \n<ul>\n<li><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80_%D0%B8_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9\" rel=\"nofollow\">\u041f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430<\/a> (overloading) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u0435\u043c, \u043d\u043e \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c (\u0430\u0440\u043d\u043e\u0441\u0442\u044c\u044e).<\/li>\n<li>\u041d\u0435\u044f\u0432\u043d\u043e\u0435 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B8%D0%BF%D0%B0\" rel=\"nofollow\">\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432<\/a> \u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 \u044f\u0437\u044b\u043a\u0430, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0411\u0435\u0437\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a Java \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/medium.com\/devschacht\/polymorphism-207d9f9cd78\" rel=\"nofollow\">\u041f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438<\/a>.<br \/>  \u0412 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/429120\/\">Java Challengers #3: \u041f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c \u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/467197\/\">\u041a\u0430\u043a \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0432\u043d\u0443\u0442\u0440\u0438 JVM<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/347900\/\">\u0412\u0441\u0435 \u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0432 Java<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=RzzhKTiDSWQ\" rel=\"nofollow\">\u041d\u0435\u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u043e\u0440\u0438\u044e \u0442\u0438\u043f\u043e\u0432<\/a><\/li>\n<li>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0430\u0432 \u0438\u0437 Java Virtual Machine Specification: <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se14\/html\/jvms-3.html#jvms-3.7\" rel=\"nofollow\">Invoking Methods<\/a>, <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se14\/html\/jvms-6.html#jvms-6.5.invokevirtual\" rel=\"nofollow\">invokevirtual<\/a>, <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se14\/html\/jvms-5.html#jvms-5.4\" rel=\"nofollow\">Linking<\/a><\/li>\n<li>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0430\u0432 \u0438\u0437 Java Language Specification: <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jls\/se14\/html\/jls-8.html#jls-8.4.8\" rel=\"nofollow\">Inheritance, Overriding, and Hiding<\/a>, <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jls\/se14\/html\/jls-5.html\" rel=\"nofollow\">Conversions and Contexts<\/a>, <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jls\/se14\/html\/jls-18.html\" rel=\"nofollow\">Type Inference<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">49. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 REST? \u041a\u0430\u043a\u043e\u0435 API \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f RESTful? \u0427\u0435\u043c REST \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 SOAP?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/REST\" rel=\"nofollow\">REST<\/a> \u2013 \u044d\u0442\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f web-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<br \/>  \u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 REST, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f\u0442 \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e\u0435\u0440\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445<\/li>\n<li>\u0420\u0435\u0441\u0443\u0440\u0441 \u0438\u043c\u0435\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 URI<\/li>\n<li>\u0424\u043e\u0440\u043c\u0430\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u2014 \u043e\u0431\u044b\u0447\u043d\u043e JSON, \u043d\u043e \u043c\u043e\u0436\u043d\u043e XML<\/li>\n<li>\u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u2014 HTTP. \u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u2014 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0442\u0430\u043a. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0443\u043d\u043a\u0442\u044b \u0442\u043e\u0436\u0435.<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 HTTP \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u0445 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439 \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. GET: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0435; POST: \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441; PUT: \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441; DELETE: \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441. \u0418\u043d\u043e\u0433\u0434\u0430 \u0441\u043f\u043e\u0440\u044f\u0442 \u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u2014 PUT vs PATCH vs POST.<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u043e\u0432 \u043e\u0442\u0432\u0435\u0442\u0430 HTTP \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u0445 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439 \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0425\u043e\u0440\u043e\u0448\u0430\u044f <a href=\"https:\/\/raw.githubusercontent.com\/wiki\/webmachine\/webmachine\/images\/http-headers-status-v3.png\" rel=\"nofollow\">\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430<\/a> \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e HTTP-\u043a\u043e\u0434\u0430 \u043e\u0442\u0432\u0435\u0442\u0430.<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/483328\/\">HATEOAS<\/a> \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438 \u043d\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u043d\u043e \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a REST, \u043e \u0447\u0451\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0430 \u043c\u043e\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u043a\u0430\u043a\u043e\u0439 HTTP-\u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u043a\u0430\u043a \u043d\u0430\u0437\u0432\u0430\u0442\u044c URI, \u0447\u0442\u043e\u0431\u044b API \u0431\u044b\u043b\u043e RESTful. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u043f\u043e\u0434 \u044d\u0442\u043e \u043d\u0435\u0442. \u0418 \u0432\u043e\u043e\u0431\u0449\u0435, \u0441\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e REST \u2014 \u044d\u0442\u043e <em>\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c<\/em>, \u043d\u0435\u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043d\u0438 \u043a \u043a\u0430\u043a\u0438\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c. \u0422\u0435\u043c\u0430 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0430 \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/319984\/\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0438\u043b\u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/hexlet\/blog\/274675\/\">\u044d\u0442\u043e\u0439<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u2014 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0441\u043e\u0447\u043d\u044b\u0435.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b REST-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u043e \u0424\u0438\u043b\u0434\u0438\u043d\u0433\u0443:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041c\u043e\u0434\u0435\u043b\u044c \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440 (Client\u2013server)<\/li>\n<li>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (Stateless) \u2014 \u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430<\/li>\n<li>\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (Cacheable) \u2014 \u043e\u0442\u0432\u0435\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043c\u0435\u0447\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c\u044b \u0438 \u043d\u0435\u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c\u044b\u0435<\/li>\n<li>\u0415\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (Uniform interface) \u2014 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435, &quot;\u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0435&quot; \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, HATEOAS<\/li>\n<li>\u0421\u043b\u043e\u0438 (Layered system) \u2014 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u044f, \u043d\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432\u0438\u0434\u0438\u0442 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c \u0441\u043b\u043e\u0435\u043c. \u041a\u0440\u043e\u043c\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0435\u0449\u0451 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 \u0448\u043b\u044e\u0437<\/li>\n<li>\u041a\u043e\u0434 \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435) (Code on demand (optional)) \u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0443<\/li>\n<\/ul>\n<p>  <\/p>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/SOAP\" rel=\"nofollow\">SOAP<\/a> \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<br \/>  \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 SOAP:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0424\u043e\u0440\u043c\u0430\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u2014 XML (SOAP-XML \u2014 Envelope, Header, Body, Fault)<\/li>\n<li>SOAP-\u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/WSDL\" rel=\"nofollow\">WSDL<\/a>(\u0442\u043e\u0436\u0435 XML)<\/li>\n<li>SOAP \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u2014 (TCP, UDP, HTTP, SMTP, FTP \u0438 \u0442.\u0434.)<\/li>\n<li>\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 HTTP, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b GET \u0438 POST<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0435\u043c\u0430 \u0433\u043e\u0440\u044f\u0447\u0430\u044f, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0432\u0441\u0435\u043c web-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0443\u0439\u043c\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u043a\u0443\u0441.<br \/>  \u0422\u0435\u043e\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e-\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u0440\u043e REST \u2014 <a href=\"https:\/\/habr.com\/ru\/post\/483202\/\">\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/483204\/\">REST vs SOAP<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/483206\/\">Contract First<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/483322\/\">Code First<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/483328\/\">HATEOAS<\/a>, <a href=\"https:\/\/habr.com\/ru\/post\/483374\/\">\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0430 Java \u0438 Spring<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/131343\/\">REST vs SOAP. \u0427\u0430\u0441\u0442\u044c 1. \u041f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u0443<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/post\/134303\/\">REST vs SOAP. \u0427\u0430\u0441\u0442\u044c 2. \u041a\u0430\u043a \u043f\u0440\u043e\u0449\u0435 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c?<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/75248\/\">\u0414\u0430\u043e \u0412\u0435\u0431\u0441\u0435\u0440\u0432\u0438\u0441\u0430. (\u0418\u043b\u0438 \u0434\u0430 \u0445\u0432\u0430\u0442\u0438\u0442 \u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b!)<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/351890\/\">REST API Best Practices<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/hexlet\/blog\/274675\/\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 RESTful \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/108993\/\">\u0412\u0430\u0436\u043d\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b RESTful API \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/yamoney\/blog\/347390\/\">\u041a\u0430\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c REST-like API \u0432 \u043a\u0440\u0443\u043f\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/181988\/\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 web API<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/144011\/\">RESTful API \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2013 \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e (\u0427\u0430\u0441\u0442\u044c 1)<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/post\/144259\/\">RESTful API \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2013 \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e (\u0427\u0430\u0441\u0442\u044c 2)<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/acribia\/blog\/453384\/\">\u0428\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0438 \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438: REST<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/325884\/\">7 \u0432\u0440\u0435\u0434\u043d\u044b\u0445 \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443 REST API<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/220387\/\">\u0421\u0430\u043c\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 JAX-WS \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 XSD Restrictions<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/480564\/\">REST API \u043d\u0430 Java \u0431\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/435144\/\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Spring Boot: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e REST API \u043d\u0430 Java<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/343364\/\">\u041d\u0430\u0438\u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 RESTful \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0430 Kotlin \u0438 Spring boot<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/137543\/\">SOAP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 Java \u043f\u0440\u0438 \u0443\u0447\u0430\u0441\u0442\u0438\u0438 Apache CXF \u0438 Spring<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/148403\/\">SOAP Web-\u0441\u0435\u0440\u0432\u0438\u0441 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Spring-WS<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0425\u043e\u043b\u0438\u0432\u0430\u0440\u043d\u043e-\u0434\u0438\u0441\u043a\u0443\u0441\u0438\u043e\u043d\u043d\u044b\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/345184\/\">REST \u2014 \u044d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 SOAP<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/440900\/\">REST \u0441\u0442\u0440\u0430\u0441\u0442\u0438 \u043f\u043e 200<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/483528\/\">REST API \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0433\u0438\u043f\u0435\u0440\u0442\u0435\u043a\u0441\u0442\u0435<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/265845\/\">RESTful API \u2014 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043b\u043e\u0436\u044c<\/a><br \/>  \u0418 \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439:<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/335158\/\">\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 REST \u0438 GraphQL<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/441854\/\">REST? \u0412\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u0442\u0443\u043f\u043e\u0439 JSON-RPC<\/a><br \/>  \u0410 \u043a\u0440\u043e\u043c\u0435 \u0425\u0430\u0431\u0440\u0430:<\/li>\n<li><a href=\"https:\/\/www.infoq.com\/articles\/rest-introduction\/\" rel=\"nofollow\">A Brief Introduction to REST<\/a><\/li>\n<li><a href=\"http:\/\/restcookbook.com\/\" rel=\"nofollow\">REST CookBook<\/a><\/li>\n<li><a href=\"http:\/\/restfulwebapis.org\/\" rel=\"nofollow\">RESTful Web APIs<\/a><\/li>\n<li><a href=\"https:\/\/www.baeldung.com\/spring-data-rest-intro\" rel=\"nofollow\">Introduction to Spring Data REST<\/a><\/li>\n<li><a href=\"https:\/\/restfulapi.net\/\" rel=\"nofollow\">What is REST<\/a><\/li>\n<li><a href=\"https:\/\/spring.io\/guides\/tutorials\/bookmarks\/\" rel=\"nofollow\">Building REST services with Spring<\/a><\/li>\n<li><a href=\"https:\/\/spring-projects.ru\/guides\/producing-web-service\/\" rel=\"nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 SOAP Web-\u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/a><\/li>\n<li><a href=\"https:\/\/www.w3.org\/TR\/soap\/\" rel=\"nofollow\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f SOAP<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<h3 id=\"populyarnye-biblioteki\">\u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">50. \u0421\u0442\u043e\u0438\u0442 \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Lombok?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e, \u0445\u043e\u043b\u0438\u0432\u043e\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441! \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043e\u0436\u043e\u0433\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0438!<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0425\u0430\u0431\u0440\u0435 <a href=\"https:\/\/habr.com\/ru\/search\/?q=Lombok#h\">\u043d\u0430\u0439\u0434\u0451\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0440\u043e\u0434\u043d\u0443\u044e \u043b\u044e\u0431\u043e\u0432\u044c \u043a Lombok \u2014 \u0432\u0435\u0434\u044c \u043e\u043d \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u044b\u0439 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c \u0431\u043e\u0439\u043b\u0435\u0440\u043f\u043b\u0435\u0439\u0442\u043e\u0432, \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u0435\u043b\u044c \u043a\u043e\u0434\u0430, \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u0435\u043b\u044c \u043a\u043e\u0434\u043e\u043d\u0430\u0431\u043e\u0440\u0430, \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u0441\u0443\u043d\u0434\u0443\u0447\u043e\u043a \u0438\u0441\u0446\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u0438 \u043f\u0440\u043e\u0447\u0435\u0435. \u041e \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u0438 Lombok \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443\u0442 \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0442\u044e\u0433\u0430.<br \/>  \u041d\u043e \u043a\u0430\u043a \u0442\u0430\u043c \u0441 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438? \u0427\u0442\u043e \u0441 \u043d\u0430\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u0432\u0438\u043b\u0430\u043c\u0438? \u042d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u0418 \u043d\u0430 \u0441\u0434\u0430\u0447\u0443 \u2014 \u0442\u0435\u0441\u0442 \u043d\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0410 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u043e\u0442\u0430 \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0438 \u2014 \u0441 \u0445\u0438\u0442\u0440\u044b\u043c \u043b\u0435\u043d\u0438\u043d\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u0449\u0443\u0440\u043e\u043c \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e\u0435\u0440\u0430: &quot;\u0410 \u043a\u0430\u043a \u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u0442\u0430\u0439\u043b-\u0433\u0430\u0439\u0434\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e?&quot;. \u0417\u0430\u043e\u0434\u043d\u043e \u0443\u0437\u043d\u0430\u0435\u0442\u0435 \u043e \u0435\u0433\u043e <del>\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438<\/del> \u043d\u0430\u043b\u0438\u0447\u0438\u0438. \u0418\u0431\u043e \u0445\u043e\u043b\u0438\u0432\u0430\u0440\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043d\u0430 \u0441\u0445\u043e\u0434\u0435 \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0421\u0438\u043d\u043e\u0434\u0430 \u0438 \u043d\u0430 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0440 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0441\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c, \u0443\u0432\u0435\u043a\u043e\u0432\u0435\u0447\u0438\u0432 \u0438\u0445 \u0432 \u0441\u0442\u0430\u0439\u043b-\u0433\u0430\u0439\u0434\u0435, \u0434\u0430\u0431\u044b \u0440\u0430\u0441\u043a\u043e\u043b\u0430 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438 \u043d\u0435 \u0441\u043e\u0431\u043b\u0430\u0437\u043d\u044f\u0442\u044c \u043d\u0435\u043e\u043a\u0440\u0435\u043f\u0448\u0438\u0435 \u0443\u043c\u044b \u043d\u0435\u043e\u0444\u0438\u0442\u043e\u0432 \u0441\u043f\u043e\u0440\u0430\u043c\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u0441\u043f\u0440\u0438\u043d\u0442\u0430 \u0433\u043e\u0440\u044f\u0449\u0435\u0433\u043e.<\/p>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u0430\u044f \u043b\u0430\u0439\u0442\u043e\u0432\u0430\u044f \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u0438\u0442\u044f\u043d\u0443\u0442\u0430\u044f \u0437\u0430 \u0443\u0448\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Lombok \u2014 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 IDEA. \u0410 \u0435\u0441\u043b\u0438 \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d, \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u043b\u0435\u0442\u0438\u0442 \u043a\u043e\u0442\u0443 \u043f\u043e\u0434 \u0445\u0432\u043e\u0441\u0442. \u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0435! \u0421 \u0432\u0435\u0440\u0441\u0438\u0438 2020.3 Lombok-\u043f\u043b\u0430\u0433\u0438\u043d <a href=\"https:\/\/blog.jetbrains.com\/idea\/2020\/10\/intellij-idea-2020-3-eap5\/\" rel=\"nofollow\">\u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 IDEA<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 Lombok \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u043d\u044e\u0430\u043d\u0441\u0430\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0430\u043a \u0441\u0430\u043c\u0438\u0445 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u0430\u043a \u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u044b \u043f\u043e Hibernate \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/thorben-janssen.com\/lombok-hibernate-how-to-avoid-common-pitfalls\/\" rel=\"nofollow\">\u0442\u0443\u0442<\/a>) \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Lombok \u0432 entity-\u043a\u043b\u0430\u0441\u0441\u0430\u0445. \u0425\u043e\u0442\u044f \u0431\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <a href=\"https:\/\/projectlombok.org\/features\/EqualsAndHashCode\" rel=\"nofollow\">@EqualsAndHashCode<\/a>, <a href=\"https:\/\/projectlombok.org\/features\/ToString\" rel=\"nofollow\">@ToString<\/a> \u0438 <a href=\"https:\/\/projectlombok.org\/features\/Data\" rel=\"nofollow\">@Data<\/a>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0438\u043c\u0438 \u043a\u043e\u0434 \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>equals<\/code>, <code>hashCode<\/code> \u0438 <code>toString<\/code> \u043c\u043e\u0436\u0435\u0442 \u043b\u0438\u0431\u043e \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u043e, \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u043e\u0442\u0435\u0440\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0434\u043b\u044f entities. \u0410 \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f entities \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e <a href=\"https:\/\/vladmihalcea.com\/the-best-way-to-implement-equals-hashcode-and-tostring-with-jpa-and-hibernate\/\" rel=\"nofollow\">\u0442\u0443\u0442<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/thorben-janssen.com\/ultimate-guide-to-implementing-equals-and-hashcode-with-hibernate\/\" rel=\"nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f, \u0437\u0430\u0442\u044f\u043d\u0443\u0432\u0448\u0430\u044f\u0441\u044f \u043d\u0430 \u0434\u0432\u0430 \u0434\u043d\u044f, \u0431\u044b\u043b\u0430 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443 \u0432 <a href=\"https:\/\/t.me\/pspodcast_group\" rel=\"nofollow\">\u0447\u0430\u0442\u0438\u043a\u0435<\/a> \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u0430 &quot;\u041f\u0430\u0448\u0430+\u0421\u043b\u0430\u0432\u0430&quot; 7-8 \u043c\u0430\u0440\u0442\u0430 \u2014 \u043d\u0430\u0447\u0430\u043b\u043e <a href=\"https:\/\/t.me\/pspodcast_group\/10280\" rel=\"nofollow\">\u0442\u0443\u0442<\/a>. \u0412 \u043d\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/users\/asm0dey\/\" class=\"user_link\">asm0dey<\/a> \u0437\u0430\u0434\u0430\u0451\u0442 \u043a\u0430\u0432\u0435\u0440\u0437\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e Lombok \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u0437\u0430\u0431\u0430\u043d\u0438\u043b Lombok \u043a\u0430\u043a \u0442\u0438\u043c\u043b\u0438\u0434. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: &quot;\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0435\u0441\u043b\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <a href=\"https:\/\/projectlombok.org\/features\/SneakyThrows\" rel=\"nofollow\">@SneakyThrows<\/a> \u0438 \u0442\u044b \u0435\u0451 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0448\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438?&quot; (\u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/blog.pchudzik.com\/201911\/transactional-errors\/\" rel=\"nofollow\">\u0442\u0443\u0442<\/a>), &quot;\u0422\u0435\u0431\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f <a href=\"https:\/\/projectlombok.org\/features\/Data\" rel=\"nofollow\">@Data<\/a>. \u041a\u0430\u043a \u043e\u043d\u0430 \u0441\u0442\u0440\u043e\u0438\u0442 equals \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0438 \u0434\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432?&quot;, &quot;\u0417\u043d\u0430\u0435\u0448\u044c \u043b\u0438 \u0442\u044b \u0447\u0442\u043e <a href=\"https:\/\/projectlombok.org\/features\/EqualsAndHashCode\" rel=\"nofollow\">@EqualsAndHashCode<\/a> \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c StackOverflowException \u0438 \u0442\u0435\u0431\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435\u0447\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c?&quot;.<\/p>\n<p>  <\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 Lombok \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0445\u0443\u0436\u0435 \u0432\u043e\u0440\u043e\u0432\u0441\u0442\u0432\u0430 \u2014 \u0435\u0433\u043e \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u0430\u044f \u043b\u0451\u0433\u043a\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u043d\u0435 \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0435\u0447\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0433\u043e\u0440\u0435 \u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f. \u041d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u043f\u043e\u0432\u043b\u0435\u0447\u044c \u2014 \u0442\u0443\u0442 \u043a\u0430\u043a \u0437\u0430\u0434\u0430\u0447\u0430 \u0432 \u0434\u0436\u0438\u0440\u0443 \u043b\u044f\u0436\u0435\u0442. \u041d\u0435 \u0434\u0430\u0440\u043e\u043c \u043d\u0435 \u0437\u0430\u0440\u043e\u0441\u043b\u0430 \u043a Lombok \u043d\u0430\u0440\u043e\u0434\u043d\u0430\u044f \u0442\u0440\u043e\u043f\u0430 \u2014 \u043c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0436\u0435\u043d\u0442\u0435\u043b\u044c\u043c\u0435\u043d\u0441\u043a\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u0437 Lombok, \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439. \u041d\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 <del>\u043c\u043e\u0439\u0442\u0435 \u0440\u0443\u043a\u0438, \u043f\u0440\u0435\u0434\u043e\u0445\u0440\u0430\u043d\u044f\u0439\u0442\u0435\u0441\u044c<\/del> \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0430\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u0435\u0434\u044c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b \u0438 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u044b \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>P.S. \u0423 Lombok \u0435\u0441\u0442\u044c \u0437\u0430\u043d\u044f\u0442\u043d\u0430\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0438\u0447\u0430 <a href=\"https:\/\/projectlombok.org\/features\/experimental\/onX\" rel=\"nofollow\">onX<\/a> \u2014 \u0443 \u043d\u0435\u0451 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 (<code>@__<\/code> \u043f\u0440\u0430\u0432\u0434\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Java 7) \u0438 \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0410 \u0432\u043e\u0442 <a href=\"https:\/\/www.baeldung.com\/spring-injection-lombok\" rel=\"nofollow\">\u0442\u0443\u0442<\/a> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 Spring-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/projectlombok.org\/\" rel=\"nofollow\">Project Lombok<\/a><\/li>\n<li><a href=\"http:\/\/gregorriegler.com\/2019\/08\/10\/who-needs-lombok-anyhow.html\" rel=\"nofollow\">Who Needs Lombok Anyhow<\/a><\/li>\n<li><a href=\"https:\/\/levelup.gitconnected.com\/be-careful-with-lombok-2e2edfc01110\" rel=\"nofollow\">Be Careful With Lombok<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@vgonzalo\/dont-use-lombok-672418daa819\" rel=\"nofollow\">Don\u2019t use Lombok<\/a><\/li>\n<li><a href=\"https:\/\/thorben-janssen.com\/lombok-hibernate-how-to-avoid-common-pitfalls\/\" rel=\"nofollow\">Lombok &amp; Hibernate: How to Avoid Common Pitfalls<\/a><\/li>\n<li><a href=\"https:\/\/blog.pchudzik.com\/201911\/transactional-errors\/\" rel=\"nofollow\">Error handling with @Transactional and @SneakyThrows<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/sberbank\/blog\/438548\/\">Lombok, sources.jar \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u0435\u0431\u0430\u0433<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@gabor.liptak\/some-dangers-of-using-lombok-d759fc8f701f\" rel=\"nofollow\">Some Dangers of Using Lombok<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<h3 id=\"prochee\">\u041f\u0440\u043e\u0447\u0435\u0435<\/h3>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">51. \u0427\u0435\u043c \u043f\u043e\u0442\u043e\u043a \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u041e\u0442\u0432\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0435\u0449\u0451 \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u044f \u0431\u0430\u043b\u0434\u0443 \u0432 \u0448\u043a\u043e\u043b\u0435 \u043f\u0438\u043d\u0430\u043b (\u043d\u0443\u043b\u0435\u0432\u044b\u0435), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0435\u0441\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0432\u044b\u0431\u043e\u0440.<br \/>  \u041c\u043d\u0435 \u0438\u043c\u043f\u043e\u043d\u0438\u0440\u0443\u0435\u0442 <a href=\"https:\/\/www.opennet.ru\/docs\/RUS\/linux_parallel\/node42.html\" rel=\"nofollow\">\u0437\u0430\u043c\u0435\u0442\u043a\u0430<\/a> \u043d\u0430 OpenNET \u2014 \u043a\u0440\u0430\u0442\u043a\u043e \u0438 \u0447\u0451\u0442\u043a\u043e, \u0441\u0443\u0448\u0435 \u0421\u0430\u0445\u0430\u0440\u044b.<br \/>  \u0414\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043e\u043a\u043d\u0430 \u0435\u0441\u0442\u044c <a href=\"https:\/\/docs.microsoft.com\/ru-ru\/windows\/win32\/procthread\/about-processes-and-threads?redirectedfrom=MSDN\" rel=\"nofollow\">\u0441\u0442\u0430\u0442\u0435\u0439\u043a\u0430<\/a> \u043d\u0430 MSDN.<br \/>  \u0412\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435 \u2014 \u043e\u043b\u0434\u043e\u0432\u0430\u044f <a href=\"https:\/\/habr.com\/ru\/post\/40227\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u0441 \u0425\u0430\u0431\u0440\u0430.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">52. \u041a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u043c\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u0445 \u043e\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<br \/>  \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/jmeter.apache.org\/\" rel=\"nofollow\">Apache JMeter<\/a> \u2014 \u0441\u0430\u043c\u044b\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439, opensource, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 HTTP, HTTPS, FTP, LDAP, SOAP, TCP, \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438 shell-\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u041e\u043d, \u043a\u0430\u043a java-based \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 JDBC, Message-oriented middleware (MOM) \u0447\u0435\u0440\u0435\u0437 JMS \u0438 Java Objects.<\/li>\n<li><a href=\"https:\/\/www.microfocus.com\/en-us\/products\/loadrunner-professional\/overview\" rel=\"nofollow\">LoadRunner<\/a> \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c. \u041f\u043b\u0430\u0442\u043d\u044b\u0439, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 Enterprise.<\/li>\n<li><a href=\"https:\/\/loadninja.com\/\" rel=\"nofollow\">LoadNinja<\/a> \u2014 \u043f\u043b\u0430\u0442\u043d\u044b\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u0421\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<li><a href=\"https:\/\/www.radview.com\/\" rel=\"nofollow\">WebLOAD<\/a> \u2014 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0440\u044f\u0434\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u0432 CI\/CD.<\/li>\n<li><a href=\"https:\/\/www.soapui.org\/tools\/loadui-pro\/\" rel=\"nofollow\">LoadUI Pro<\/a> \u2014 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043e\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 <a href=\"https:\/\/www.soapui.org\/\" rel=\"nofollow\">SOAP UI<\/a>, \u0442\u0435\u0441\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c API.<\/li>\n<li><a href=\"https:\/\/k6.io\/\" rel=\"nofollow\">K6<\/a> \u2014 opensource \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u043e\u0432. \u0421\u043a\u0440\u0438\u043f\u0442\u044b \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u043d\u0430 JavaScript. \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0430\u043a\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u043a\u0430\u043a Kafka, Datadog, InfluxDB, JSON \u0438 StatsD. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 CI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/li>\n<li><a href=\"https:\/\/yandex.ru\/dev\/tank\/\" rel=\"nofollow\">\u042f\u043d\u0434\u0435\u043a\u0441.\u0422\u0430\u043d\u043a<\/a> \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441 \u0441 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u2014 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 hit-based-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 Phantom \u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 jMeter. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0435\u0441\u0442\u0430 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c, \u0432\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439.<\/li>\n<li><a href=\"https:\/\/gatling.io\/\" rel=\"nofollow\">Gatling<\/a> \u2014 opensource \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0430 Scala \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/netty.io\/\" rel=\"nofollow\">Netty<\/a> \u0438 <a href=\"https:\/\/akka.io\/\" rel=\"nofollow\">Akka<\/a>. \u0421\u043a\u0440\u0438\u043f\u0442\u044b \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u043d\u0430 Scala, \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 <a href=\"https:\/\/www.jenkins.io\/\" rel=\"nofollow\">Jenkins<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/jugru\/blog\/337928\/\">\u041e\u0431\u0437\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u0438 \u043f\u0435\u0440\u0444\u043e\u0440\u043c\u0430\u043d\u0441-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/jugru\/blog\/329174\/\">\u041d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435: \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0438 \u043a\u0443\u0434\u0430 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/tinkoff\/blog\/323316\/\">\u041d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 Gatling<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/www.performance-lab.ru\/blog\/luchshie-instrumenty-dlya-nagruzochnogo-testirovaniya\" rel=\"nofollow\">Top 10 \u043b\u0443\u0447\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a><\/li>\n<li><a href=\"https:\/\/www.a1qa.ru\/blog\/9-etapov-testirovaniya-proizvoditelnosti\/\" rel=\"nofollow\">9 \u044d\u0442\u0430\u043f\u043e\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/effective-developers\/10-steps-to-run-first-performance-test-with-apache-jmeter-52867c12b0a4\" rel=\"nofollow\">10 \u0448\u0430\u0433\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441 Apache JMeter<\/a><\/li>\n<li><a href=\"https:\/\/coderlessons.com\/tutorials\/java-tekhnologii\/vyuchi-jmeter\/jmeter-kratkoe-rukovodstvo\" rel=\"nofollow\">jMeter \u2014 \u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@chamikakasun\/rest-api-load-testing-with-apache-jmeter-a4d25ea2b7b6\" rel=\"nofollow\">Rest API Load testing with Apache JMeter<\/a><\/li>\n<li><a href=\"https:\/\/www.james-willett.com\/gatling-load-testing-complete-guide\/\" rel=\"nofollow\">Load Testing with Gatling \u2014 The Complete Guide<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/1cloud\/blog\/474474\/\">\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">53. \u0427\u0435\u043c \u0434\u043e\u043a\u0435\u0440 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0438? \u0427\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435? \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Docker?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Virtual_machine\" rel=\"nofollow\">\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430<\/a> (Virtual Machine \u2014 VM) \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0438\/\u0438\u043b\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0445\u043e\u0441\u0442\u0430. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u2014 \u044d\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438. \u0422.\u043e. \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445, \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u041e\u0421. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043e \u0435\u0451 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0441 \u043d\u0435\u0439 \u043a\u0430\u043a \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439. \u0425\u043e\u0442\u044f VM \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430, \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0435\u0433\u043e \u0434\u0438\u0441\u043a\u0443 \u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c backup&#8217;\u044b VM \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u043e\u0432 \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<br \/>  \u041a\u0430\u0436\u0434\u0430\u044f VM \u043d\u0435\u0441\u0451\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0432\u043e\u0435\u0439 \u041e\u0421.<br \/>  \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hypervisor\" rel=\"nofollow\">\u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440<\/a> \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u0438\/\u0438\u043b\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f.<br \/>  \u0421\u0430\u043c\u0438\u043c\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f <a href=\"https:\/\/www.linux-kvm.org\/page\/Main_Page\" rel=\"nofollow\">KVM<\/a> \u0441 <a href=\"https:\/\/www.qemu.org\/\" rel=\"nofollow\">QEMU<\/a>, <a href=\"https:\/\/xenproject.org\/\" rel=\"nofollow\">XEN<\/a>, \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0442 <a href=\"https:\/\/www.vmware.com\/\" rel=\"nofollow\">VMWare<\/a> \u0438 <a href=\"https:\/\/docs.microsoft.com\/en-us\/virtualization\/hyper-v-on-windows\/about\/\" rel=\"nofollow\">Hyper-V<\/a>.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/www.docker.com\/get-started\" rel=\"nofollow\">Docker<\/a> \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/OS-level_virtualization\" rel=\"nofollow\">\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/a> \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0432 \u0442.\u043d. <a href=\"https:\/\/www.docker.com\/resources\/what-container\" rel=\"nofollow\">\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440<\/a>.<br \/>  \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0440\u0430\u0441\u0445\u043e\u0434\u0443\u044e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0445\u043e\u0441\u0442\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0449\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0445\u043e\u0441\u0442\u0430 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u041e\u0421. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u041e\u0421, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0451 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e. \u0418\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linux_namespaces\" rel=\"nofollow\">linux namespaces<\/a>. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cgroups\" rel=\"nofollow\">cgroups<\/a>.<br \/>  \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438\u0437 \u043e\u0431\u0440\u0430\u0437\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 <code>Dockerfile<\/code> \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c (\u0441\u043b\u043e\u0451\u0432) \u043d\u0430\u0441\u043b\u043e\u0451\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u043c\u0435\u0441\u0442\u0435, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u043e\u0431\u0440\u0430\u0437\u043e\u0432, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0441\u043b\u043e\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043e\u0431\u0440\u0430\u0437.<br \/>  Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 CI\/CD.<br \/>  \u0414\u043b\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u2014 <a href=\"https:\/\/www.docker.com\/products\/docker-hub\" rel=\"nofollow\">Docker-Hub<\/a><br \/>  \u041a\u0440\u043e\u043c\u0435 Docker, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_Linux_containers\" rel=\"nofollow\">\u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u0442\u0435\u043c\u0443 Docker:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/474068\/\">VM \u0438\u043b\u0438 Docker?<\/a><\/li>\n<li>\u0421\u0435\u0440\u0438\u044f \u0441\u0442\u0430\u0442\u0435\u0439 &quot;\u0418\u0437\u0443\u0447\u0430\u0435\u043c Docker&quot;: <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/438796\/\">\u0447\u0430\u0441\u0442 1<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/439978\/\">\u0447\u0430\u0441\u0442\u044c 2<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/439980\/\">\u0447\u0430\u0441\u0442\u044c 3<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/440658\/\">\u0447\u0430\u0441\u0442\u044c 4<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/440660\/\">\u0447\u0430\u0441\u0442\u044c 5<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/441574\/\">\u0447\u0430\u0441\u0442\u044c 6<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/353238\/\">Docker. \u041d\u0430\u0447\u0430\u043b\u043e<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/511414\/\">\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043e\u0442 docker run \u0434\u043e runc)<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/310460\/\">\u041f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e Docker: \u0441 \u043d\u0443\u043b\u044f \u0434\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0430 AWS<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/346634\/\">\u041b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430: \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Docker \u0441 \u043d\u0443\u043b\u044f. \u0412\u0430\u0448 \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/467607\/\">\u0418\u0441\u043f\u043e\u0432\u0435\u0434\u044c docker \u0445\u0435\u0439\u0442\u0435\u0440\u0430<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/458462\/\">\u0413\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432 Linux namespaces<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/477464\/\">\u041a\u0430\u043a \u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u0414\u043e\u043a\u0435\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u0414\u043e\u043a\u0435\u0440\u0430 \u0438 \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/253877\/\">\u041f\u043e\u043d\u0438\u043c\u0430\u044f Docker<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/277699\/\">\u041f\u043e\u043d\u044f\u0432 Docker<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/337306\/\">\u041e\u0441\u043d\u043e\u0432\u044b Docker \u0437\u0430 \u0425 \u0447\u0430\u0441\u043e\u0432 \u0438 Y \u0434\u043d\u0435\u0439<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/512246\/\">Docker \u0438 \u0432\u0441\u0435, \u0432\u0441\u0435, \u0432\u0441\u0435<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/474012\/\">\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/485650\/\">\u041c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Docker<\/a><\/li>\n<li>10 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Docker: <a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/480970\/\">\u0447\u0430\u0441\u0442\u044c 1<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/482044\/\">\u0447\u0430\u0441\u0442\u044c 2<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/449944\/\">Docker: \u0432\u0440\u0435\u0434\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/452108\/\">Docker: \u043d\u0435\u0432\u0440\u0435\u0434\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/325358\/\">\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d containerd \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u0438\u043b\u0438 \u043e\u0442 Docker<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/442036\/\">\u0417\u0440\u0435\u043b\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432: containerd \u0441\u0442\u0430\u043b &quot;\u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u043a\u043e\u043c&quot; CNCF<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0410 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u0442\u0435\u043c\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/vps_house\/blog\/349788\/\">\u0413\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u044b. \u0427\u0442\u043e \u0436\u0435 \u044d\u0442\u043e \u0438 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440?<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/467801\/\">\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0414\u043b\u044f \u0421\u0430\u043c\u044b\u0445 \u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0427\u0430\u0441\u0442\u044c 1.1. \u041e\u0441\u043d\u043e\u0432\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/98580\/\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 Hyper-V: \u0413\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/microsoft\/blog\/481248\/\">Hyper-V \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0434 Windows 10<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/466549\/\">\u041e\u0431\u0449\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b QEMU-KVM<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/120432\/\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438 KVM. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/cloud4y\/blog\/282918\/\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438: KVM vs. Xen<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/308350\/\">Hyper-V \u0438\u043b\u0438 KVM?<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/virtualization\/windowscontainers\/about\/containers-vs-vm\" rel=\"nofollow\">Containers vs. virtual machines<\/a><\/li>\n<li><a href=\"https:\/\/www.docker.com\/play-with-docker\" rel=\"nofollow\">Play with Docker<\/a><\/li>\n<li><a href=\"https:\/\/docs.docker.com\/get-started\/overview\/\" rel=\"nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Docker<\/a><\/li>\n<li><a href=\"https:\/\/legacy.gitbook.com\/book\/washraf\/the-docker-ecosystem\/details\" rel=\"nofollow\">The Docker EcoSystem<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware-assisted_virtualization\" rel=\"nofollow\">Hardware-assisted virtualization<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Full_virtualization\" rel=\"nofollow\">Full virtualization<\/a><\/li>\n<li><a href=\"https:\/\/www.xelent.ru\/blog\/sravnenie-gipervizorov-kvm-hyper-v-ili-vmware\/\" rel=\"nofollow\">\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u043e\u0432: KVM, Hyper-V \u0438\u043b\u0438 VMware?<\/a><\/li>\n<li><a href=\"https:\/\/www.sim-networks.com\/blog\/hypervisors-vmware-kvm-xen-openvz\" rel=\"nofollow\">\u0412\u0441\u044f \u043f\u0440\u0430\u0432\u0434\u0430 \u043e \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0430\u0445<\/a><\/li>\n<li><a href=\"https:\/\/eax.me\/kvm\/\" rel=\"nofollow\">\u041f\u0435\u0440\u0435\u0441\u0442\u0430\u0435\u043c \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 KVM<\/a><\/li>\n<li><a href=\"https:\/\/mkdev.me\/posts\/osnovy-virtualizatsii-i-vvedenie-v-kvm\" rel=\"nofollow\">\u041e\u0441\u043d\u043e\u0432\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 KVM<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@alexander.bazhenov\/%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%B2-linux-%D1%87%D0%B0%D1%81%D1%82%D1%8C-1-kernel-based-virtual-machine-kvm-55f989880dbf\" rel=\"nofollow\">\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 Unix. \u0427\u0430\u0441\u0442\u044c 1: Kernel-based Virtual Machine (KVM)<\/a><\/li>\n<li><a href=\"https:\/\/ru.wikibooks.org\/wiki\/%D0%9D%D0%B0%D1%81%D1%82%D0%BE%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B0_%D0%BF%D0%BE_Linux\/Cgroups\" rel=\"nofollow\">\u041d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u043f\u043e Linux\/Cgroups<\/a><\/li>\n<li><a href=\"https:\/\/selectel.ru\/blog\/mexanizmy-kontejnerizacii-cgroups\/\" rel=\"nofollow\">\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438: cgroups<\/a><\/li>\n<li><a href=\"http:\/\/falbar.ru\/article\/vvedenie-v-kontejnery-vm-i-docker-dlya-novichkov\" rel=\"nofollow\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, VM \u0438 Docker \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432<\/a><\/li>\n<li><a href=\"https:\/\/containerd.io\/\" rel=\"nofollow\">containerd<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/docker\/awesome-compose\" rel=\"nofollow\">awesome-compose<\/a><\/li>\n<li><a href=\"https:\/\/www.katacoda.com\/courses\/docker\" rel=\"nofollow\">Learn Docker &amp; Containers using Interactive Browser-Based Scenarios<\/a><\/li>\n<li><a href=\"https:\/\/www.edureka.co\/blog\/what-is-docker-container\" rel=\"nofollow\">What Is Docker &amp; Docker Container? A Deep Dive Into Docker!<\/a><\/li>\n<li><a href=\"https:\/\/docker-curriculum.com\/\" rel=\"nofollow\">Docker for beginners<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">54. \u0427\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u043e\u0432 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439? \u041a\u0430\u043a\u0438\u0435 \u0437\u043d\u0430\u0435\u0442\u0435?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Web_container\" rel=\"nofollow\">\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u043e\u0432<\/a> \u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Java_servlet\" rel=\"nofollow\">Java-\u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430\u043c\u0438<\/a> \u2014 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b, \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0443 \u0438 \u0438\u043c\u0435\u0435\u0442 \u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 URL \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0442.\u043f.<br \/>  \u041f\u0440\u0438\u043c\u0435\u0440\u044b (\u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438, \u043d\u043e \u041d\u0415 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u0442\u0435\u043a Java EE)):<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0421\u0430\u043c\u044b\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u2014 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Apache_Tomcat\" rel=\"nofollow\">Apache Tomcat<\/a>. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0439: \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0434\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (TomEE)<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Jetty_(web_server)\" rel=\"nofollow\">Jetty<\/a><\/li>\n<li><a href=\"http:\/\/undertow.io\/\" rel=\"nofollow\">Undertow<\/a><br \/>  <a href=\"https:\/\/en.wikipedia.org\/wiki\/Application_server\" rel=\"nofollow\">\u0421\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/a> \u2014 \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u043e\u0432 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0435\u0441\u044c \u0441\u0442\u0435\u043a <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Jakarta_EE\" rel=\"nofollow\">Java EE<\/a> (\u043d\u044b\u043d\u0435 Jakarta EE).<br \/>  \u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/li>\n<li><a href=\"https:\/\/wildfly.org\/about\/\" rel=\"nofollow\">Wildfly<\/a><\/li>\n<li><a href=\"https:\/\/tomee.apache.org\/\" rel=\"nofollow\">Apache TomEE<\/a><\/li>\n<li><a href=\"https:\/\/www.ibm.com\/ru-ru\/marketplace\/java-ee-runtime\" rel=\"nofollow\">IBM WebSphere<\/a><\/li>\n<li><a href=\"https:\/\/eclipse-ee4j.github.io\/glassfish\/\" rel=\"nofollow\">Eclipse GlassFish<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_application_servers\" rel=\"nofollow\">\u0421\u0432\u043e\u0434\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0418\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 &quot;\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c Tomcat&quot; \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0439 <a href=\"https:\/\/itsobes.ru\/JavaSobes\/chem-otlichaetsia-servlet-container-ot-application-server\/\" rel=\"nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<\/div><\/div>\n<p>  <\/p>\n<h2 id=\"analogichnye-istochniki-voprosov-otvetov-i-prochie-poleznosti\">\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432-\u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u0438<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/485678\/\">\u0412\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e Java-backend, Java core (60 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432)<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/350682\/\">Spring: \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/265061\/\">\u0428\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430 Java \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 1: JPA \u0438 Hibernate \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445 \u0438 \u043e\u0442\u0432\u0435\u0442\u0430\u0445<\/a> \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/li>\n<li><a href=\"https:\/\/itsobes.ru\/JavaSobes\/tags\/\" rel=\"nofollow\">JavaSobes<\/a> \u0438 \u0432 <a href=\"https:\/\/t.me\/JavaSobes\" rel=\"nofollow\">telegram<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/MaximAbramchuck\/awesome-interview-questions#java\" rel=\"nofollow\">Awesome-interview-questions\/Java<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/enhorse\/java-interview\" rel=\"nofollow\">\u0412\u043e\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 Java Developer<\/a><\/li>\n<li><a href=\"https:\/\/jsehelper.blogspot.com\/p\/welcome.html\" rel=\"nofollow\">\u0412\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 Java Developer<\/a><\/li>\n<li><a href=\"https:\/\/javastudy.ru\/interview\/list-of-question-java-interview\/\" rel=\"nofollow\">\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e Java<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/qcha\/JBook\" rel=\"nofollow\">JBook<\/a><\/li>\n<li>Telegram-\u043a\u0430\u043d\u0430\u043b <a href=\"https:\/\/t.me\/java_fillthegaps\" rel=\"nofollow\">Java: fill the gaps<\/a><\/li>\n<li>Telegram-\u043a\u0430\u043d\u0430\u043b <a href=\"https:\/\/t.me\/middle_java\" rel=\"nofollow\">middlejava<\/a><\/li>\n<li>Telegram-\u043a\u0430\u043d\u0430\u043b <a href=\"https:\/\/t.me\/java_developer\" rel=\"nofollow\">Java Developer<\/a><\/li>\n<li>Telegram-\u043a\u0430\u043d\u0430\u043b\u044b <a href=\"https:\/\/t.me\/microJUG\" rel=\"nofollow\">microJUG<\/a> \u0438 <a href=\"https:\/\/t.me\/miniJUG\" rel=\"nofollow\">miniJUG<\/a><\/li>\n<li>Telegram-\u043a\u0430\u043d\u0430\u043b <a href=\"https:\/\/t.me\/javaswag\" rel=\"nofollow\">javaswag<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/528206\/\">50 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e Docker, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445, \u0438 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043d\u0438\u0445<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=Vlb_Is-rRTQ\" rel=\"nofollow\">\u0410\u043d\u0442\u043e\u043d \u0410\u0440\u0445\u0438\u043f\u043e\u0432 \u2014 \u041d\u0435\u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e\u0435 Java-\u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/mtdvio\/every-programmer-should-know\" rel=\"nofollow\">Every Programmer Should Know<\/a><\/li>\n<li>\u0420\u0430\u0431\u043e\u0442\u0430 \u043d\u0435 \u0432\u043e\u043b\u043a: <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/473762\/\">\u0447\u0430\u0441\u0442\u044c 1<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/475002\/\">\u0447\u0430\u0441\u0442\u044c 2<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/476954\/\">\u0447\u0430\u0441\u0442\u044c 3<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"itogo\">\u0418\u0442\u043e\u0433\u043e<\/h2>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 Backend-Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0443\u0434\u044f \u043f\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b \u0432 \u043e\u0442\u0432\u0435\u0442\u0430\u0445, \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u044b\u0441\u043a\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0443\u0440\u043e\u0432\u043d\u044f &quot;\u041d\u0435\u0442\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0430&quot; \u043b\u0435\u0436\u0438\u0442 \u0437\u0430 \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0434\u043e\u043a\u043b\u0430\u0434\u0430\u0445 \u0441 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0439 JUG.RU.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441 \u0438\u043d\u0442\u0435\u0440\u044c\u0432\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f, \u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0438\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c PR \u0432 <a href=\"https:\/\/github.com\/jmorozov\/awesome-java-backend-interview\" rel=\"nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430 GitHub<\/a> \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u043e\u0439.<\/p>\n<p>  <\/p>\n<p><strong>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/strong> \u0411\u0443\u0434\u044c\u0442\u0435 \u0431\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u0438 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b! \u0412\u043e \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 (\u043c\u043e\u044f \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435) \u0438 \u0441\u0431\u043e\u0440\u043d\u0438\u043a\u0430\u0445 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u044f\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0437\u043d\u0430\u043d\u0438\u0439 \u2014 \u044d\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0437\u0430\u0437\u0443\u0431\u0440\u0438\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0432\u044b\u0448\u0435 \u043d\u0435 \u0434\u0430\u0451\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0442\u0440\u0443\u0434\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0445\u043e\u0440\u043e\u0448\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0448\u0435\u043b\u043a\u043e\u0432\u0438\u0441\u0442\u043e\u0441\u0442\u0438 \u0432\u043e\u043b\u043e\u0441.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/529214\/\"> https:\/\/habr.com\/ru\/post\/529214\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gv\/gr\/wk\/gvgrwkv6qr399p-m3pig-tgoxsq.jpeg\"><\/div>\n<p>  <\/p>\n<p>\u041f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0431\u043e\u0440\u043d\u0438\u043a\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432-\u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0441 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 Backend-Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. <a href=\"https:\/\/habr.com\/ru\/post\/529210\/\">\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043c\u044b \u043f\u0440\u043e\u0448\u043b\u0438\u0441\u044c \u043f\u043e Java \u0438 Spring. \u0410 \u0432 \u044d\u0442\u043e\u0439 \u043f\u043e\u0433\u043e\u0432\u0440\u0438\u043c \u043e Hibernate, \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0438 \u0438 \u043f\u043e\u0434\u0432\u0435\u0434\u0451\u043c \u0438\u0442\u043e\u0433\u0438.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-313543","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/313543","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=313543"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/313543\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=313543"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=313543"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=313543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}