<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Yan18200289607的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Yan18200289607</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Yan18200289607]]></copyright><item><title><![CDATA[Java并发编程的艺术（一）]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514104</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514104</guid><author>Yan18200289607</author><pubDate>Wed, 04 Sep 2019 17:22:00 +0800</pubDate><description><![CDATA[看《java并发编程的艺术》这本书，想着看的时候做个简单的总结，方便以后直接看重点。
一.并发编程的挑战
1.上下文切换
Cpu时间片通过给每个线程分配CPU时间片来实现多线程机制，时间片一般是几十毫秒。任务从保存到再加载的过程就是一次上下文切换。
如何减少上下文切换？

无锁并发编程：多线程处理数据时，避免使用锁，如将数据的ID按照Hash算法取模分段，不同的线程处理不同段...]]></description><category></category></item><item><title><![CDATA[数组与集合]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514102</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514102</guid><author>Yan18200289607</author><pubDate>Mon, 12 Aug 2019 10:17:00 +0800</pubDate><description><![CDATA[数组与集合都是用来存储对象的容器，前者性质单一，方便易用,后者类型安全，功能强大，且两者之间必然有互相转换的方式。毕竟它们的性格迥异，在转换过程中，如果不注意转换背后的实现方式，很容易产生意料之外的问题。数组转集合和集合转数姐。在数组转集合的过程中，注意是否使用了视图方式直接返回数组中的数据。我们以 Arrays.asList（） 为例，它把数组转换成集合时，不能使用其修改集合相关的方法...]]></description><category></category></item><item><title><![CDATA[Trie树（前缀树）]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514103</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514103</guid><author>Yan18200289607</author><pubDate>Fri, 15 Mar 2019 11:21:00 +0800</pubDate><description><![CDATA[Trie树，即字典树，又称单词查找树或键树，是一种树形结构，是一种哈希树的变种。典型应用是用于统计和排序大量的字符串（但不仅限于字符串），所以经常被搜索引擎系统用于文本词频统计。它的优点是：最大限度地减少无谓的字符串比较，查询效率比哈希表高。
Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 
基本性质
1，根节点不包含字符，除根节点意...]]></description><category></category></item><item><title><![CDATA[MySql索引原理分析]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514098</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514098</guid><author>Yan18200289607</author><pubDate>Fri, 15 Mar 2019 11:13:00 +0800</pubDate><description><![CDATA[面试
问：数据库中最常见的慢查询优化方式是什么？ 同学A：加索引。
问：为什么加索引能优化慢查询？同学A：...不知道同学B：因为索引其实就是一种优化查询的数据结构，比如Mysql中的索引是用B+树实现的，而B+树就是一种数据结构，可以优化查询速度，可以利用索引快速查找数据，所以能优化查询。
问：你知道哪些数据结构可以提高查询速度？（听到这个问题就感觉此处有坑...）同学B：哈希表...]]></description><category></category></item><item><title><![CDATA[@responseBody注解的使用]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514095</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514095</guid><author>Yan18200289607</author><pubDate>Sun, 24 Feb 2019 19:44:00 +0800</pubDate><description><![CDATA[1、
　　@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后，写入到response对象的body区，通常用来返回JSON数据或者是XML
　　数据，需要注意的呢，在使用此注解之后不会再走试图处理器，而是直接将数据写入到输入流中，他的效果等同于通过response对象输出指定格式的数据。
2、　　
　　@Reque...]]></description><category></category></item><item><title><![CDATA[java基础知识]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514099</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514099</guid><author>Yan18200289607</author><pubDate>Fri, 22 Feb 2019 21:54:00 +0800</pubDate><description><![CDATA[以下所有问题的回答是本人总结的回答要点，并没有全部详细写出。
1.java语言有哪些优点？

面向对象
跨平台（一次编译，到处运行）
提供很多内置类库
去除了C++中难以理解的特性（指针，虚函数）

2.java与C/C++的异同

java是解释型语言，C++是编译型语言
java是纯面向对象，C++是面向过程和面向对象
java没有指针、不支持多继承
jav...]]></description><category></category></item><item><title><![CDATA[tomcat中war 和 war exploded的区别]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514091</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514091</guid><author>Yan18200289607</author><pubDate>Thu, 21 Feb 2019 10:29:00 +0800</pubDate><description><![CDATA[war和war exploded的区别（转载）
在使用idea开发项目的时候，部署Tomcat的时候通常会出现下边的情况： 
 
 是选择war还是war exploded这里首先看一下他们两个的区别：

war模式：将web工程以war包的形式上传到服务器 
  war exploed模式：将web工程以当前文件夹的位置关系上传到服务器




war模式这种可以...]]></description><category></category></item><item><title><![CDATA[maven的概念模型及maven坐标]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514096</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514096</guid><author>Yan18200289607</author><pubDate>Tue, 19 Feb 2019 20:20:00 +0800</pubDate><description><![CDATA[1.概念模型


项目对象模型：一个maven工程有一个pom.xml文件，通过pom.xml文件定义项目的坐标、项目依赖、项目信息、插件目标等。
依赖管理系统：通过maven的依赖管理对项目所依赖的jar包进行统一管理。
一个项目生命周期：项目构建的过程为一个项目的生命周期。



一组标准集合：为整个项目管理过程定义一组标准。
插件：maven管理项目生命周期...]]></description><category></category></item><item><title><![CDATA[maven命令]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514092</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514092</guid><author>Yan18200289607</author><pubDate>Tue, 19 Feb 2019 19:28:00 +0800</pubDate><description><![CDATA[在cmd的状态下测试
1.compile
作用：将src/main/java 下的java文件编程成class文件输出到target目录
打开项目所在的位置，打开cmd窗口，输入mvn compile

查看项目target目录，生成了class文件，编译完成：

2.test
cmd执行mvn test执行src/test/java 下单元测试类，下图为测试结果，一...]]></description><category></category></item><item><title><![CDATA[Maven项目工程目录]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514087</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514087</guid><author>Yan18200289607</author><pubDate>Tue, 19 Feb 2019 16:39:00 +0800</pubDate><description><![CDATA[maven工程目录规范：
 
src/main/java 存放项目的.java文件 
src/main/resources 存放项目的资源文件，如spring、hibernate配置文件
src/test/java 存放所有单元测试.java文件
src/test/resources 测试资源文件
target 项目输出位置，编译后的class文件会...]]></description><category></category></item><item><title><![CDATA[maven工程运行演示]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514085</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514085</guid><author>Yan18200289607</author><pubDate>Tue, 19 Feb 2019 09:36:00 +0800</pubDate><description><![CDATA[通过maven提供的命令来运行maven工程，体会maven构建工程的优点。
（1）运行web工程
 进入maven工程目录（当前目录有pom.xml），运行tomcat:run命令
可能出现的问题：成功部署后在浏览器输入地址查看时出现错误org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
解决办...]]></description><category></category></item><item><title><![CDATA[Maven下载安装]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514089</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514089</guid><author>Yan18200289607</author><pubDate>Mon, 18 Feb 2019 20:50:00 +0800</pubDate><description><![CDATA[1.Maven安装

下载：从该网站http://maven.apache.org/download.cgi 下载 maven3.3.9版本
解压：

 
 将maven解压到不含有中文和空格的目录中：
 bin目录：mvn.bat（run方式运行） mvnDebug.bat（debug方式运行）
 boot目录：maven...]]></description><category></category></item><item><title><![CDATA[Maven介绍]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514086</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514086</guid><author>Yan18200289607</author><pubDate>Mon, 18 Feb 2019 19:44:00 +0800</pubDate><description><![CDATA[1.什么是Maven？
 Maven翻译为“专家”，“内行”。maven是Apache下纯java开发的开源项目，是一个项目管理工具，使用maven对java项目进行构建、依赖管理。
2.什么是项目构建？
 项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程。
（1）传统项目构建过程
传统使用eclipse构建项目过程如下：

...]]></description><category></category></item><item><title><![CDATA[创建简单web项目]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514082</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514082</guid><author>Yan18200289607</author><pubDate>Sun, 10 Feb 2019 21:34:00 +0800</pubDate><description><![CDATA[Intellij Idea直接安装（可根据需要选择自己设置的安装目录），jdk使用1.6/1.7/1.8都可以，主要是配置好系统环境变量，tomcat7上tomcat的官网下载压缩包解压即可。
一、创建简单web项目
1、创建一个web project
File -&gt; new Project -&gt;选择project sdk 为1.6（如果没有sdk的同学请先配置）-&g...]]></description><category></category></item><item><title><![CDATA[java虚拟机之内存分配]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514078</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514078</guid><author>Yan18200289607</author><pubDate>Mon, 04 Feb 2019 11:31:00 +0800</pubDate><description><![CDATA[Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时，Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收。
JDK1.8之前的堆内存示意图：

从上图可以看出堆内存分为新生代、老年代和永久代。新生代又被进一步分为：Eden 区＋Survivor1 区＋Survivor2 区。值得注意的是，在 JDK 1.8中移除整个永久代，取而代之的是一个叫元空间（...]]></description><category></category></item><item><title><![CDATA[Java虚拟机之内存模型]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514083</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514083</guid><author>Yan18200289607</author><pubDate>Fri, 01 Feb 2019 12:27:00 +0800</pubDate><description><![CDATA[一.java并发基础
在并发编程中存在两个关键问题①线程之间如何通信 ②线程之间如何同步。
通信
通信是指线程之间以何种机制来交换信息。在命令式编程中，线程之间的通信机制有两种：共享内存和消息传递。
在共享内存的并发模型里，线程之间共享程序的公共状态，线程之间通过写-读内存中的公共状态来隐式进行通信。
在消息传递的并发模型里，线程之间没有公共状态，线程之间必须通过明确的发送消...]]></description><category></category></item><item><title><![CDATA[java虚拟机之垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514074</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101514074</guid><author>Yan18200289607</author><pubDate>Thu, 31 Jan 2019 21:12:00 +0800</pubDate><description><![CDATA[一.需要回收的内存区域  
 程序计数器、虚拟机栈、本地方法栈 3 个区域随线程生灭(因为是线程私有)，栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。而 Java 堆和方法区则不一样，一个接口中的多个实现类需要的内存可能不一样，一个方法中的多个分支需要的内存也可能不一样，我们只有在程序处于运行期才知道那些对象会创建，这部分内存的分配和回收都是动态的，垃圾回收期...]]></description><category></category></item><item><title><![CDATA[java虚拟机之JVM体系结构]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101513991</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101513991</guid><author>Yan18200289607</author><pubDate>Tue, 29 Jan 2019 17:19:00 +0800</pubDate><description><![CDATA[JVM体系结构：

下面重点介绍运行时数据区域模块：

（1）java堆（Heap）

被所有线程共享的一块内存区域，在虚拟机启动时创建
用来存储对象实例
可以通过-Xmx和-Xms控制堆的大小
OutOfMemoryError异常：当在堆中没有内存完成实例分配，且堆也无法再扩展时。

　　java堆是垃圾收集器管理的主要区域。java堆还可以细分为：新生代（New...]]></description><category></category></item><item><title><![CDATA[java虚拟机之JVM生命周期]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101513988</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101513988</guid><author>Yan18200289607</author><pubDate>Mon, 28 Jan 2019 21:25:00 +0800</pubDate><description><![CDATA[java生命周期分为以下三部分：启动，运行，消亡。


启动。启动一个Java程序时，一个JVM实例就产生了，任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。
运行。main()作为该程序初始线程的起点，任何其他线程均由该线程启动。
消亡。当程序中的所有非守护线程都终止时，JVM才退出；若安...]]></description><category></category></item><item><title><![CDATA[删除链表中重复的结点]]></title><link>https://blog.youkuaiyun.com/Yan18200289607/article/details/101513986</link><guid>https://blog.youkuaiyun.com/Yan18200289607/article/details/101513986</guid><author>Yan18200289607</author><pubDate>Sun, 27 Jan 2019 21:20:00 +0800</pubDate><description><![CDATA[题目描述：在一个排序的链表中，存在重复的结点，请删除该链表中重复的结点，重复的结点不保留，返回链表头指针。 例如，链表1-&gt;2-&gt;3-&gt;3-&gt;4-&gt;4-&gt;5 处理后为 1-&gt;2-&gt;5
思路分析：本题可以采用递归的方法，而且要考虑多种情况：
（1）链表为空；
（2）只有一个结点；
（3）当前结点是重复结点；
（4）当前结点不是重复结...]]></description><category></category></item></channel></rss>