<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Chenbug666的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Chenbug666</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Chenbug666]]></copyright><item><title><![CDATA[JVM GC 算法和相关GC收集器]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965749</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965749</guid><author>Chenbug666</author><pubDate>Mon, 23 Apr 2018 23:09:00 +0800</pubDate><description><![CDATA[    GC（Garbage Collection),指的是垃圾收集，本文主要介绍了JVM中GC的一些算法以及相关GC收集器。

    本文主要介绍了如下三个方面：

如何确定内存中的对象是‘‘垃圾’’
	GC回收算法
	GC收集器
本文相关虚拟机为HotSpot虚拟机

一、如何确定内存中的对象是‘‘垃圾’’

    判断对象是否为‘‘垃圾’’，即判断对象是否存活，通常来讲，主要有两种办法：...]]></description><category></category></item><item><title><![CDATA[Spring启动过程（二）]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965746</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965746</guid><author>Chenbug666</author><pubDate>Tue, 10 Apr 2018 23:01:00 +0800</pubDate><description><![CDATA[    上一篇说到的ioc容器的refresh()方法，是整个容器启动的最核心方法，在这个refresh()方法中，会完成资源文件的加载、配置文件解析、Bean定义的注册、组件的初始化等核心工作。

    让我们来look look 这个refresh()方法到底干了啥事情~~~

 

惯例先贴源码，先看下refresh()方法的说明。



refresh()方法是ConfigurableA...]]></description><category></category></item><item><title><![CDATA[Spring启动过程（一）]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965743</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965743</guid><author>Chenbug666</author><pubDate>Sun, 08 Apr 2018 18:48:00 +0800</pubDate><description><![CDATA[ 

    Spring的启动过程，就是其IoC容器的启动过程，本质就是创建和初始化bean的工厂（BeanFactory），BeanFactory其实就是整个SpringIoc的核心，Spring 使用 BeanFactory 来实例化、配置和管理 Bean。

    对于web程序，IoC容器启动过程即是建立上下文的过程，在web应用中，web容器会提供一个全局的ServletContex...]]></description><category></category></item><item><title><![CDATA[关于同步异步，阻塞非阻塞的理解]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965740</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965740</guid><author>Chenbug666</author><pubDate>Wed, 14 Mar 2018 15:51:00 +0800</pubDate><description><![CDATA[ 

关于同步异步，阻塞非阻塞，一直有困惑，大致了解整理一下，如有错误，请指正谢谢!

同步（synchronous） IO和异步（asynchronous） IO，阻塞（blocking） IO和非阻塞（non-blocking）IO分别是什么，到底有什么区别？

 

一、同步异步

同步和异步，关注的是消息通信机制，主要针对Client端

同步：client执行一个操作后，需要等待结果返回...]]></description><category></category></item><item><title><![CDATA[mac 卸载node和npm]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/103133545</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/103133545</guid><author>Chenbug666</author><pubDate>Mon, 09 Oct 2017 10:26:00 +0800</pubDate><description><![CDATA[系统升级到 Sierra 之后，npm 经常出问题，最终把 node 卸载了，安装了新版本。mac 卸载 node 比较麻烦，stackoverflow 上面找到一个方法还不错，特地记录下来，代码如下： 

首先运行脚本 
lsbom-f-l-s-pf /var/db/receipts...]]></description><category></category></item><item><title><![CDATA[SpringBoot使用 maven autoConfig插件打jar包(一)]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965737</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965737</guid><author>Chenbug666</author><pubDate>Fri, 29 Sep 2017 17:40:00 +0800</pubDate><description><![CDATA[AutoConfig介绍

    AutoConfig，主要用于 Maven 项目打包使用。在项目中，我们会将自己写的代码打成 jar 包或者 war 包发布到各种环境上。正常情况下，不用的环境所使用的数据库、缓存的配置是不同的。因此引入了autoConfig插件，在项目打包的时候的动态选择打包配置文件，同时由于相关配置文件非git/svn版本管理，避免了误操作修改了配置value导致错误的风险...]]></description><category></category></item><item><title><![CDATA[SpringBoot自定义配置文件读取]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/103133527</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/103133527</guid><author>Chenbug666</author><pubDate>Fri, 08 Sep 2017 15:43:00 +0800</pubDate><description><![CDATA[SpringBoot的配置文件默认在resources下的application.yml或properties中,通常都会把相关配置写入到这个文件中,但是为了不破坏核心文件的原生态，但又需要有自定义的配置信息存在，一般情况下会选择自定义配置文件来放这些自定义信息,下面介绍了在srpin...]]></description><category></category></item><item><title><![CDATA[AutoConfig工具使用指南]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/103133536</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/103133536</guid><author>Chenbug666</author><pubDate>Thu, 31 Aug 2017 14:29:00 +0800</pubDate><description><![CDATA[第13章AutoConfig工具使用指南 
13.1.需求分析 
13.1.1.解决方案 
13.2.AutoConfig的设计 
13.2.1.角色与职责 
13.2.2.分享二进制目标文件 
13.2.3.部署二进制目标文件 
13.2.4.AutoConfig特性列...]]></description><category></category></item><item><title><![CDATA[ReentrantReadWriteLock锁的使用]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965757</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965757</guid><author>Chenbug666</author><pubDate>Tue, 08 Aug 2017 17:00:00 +0800</pubDate><description><![CDATA[1.什么是ReentrantReadWriteLock

    ReentrantReadWriteLock是jdk提供的一个可重入的读写锁,功能与synchronized类似

    什么叫可重入：就是同一个线程可以重复加锁，可以对同一个锁加多次，每次释放的时候回释放一次，直到该线程加锁次数为0，这个线程才释放锁。

    什么叫读写锁： 也就是读锁可以共享，多个线程可以同时拥有读锁，但是...]]></description><category></category></item><item><title><![CDATA[mac安装redis可视化客户端]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965756</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965756</guid><author>Chenbug666</author><pubDate>Fri, 23 Jun 2017 16:30:00 +0800</pubDate><description><![CDATA[ 

打开终端,输入如下命令:


ruby -e &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot; &amp;lt; /dev/null 2&amp;gt; /dev/null ; brew install caskroom/cask/brew-cask 2&amp;gt; /dev/null



如果提...]]></description><category></category></item><item><title><![CDATA[Mac 安装配置抓包工具Charles]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965751</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965751</guid><author>Chenbug666</author><pubDate>Mon, 17 Apr 2017 23:31:00 +0800</pubDate><description><![CDATA[ 

    本文主要介绍mac下如何安装网络抓包工具以及如何实现抓包。在windows下有一款不错的抓包工具Fidder,但是由于是C#编写的，无法再mac下运行，因此，需要换一款抓包软件：Charles。

    Charles是一款Java语言编写的抓包工具，因此可以跨平台使用，可以在win/linux下使用，java编写的当然需要安装jdk了。同时还有一个问题，就是收费的，50美刀，折合...]]></description><category></category></item><item><title><![CDATA[centos7 安装 redis3.2.8]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965753</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965753</guid><author>Chenbug666</author><pubDate>Wed, 01 Mar 2017 00:00:00 +0800</pubDate><description><![CDATA[ 

一、下载redis稳定版

        Redis 版本号采用标准惯例：主版本号.副版本号.补丁级别,一个副版本号就标记为一个标准发行版本，例如 1.2，2.0，2.2，2.4，2.6，2.8，奇数的副版本号用来表示非标准版本,例如2.9.x发行版本是Redis 3.0标准版本的非标准发行版本。

        在本文中下载redis目前的稳定版3.2.8  

        wge...]]></description><category></category></item><item><title><![CDATA[CentOS卸载系统自带的OpenJDK并安装Sun的JDK的方法]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965747</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965747</guid><author>Chenbug666</author><pubDate>Mon, 27 Feb 2017 23:32:00 +0800</pubDate><description><![CDATA[ 

一、查看centos7中的jdk版本



二、输入命令卸载

    rpm -e --nodeps + 系统中的jdk版本号，如下：

    rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64

    rpm -e --nodeps java-1.7.0-openjdk-1.7.0.75-...]]></description><category></category></item><item><title><![CDATA[mysql 5.6 rpm安装]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/103134137</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/103134137</guid><author>Chenbug666</author><pubDate>Thu, 19 Jan 2017 16:50:00 +0800</pubDate><description><![CDATA[由于测试环境os突然挂了....需要重新安装mysql服务，大致总结了下在linux下安装mysql5.6的基本步骤: 
1.  wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm    
2.  rpm -i...]]></description><category></category></item><item><title><![CDATA[play framework 处理统一异常]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/103133451</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/103133451</guid><author>Chenbug666</author><pubDate>Thu, 19 Jan 2017 16:39:00 +0800</pubDate><description><![CDATA[play framework 1.2.x 处理全局异常 

采用@Catch标签，在处理统一异常的方法上添加此标签，用于捕获程序抛出的异常 
如果有Action方法抛出了异常，那么使用@Catch注解的方法就会执行，且抛出的异常会以参数的形式传递到@Catch注解的方法中。 ...]]></description><category></category></item><item><title><![CDATA[Java.util.Date 与 Java.sql.Date]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965741</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965741</guid><author>Chenbug666</author><pubDate>Fri, 06 Jan 2017 17:49:00 +0800</pubDate><description><![CDATA[ 

Java.util.Date 是 Java.sql.Date的父类，通常我们在java中使用date类型都会使用Java.util.Date

两者本质上都是时间戳，只是util.Date包括了时分秒。sql.Date不包括时分秒，但它把当前的时间剪掉了，保证sql.Date一定是那个日期的0点0分0秒的时间戳

所以

     new java.util.Date()会得到当前时间

 ...]]></description><category></category></item><item><title><![CDATA[Nginx 静态资源转发配置]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965744</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965744</guid><author>Chenbug666</author><pubDate>Thu, 29 Sep 2016 17:56:00 +0800</pubDate><description><![CDATA[ 

1.修改nginx.conf配置文件



user  nobody;# 工作进程的属主
worker_processes  4;#推荐worker数为cpu核数，避免cpu不必要的上下文切换

error_log   /usr/local/nginx/logs/error.log;
#error_log  /usr/local/nginx/logs/error.log  notice;
#...]]></description><category></category></item><item><title><![CDATA[CentOS7.0  安装 Nginx1.10.1 tar.gz方式]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965738</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965738</guid><author>Chenbug666</author><pubDate>Mon, 26 Sep 2016 17:44:00 +0800</pubDate><description><![CDATA[ 

一.安装准备

首先由于nginx的一些模块依赖一些lib库，所以在安装nginx之前，必须先安装这些lib库，这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装


yum install gcc-c++  
yum install pcre pcre-devel  
yum install zlib zlib-de...]]></description><category></category></item><item><title><![CDATA[java多线程(一)]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965078</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965078</guid><author>Chenbug666</author><pubDate>Tue, 26 Jul 2016 13:15:00 +0800</pubDate><description><![CDATA[一、Java线程       

        线程：线程是指进程内的一个执行单元,也是进程内的可调度实体. 表示程序执行的基本流程，cpu执行的基本单位

        进程：进程是一个具有独立功能的程序关于某个数据集合的一次运行活动

        在一个进程中可以包含若干个线程

二、线程的生命周期（状态）

        * java中的线程状态：创建，就绪，运行，阻塞，死亡

 ...]]></description><category></category></item><item><title><![CDATA[Ubuntu 15 安装mysql5.5.48 tar.gz包详解]]></title><link>https://blog.youkuaiyun.com/Chenbug666/article/details/83965069</link><guid>https://blog.youkuaiyun.com/Chenbug666/article/details/83965069</guid><author>Chenbug666</author><pubDate>Fri, 11 Mar 2016 16:43:00 +0800</pubDate><description><![CDATA[下载mysql

1.下载:在http://dev.mysql.com/downloads/mysql/官网上下载mysql-5.5.48-linux2.6-i686.tar.gz.

2.解压


tar -xvf mysql-5.5.48-linux2.6-i686.tar.gz

3.移动到/usr/local/mysql


mv mysql-5.5.48-linux2.6-i686 /u...]]></description><category></category></item></channel></rss>