{"id":296077,"date":"2019-12-19T15:00:25","date_gmt":"2019-12-19T15:00:25","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=296077"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=296077","title":{"rendered":"\u0422\u043e\u043f 10 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Java \u0437\u0430 2019 \u0433\u043e\u0434"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481186\/\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/n2\/uy\/oe\/n2uyoeo7ko6owq_omdtzx419gty.png\"><\/div>\n<p>  2019 \u0433\u043e\u0434 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043a \u043a\u043e\u043d\u0446\u0443, \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 PVS-Studio \u043f\u043e\u0434\u0432\u043e\u0434\u0438\u0442 \u0438\u0442\u043e\u0433\u0438 \u0443\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0433\u043e\u0434\u0430. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 2019 \u0433\u043e\u0434\u0430 \u043c\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0432 \u044f\u0437\u044b\u043a Java. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0448\u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043f\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f \u043e\u0431\u0437\u043e\u0440\u0430\u043c\u0438 Java \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0417\u0430 \u0433\u043e\u0434 \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043e\u0448\u0438\u0431\u043e\u043a, \u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c Top 10 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0438\u0437 \u043d\u0438\u0445.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<h2>\u0414\u0435\u0441\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439 byte<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0663\/\">\u0410\u043d\u0430\u043b\u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 RPC \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 Apache Dubbo \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c PVS-Studio<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6007\/\">V6007<\/a> Expression &#8216;endKey[i] &lt; 0xff&#8217; is always true. OptionUtil.java(32)  <\/p>\n<pre><code class=\"java\">public static final ByteSequence prefixEndOf(ByteSequence prefix) {   byte[] endKey = prefix.getBytes().clone();   for (int i = endKey.length - 1; i &gt;= 0; i--) {     if (endKey[i] &lt; 0xff) {                                           \/\/ &lt;=       endKey[i] = (byte) (endKey[i] + 1);       return ByteSequence.from(Arrays.copyOf(endKey, i + 1));     }   }   return ByteSequence.from(NO_PREFIX_END); }<\/code><\/pre>\n<p>  \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0441\u0447\u0438\u0442\u0430\u044e\u0442, \u0447\u0442\u043e \u0442\u0438\u043f, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0438\u043c\u044f <i>byte<\/i>, \u0431\u0443\u0434\u0435\u0442 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c. \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0430\u0441\u0442\u043e \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 C# \u0442\u0438\u043f <i>byte<\/i> \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439. \u0412 Java \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<p>  \u0412 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 <i>endKey[i] &lt; 0xff<\/i> \u0430\u0432\u0442\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0438\u043f\u0430 <i>byte<\/i> \u0441 \u0447\u0438\u0441\u043b\u043e\u043c 255(0xff), \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0412\u0438\u0434\u0438\u043c\u043e, \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0437\u0430\u0431\u044b\u043b, \u0447\u0442\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u0430 <i>byte<\/i> \u0432 Java \u0440\u0430\u0432\u0435\u043d [-128, 127]. \u0414\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0446\u0438\u043a\u043b <i>for<\/i> \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <i>endKey<\/i>.<\/p>\n<h2>\u0414\u0435\u0432\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u0434\u0432\u0430 \u0432 \u043e\u0434\u043d\u043e\u043c<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0621\/\">PVS-Studio for Java \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u0443\u0442\u044c. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u2014 Elasticsearch<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6007\/\">V6007<\/a> Expression &#8216;(int)x &lt; 0&#8217; is always false. BCrypt.java(429)<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6025\/\">V6025<\/a> Possibly index &#8216;(int) x&#8217; is out of bounds. BCrypt.java(431)  <\/p>\n<pre><code class=\"java\">private static byte char64(char x) {   if ((int)x &lt; 0 || (int)x &gt; index_64.length)     return -1;   return index_64[(int)x]; }<\/code><\/pre>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0443 \u043d\u0430\u0441 \u0430\u043a\u0446\u0438\u044f! \u0421\u0440\u0430\u0437\u0443 \u0434\u0432\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u2013 \u0442\u0438\u043f <i>char<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 Java \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <i>(int)x &lt; 0<\/i> \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u043e\u0436\u043d\u043e. \u0412\u0442\u043e\u0440\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <i>index_64<\/i>, \u043a\u043e\u0433\u0434\u0430 <i>(int)x == index_64.length<\/i>. \u0422\u0430\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0438\u0437-\u0437\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f <i>(int)x &gt; index_64.length<\/i>. \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u044b\u0445\u043e\u0434\u0430 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 &#8216;&gt;&#8217; \u043d\u0430 &#8216;&gt;=&#8217;. \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c: <i>(int)x &gt;= index_64.length<\/i>.<\/p>\n<h2>\u0412\u043e\u0441\u044c\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0626\/\">\u0410\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430 CUBA Platform \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6007\/\">V6007<\/a> Expression &#8216;previousMenuItemFlatIndex &gt;= 0&#8217; is always true. CubaSideMenuWidget.java(328)  <\/p>\n<pre><code class=\"java\">protected MenuItemWidget findNextMenuItem(MenuItemWidget currentItem) {   List&lt;MenuTreeNode&gt; menuTree = buildVisibleTree(this);   List&lt;MenuItemWidget&gt; menuItemWidgets = menuTreeToList(menuTree);    int menuItemFlatIndex = menuItemWidgets.indexOf(currentItem);   int previousMenuItemFlatIndex = menuItemFlatIndex + 1;   if (previousMenuItemFlatIndex &gt;= 0) {                          \/\/ &lt;=       return menuItemWidgets.get(previousMenuItemFlatIndex);   }   return null; }<\/code><\/pre>\n<p>  \u0410\u0432\u0442\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0430 <i>findNextMenuItem <\/i> \u0445\u043e\u0447\u0435\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 -1, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0439 \u043c\u0435\u0442\u043e\u0434\u043e\u043c <i>indexOf<\/i>, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a <i>menuItemWidgets<\/i> \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <i>currentItem<\/i>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 <i>indexOf<\/i> (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>menuItemFlatIndex<\/i>) \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>previousMenuItemFlatIndex<\/i>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u0442\u043e\u0434\u0435. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 -1 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0441\u0440\u0430\u0437\u0443 \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0430\u043c: <\/p>\n<ul>\n<li>\u043a\u043e\u0434 <i>return null<\/i> \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <i>previousMenuItemFlatIndex &gt;= 0<\/i> \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 <i>findNextMenuItem<\/i> \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 <i>if<\/i>;<\/li>\n<li>\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <i>IndexOutOfBoundsException <\/i> \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0441\u043f\u0438\u0441\u043e\u043a <i>menuItemWidgets<\/i> \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430;<\/li>\n<li>\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <i>IndexOutOfBoundsException<\/i> \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 <i>currentItem<\/i> \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 <i>menuItemWidget<\/i>.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0421\u0435\u0434\u044c\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u043d\u0438\u0447\u0435\u0433\u043e<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0688\/\">Huawei Cloud: \u0432 PVS-Studio \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6008\/\">V6008<\/a> Potential null dereference of &#8216;dataTmpFile&#8217;. CacheManager.java(91)  <\/p>\n<pre><code class=\"java\">@Override public void putToCache(PutRecordsRequest putRecordsRequest) {   ....    if (dataTmpFile == null || !dataTmpFile.exists())   {     try     {       dataTmpFile.createNewFile();  \/\/ &lt;=     }     catch (IOException e)     {       LOGGER.error(\"Failed to create cache tmp file, return.\", e);       return;     }   }   .... } <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 <i>putToCache<\/i> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0443 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 <i>dataTmpFile == null || !dataTmpFile.exists()<\/i> \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 <i>dataTmpFile.createNewFile(). <\/i>\u041e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u2014 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 &#8216;==&#8217; \u0432\u043c\u0435\u0441\u0442\u043e &#8216;!=&#8217;. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <i>NullPointerException<\/i> \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <i>createNewFile<\/i>. \u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:   <\/p>\n<pre><code class=\"java\">if (dataTmpFile != null || !dataTmpFile.exists())<\/code><\/pre>\n<p>  \u00ab\u041e\u0448\u0438\u0431\u043a\u0443 \u043d\u0430\u0448\u043b\u0438, \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438. \u041c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u0438\u0442\u044c\u0441\u044f\u00bb, \u2013 \u043f\u043e\u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u0432\u044b. \u041d\u043e \u043a\u0430\u043a \u0431\u044b \u043d\u0435 \u0442\u0430\u043a!<\/p>\n<p>  \u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0432 \u043e\u0434\u043d\u0443 \u043e\u0448\u0438\u0431\u043a\u0443, \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0443\u044e. \u0421\u0435\u0439\u0447\u0430\u0441 <i>NullPointerException<\/i> \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 <i>dataTmpFile.exists()<\/i>. \u0422\u0435\u043f\u0435\u0440\u044c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &#8216;||&#8217; \u043d\u0430 &#8216;&amp;&amp;&#8217;. \u0423\u0441\u043b\u043e\u0432\u0438\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442 \u0432\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c:  <\/p>\n<pre><code class=\"java\">if (dataTmpFile != null &amp;&amp; !dataTmpFile.exists())<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0428\u0435\u0441\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0603\/\">PVS-Studio \u0434\u043b\u044f Java<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6007\/\">V6007<\/a> [CWE-570] Expression &#8216;\u00ab0\u00bb.equals(text)&#8217; is always false. ConvertIntegerToDecimalPredicate.java 46  <\/p>\n<pre><code class=\"java\">public boolean satisfiedBy(@NotNull PsiElement element) {   ....   @NonNls final String text = expression.getText().replaceAll(\"_\", \"\");   if (text == null || text.length() &lt; 2) {     return false;   }   if (\"0\".equals(text) || \"0L\".equals(text) || \"0l\".equals(text)) {\/\/ &lt;=     return false;   }   return text.charAt(0) == '0'; }<\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u043d\u0435\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044f\u0432\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0415\u0441\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 <i>satisfiedBy<\/i> \u043d\u0435 \u0432\u0435\u0440\u043d\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e <i>if<\/i>, \u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430 <i>text<\/i> \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <i>\u00ab0\u00bb.equals(text)<\/i> \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c <i>if<\/i> \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0439. \u0427\u0442\u043e \u0436\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u043c\u0435\u043b \u0432 \u0432\u0438\u0434\u0443, \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0430\u0434\u043a\u043e\u0439.<\/p>\n<h2>\u041f\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u0432\u043e\u0442 \u044d\u0442\u043e \u043f\u043e\u0432\u043e\u0440\u043e\u0442!<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0657\/\">PVS-Studio \u0432 \u0433\u043e\u0441\u0442\u044f\u0445 \u0443 Apache Hive<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6034\/\">V6034<\/a> Shift by the value of &#8216;bitShiftsInWord \u2014 1&#8217; could be inconsistent with the size of type: &#8216;bitShiftsInWord \u2014 1&#8217; = [-1\u2026 30]. UnsignedInt128.java(1791)  <\/p>\n<pre><code class=\"java\">private void shiftRightDestructive(int wordShifts,                                    int bitShiftsInWord,                                    boolean roundUp)  {   if (wordShifts == 0 &amp;&amp; bitShiftsInWord == 0) {     return;   }    assert (wordShifts &gt;= 0);   assert (bitShiftsInWord &gt;= 0);   assert (bitShiftsInWord &lt; 32);   if (wordShifts &gt;= 4) {     zeroClear();     return;   }    final int shiftRestore = 32 - bitShiftsInWord;    \/\/ check this because \"123 &lt;&lt; 32\" will be 123.   final boolean noRestore = bitShiftsInWord == 0;   final int roundCarryNoRestoreMask = 1 &lt;&lt; 31;   final int roundCarryMask = (1 &lt;&lt; (bitShiftsInWord - 1));  \/\/ &lt;=   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u0445 <i>wordShifts = 3<\/i> \u0438 <i>bitShiftsInWord = 0<\/i>, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>roundCarryMask<\/i>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0434\u0432\u0438\u0433\u0430 <i>(1 &lt;&lt; (bitShiftsInWord \u2014 1))<\/i>, \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u043b \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/p>\n<h2>\u0427\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0439\u0434\u0443\u0442 \u043f\u043e\u0433\u0443\u043b\u044f\u0442\u044c?<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0657\/\">PVS-Studio \u0432 \u0433\u043e\u0441\u0442\u044f\u0445 \u0443 Apache Hive<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6051\/\">V6051<\/a> The use of the &#8216;return&#8217; statement in the &#8216;finally&#8217; block can lead to the loss of unhandled exceptions. ObjectStore.java(9080)  <\/p>\n<pre><code class=\"java\">private List&lt;MPartitionColumnStatistics&gt;  getMPartitionColumnStatistics(....) throws NoSuchObjectException, MetaException  {   boolean committed = false;    try {     .... \/*some actions*\/          committed = commitTransaction();          return result;   }    catch (Exception ex)    {     LOG.error(\"Error retrieving statistics via jdo\", ex);     if (ex instanceof MetaException) {       throw (MetaException) ex;     }     throw new MetaException(ex.getMessage());   }    finally    {     if (!committed) {       rollbackTransaction();       return Lists.newArrayList();     }   } }<\/code><\/pre>\n<p>  \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <i>getMPartitionColumnStatistics<\/i> \u0432\u0440\u0435\u0442 \u043d\u0430\u043c, \u0433\u043e\u0432\u043e\u0440\u044f, \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 <i>try<\/i> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>committed<\/i> \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u043e\u0439 <i>false<\/i>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0431\u043b\u043e\u043a\u0435 <i>finally<\/i> \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <i>return<\/i> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430, \u0430 \u0432\u0441\u0435 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0432\u043d\u0435 \u043c\u0435\u0442\u043e\u0434\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043b\u044e\u0431\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0435 \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435, \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043d\u0435\u0433\u043e.<\/p>\n<h2>\u0422\u0440\u0435\u0442\u044c\u0435 \u043c\u0435\u0441\u0442\u043e: \u043a\u0440\u0443\u0447\u0443, \u0432\u0435\u0440\u0447\u0443, \u043d\u043e\u0432\u0443\u044e \u043c\u0430\u0441\u043a\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0445\u043e\u0447\u0443<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0657\/\">PVS-Studio \u0432 \u0433\u043e\u0441\u0442\u044f\u0445 \u0443 Apache Hive<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6034\/\">V6034<\/a> Shift by the value of &#8216;j&#8217; could be inconsistent with the size of type: &#8216;j&#8217; = [0&#8230;63]. IoTrace.java(272)  <\/p>\n<pre><code class=\"java\">public void logSargResult(int stripeIx, boolean[] rgsToRead) {   ....   for (int i = 0, valOffset = 0; i &lt; elements; ++i, valOffset += 64) {     long val = 0;     for (int j = 0; j &lt; 64; ++j) {       int ix = valOffset + j;       if (rgsToRead.length == ix) break;       if (!rgsToRead[ix]) continue;       val = val | (1 &lt;&lt; j);                \/\/ &lt;=     }     ....   }   .... }<\/code><\/pre>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u043c \u0441\u0434\u0432\u0438\u0433\u043e\u043c, \u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432 \u0434\u0435\u043b\u0435 \u0437\u0430\u043c\u0435\u0448\u0430\u043d \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d. \u0412\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0446\u0438\u043a\u043b\u0435 <i>for<\/i> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0446\u0438\u043a\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>j<\/i> [0&#8230;63]. \u042d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u043c \u0441\u0434\u0432\u0438\u0433\u0435 <i>1 &lt;&lt; j<\/i>. \u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0435\u0449\u0430\u0435\u0442 \u0431\u0435\u0434\u044b, \u043e\u0434\u043d\u0430\u043a\u043e \u0442\u0443\u0442 \u0432 \u0434\u0435\u043b\u043e \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u043b &#8216;1&#8217; \u0442\u0438\u043f\u0430 <i>int<\/i> (32-\u0431\u0438\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435). \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0434\u0432\u0438\u0433\u0430 \u043d\u0430\u0447\u043d\u0443\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a <i>j<\/i> \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 31. \u0415\u0441\u043b\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u043e \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a <i>long<\/i>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <i>1L &lt;&lt; j<\/i> \u0438\u043b\u0438 <i>(long)1 &lt;&lt; j<\/i>.<\/p>\n<h2>\u0412\u0442\u043e\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0688\/\">Huawei Cloud: \u0432 PVS-Studio \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6050\/\">V6050<\/a> Class initialization cycle is present. Initialization of &#8216;INSTANCE&#8217; appears before the initialization of &#8216;LOG&#8217;. UntrustedSSL.java(32), UntrustedSSL.java(59), UntrustedSSL.java(33)  <\/p>\n<pre><code class=\"java\">public class UntrustedSSL {   private static final UntrustedSSL INSTANCE = new UntrustedSSL();   private static final Logger LOG = LoggerFactory.getLogger(UntrustedSSL.class);   ....    private UntrustedSSL()    {     try     {       ....     }     catch (Throwable t) {       LOG.error(t.getMessage(), t);           \/\/ &lt;=     }   } }<\/code><\/pre>\n<p>  \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u0432\u0430\u0436\u0435\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u0431 \u044d\u0442\u043e\u043c \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0443\u043b\u043e\u0432\u0438\u043c\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u044d\u0442\u043e\u0439. <\/p>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0443\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0435 <i>LOG<\/i> \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u2014 <i>null<\/i>, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 <i>NullPointerException<\/i> -&gt; <i>ExceptionInInitializerError<\/i>. <\/p>\n<p>  \u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0435 <i>LOG<\/i> \u0440\u0430\u0432\u043d\u043e <i>null<\/i>?\u00bb \u2013 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b.<\/p>\n<p>  \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <i>ExceptionInInitializerError <\/i> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u043e\u0439. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044f <i>INSTANCE<\/i>, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u043f\u043e\u043b\u0435 <i>LOG<\/i>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043f\u043e\u043b\u0435 <i>LOG <\/i> \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e. \u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435 <i>LOG<\/i> \u0434\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0697\/\">\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430 Apache Hadoop: production VS test<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6072\/\">V6072<\/a> Two similar code fragments were found. Perhaps, this is a typo and &#8216;localFiles&#8217; variable should be used instead of &#8216;localArchives&#8217;. LocalDistributedCacheManager.java(183), LocalDistributedCacheManager.java(178), LocalDistributedCacheManager.java(176), LocalDistributedCacheManager.java(181)  <\/p>\n<pre><code class=\"java\">public synchronized void setup(JobConf conf, JobID jobId) throws IOException {   ....   \/\/ Update the configuration object with localized data.   if (!localArchives.isEmpty()) {     conf.set(MRJobConfig.CACHE_LOCALARCHIVES, StringUtils         .arrayToString(localArchives.toArray(new String[localArchives  \/\/ &lt;=             .size()])));   }   if (!localFiles.isEmpty()) {     conf.set(MRJobConfig.CACHE_LOCALFILES, StringUtils         .arrayToString(localFiles.toArray(new String[localArchives     \/\/ &lt;=             .size()])));   }   .... } <\/code><\/pre>\n<p>  \u0418 \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u2014 \u043e\u0448\u0438\u0431\u043a\u0430, \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0430\u044f \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u043b \u044d\u0442\u043e \u0433\u0440\u0435\u0448\u043d\u043e\u0435 \u0434\u0435\u043b\u043e. \u0412\u044b\u0441\u043e\u043a\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u043e\u0439 <i>if<\/i> \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u043e\u043c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441 \u0437\u0430\u043c\u0435\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445:<\/p>\n<ul>\n<li><i>localArchives <\/i> \u043d\u0430 <i>localFiles<\/i>;<\/li>\n<li><i>MRJobConfig.CACHE_LOCALARCHIVES <\/i> \u043d\u0430 <i>MRJobConfig.CACHE_LOCALFILES<\/i>.<\/li>\n<\/ul>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0430 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u043a\u0430\u0437\u0430\u043b \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440, \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c <i>if<\/i> \u0432\u0441\u0435 \u0435\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>localArchives<\/i>, \u0445\u043e\u0442\u044f, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <i>localFiles<\/i>.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u043b\u0438\u0437\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0437\u0430\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043d\u0430 \u0438\u0445 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0443\u0436\u0435 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b\u043e \u0436\u0438\u0437\u043d\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438\u0437 \u043c\u043d\u043e\u0433\u0438\u0445 <a href=\"https:\/\/www.viva64.com\/ru\/customers\/\">\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439<\/a>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u043c, \u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043d\u0430\u0448 <a href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/\">\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440<\/a>.<\/p>\n<p>  \u041d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e\u043c \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. \u0416\u0434\u0438\u0442\u0435 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0433\u043e\u0434\u0443 \u043d\u043e\u0432\u044b\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441 \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438.<\/p>\n<p>  \u042f \u0441\u043c\u043e\u0442\u0440\u044e \u0432\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f! \u0421\u043d\u0430\u0447\u0430\u043b\u0430 <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481178\/\">\u0442\u043e\u043f 10 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0421# \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0437\u0430 2019 \u0433\u043e\u0434<\/a> \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0438 Java \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0434\u043e\u043b\u0435\u0442\u044c! \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u0440\u043e <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481190\/\">\u043b\u0443\u0447\u0448\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 2019 \u0433\u043e\u0434\u0430 \u0432 C++ \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445<\/a>.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/24\/2j\/ex\/242jexzqwnmth1lyfcrr8icxmms.png\"><\/div>\n<p><a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/481184\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c78\/30f\/70c\/c7830f70c5577c3d6704f254d7cad6a3.png\" align=\"left\"><\/a><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Valery Komarov. <a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/481184\/\">Top 10 Bugs Found in Java Projects in 2019<\/a>.<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d() } } }t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>      <br \/> \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\/company\/pvs-studio\/blog\/481186\/\"> https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481186\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481186\/\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/n2\/uy\/oe\/n2uyoeo7ko6owq_omdtzx419gty.png\"><\/div>\n<p>  2019 \u0433\u043e\u0434 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043a \u043a\u043e\u043d\u0446\u0443, \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 PVS-Studio \u043f\u043e\u0434\u0432\u043e\u0434\u0438\u0442 \u0438\u0442\u043e\u0433\u0438 \u0443\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0433\u043e\u0434\u0430. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 2019 \u0433\u043e\u0434\u0430 \u043c\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0432 \u044f\u0437\u044b\u043a Java. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0448\u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043f\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f \u043e\u0431\u0437\u043e\u0440\u0430\u043c\u0438 Java \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0417\u0430 \u0433\u043e\u0434 \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043e\u0448\u0438\u0431\u043e\u043a, \u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c Top 10 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0438\u0437 \u043d\u0438\u0445.  <\/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-296077","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/296077","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=296077"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/296077\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=296077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=296077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=296077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}