<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>NanYin 的技术博客</title>
    <link>https://nanyiniu.github.io/</link>
    <description>Java、Spring、设计模式、Linux、Bash 等后端技术笔记</description>
    <language>zh-CN</language>
    <lastBuildDate>Thu, 15 Aug 2019 12:00:00 +0800</lastBuildDate>
    <atom:link href="https://nanyiniu.github.io/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Spring的缓存</title>
      <link>https://nanyiniu.github.io/spring/spring%E7%9A%84%E7%BC%93%E5%AD%98/</link>
      <pubDate>Thu, 15 Aug 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/spring%E7%9A%84%E7%BC%93%E5%AD%98/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;spring的缓存&#34;&gt;Spring的缓存&lt;/h1&gt;&#xA;&lt;p&gt;Java在使用&lt;code&gt;Cache&lt;/code&gt;的时候，为了统一缓存的使用，&lt;code&gt;J2EE&lt;/code&gt;发布了&lt;code&gt;JSR107&lt;/code&gt;缓存规范。包括了主要的5个核心接口，包括&lt;code&gt;cachingProvider&lt;/code&gt;、&lt;code&gt;cacheManager&lt;/code&gt;等。具体可以查看&lt;code&gt;JSR107&lt;/code&gt;缓存规。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot的自定义starter开发</title>
      <link>https://nanyiniu.github.io/spring/springboot%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89starter%E5%BC%80%E5%8F%91/</link>
      <pubDate>Tue, 13 Aug 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89starter%E5%BC%80%E5%8F%91/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;springboot的自定义starter开发&#34;&gt;SpringBoot的自定义starter开发&lt;/h1&gt;&#xA;&lt;p&gt;SpringBoot官方默认提供了很多的starter。参考&lt;a href=&#34;https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/using-boot-build-systems.html#using-boot-starter&#34;&gt;官方的reference&lt;/a&gt;。starter作为在SpringBoot中重要的特性，使用时能够在POM文件中直接引用这些starter，可以一站式的获取与Spring结合的相关服务和功能。如果想引入&lt;code&gt;redis&lt;/code&gt;等功能。则直接添加使用&lt;code&gt;spring-boot-starter-data-redis&lt;/code&gt;。只需在配置文件中配置少量属性，就可以在应用中使用。&lt;/p&gt;&#xA;&lt;h2 id=&#34;springboot的自动配置原理&#34;&gt;SpringBoot的自动配置原理&lt;/h2&gt;&#xA;&lt;p&gt;SpringBoot通过starter，引用相关服务，然后通过autoConfigure来自动配置相关服务。更多具体的实现可以参考&lt;a href=&#34;https://nanyiniu.github.io/2019/07/08/2019-07-08-SpringBoot%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%EF%BC%88%E6%8B%93%E5%B1%95%EF%BC%89/&#34;&gt;这篇文章&lt;/a&gt;，在这篇文章中，简要的分析来如何实现自定义starter和基本的自动配置实现。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot启动之refreshContext</title>
      <link>https://nanyiniu.github.io/spring/springboot%E5%90%AF%E5%8A%A8%E4%B9%8Brefreshcontext/</link>
      <pubDate>Mon, 05 Aug 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E5%90%AF%E5%8A%A8%E4%B9%8Brefreshcontext/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;springboot启动之refreshcontext&#34;&gt;SpringBoot启动之refreshContext&lt;/h1&gt;&#xA;&lt;p&gt;这篇主要要通过&lt;code&gt;refreshContext&lt;/code&gt;方法来将&lt;code&gt;SpringBoot&lt;/code&gt;是如何初始化&lt;code&gt;ioc&lt;/code&gt;容器的。&lt;/p&gt;&#xA;&lt;h2 id=&#34;refreshcontext&#34;&gt;refreshContext&lt;/h2&gt;&#xA;&lt;p&gt;在&lt;code&gt;SpringBoot&lt;/code&gt;中的run方法中，调用&lt;code&gt;refreshContext()&lt;/code&gt;方法，进而调用 &lt;code&gt;AbstractApplicationContext&lt;/code&gt;类中的&lt;code&gt;refresh()&lt;/code&gt;方法。然后分析每个方法的代码，来看这些方法的作用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot启动原理</title>
      <link>https://nanyiniu.github.io/spring/springboot%E5%90%AF%E5%8A%A8%E5%8E%9F%E7%90%86/</link>
      <pubDate>Mon, 05 Aug 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E5%90%AF%E5%8A%A8%E5%8E%9F%E7%90%86/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;springboot的启动原理&#34;&gt;SpringBoot的启动原理&lt;/h1&gt;&#xA;&lt;h2 id=&#34;创建启动器&#34;&gt;创建启动器&lt;/h2&gt;&#xA;&lt;p&gt;SpringBoot通过调用主程序启动应用环境。下面代码为应用启动器的基本代码。&lt;/p&gt;&#xA;&lt;h3 id=&#34;启动器&#34;&gt;启动器&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// 标注这是SpringBoot应用&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@SpringBootApplication&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// 开启cache&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@EnableCaching&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;WebProjectApplication&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(String&lt;span style=&#34;color:#f92672&#34;&gt;[]&lt;/span&gt; args) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// fastJson不使用循环引用 （$ref）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        JSON.&lt;span style=&#34;color:#a6e22e&#34;&gt;DEFAULT_GENERATE_FEATURE&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|=&lt;/span&gt; SerializerFeature.&lt;span style=&#34;color:#a6e22e&#34;&gt;DisableCircularReferenceDetect&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getMask&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 使用SpringApplication启动应用&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        SpringApplication.&lt;span style=&#34;color:#a6e22e&#34;&gt;run&lt;/span&gt;(WebProjectApplication.&lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;进入&lt;code&gt;SpringApplication.run&lt;/code&gt;方法之后，发现程序会调用&lt;code&gt;new SpringApplication&lt;/code&gt; 来创建应用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot的错误处理机制</title>
      <link>https://nanyiniu.github.io/spring/springboot%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%E6%9C%BA%E5%88%B6/</link>
      <pubDate>Wed, 17 Jul 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%E6%9C%BA%E5%88%B6/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;在web开发中的异常错误处理&#34;&gt;在web开发中的异常错误处理&lt;/h1&gt;&#xA;&lt;p&gt;SpringBoot默认有一套对web开发错误处理的机制，在&lt;code&gt;autoConfiguration&lt;/code&gt;包下面找到了&lt;code&gt;ErrorMvcAutoConfiguration&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot的WEB开发之国际化</title>
      <link>https://nanyiniu.github.io/spring/springboot%E7%9A%84web%E5%BC%80%E5%8F%91%E4%B9%8B%E5%9B%BD%E9%99%85%E5%8C%96/</link>
      <pubDate>Mon, 15 Jul 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E7%9A%84web%E5%BC%80%E5%8F%91%E4%B9%8B%E5%9B%BD%E9%99%85%E5%8C%96/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;准备工作&#34;&gt;准备工作&lt;/h1&gt;&#xA;&lt;p&gt;SpringBoot默认是支持&lt;code&gt;Thymeleaf&lt;/code&gt;模版引擎的。相应的如果使用&lt;code&gt;Thymeleaf&lt;/code&gt;就可以使用thymeleaf的语法在页面显示返回给页面的数据。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot的WEB开发之Hello-World</title>
      <link>https://nanyiniu.github.io/spring/springboot%E7%9A%84web%E5%BC%80%E5%8F%91/</link>
      <pubDate>Sat, 13 Jul 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E7%9A%84web%E5%BC%80%E5%8F%91/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;创建基本的web应用&#34;&gt;创建基本的web应用&lt;/h1&gt;&#xA;&lt;p&gt;SpringBoot可以快速的创建一个restful的web应用。下面开始从零开始创建一套基本的web应用。&lt;/p&gt;&#xA;&lt;h2 id=&#34;使用idea创建spring-initializr&#34;&gt;使用idea创建&lt;code&gt;Spring initializr&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;我这里直接使用idea中的&lt;code&gt;Spring initializr&lt;/code&gt; 来创建SpringBoot应用。同理可以使用&lt;a href=&#34;https://start.spring.io&#34;&gt;start.spring.io&lt;/a&gt;中。创建完成后直接在IDE中导入即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySql使用外键（8.0）</title>
      <link>https://nanyiniu.github.io/writing/%E4%BD%BF%E7%94%A8mysql%E7%9A%84%E5%A4%96%E9%94%AE/</link>
      <pubDate>Thu, 11 Jul 2019 15:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/writing/%E4%BD%BF%E7%94%A8mysql%E7%9A%84%E5%A4%96%E9%94%AE/</guid><category>MYSQL</category>
      <description>&lt;h1 id=&#34;使用外键约束&#34;&gt;使用外键约束&lt;/h1&gt;&#xA;&lt;p&gt;Mysql默认使用的是innoDB引擎，该引擎是支持外键的，下面来说说如何创建外键及各种外键使用的效果。&lt;/p&gt;&#xA;&lt;h2 id=&#34;基本概念&#34;&gt;基本概念&lt;/h2&gt;&#xA;&lt;p&gt;需要注意的是外键不支持虚拟构造出的列上。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot的日志使用</title>
      <link>https://nanyiniu.github.io/spring/springboot%E7%9A%84%E6%97%A5%E5%BF%97/</link>
      <pubDate>Wed, 10 Jul 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E7%9A%84%E6%97%A5%E5%BF%97/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;springboot的日志使用&#34;&gt;SpringBoot的日志使用&lt;/h1&gt;&#xA;&lt;h2 id=&#34;springboot的日志选择&#34;&gt;SpringBoot的日志选择&lt;/h2&gt;&#xA;&lt;p&gt;SpringBoot默认使用SLF4j和logback用作日志。为什么是两个，为什么是这两个？&lt;/p&gt;&#xA;&lt;h3 id=&#34;日志框架的大致分类&#34;&gt;日志框架的大致分类&lt;/h3&gt;&#xA;&lt;p&gt;日志框架分为日志的门面框架和具体的实现框架，为什么需要门面框架，是因为不同的系统对日志的需求可能不同，系统一可能使用日志框架一，系统二还需要实现日志功能，如果还用日志框架一，则需要适配系统二进行api的调整。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot中的配置文件（拓展）</title>
      <link>https://nanyiniu.github.io/spring/springboot%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%8B%93%E5%B1%95/</link>
      <pubDate>Mon, 08 Jul 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%8B%93%E5%B1%95/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;springboot中的配置文件拓展&#34;&gt;SpringBoot中的配置文件(拓展)&lt;/h1&gt;&#xA;&lt;p&gt;如果有多个环境，配置文件需要根据环境来变化，只有一个配置文件就显的鸡肋了，每次变更环境的时候都需要修改一遍配置文件，两个还好，多了就相当麻烦了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot中使用配置</title>
      <link>https://nanyiniu.github.io/spring/springboot%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/</link>
      <pubDate>Sun, 07 Jul 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;springboot中使用配置&#34;&gt;SpringBoot中使用配置&lt;/h1&gt;&#xA;&lt;h2 id=&#34;一配置文件&#34;&gt;一、配置文件&lt;/h2&gt;&#xA;&lt;p&gt;SpringBoot使用全局的配置文件，配置文件名是固定的&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;application.properties&lt;/li&gt;&#xA;&lt;li&gt;application.yml&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;使用配置文件可以更改系统自动配置的默认值，比如端口号等信息。&lt;/p&gt;&#xA;&lt;h3 id=&#34;yaml&#34;&gt;YAML&lt;/h3&gt;&#xA;&lt;p&gt;yaml以数据为中心，比xml，json更适合做配置文件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SpringBoot深入自动配置</title>
      <link>https://nanyiniu.github.io/spring/springboot%E6%B7%B1%E5%85%A5%E8%87%AA%E5%8A%A8%E9%85%8D%E7%BD%AE/</link>
      <pubDate>Sun, 07 Jul 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/spring/springboot%E6%B7%B1%E5%85%A5%E8%87%AA%E5%8A%A8%E9%85%8D%E7%BD%AE/</guid><category>SpringBoot</category>
      <description>&lt;h1 id=&#34;springboot深入自动配置&#34;&gt;SpringBoot深入自动配置&lt;/h1&gt;&#xA;&lt;h2 id=&#34;引入&#34;&gt;引入&lt;/h2&gt;&#xA;&lt;p&gt;在上一篇&lt;a href=&#34;https://nanyiniu.github.io/2019/07/06/2019-07-03-SpringBoot%E4%B8%8E%E5%BE%AE%E6%9C%8D%E5%8A%A1%E7%AE%80%E4%BB%8B/&#34;&gt;Spring Boot与微服务基本介绍&lt;/a&gt;中，介绍了创建maven项目到运行springboot的基本过程。&lt;/p&gt;&#xA;&lt;p&gt;其中使用主程序来启动&lt;code&gt;SpringBoot&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>设计模式之命令模式</title>
      <link>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F/</link>
      <pubDate>Fri, 28 Jun 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F/</guid><category>设计模式</category>
      <description>&lt;h1 id=&#34;设计模式之命令模式&#34;&gt;设计模式之命令模式&lt;/h1&gt;&#xA;&lt;p&gt;命令模式是对象的行为模式，命令模式将一个请求封装成一个对象，从而让你使用不同的请求把客户端参数化，对请求排队或者记录请求日志，可以提供命令的撤销和恢复功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>设计模式之迭代器模式</title>
      <link>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F/</link>
      <pubDate>Thu, 27 Jun 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F/</guid><category>设计模式</category>
      <description>&lt;h1 id=&#34;设计模式之迭代器模式&#34;&gt;设计模式之迭代器模式&lt;/h1&gt;&#xA;&lt;p&gt;迭代器是一种行为模式，它提供一种顺序访问聚合对象元素的方法，而不会暴露其基础表示。&lt;/p&gt;&#xA;&lt;h2 id=&#34;应用场景&#34;&gt;应用场景&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;指向访问集合对象内容，而不暴露其内部实现。&lt;/li&gt;&#xA;&lt;li&gt;可以对集合对象多次遍历&lt;/li&gt;&#xA;&lt;li&gt;为不同集合对象提供统一的遍历接口&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;模式结构&#34;&gt;模式结构&lt;/h2&gt;&#xA;&lt;p&gt;迭代器模式大致分为四个角色：抽象容器，具体容器，抽象迭代器，具体迭代器。结构图如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>PlantUML类图使用总结</title>
      <link>https://nanyiniu.github.io/tools/plantuml%E7%B1%BB%E5%9B%BE%E4%BD%BF%E7%94%A8%E6%80%BB%E7%BB%93/</link>
      <pubDate>Wed, 26 Jun 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/tools/plantuml%E7%B1%BB%E5%9B%BE%E4%BD%BF%E7%94%A8%E6%80%BB%E7%BB%93/</guid><category>工具</category>
      <description>&lt;h1 id=&#34;使用plantuml绘制类图&#34;&gt;使用PlantUML绘制类图&lt;/h1&gt;&#xA;&lt;p&gt;本文基于PlantUML官网&lt;a href=&#34;http://plantuml.com/zh/class-diagram&#34;&gt;绘制类图&lt;/a&gt;和相关如何正确uml类图相关文章。&lt;/p&gt;&#xA;&lt;h2 id=&#34;为什么使用plantuml&#34;&gt;为什么使用plantUml&lt;/h2&gt;&#xA;&lt;p&gt;原因很简单，不用自己考虑构图，像写代码一样写出来，图出来既美观又能够符合逻辑。&lt;/p&gt;&#xA;&lt;h2 id=&#34;基本类构成&#34;&gt;基本类构成&lt;/h2&gt;&#xA;&lt;h3 id=&#34;基本使用&#34;&gt;基本使用&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/NanYinIU/PicRoom/master/img/20190626150930.png&#34; alt=&#34;基本类构成&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;使用&lt;code&gt;class&lt;/code&gt;关键字构件类，同理其他关键字。如&lt;code&gt;interface&lt;/code&gt;,&lt;code&gt;enum&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>设计模式之备忘录模式</title>
      <link>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E5%A4%87%E5%BF%98%E5%BD%95%E6%A8%A1%E5%BC%8F/</link>
      <pubDate>Tue, 25 Jun 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E5%A4%87%E5%BF%98%E5%BD%95%E6%A8%A1%E5%BC%8F/</guid><category>设计模式</category>
      <description>&lt;h1 id=&#34;设计模式之备忘录模式&#34;&gt;设计模式之备忘录模式📕&lt;/h1&gt;&#xA;&lt;p&gt;不违反封装的情况下，捕获并外化对象的内部状态，以便稍后可以将对象恢复到此状态。&lt;/p&gt;&#xA;&lt;h2 id=&#34;应用场景&#34;&gt;应用场景&lt;/h2&gt;&#xA;&lt;p&gt;必须保存对象状态的快照，以便以后可以将其恢复到该状态&lt;/p&gt;&#xA;&lt;h2 id=&#34;模式结构&#34;&gt;模式结构&lt;/h2&gt;&#xA;&lt;p&gt;模式结构分为三种结构：&lt;/p&gt;</description>
    </item>
    <item>
      <title>设计模式之状态模式</title>
      <link>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E7%8A%B6%E6%80%81%E6%A8%A1%E5%BC%8F/</link>
      <pubDate>Wed, 19 Jun 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E7%8A%B6%E6%80%81%E6%A8%A1%E5%BC%8F/</guid><category>设计模式</category>
      <description>&lt;h1 id=&#34;设计模式之状态模式&#34;&gt;设计模式之状态模式&lt;/h1&gt;&#xA;&lt;p&gt;状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。&lt;/p&gt;&#xA;&lt;h2 id=&#34;应用场景&#34;&gt;应用场景&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;对象的行为取决于其状态，并且必须根据该状态在运行时更改其行为。&lt;/li&gt;&#xA;&lt;li&gt;通常，几个操作将包含相同的条件结构。State模式将条件的每个分支放在一个单独的类中。可以将对象的状态视为一个对象，它可以独立于其他对象而变化&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;概括来说，状态模式将行为包装到具体的状态对象中。每个状态对象是抽象状态的子类。状态模式意图是在改变对象的内部状态的时候，行为随之改变。&lt;/p&gt;</description>
    </item>
    <item>
      <title>设计模式之观察者模式</title>
      <link>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F/</link>
      <pubDate>Wed, 19 Jun 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F/</guid><category>设计模式</category>
      <description>&lt;h1 id=&#34;设计模式之观察者模式&#34;&gt;设计模式之观察者模式&lt;/h1&gt;&#xA;&lt;p&gt;观察者模式是对象的行为模式，又叫“发布-订阅模式”。由名字就能够得知，观察这模式构造了一个发布者和订阅者。&lt;/p&gt;&#xA;&lt;p&gt;观察者模式定义对象之间的一对多依赖关系，以便当一个对象更改状态时，将自动通知和更新其所有依赖项。在观察者模式中，主动发生改变的是发布者称为主题，而被动收到发布者信息的订阅者称为观察者对象，可以根据需要添加/减少具体主题的观察者，实现主题和观察者之间的松耦合。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac下使用idea时在dock栏一直存在java图标和控制台乱码问题</title>
      <link>https://nanyiniu.github.io/tools/mac%E4%B8%8Bidea%E5%9C%A8dock%E6%A0%8F%E4%B8%80%E7%9B%B4%E5%AD%98%E5%9C%A8%E5%9B%BE%E6%A0%87%E5%92%8C%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81%E9%97%AE%E9%A2%98/</link>
      <pubDate>Tue, 18 Jun 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/tools/mac%E4%B8%8Bidea%E5%9C%A8dock%E6%A0%8F%E4%B8%80%E7%9B%B4%E5%AD%98%E5%9C%A8%E5%9B%BE%E6%A0%87%E5%92%8C%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81%E9%97%AE%E9%A2%98/</guid><category>工具</category>
      <description>&lt;h1 id=&#34;mac下使用idea相关问题&#34;&gt;Mac下使用Idea相关问题&lt;/h1&gt;&#xA;&lt;h2 id=&#34;使用tomcat启动idea项目后dock栏一直存在java图标问题&#34;&gt;使用tomcat启动IDEA项目后，dock栏一直存在JAVA图标问题&lt;/h2&gt;&#xA;&lt;p&gt;在mac上启动idea后，存在dock栏一直存在JAVA图标的问题，如下图：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/NanYinIU/PicRoom/master/img/20190618081946.png&#34; alt=&#34;Dock栏存在java图标问题&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;解决方式：&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/NanYinIU/PicRoom/master/img/20190618082435.png&#34; alt=&#34;存在图标解决方式&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;打开&lt;code&gt;Run/Debug configurations&lt;/code&gt;,在&lt;code&gt;vm options&lt;/code&gt;中添加如下内容：&lt;/p&gt;</description>
    </item>
    <item>
      <title>设计模式之模版模式</title>
      <link>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E6%A8%A1%E7%89%88%E6%A8%A1%E5%BC%8F/</link>
      <pubDate>Mon, 17 Jun 2019 12:00:00 +0800</pubDate>
      <guid>https://nanyiniu.github.io/design-patterns/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E6%A8%A1%E7%89%88%E6%A8%A1%E5%BC%8F/</guid><category>设计模式</category>
      <description>&lt;h1 id=&#34;设计模式之模版方法模式&#34;&gt;设计模式之模版方法模式&lt;/h1&gt;&#xA;&lt;p&gt;模版模式是类的行为模式，将部分逻辑以具体方法来实现，将其他方法声明为抽象方法来让子类来实现。不同的子类实现的方法逻辑不同，从而整体的逻辑有所差异。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
