<?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>Attic.cyn</title><link>https://cyn-blog.pages.dev/</link><description>Recent content on Attic.cyn</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 27 Apr 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://cyn-blog.pages.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>面试笔记</title><link>https://cyn-blog.pages.dev/posts/06.javainterview/10.interviewnote/interviewnote/</link><pubDate>Mon, 25 Jan 2021 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/06.javainterview/10.interviewnote/interviewnote/</guid><description>&lt;h2 id="待补充知识点"&gt;待补充知识点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;多线程顺序执行&lt;/li&gt;
&lt;li&gt;redis的Sentinel&lt;/li&gt;
&lt;li&gt;redis持久化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;冷门：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hibernate一级缓存和二级缓存的区别是？&lt;/li&gt;
&lt;li&gt;ThreadLocal的内存泄漏问题&lt;/li&gt;
&lt;li&gt;CAS自旋锁、基础锁的概念&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;中间件：&lt;/p&gt;</description></item><item><title>PPT转视频</title><link>https://cyn-blog.pages.dev/posts/05.opensource/12.ppttovideo/ppttovideo/</link><pubDate>Sat, 23 Jan 2021 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/05.opensource/12.ppttovideo/ppttovideo/</guid><description>&lt;h1 id="ppt2video"&gt;ppt2video&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/ching7/ppt2video.git"&gt;ppt文件转换为MP4工具类&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="1-功能描述"&gt;1 功能描述&lt;/h2&gt;
&lt;p&gt;将输入的ppt文件转化成视频，视频是每页ppt和ppt的备注文字转化成的语音合成&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将每一页的ppt切成图片，每一页ppt备注文字转化成语音&lt;/li&gt;
&lt;li&gt;将所有的语音合成一份完整的语音，以语音长度为视频长度，与图片合成最终视频&lt;/li&gt;
&lt;li&gt;视频中每段备注文字语音对应每页ppt，每段语音结束视频页面跳转到下一页ppt&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-参考输入输出"&gt;2 参考输入输出&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;输入：待转化ppt文件路径&lt;/li&gt;
&lt;li&gt;输出：转化后视频文件路径&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 例如：&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 输入 - /home/hsfstore/hsStoredata/data/00/00/wKgh_V4EZzaEUj9wAAAAAAAAAAA79.pptx&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 输出 - /home/hsfstore/hsStoredata/data/00/00/wKgh_V4EZzaEUj9wAAAAAAAAAAA79-pptToVideo.mp4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-调用方式"&gt;3 调用方式&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmake" data-lang="cmake"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ssh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;java&lt;/span&gt; &lt;span class="err"&gt;-jar&lt;/span&gt; &lt;span class="err"&gt;PptToVideoTool.jar&lt;/span&gt; &lt;span class="err"&gt;[参数]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4-参数说明"&gt;4 参数说明&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;目前仅支持单个参数，参数类型为String，为ppt在服务器上的全路径&lt;/li&gt;
&lt;li&gt;后续支持TTS运行目录&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="5-所需环境说明"&gt;5 所需环境说明&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TTS&lt;/code&gt;: 科大讯飞&lt;code&gt;tts&lt;/code&gt;包&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FFmpeg&lt;/code&gt;: &lt;code&gt;version-3.4.2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="6-运行配置"&gt;6 运行配置&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ConstantParam&lt;/code&gt;类中调整&lt;code&gt;TTSFILEPATH&lt;/code&gt;字段为实际安装目录&lt;/li&gt;
&lt;li&gt;科大讯飞的&lt;code&gt;TTS&lt;/code&gt;和&lt;code&gt;FFmpeg&lt;/code&gt;目前都支持在windows上安装，测试时可以用windows版本&lt;/li&gt;
&lt;li&gt;本工程在&lt;code&gt;Liunx&lt;/code&gt;服务器上验证通过，&lt;code&gt;windows&lt;/code&gt;尚未验证&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>简单商城</title><link>https://cyn-blog.pages.dev/posts/05.opensource/11.simplemall/simplemalldemo/</link><pubDate>Tue, 05 Jan 2021 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/05.opensource/11.simplemall/simplemalldemo/</guid><description>&lt;h2 id="smartisan-mall-simple"&gt;smartisan-mall-simple&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://106.54.70.153/"&gt;simple商城-demo体验&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ching7/smartisan-mall-simple"&gt;simple商城-github源码&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="介绍"&gt;介绍&lt;/h3&gt;
&lt;p&gt;锤子科技官网简单demo实现。前台原模板来自 &lt;a href="https://github.com/yucccc/vue-mall"&gt;vue-mall&lt;/a&gt; 原前台工程。&lt;/p&gt;
&lt;p&gt;后台原模板使用的是mongdb实现。本项目使用springboot进行了重写，原有功能基本全部实现。&lt;/p&gt;</description></item><item><title>使用说明</title><link>https://cyn-blog.pages.dev/posts/05.opensource/10.scanbox/scanboxreadme/</link><pubDate>Fri, 06 Nov 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/05.opensource/10.scanbox/scanboxreadme/</guid><description>&lt;h1 id="使用说明"&gt;使用说明&lt;/h1&gt;
&lt;h3 id="简介"&gt;简介&lt;/h3&gt;
&lt;p&gt;该组件可以实现浏览器自定义的图片列表采集&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持处理黑白、彩色、灰度图片&lt;/li&gt;
&lt;li&gt;支持图片自定义文字水印、图片水印&lt;/li&gt;
&lt;li&gt;支持自定义文件分片上传&lt;/li&gt;
&lt;li&gt;支持切换视频源和分辨率（需要插件盒子支持）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="注意"&gt;注意：&lt;/h3&gt;
&lt;p&gt;最新版本chrome浏览器会限制网页调用本地设备，需要配置允许访问&lt;/p&gt;</description></item><item><title>图像采集器DEMO</title><link>https://cyn-blog.pages.dev/posts/05.opensource/10.scanbox/scanbox/</link><pubDate>Fri, 06 Nov 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/05.opensource/10.scanbox/scanbox/</guid><description>&lt;h1 id="图像采集器demo"&gt;图像采集器DEMO&lt;/h1&gt;</description></item><item><title>Spring基础知识</title><link>https://cyn-blog.pages.dev/posts/03.framework/10.spring/springbase/</link><pubDate>Sun, 01 Nov 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/03.framework/10.spring/springbase/</guid><description>&lt;h2 id="spring基础知识点"&gt;Spring基础知识点&lt;/h2&gt;
&lt;h3 id="beanfactory--applicationcontext-的区别"&gt;BeanFactory ApplicationContext 的区别&lt;/h3&gt;
&lt;p&gt;接口 BeanFactory 和 ApplicationContext 都是用来从容器中获取 Spring beans 的，但是，他们二者有很大不同&lt;/p&gt;
&lt;p&gt;什么是 Spring Bean这是一个非常简单而又很复杂的问题，通常来说，Spring beans 就是被 Spring 容器所管理的 Java 对象，来看一个简单的例子&lt;/p&gt;</description></item><item><title>设计模式</title><link>https://cyn-blog.pages.dev/posts/01.dev/12.java/designpattern/</link><pubDate>Tue, 01 Sep 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/01.dev/12.java/designpattern/</guid><description>&lt;h2 id="java-设计模式"&gt;Java 设计模式&lt;/h2&gt;
&lt;h3 id="设计模式是什么"&gt;设计模式是什么&lt;/h3&gt;
&lt;p&gt;设计模式，简单来说就前人编程总结出来的套路&lt;/p&gt;
&lt;h3 id="为什么要学习设计模式"&gt;为什么要学习设计模式&lt;/h3&gt;
&lt;p&gt;适应变化，提高代码复用率。改善系统的设计，增强系统的健壮性、可扩展性，为以后需求修改作铺垫.&lt;/p&gt;</description></item><item><title>git版本控制规范</title><link>https://cyn-blog.pages.dev/posts/01.dev/13.codestd/gitstd/</link><pubDate>Tue, 25 Aug 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/01.dev/13.codestd/gitstd/</guid><description>&lt;h2 id="git版本控制规范"&gt;git版本控制规范&lt;/h2&gt;
&lt;h3 id="规范git-commit背景"&gt;规范Git commit背景&lt;/h3&gt;
&lt;p&gt;Git每次提交代码都需要写commit message，否则就不允许提交。&lt;/p&gt;
&lt;p&gt;一般来说，commit message应该清晰明了，说明本次提交的目的，具体做了什么操作……但是在日常开发中，commit message千奇百怪，中英文混合使用、fix bug等各种笼统的message司空见怪，这就导致后续代码维护成本特别大，有时自己都不知道自己的fix bug修改的是什么问题。基于以上这些问题，我们希望通过某种方式来监控用户的git commit message，让规范更好的服务于质量，提高自己的开发效率。&lt;/p&gt;</description></item><item><title>Java 虚拟机</title><link>https://cyn-blog.pages.dev/posts/01.dev/12.java/jvm/</link><pubDate>Mon, 24 Aug 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/01.dev/12.java/jvm/</guid><description>&lt;h1 id="java-jvm虚拟机"&gt;Java JVM虚拟机&lt;/h1&gt;
&lt;p&gt;Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域
有各自的用途，以及创建和销毁的时间，有的区域随着虚拟机进程的启动而一直存在，有些区域则是
依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范》的规定，Java虚拟机所管理的内存
将会包括以下几个运行时数据区域&lt;/p&gt;</description></item><item><title>swagger简单使用</title><link>https://cyn-blog.pages.dev/posts/03.framework/13.utils/swaggerdemo/</link><pubDate>Tue, 21 Jul 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/03.framework/13.utils/swaggerdemo/</guid><description>&lt;h2 id="swagger简单使用"&gt;Swagger简单使用&lt;/h2&gt;
&lt;p&gt;Swagger 是一个规范和完整的框架，用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法，参数和模型紧密集成到服务器端的代码，允许API来始终保持同步。Swagger 主要包含了以下三个部分：&lt;/p&gt;</description></item><item><title>SpringBoot日志整合</title><link>https://cyn-blog.pages.dev/posts/03.framework/12.log/log4j2andslf4j/</link><pubDate>Mon, 20 Jul 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/03.framework/12.log/log4j2andslf4j/</guid><description>&lt;h2 id="springboot日志整合log4j2--slf4j"&gt;SpringBoot日志整合log4j2 + slf4j&lt;/h2&gt;
&lt;p&gt;良好的日志输出能够在遇到问题的时候很快的定位到出现问题的地方。所以我们首先把log4j集成进去。&lt;/p&gt;
&lt;p&gt;我们使用的是log4j2，在使用方面与log4j基本上没什么区别，比较大的区别是&lt;strong&gt;log4j2不再支持properties配置文件，支持xml、json格式的文件.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>SpringBoot多模块开发，聚合打包</title><link>https://cyn-blog.pages.dev/posts/03.framework/10.spring/springbootmodule/</link><pubDate>Fri, 17 Jul 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/03.framework/10.spring/springbootmodule/</guid><description>&lt;h2 id="springboot多模块开发聚合打包"&gt;SpringBoot多模块开发，聚合打包&lt;/h2&gt;
&lt;p&gt;使用springboot进行微服务开发时，单个微服务内部，根据业务不同需要划分多个模块进行业务实现，就涉及到多模块管理和聚合&lt;/p&gt;
&lt;p&gt;如下图所示是一个mall工程&lt;/p&gt;</description></item><item><title>控制反转</title><link>https://cyn-blog.pages.dev/posts/03.framework/10.spring/ioc/</link><pubDate>Fri, 17 Jul 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/03.framework/10.spring/ioc/</guid><description>&lt;h2 id="控制反转"&gt;控制反转&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;控制反转&lt;/strong&gt;（Inversion of Control，缩写为&lt;strong&gt;IoC&lt;/strong&gt;），是 &lt;a href="https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Martin_Fowler_(software_engineer)"&gt;Martin Fowler&lt;/a&gt; 教授提出的一种软件设计模式，是&lt;a href="https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%BC%96%E7%A8%8B"&gt;面向对象编程&lt;/a&gt;中的一种&lt;strong&gt;设计原则&lt;/strong&gt;，可以用来减低计算机代码之间的&lt;a href="https://baike.baidu.com/item/%E8%80%A6%E5%90%88%E5%BA%A6"&gt;耦合度&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;其中最常见的方式叫做&lt;strong&gt;依赖注入&lt;/strong&gt;（Dependency Injection，简称&lt;strong&gt;DI&lt;/strong&gt;），还有一种方式叫&lt;strong&gt;依赖查找&lt;/strong&gt;(Dependency Lookup）。通俗的来理解，就是本来当需要某个类（构造函数）的某个方法时，自己需要主动实例化变为被动，不需要再考虑如何实例化其他依赖的类，只需要依赖注入 。所谓依赖注入就是由 IoC 容器在运行期间，动态地将某种依赖关系注入到对象之中。所以 IoC 和 DI 是从不同的角度的描述的同一件事情，就是通过引入&lt;strong&gt;IoC 容器&lt;/strong&gt;，利用依赖注入的方式，实现对象之间的解耦。&lt;/p&gt;</description></item><item><title>面向切面编程</title><link>https://cyn-blog.pages.dev/posts/03.framework/10.spring/aop/</link><pubDate>Fri, 17 Jul 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/03.framework/10.spring/aop/</guid><description>&lt;h2 id="面向切面编程"&gt;面向切面编程&lt;/h2&gt;
&lt;p&gt;在软件业，AOP为Aspect Oriented Programming的缩写，意为：&lt;a href="https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%88%87%E9%9D%A2%E7%BC%96%E7%A8%8B/6016335"&gt;面向切面编程&lt;/a&gt;，可以通过&lt;a href="https://baike.baidu.com/item/%E9%A2%84%E7%BC%96%E8%AF%91"&gt;预编译&lt;/a&gt;方式和运行期动态代理实现在不修改&lt;a href="https://baike.baidu.com/item/%E6%BA%90%E4%BB%A3%E7%A0%81"&gt;源代码&lt;/a&gt;的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续，设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,提高代码的灵活性和可扩展性，AOP可以说也是这种目标的一种实现。&lt;/p&gt;
&lt;h3 id="主要功能"&gt;主要功能&lt;/h3&gt;
&lt;p&gt;日志记录，性能统计，安全控制，事务处理，&lt;a href="https://baike.baidu.com/item/%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86"&gt;异常处理&lt;/a&gt;等等。&lt;/p&gt;
&lt;h3 id="主要意图"&gt;主要意图&lt;/h3&gt;
&lt;p&gt;将日志记录，性能统计，安全控制，事务处理，&lt;a href="https://baike.baidu.com/item/%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86"&gt;异常处理&lt;/a&gt;等代码从业务逻辑代码中划分出来，通过对这些行为的分离，我们希望可以将它们独立到非指导业务逻辑的方法中，进而改变这些行为的时候不影响业务逻辑的代码。&lt;/p&gt;</description></item><item><title>SpringBoot快速上手demo</title><link>https://cyn-blog.pages.dev/posts/03.framework/10.spring/springbootdemo/</link><pubDate>Fri, 10 Jul 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/03.framework/10.spring/springbootdemo/</guid><description>&lt;h2 id="springboot快速上手demo"&gt;SpringBoot快速上手demo&lt;/h2&gt;
&lt;h3 id="springboot简介"&gt;SpringBoot简介&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;是什么&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在介绍 SpringBoot 之前我们首先来简单介绍一下 Spring。Spring 是诞生于2002年的 Java 开发框架，可以说已经成为 Java 开发的事实标准。所谓事实标准就是虽然 Java 官方没有说它就是开发标准，但是在当前 Java 开发的众多项目中，当我们谈到产品级的 Java 项目的时候，大多都是基于 Spring 或者应用了 Spring 特性的。&lt;/p&gt;</description></item><item><title>Java 反射</title><link>https://cyn-blog.pages.dev/posts/01.dev/12.java/reflect/</link><pubDate>Wed, 01 Jul 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/01.dev/12.java/reflect/</guid><description>&lt;h1 id="java-反射"&gt;Java 反射&lt;/h1&gt;
&lt;p&gt;什么是&lt;strong&gt;反射&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;正常情况下我们新建一个类就是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Student&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Student&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过new方式，调用默认构造方法新建一个类，加载到jvm虚拟机中，这种类的加载方法存在一种问题，就是运行时不灵活，如果我们把student类换成teacher类，就需要重新修改代码。&lt;/p&gt;</description></item><item><title>注解</title><link>https://cyn-blog.pages.dev/posts/01.dev/12.java/annotation/</link><pubDate>Wed, 01 Jul 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/01.dev/12.java/annotation/</guid><description>&lt;h2 id="java-注解"&gt;Java 注解&lt;/h2&gt;
&lt;p&gt;Annotation 中文译过来就是注解、标释的意思，在 Java 中注解是一个很重要的知识点，但经常还是有点让新手不容易理解。&lt;/p&gt;
&lt;p&gt;比较糟糕的技术文档主要特征之一就是：用专业名词来介绍专业名词。
比如：&lt;/p&gt;</description></item><item><title>Java 知识库</title><link>https://cyn-blog.pages.dev/posts/04.javalibrary/javalibrary/</link><pubDate>Tue, 30 Jun 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/04.javalibrary/javalibrary/</guid><description>&lt;p&gt;💦&lt;code&gt;JAVA Library&lt;/code&gt;目的是整合Java学习过程中的琐碎知识点，致力于提升基础代码能力。&lt;/p&gt;
&lt;h2 id="java基础"&gt;Java基础&lt;/h2&gt;
&lt;h3 id="基础知识"&gt;基础知识&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="../01.dev/12.java/reflect.html"&gt;什么是反射&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../01.dev/12.java/annotation.html"&gt;通俗易懂解释注解&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../01.dev/12.java/jvm.html"&gt;JVM简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../01.dev/12.java/designpattern.html"&gt;常见的设计模式&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="java8"&gt;Java8&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="../01.dev/12.java/java8newfeature.html"&gt;Java8新特性&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="框架"&gt;框架&lt;/h2&gt;
&lt;h3 id="spring框架"&gt;Spring框架&lt;/h3&gt;
&lt;ol start="0"&gt;
&lt;li&gt;&lt;a href="https://cyn-blog.pages.dev/03.framework/10.spring/springbase.html"&gt;spring基础&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../03.framework/10.spring/springbootdemo.html"&gt;SpringBootDemo工程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../03.framework/10.spring/aop.html"&gt;框架特性-AOP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../03.framework/10.spring/ioc.html"&gt;框架特性-IOC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../03.framework/10.spring/annotation.html"&gt;常用注解&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../03.framework/10.spring/springbootmodule.html"&gt;多模块开发，聚合打包&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="中间件"&gt;中间件&lt;/h2&gt;
&lt;h3 id="代理服务器"&gt;代理服务器&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="../01.dev/11.network/nginx.html"&gt;nginx简单使用&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="网络"&gt;网络&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="../01.dev/11.network/cros.html"&gt;CORS-跨域资源共享&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="对象存储"&gt;对象存储&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="../01.dev/10.storage/fastdfs.html"&gt;FastDFS-分布式文件系统&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="敏捷开发工具"&gt;敏捷开发工具&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="../03.framework/13.utils/swaggerdemo.html"&gt;swagger-API文档工具&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="前端"&gt;前端&lt;/h2&gt;
&lt;h3 id="todo"&gt;todo&lt;/h3&gt;
&lt;h3 id="拓展"&gt;拓展&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="../02.front/10.vuepress/manual.html"&gt;如何使用vuepress玩转blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;编码规范
&lt;ul&gt;
&lt;li&gt;&lt;a href="../01.dev/13.codestd/gitstd.html"&gt;git基础规范&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="面试"&gt;面试&lt;/h2&gt;
&lt;h3 id="todo-1"&gt;todo&lt;/h3&gt;</description></item><item><title>DDD(Domain-Drive-Design)领域驱动设计</title><link>https://cyn-blog.pages.dev/posts/03.framework/11.microservices/domaindrivedesign/</link><pubDate>Mon, 29 Jun 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/03.framework/11.microservices/domaindrivedesign/</guid><description>&lt;h1 id="领域驱动设计domain-drive-design"&gt;领域驱动设计（Domain-Drive-Design）&lt;/h1&gt;
&lt;p&gt;领域驱动设计(简称 ddd)概念来源于2004年著名建模专家eric evans发表的他最具影响力的书籍:《domain-driven design –tackling complexity in the heart of software》(中文译名：领域驱动设计—软件核心复杂性应对之道)一书。，书中提出了“领域驱动设计(简称 ddd)”的概念。&lt;/p&gt;</description></item><item><title>Spring框架常用注解</title><link>https://cyn-blog.pages.dev/posts/03.framework/10.spring/annotation/</link><pubDate>Tue, 23 Jun 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/03.framework/10.spring/annotation/</guid><description>&lt;h1 id="spring框架常用注解"&gt;Spring框架常用注解&lt;/h1&gt;
&lt;h2 id="import注解--导入资源"&gt;@Import注解 —— 导入资源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;自定义类导入spring容器&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;创建需要导入的类&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CatImport&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;启动时手动导入&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@Import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CatImport&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@SpringBootApplication&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scanBasePackages&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;com.cyn.config&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SpringAnnotationApplication&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ConfigurableApplicationContext&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SpringApplication&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SpringAnnotationApplication&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CatImport&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;catImport&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getBean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CatImport&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;catImport&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;输出&lt;/p&gt;</description></item><item><title>Java8新特性</title><link>https://cyn-blog.pages.dev/posts/01.dev/12.java/java8newfeature/</link><pubDate>Mon, 22 Jun 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/01.dev/12.java/java8newfeature/</guid><description>&lt;h1 id="java8-新特性"&gt;JAVA8 新特性&lt;/h1&gt;
&lt;p&gt;&lt;a href="##Lambda"&gt;&lt;img alt="java" loading="lazy" src="https://img.shields.io/badge/JAVA-1.8+-green.svg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;❕❗❗❕ 所有的demo可见 &lt;a href="https://github.com/ching7/javaBaseStudy.git"&gt;GITHUB&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="lambda"&gt;Lambda&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;什么是&lt;code&gt;Lambda&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lambda 表达式（lambda expression）是一个匿名函数，Lambda表达式基于数学中的λ演算得名，直接对应于其中的lambda抽象（lambda abstraction），是一个&lt;strong&gt;匿名函数&lt;/strong&gt;，即没有函数名的函数。Lambda表达式可以表示闭包。&lt;/p&gt;</description></item><item><title>跨域资源共享</title><link>https://cyn-blog.pages.dev/posts/01.dev/11.network/cros/</link><pubDate>Fri, 19 Jun 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/01.dev/11.network/cros/</guid><description>&lt;h1 id="cors-跨域资源共享"&gt;&lt;strong&gt;CORS&lt;/strong&gt; （跨域资源共享）&lt;/h1&gt;
&lt;p&gt;CORS是一个W3C标准，全称是&amp;quot;跨域资源共享&amp;quot;（Cross-origin resource sharing）。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy"&gt;同源安全策略&lt;/a&gt; 默认阻止“跨域”获取资源。但是 CORS 给了web服务器这样的权限，即服务器可以选择，允许浏览器向跨源服务器发出请求。CORS需要浏览器和服务器同时支持。&lt;/p&gt;</description></item><item><title>nginx(代理服务器)</title><link>https://cyn-blog.pages.dev/posts/01.dev/11.network/nginx/</link><pubDate>Tue, 19 May 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/01.dev/11.network/nginx/</guid><description>&lt;h1 id="nginx代理服务器"&gt;nginx(代理服务器)&lt;/h1&gt;
&lt;h2 id="nginx安装linux"&gt;nginx安装（linux）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;安装nginx环境依赖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;配置yum源&lt;/li&gt;
&lt;li&gt;安装pcre 依赖、安装 openssl 、 zlib 、 gcc 依赖&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://nginx.org/"&gt;nginx 官网下载软件&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用&lt;code&gt;tar -zxvf ***&lt;/code&gt;命令解压、&lt;code&gt;./configure&lt;/code&gt;命令、&lt;code&gt;make &amp;amp;&amp;amp; make install&lt;/code&gt;命令配置编译&lt;/p&gt;</description></item><item><title>FastDFS(分布式文件系统)</title><link>https://cyn-blog.pages.dev/posts/01.dev/10.storage/fastdfs/</link><pubDate>Sun, 19 Apr 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/01.dev/10.storage/fastdfs/</guid><description>&lt;h1 id="fastdfs分布式文件系统"&gt;FastDFS(分布式文件系统)&lt;/h1&gt;
&lt;h2 id="1--什么是fastdfs"&gt;1 什么是FastDFS&lt;/h2&gt;
&lt;h3 id="11--简介"&gt;1.1 简介&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;FastDFS&lt;/code&gt;是用c语言编写的一款开源的分布式文件系统，它是由淘宝资深架构师余庆编写并开源。&lt;code&gt;FastDFS&lt;/code&gt;专为互联网量身定制，充分考虑了冗余备份、负载均衡、线性扩容等机制，并注重高可用、高性能等指标，使用&lt;code&gt;FastDFS&lt;/code&gt;很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。&lt;/p&gt;</description></item><item><title>如何使用vuepress玩转blog</title><link>https://cyn-blog.pages.dev/posts/02.front/10.vuepress/manual/</link><pubDate>Thu, 19 Mar 2020 00:00:00 +0000</pubDate><guid>https://cyn-blog.pages.dev/posts/02.front/10.vuepress/manual/</guid><description>&lt;h1 id="如何使用vuepress玩转blog"&gt;如何使用vuepress玩转blog&lt;/h1&gt;
&lt;p&gt;环境：&lt;code&gt;node.js&lt;/code&gt; 编码工具：&lt;code&gt;vscode&lt;/code&gt; &lt;a href="https://vuepress.vuejs.org/"&gt;vuepress官网&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="1-搭建环境"&gt;1 搭建环境&lt;/h2&gt;
&lt;h3 id="11-全局安装vuepress"&gt;1.1 全局安装Vuepress&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmake" data-lang="cmake"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;yarn&lt;/span&gt; &lt;span class="err"&gt;global&lt;/span&gt; &lt;span class="err"&gt;add&lt;/span&gt; &lt;span class="err"&gt;vuepress&lt;/span&gt; &lt;span class="c"&gt;# 或者：npm install -g vuepress
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="12-项目初始化"&gt;1.2 项目初始化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;新建blog项目文件夹（注意该目录为blog项目的主文件夹）&lt;/p&gt;</description></item></channel></rss>