<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Java on Haoxiqiang&#39;s Blog</title>
    <link>https://blog.substitute.tech/categories/java/</link>
    <description>Recent content in Java on Haoxiqiang&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Tue, 16 Jun 2015 11:09:06 +0000</lastBuildDate>
    <atom:link href="https://blog.substitute.tech/categories/java/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Java Reflection 修改 private static final 字段</title>
      <link>https://blog.substitute.tech/posts/javareflection/</link>
      <pubDate>Tue, 16 Jun 2015 11:09:06 +0000</pubDate>
      <guid>https://blog.substitute.tech/posts/javareflection/</guid>
      <description>&lt;p&gt;排查内存泄漏问题时，经常需要反射修改字段值。在 Stack Overflow 上看到一个高质量回答，整理如下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gson 使用指南</title>
      <link>https://blog.substitute.tech/posts/gsonexamples/</link>
      <pubDate>Mon, 08 Jun 2015 12:37:45 +0000</pubDate>
      <guid>https://blog.substitute.tech/posts/gsonexamples/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;本文基于 Gson 官方用户指南整理而成。相对于其他 JSON 框架，Gson 的性能并不逊色，加上 Google 官方维护的背景，成为 Java/Android 项目中处理 JSON 的首选。以下是对官方文档的全面梳理和备忘。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Gson 是 Google 开发的 Java 库，用于将 Java 对象序列化为 JSON 表示，以及将 JSON 字符串反序列化为 Java 对象。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cache Algorithms</title>
      <link>https://blog.substitute.tech/posts/cachealgorithms/</link>
      <pubDate>Tue, 05 May 2015 16:31:28 +0000</pubDate>
      <guid>https://blog.substitute.tech/posts/cachealgorithms/</guid>
      <description>&lt;p&gt;缓存算法（Cache Replacement Policies）决定缓存空间满时哪些数据被淘汰，对系统性能有直接影响。以下是常见的缓存淘汰算法概览。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Design Patterns</title>
      <link>https://blog.substitute.tech/posts/designpatterns/</link>
      <pubDate>Mon, 30 Mar 2015 10:08:26 +0000</pubDate>
      <guid>https://blog.substitute.tech/posts/designpatterns/</guid>
      <description>&lt;p&gt;设计模式(Design Patterns)是面向对象设计中针对常见问题的可复用解决方案。1994 年由 GoF (Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides) 在 &lt;em&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/em&gt; 一书中系统总结,共 23 种经典模式。&lt;/p&gt;
&lt;p&gt;本文整理自 &lt;a href=&#34;https://github.com/smallnest&#34;&gt;smallnest&lt;/a&gt; 的博客文章,以及 StackOverflow 上关于 GoF 设计模式在 Java API 中应用实例的讨论。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;javagofdesignpatterns&#34; loading=&#34;lazy&#34; src=&#34;https://blog.substitute.tech/images/javagofdesignpatterns.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../source/pdf/design-pattern-scard.pdf&#34;&gt;查看PDF概览图&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java HashMap 的实现原理</title>
      <link>https://blog.substitute.tech/posts/javahashmap%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/</link>
      <pubDate>Sat, 27 Dec 2014 08:35:07 +0000</pubDate>
      <guid>https://blog.substitute.tech/posts/javahashmap%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/</guid>
      <description>&lt;p&gt;HashMap 是 Java 面试中高频出现的题目，能有效考察候选人对数据结构和工程实现的理解。这篇文章梳理其核心设计思路与实现细节。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;hashmap01&#34; loading=&#34;lazy&#34; src=&#34;https://blog.substitute.tech/images/hashmap01.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 8 的 Lambda 表达式</title>
      <link>https://blog.substitute.tech/posts/java-8-%E7%9A%84-lambda/</link>
      <pubDate>Sun, 07 Dec 2014 15:35:07 +0000</pubDate>
      <guid>https://blog.substitute.tech/posts/java-8-%E7%9A%84-lambda/</guid>
      <description>&lt;h2 id=&#34;什么是-lambda-表达式&#34;&gt;什么是 Lambda 表达式？&lt;/h2&gt;
&lt;p&gt;Lambda 表达式是 Java 8 引入的核心特性，让代码更加简洁。先看一个最直观的例子：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Runnable&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;runnable1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Runnable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nd&#34;&gt;@Override&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;runnable1 start!!!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Runnable&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;runnable2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;runnable2 start!!!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;runnable1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;runnable2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;两段代码完全等价，但 Lambda 版本只有一行。基本形式为 &lt;code&gt;() -&amp;gt; expression&lt;/code&gt; 或 &lt;code&gt;() -&amp;gt; { statements; }&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
