<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[车晋强的专栏]]></title><description><![CDATA[车晋强的专栏]]></description><link>https://blog.youkuaiyun.com/chejinqiang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chejinqiang]]></copyright><item><title><![CDATA[线程池-局部使用的风险]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/115342425</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/115342425</guid><author>chejinqiang</author><pubDate>Wed, 31 Mar 2021 09:25:25 +0800</pubDate><description><![CDATA[简介

ExecutorService执行任务，使用一个或多个池中的线程（使用Executors的工厂方法正常配置）。线程池解决两个问题：1.为大量的异步任务执行提高性能，提供了管理资源的一种方式（线程、执行任务的集合）。每一个ThreadPoolExecutor仍然提供了一些基础统计（完成任务的数量）。
编程人员通过Executors的newCachedThreadPool、newFixedThreadPool、newSingleThreadExecutor来获取最简单的线程池。
当一个新task通过ex]]></description><category></category></item><item><title><![CDATA[springMVC拦截器详解]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/114374929</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/114374929</guid><author>chejinqiang</author><pubDate>Thu, 04 Mar 2021 18:25:58 +0800</pubDate><description><![CDATA[HandlerExecutionChain：由HandlerMethod和Interceptor集合组成的类，会被HandlerMapping接口的getHandler方法获取。

HandlerInterceptor接口：Spring拦截器基础接口

AbstractHandlerMapping：HandlerMapping的基础抽象类

AsyncHandlerInterceptor：继承HandlerInterceptor接口，额外提供了afterConcurrentHandlingStarted方法]]></description><category></category></item><item><title><![CDATA[mybatis架构设计及实例分析]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/114373981</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/114373981</guid><author>chejinqiang</author><pubDate>Thu, 04 Mar 2021 17:40:06 +0800</pubDate><description><![CDATA[使用Mapper接口和数据库交互

Mybatis将配置文件中的每一个&lt;mapper&gt;节点抽象为一个Mapper接口，而这个接口中声明的方法和mapper节点的&lt;select|update|delete|insert&gt;节点项对应。

2.数据处理层

数据处理层可以说是MyBatis 的核心，从大的方面上讲，它要完成三个功能：

a. 通过传入参数构建动态SQL语句；

b. SQL语句的执行以及封装查询结果集成List&lt;E&gt;

2.1.参数映射和动态SQL语句生成

动]]></description><category></category></item><item><title><![CDATA[reactiveWeb性能测试]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/114286366</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/114286366</guid><author>chejinqiang</author><pubDate>Tue, 02 Mar 2021 15:39:06 +0800</pubDate><description><![CDATA[使用Reactive编程的优点：更有效的使用机器资源，和阻塞式的springMVC应用程度不同，可以使用更少的线程处理更多的请求。





启动delayService，报错如下：
Caused by: java.lang.ClassNotFoundException: org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType

经过查询，application.Java文件不能直接放在main/java文件夹下，必须要建一个包把.]]></description><category></category></item><item><title><![CDATA[slf4j+logback配置详解]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80199475</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80199475</guid><author>chejinqiang</author><pubDate>Fri, 04 May 2018 19:37:55 +0800</pubDate><description><![CDATA[1. &amp;lt;dependency&amp;gt;
2.    &amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
3.    &amp;lt;artifactId&amp;gt;slf4j-api&amp;lt;/artifactId&amp;gt;
4.    &amp;lt;version&amp;gt;1.7.10&amp;lt;/version&amp;gt;
5. &amp;lt;/dependency&amp;gt;
6. ]]></description><category></category></item><item><title><![CDATA[守护线程与非守护线程]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80199312</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80199312</guid><author>chejinqiang</author><pubDate>Fri, 04 May 2018 19:24:32 +0800</pubDate><description><![CDATA[在Java中有两类线程：User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如，任何一个守护线程都是整个JVM中所有非守护线程的保姆：只要当前JVM实例中尚存在任何一个非守护线程没有结束，守护线程就全部工作；只有当最后一个非守护线程结束时，守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务，守护线程最典型的应用就是 GC (垃圾...]]></description><category></category></item><item><title><![CDATA[GC的一些概念]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186708</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186708</guid><author>chejinqiang</author><pubDate>Fri, 04 May 2018 19:17:10 +0800</pubDate><description><![CDATA[1. 什么时候会触发Minor GC?    Eden区域满了，或者新创建的对象大小 &amp;gt; Eden所剩空间    CMS设置了CMSScavengeBeforeRemark参数，这样在CMS的Remark之前会先做一次Minor GC来清理新生代，加速之后的Remark的速度。这样整体的stop-the world时间反而断    Full GC的时候会先触发Minor GC2. 什么时候会...]]></description><category></category></item><item><title><![CDATA[相对全面的gc总结]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186688</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186688</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 21:10:26 +0800</pubDate><description><![CDATA[首先是大家都要提到的GC的基础算法：标记清除，标记整理，复制，分代。这些算法的第一步都是做的一件事: 标记(Mark)。JVM的标记算法采用了根搜索算法(Root Tracing)。根有几种：1. JVM栈的Frame里面的引用2. 静态类，常量的引用3. 本地栈中的引用4. 本地方法的引用5.分代式GC是一种部分收集的做法，在执行部分收集时，从GC堆的非收集部分指向收集部分的引用，也必须作为GC...]]></description><category></category></item><item><title><![CDATA[一次CMS排查过程]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186669</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186669</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 21:07:56 +0800</pubDate><description><![CDATA[这个是之前处理过的一个线上问题，处理过程断断续续，经历了两周多的时间，中间各种尝试，总结如下。这篇文章分三部分：1、问题的场景和处理过程；2、GC的一些理论东西；3、看懂GC的日志先说一下问题吧问题场景：线上机器在半夜会推送一个700M左右的数据，这个时候有个数据置换的过程，也就是说有700M*2的数据在heap区域中，线上系统超时比较多，导致了很严重（严重程度就不说了）的问题。问题原因：看日志，...]]></description><category></category></item><item><title><![CDATA[CMS垃圾收集器的几个过程]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186660</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186660</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 21:07:28 +0800</pubDate><description><![CDATA[首先理解下Major GC,Full GC和CMS的区别：1. Full GC == Major GC指的是对老年代/永久代的stop the world的GC2. Full GC的次数 = 老年代GC时 stop the world的次数3. Full GC的时间 = 老年代GC时 stop the world的总时间4. CMS 不等于Full GC，我们可以看到CMS分为多个阶段，只有sto...]]></description><category></category></item><item><title><![CDATA[CMS]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186648</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186648</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 21:06:56 +0800</pubDate><description><![CDATA[    CMS，全称Concurrent Low Pause Collector，是jdk1.4后期版本开始引入的新gc算法，在jdk5和jdk6中得到了进一步改进，它的主要适合场景是对响应时间的重要性需求大于对吞吐量的要求，能够承受垃圾回收线程和应用线程共享处理器资源，并且应用中存在比较多的长生命周期的对象的应用。CMS是用于对tenured generation的回收，也就是年老代的回收，目标...]]></description><category></category></item><item><title><![CDATA[java堆内存与栈内存]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186639</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186639</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 21:06:11 +0800</pubDate><description><![CDATA[Java把内存分成两种，一种叫做栈内存，一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时，java就在栈中为这个变量分配内存空间，当超过变量的作用域后，java会自动释放掉为该变量分配的内存空间，该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存，由java虚拟机自动垃圾回收器来管理。在堆中产...]]></description><category></category></item><item><title><![CDATA[java虚拟机]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186580</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186580</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 21:05:31 +0800</pubDate><description><![CDATA[JAVA的技术体系：支撑JAVA程序运行的虚拟机，提供各开发领域接口的JAVA API,　JAVA编程语言及许多第三方框架（spring,struts）                              对于JAVA程序员，在虚拟机自动内存管理机制帮助下，不再需要为每一个new操作去写配对的delete/free代码。不容易出现内存泄露与内存溢出的问题。一旦出现了，不了解虚拟机如何使用内存...]]></description><category></category></item><item><title><![CDATA[jmap命令使用]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186570</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186570</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 21:01:08 +0800</pubDate><description><![CDATA[jmap用于查看堆内存使用情况，一般结合jhat使用。jmap -permstat pid    打印进程的类加载器和类加载器加载的持久代对象信息，输出：类加载器名称、对象是否存活（不可靠）、对象地址、父类加载器、已加载的类大小等信息，使用jmap -heap pid查看进程堆内存使用情况，包括使用的GC算法、堆配置参数和各代中堆内存使用情况。使用jmap -histo[:live] pid查看堆...]]></description><category></category></item><item><title><![CDATA[jps分析]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186559</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186559</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 21:00:44 +0800</pubDate><description><![CDATA[jstack命令的语法为：jstack &amp;lt;pid&amp;gt;.    可以用jps查看java进程id。jps本身可以列出所有的java进程。如下:[www@idc02-test-pay-17 che]$ jps18992 Bootstrap19668 Bootstrap43764 Bootstrap8531 Bootstrap5498 Bootstrap41978 Bootstrap46242...]]></description><category></category></item><item><title><![CDATA[jstack命令使用]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80186550</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80186550</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 21:00:15 +0800</pubDate><description><![CDATA[jstack &amp;lt;pid&amp;gt;  ：导出该进程的堆栈信息,对于解决问题是非常有帮助的。 如果java程序崩溃生成core文件，jstack工具可以用来获得core文件的java stack和native stack的信息，从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外，jstack工具还可以附属到正在运行的java程序中，看到当时运行的java程序的java stack和...]]></description><category></category></item><item><title><![CDATA[jstat命令使用]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80164713</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80164713</guid><author>chejinqiang</author><pubDate>Thu, 03 May 2018 20:59:40 +0800</pubDate><description><![CDATA[jstat（JVM统计监测工具）    语法格式如下：jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]    vmid是虚拟机ID，在Linux/Unix系统上一般就是进程ID。interval是采样时间间隔。count是采样数目。比如下面输出的是GC信息，采样时间间隔为250ms，采样数为4：root@ub...]]></description><category></category></item><item><title><![CDATA[jvm调优]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80164705</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80164705</guid><author>chejinqiang</author><pubDate>Wed, 02 May 2018 12:03:38 +0800</pubDate><description><![CDATA[堆设置-Xmx3550m：设置JVM最大堆内存 为3550M。 -Xms3550m：设置JVM初始堆内存 为3550M。此值可以设置与-Xmx相同，以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k： 设置每个线程的栈 大小。JDK5.0以后每个线程栈大小为1M，之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下，减小这个值能 生成更多的线程。但是操...]]></description><category></category></item><item><title><![CDATA[jvm性能监控和故障处理]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80164697</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80164697</guid><author>chejinqiang</author><pubDate>Wed, 02 May 2018 12:03:10 +0800</pubDate><description><![CDATA[给一个系统定位问题时，理论知识、经验是关键基础，数据是依据，工具是运用知识处理数据的手段所以在定位问题时，对于JVM相关的知识的理解非常关键，对这部分理论知识在这里就不详述了。概述工具分两大类，一类是命令行工具，一类是可视化工具命令行工具是运行期定位线上问题的首选工具。 常用用法用ps、jps找出线程号如果怀疑是死循环、线程类的问题，使用jstack -l来查看如果是jvm内存问题，使用jstat...]]></description><category></category></item><item><title><![CDATA[关于GC]]></title><link>https://blog.youkuaiyun.com/chejinqiang/article/details/80164690</link><guid>https://blog.youkuaiyun.com/chejinqiang/article/details/80164690</guid><author>chejinqiang</author><pubDate>Wed, 02 May 2018 12:02:33 +0800</pubDate><description><![CDATA[Minor GC从年轻代空间（包括 Eden 和 Survivor 区域）回收内存被称为 Minor GC。这一定义既清晰又易于理解。但是，当发生Minor GC事件的时候，有一些有趣的地方需要注意到：当 JVM 无法为一个新的对象分配空间时会触发 Minor GC，比如当 Eden 区满了。所以分配率越高，越频繁执行 Minor GC。内存池被填满的时候，其中的内容全部会被复制，指针会从0开始跟...]]></description><category></category></item></channel></rss>