<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m47838704的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m47838704</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m47838704]]></copyright><item><title><![CDATA[19年序]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/90147166</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/90147166</guid><author>m47838704</author><pubDate>Sun, 12 May 2019 23:13:19 +0800</pubDate><description><![CDATA[今天打开自己的博客一看，最近一篇文章已经是一年前了，感叹时间过的真快，这一年经历了很多，成长了很多。还有五天就是在新公司一年了，在这一年没有时间一直在快速的奔跑，没有时间去想别的事情，没有时间总结，但是俗话说“学而不思则罔，思而不学则怠”，从今天开始通过博客去总结我过去的一年、现在和未来。
过去的一年可以用一些关键字进行描述

积极主动
内心强大
正确总结
学习拒绝
自我认识
思辨能力
执行力
实...]]></description><category></category></item><item><title><![CDATA[JDK源码分析——SecurityManager安全管理器实例分析]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/80322337</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/80322337</guid><author>m47838704</author><pubDate>Tue, 15 May 2018 14:20:42 +0800</pubDate><description><![CDATA[

样例github
安全管理器简介
样例分析
样例相关文件
调试分析
1、直接运行（无参数）
2、配置默认安全管理器
3、配置默认管理+自定义策略文件（=）
4、配置默认管理+自定义策略文件（==）











样例github

https://github.com/mh47838704/JavaExample

参考文章：http://47777205.com/view/24


...]]></description><category></category></item><item><title><![CDATA[JDK源码分析——类加载器的分析和实战]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/80173917</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/80173917</guid><author>m47838704</author><pubDate>Wed, 02 May 2018 23:42:40 +0800</pubDate><description><![CDATA[本篇文章中的实例代码已经放入github的JavaExample中：

github地址：https://github.com/mh47838704/JavaExample

该文章中的实例代码：

https://github.com/mh47838704/JavaExample/tree/master/src/test/java/com/mh/JavaExample/cloader

实例放在...]]></description><category></category></item><item><title><![CDATA[JDK源码分析——Java的SPI机制分析与实战]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/80160985</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/80160985</guid><author>m47838704</author><pubDate>Tue, 01 May 2018 23:21:52 +0800</pubDate><description><![CDATA[重点提示：在我博客中的所有的源码分析的实例，我都将会放到github上，感兴趣的朋友可以下载下来调试运行，我相信还是可以有所收获的。我的目的是让所有读到我博客的朋友都可以了解到有价值的东西，学习到java核心的原理，使用起来更加得心应手。

所有实例的GitHub地址：https://github.com/mh47838704/JavaExample ，我会不定期的更新代码，所有大家可以长期关注一...]]></description><category></category></item><item><title><![CDATA[JDK源码分析——ThreadPoolExecutor参数详解]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/80135972</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/80135972</guid><author>m47838704</author><pubDate>Sat, 28 Apr 2018 15:47:40 +0800</pubDate><description><![CDATA[参考文章：JDK源码分析——ThreadPoolExecutor参数详解

本篇文章主要对jdk中线程池ThreadPoolExecutor的参数进行详细分析

ThreadPoolExecutor已经对上面的各种情况进行了封装处理，并且提供了相应的参数对上述各种情况进行控制，首先我们看一下该类的构造函数，从源码我们可以看出该类的构造函数有很多个，不同的构造函数需要填写的参数不同。针对没有填写的参...]]></description><category></category></item><item><title><![CDATA[nginx——安装和配置详解]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/80101481</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/80101481</guid><author>m47838704</author><pubDate>Thu, 26 Apr 2018 23:07:16 +0800</pubDate><description><![CDATA[参考文章：nginx安装和配置详解

第一章Nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器，也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的。 
如果需要更加详细的了解nginx，可以通过nginx的官网去了解，下面是nginx的官网地址 
一、中文官网地址 
https://w...]]></description><category></category></item><item><title><![CDATA[Java流式处理——实例分析]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/80072289</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/80072289</guid><author>m47838704</author><pubDate>Tue, 24 Apr 2018 23:00:35 +0800</pubDate><description><![CDATA[参考文章：java流式处理实例分析

由于在项目中使用了很多流式的处理，但是却对什么是流式处理没有概念，所以闲暇之余看了一下ArrayList的stream的实现，并按照该实现并结合Splitterator的样例实现了一个简单的可以并发的List，该List也支持流式处理的方式。

由于本来是为了了解深入的分析一下流式处理而编写的样例，但是个人觉得通过调试分析该样例可以帮助大家对什么流式处理由一个...]]></description><category></category></item><item><title><![CDATA[tomcat源码解读——启动过程分析]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/80045028</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/80045028</guid><author>m47838704</author><pubDate>Mon, 23 Apr 2018 00:07:35 +0800</pubDate><description><![CDATA[参考文章：tomcat源码解读——启动过程分析

在上一篇文章中介绍了idea中tomcat源码调试环境的搭建，调试环境搭建完成之后首先配置tomcat的启动信息，配置信息如下（具体配置步骤参考源码中的README文件) 配置好了tomcat的启动信息之后，就可以开始从源码启动并调试tomcat了，在深入到tomcat的源码之前，为了对tomcat有一个更加直观的了解，可以首先分析一下tomcat...]]></description><category></category></item><item><title><![CDATA[tomcat源码解读——Idea调试环境搭建]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/80030313</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/80030313</guid><author>m47838704</author><pubDate>Sat, 21 Apr 2018 15:44:48 +0800</pubDate><description><![CDATA[转载：tomcat源码解读——Idea调试环境搭建

由于tomcat源码本身是基于ant构建的，所以如果想要在idea中运行，那么需要重新进行配置。

通过在网络上查询相关的资料，找到了相关的配置，通过该配置可以在idea中正常的编译调试。

已经添加好了配置文件的tomcat的源码可以在我的github上找到，下面是该源码的地址： 
https://github.com/mh47838704/...]]></description><category></category></item><item><title><![CDATA[深入分析ReentrantLock公平锁和非公平锁的区别]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/80013056</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/80013056</guid><author>m47838704</author><pubDate>Fri, 20 Apr 2018 00:24:41 +0800</pubDate><description><![CDATA[在ReentrantLock中包含了公平锁和非公平锁两种锁，通过查看源码可以看到这两种锁都是继承自Sync，而Sync又继承自AbstractQueuedSynchronizer，而AbstractQueuedSynchronizer又继承自AbstractOwnableSynchronizer，下面是类的继承关系图： 


其中AbstractOwnableSynchronizer是提供了设置占...]]></description><category></category></item><item><title><![CDATA[tomcat源码分析——不同的应用隔离机制]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79860159</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79860159</guid><author>m47838704</author><pubDate>Mon, 09 Apr 2018 00:12:57 +0800</pubDate><description><![CDATA[通过为不同的应用创建一个webappclassloader即可实现不同的应用的隔离，避免不同应用之间的class的引用，从而引起的应用安全问题]]></description><category></category></item><item><title><![CDATA[mybatis源码分析之Mapper初始化过程（2）]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79860100</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79860100</guid><author>m47838704</author><pubDate>Sun, 08 Apr 2018 23:59:14 +0800</pubDate><description><![CDATA[在上一节记录了Mapper的初始化的整个过程，本节将记录一下Mapper的初始化过程中一个子过程：从xml解析Mapper配置。

Mapper的使用是首先定义一个mapper接口，在接口里面对mapper的入参和返回值进行定义，然后编写同名的mapper的xml配置文件，并在配置文件中对每一个接口的具体的sql的执行进行配置（当然使用注解也是一个很好的方式，在上一节提到了，注解的方式会覆盖掉xm...]]></description><category></category></item><item><title><![CDATA[mybatis源码分析之Mapper初始化过程（1）]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79846677</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79846677</guid><author>m47838704</author><pubDate>Sun, 08 Apr 2018 00:10:46 +0800</pubDate><description><![CDATA[通过分析MapperRegistry类的addMapper方法，可以看出mapper的生成过程以及初始化的机制：

public &amp;lt;T&amp;gt; void addMapper(Class&amp;lt;T&amp;gt; type) {
    if (type.isInterface()) {
      if (hasMapper(type)) {
        throw new BindingExc...]]></description><category></category></item><item><title><![CDATA[深度剖析spring+shiro认证机制]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79775818</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79775818</guid><author>m47838704</author><pubDate>Mon, 02 Apr 2018 00:28:05 +0800</pubDate><description><![CDATA[引言

项目中使用了shiro作为用户认证、角色管理、权限管理等，使用起来还是特别方便的，开发者只需要SecurityUtils.getSubject()获取subject就可以实现登录，以及权限验证。这样大大简化了开发者的功能，但是也有点让开发者感觉好奇，shiro是如何做到的呢。

本章将会对shiro的认证机制进行深入剖析，由于从官方文档以及其他的一些博客对shiro的使用都做了详细的说明，...]]></description><category></category></item><item><title><![CDATA[java类加载机制的深入分析]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79721655</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79721655</guid><author>m47838704</author><pubDate>Wed, 28 Mar 2018 00:49:43 +0800</pubDate><description><![CDATA[绪

jvm类加载机制在很多书籍里面都有讲解，主要介绍了基于委托的类的加载机制、类加载链接初始化的过程、以及类加载时机等，本篇文章通过编写自定义的classloader来对相关概念进行更加具体直观的分析。



源码样例分析

SelfClassLoader.java

package cloader;
import java.io.File;
import java.io.FileInputSt...]]></description><category></category></item><item><title><![CDATA[LockSupport源码解析]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79692649</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79692649</guid><author>m47838704</author><pubDate>Mon, 26 Mar 2018 00:21:53 +0800</pubDate><description><![CDATA[绪

今天和朋友讨论Java中的锁机制的时候，谈论到了LockSupport类，在之前一直没有使用过该类，所以当提到该类的时候还是有点陌生，然后看了一下JDK的源码和该类相关的技术博客，整理了一下该类的原理和使用场景。



使用



package mthread;

import org.junit.Test;

import java.util.concurrent.TimeUnit;
i...]]></description><category></category></item><item><title><![CDATA[稳定高并发高性能程序设计原则简单总结]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79662006</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79662006</guid><author>m47838704</author><pubDate>Fri, 23 Mar 2018 00:32:26 +0800</pubDate><description><![CDATA[稳定性

稳定性是第一前提，如系统崩溃恢复容灾备份这些，主要是一些数据保护的机制，还有就是程序参数的校验、异常的处理、事务的回滚、程序边界的设计（合理的边界划分可以避免服务的连锁崩溃）、对账机制等，这些都是日常生活中常用的一些手段在计算机领域的体现，更详细的设计就不深入的分析了。

高并发

通过多年来对操作系统的研究，以及结合多年来各种语言的编程经验来说，高性能的程序的开发其实都是有规可循的。因...]]></description><category></category></item><item><title><![CDATA[ThreadPoolExecutor实现分析]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79548569</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79548569</guid><author>m47838704</author><pubDate>Tue, 13 Mar 2018 23:18:35 +0800</pubDate><description><![CDATA[该类是JDK中提供的线程池的实现，可以根据业务需求配置合适的参数，这样可以提高线程池的性能，该线程池的使用在前面的文章中已经讲解过了，本节主要分析其实现的机制是如何的。

如果让开发者自己设计线程池，肯定也会提出下面几个问题： 
1、在初始化的时候，线程池的初始化大小。 
2、当线程池中线程不够用了，线程池如何处理。 
3、线程池中只有很少或者没有任务运行的时候，线程池中空闲的线程该如何处理。

...]]></description><category></category></item><item><title><![CDATA[Java引用分类和缓存实现]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79548193</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79548193</guid><author>m47838704</author><pubDate>Tue, 13 Mar 2018 22:40:58 +0800</pubDate><description><![CDATA[在JVM中将对象的引用分为了四类： 
强引用：在GC阶段不会被垃圾回收 
软引用：在GC阶段可能会被回收 
弱引用：在GC阶段肯定会被回收 
虚引用：不会影响对象的GC，当对象被GC的时候会得到一个通知

如果用JVM做缓存的，考虑到缓存的性质，缓存中的数据并不是需要一直存在在jvm的整个生命周期中，所以可以在内存不够用的时候进行回收，所以可以使用软引用、弱引用的数据结构，如WeakHashMap...]]></description><category></category></item><item><title><![CDATA[阿里云nginx的https配置]]></title><link>https://blog.youkuaiyun.com/m47838704/article/details/79521389</link><guid>https://blog.youkuaiyun.com/m47838704/article/details/79521389</guid><author>m47838704</author><pubDate>Sun, 11 Mar 2018 22:41:24 +0800</pubDate><description><![CDATA[域名是在腾讯备的案：可以申请相应的证书，证书的安装步骤见https://cloud.tencent.com/document/product/400/4143#2.-nginx-.E8.AF.81.E4.B9.A6.E9.83.A8.E7.BD.B2

根据上面的配置配置好了nginx，以及tomcat的反向代理之后，发现https一直无法使用，这个是因为阿里云的端口的开发需要配置：安全组http...]]></description><category></category></item></channel></rss>