<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Language - 分类 - 招财猫的部落格</title>
        <link>https://blog.besty.day/categories/language/</link>
        <description>Language - 分类 - 招财猫的部落格</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Wed, 24 Jul 2019 20:30:19 &#43;0800</lastBuildDate><atom:link href="https://blog.besty.day/categories/language/" rel="self" type="application/rss+xml" /><item>
    <title>重构、测试和调试</title>
    <link>https://blog.besty.day/posts/2019/07/refactoring-testing-debugging/</link>
    <pubDate>Wed, 24 Jul 2019 20:30:19 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2019/07/refactoring-testing-debugging/</guid>
    <description><![CDATA[<h2 id="重构以提高可读性和灵活性">重构以提高可读性和灵活性</h2>
<h3 id="提高代码的可读性">提高代码的可读性</h3>
<p>我们介绍三个简单的重构，使用lambda、方法引用和流，将它们应用到代码中，以提高代码的可读性：</p>
<ul>
<li>将匿名类重构为lambda表达式</li>
<li>将lambda表达式重构为方法引用</li>
<li>将命令式数据处理重构为流处理</li>
</ul>
<h3 id="从匿名类到lambda表达式">从匿名类到lambda表达式</h3>
<p>下面是使用匿名类创建一个<code>Runnable</code>对象和对应的lambda表达式：</p>]]></description>
</item>
<item>
    <title>Collection API增强</title>
    <link>https://blog.besty.day/posts/2019/07/collection-api-enhancements/</link>
    <pubDate>Wed, 24 Jul 2019 14:22:44 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2019/07/collection-api-enhancements/</guid>
    <description><![CDATA[<h2 id="collection工厂">Collection工厂</h2>
<p>Java 9引入了一些创建小型集合对象的方法，比如<code>Arrays.asList()</code>：</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">List</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span><span class="w"> </span><span class="n">friends</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Arrays</span><span class="p">.</span><span class="na">asList</span><span class="p">(</span><span class="s">&#34;Raphael&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;Olivia&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;Thibaut&#34;</span><span class="p">);</span></span></span></code></pre></div></div>
<p><code>Arrays.asList()</code>返回一个固定大小的列表，可以对其进行更新，但不能添加或删除元素，否则抛出UnsupportedModificationException异常。</p>]]></description>
</item>
<item>
    <title>并行数据处理和性能</title>
    <link>https://blog.besty.day/posts/2019/07/parallel-data-processing-and-performance/</link>
    <pubDate>Tue, 23 Jul 2019 20:00:47 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2019/07/parallel-data-processing-and-performance/</guid>
    <description><![CDATA[<h2 id="并行流">并行流</h2>
<p>通过调用<code>parallelStream</code>方法，可以将集合转换为并行流。并行流是将元素分割成多个块的流，使用不同的线程处理每个块。因此，你可以自动划分指定操作的工作负载在多核处理器的所有核心上，并使它们一样忙。</p>]]></description>
</item>
<item>
    <title>使用流收集数据</title>
    <link>https://blog.besty.day/posts/2019/07/collecting-data-with-streams/</link>
    <pubDate>Tue, 23 Jul 2019 13:04:54 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2019/07/collecting-data-with-streams/</guid>
    <description><![CDATA[<p>假设有一个事务列表，你希望根据货币对它们进行分组。在Java 8之前，即使是这样一个简单的例子也很难实现，如下所示：</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">Map</span><span class="o">&lt;</span><span class="n">Currency</span><span class="p">,</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">Transaction</span><span class="o">&gt;&gt;</span><span class="w"> </span><span class="n">transactionsByCurrencies</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HashMap</span><span class="o">&lt;&gt;</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Transaction</span><span class="w"> </span><span class="n">transaction</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">transactions</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">Currency</span><span class="w"> </span><span class="n">currency</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">transaction</span><span class="p">.</span><span class="na">getCurrency</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="n">List</span><span class="o">&lt;</span><span class="n">Transaction</span><span class="o">&gt;</span><span class="w"> </span><span class="n">transactionsForCurrency</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">transactionsByCurrencies</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="n">currency</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">transactionsForCurrency</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="n">transactionsForCurrency</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;&gt;</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">		</span><span class="n">transactionsByCurrencies</span><span class="p">.</span><span class="na">put</span><span class="p">(</span><span class="n">currency</span><span class="p">,</span><span class="w"> </span><span class="n">transactionsForCurrency</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">	</span><span class="n">transactionsForCurrency</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">transaction</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span></span></span></code></pre></div></div>
<p>在Java 8之后，仅用一条语句就可以获得完全相同的结果：</p>]]></description>
</item>
<item>
    <title>使用流</title>
    <link>https://blog.besty.day/posts/2019/07/working-with-streams/</link>
    <pubDate>Thu, 11 Jul 2019 08:39:11 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2019/07/working-with-streams/</guid>
    <description><![CDATA[<h2 id="过滤">过滤</h2>
<h3 id="使用谓词过滤">使用谓词过滤</h3>
<p><code>filter</code>方法接受一个谓词函数为参数，并返回包含所有匹配谓词的元素的流。如下例：</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">List</span><span class="o">&lt;</span><span class="n">Dish</span><span class="o">&gt;</span><span class="w"> </span><span class="n">vegetarianMenu</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">menu</span><span class="p">.</span><span class="na">stream</span><span class="p">().</span><span class="na">filter</span><span class="p">(</span><span class="n">Dish</span><span class="p">::</span><span class="n">isVegetarian</span><span class="p">).</span><span class="na">collect</span><span class="p">(</span><span class="n">toList</span><span class="p">());</span></span></span></code></pre></div></div>
<p>如下图所示：</p>
<p></p>]]></description>
</item>
<item>
    <title>流介绍</title>
    <link>https://blog.besty.day/posts/2019/07/introducing-streams/</link>
    <pubDate>Wed, 10 Jul 2019 17:22:30 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2019/07/introducing-streams/</guid>
    <description><![CDATA[<h2 id="流是什么">流是什么</h2>
<p>流是对Java API的更新，允许你以声明式的方式操作数据集合。首先看一个例子，假设你想获得所有热量低于400卡的菜肴的名字，并按热量排序。在Java 8之前，你可以这样做：</p>]]></description>
</item>
<item>
    <title>Lambda表达式</title>
    <link>https://blog.besty.day/posts/2019/07/lambda-expressions/</link>
    <pubDate>Wed, 10 Jul 2019 08:48:55 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2019/07/lambda-expressions/</guid>
    <description><![CDATA[<h2 id="lambda概述">Lambda概述</h2>
<p>lambda表达式没有名称，但是它有参数列表，函数体和返回类型，还可能包含一个异常列表。</p>
<ul>
<li>匿名，lambda表达式不像方法一样有一个显式的名字</li>
<li>函数，lambda表达式不像方法一样关联到一个特定的类</li>
<li>传递，lambda表达式可以像函数参数一样传递，或者保存到变量里面</li>
<li>简洁，不需要像匿名类一样写很多样板代码</li>
</ul>
<p>lambda基本语法有2种</p>]]></description>
</item>
<item>
    <title>数组</title>
    <link>https://blog.besty.day/posts/2018/11/arrays/</link>
    <pubDate>Mon, 12 Nov 2018 19:37:34 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2018/11/arrays/</guid>
    <description><![CDATA[<h3 id="创建数组">创建数组</h3>
<p>创建数组的最简单方法是使用数组字面值：</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-javascript">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">empty</span> <span class="o">=</span> <span class="p">[];</span> <span class="c1">// An array with no elements
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">var</span> <span class="nx">primes</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">11</span><span class="p">];</span> <span class="c1">// An array with 5 numeric elements
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">var</span> <span class="nx">misc</span> <span class="o">=</span> <span class="p">[</span><span class="mf">1.1</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="s2">&#34;a&#34;</span><span class="p">,];</span> <span class="c1">// 3 elements of various types + trailing comma
</span></span></span></code></pre></div></div>

<p>数组字面值中的元素可以是任意的表达式。如果数组中有省略的元素，其值为<code>undefined</code>：</p>]]></description>
</item>
<item>
    <title>对象</title>
    <link>https://blog.besty.day/posts/2018/11/objects/</link>
    <pubDate>Sat, 03 Nov 2018 21:39:25 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2018/11/objects/</guid>
    <description><![CDATA[<p>对象的属性也有属性：</p>
<ul>
<li>可写属性指定属性的值是否可以设置。</li>
<li>枚举属性指定属性名是否能由for/in循环返回。</li>
<li>可配置属性指定属性是否可以删除和更改。</li>
</ul>
<p>在ES5之前，自己代码创建的对象中的所有属性都是可写的、可枚举的和可配置的。每个对象都有三个相关的对象属性：</p>]]></description>
</item>
<item>
    <title>语句</title>
    <link>https://blog.besty.day/posts/2018/10/statements/</link>
    <pubDate>Tue, 30 Oct 2018 21:16:04 &#43;0800</pubDate>
    <author>招财猫</author>
    <guid>https://blog.besty.day/posts/2018/10/statements/</guid>
    <description><![CDATA[<p>JavaScript语句以分号结束。表达式被计算以产生值，但是语句被执行以使某些事情发生。</p>
<h3 id="表达式语句">表达式语句</h3>
<p>JavaScript中最简单的语句是具有副作用的表达式，比如赋值语句、自增自减运算符、delete操作符和函数调用：</p>]]></description>
</item>
</channel>
</rss>
