自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(131)
  • 资源 (17)
  • 收藏
  • 关注

原创 19年序

今天打开自己的博客一看,最近一篇文章已经是一年前了,感叹时间过的真快,这一年经历了很多,成长了很多。还有五天就是在新公司一年了,在这一年没有时间一直在快速的奔跑,没有时间去想别的事情,没有时间总结,但是俗话说“学而不思则罔,思而不学则怠”,从今天开始通过博客去总结我过去的一年、现在和未来。过去的一年可以用一些关键字进行描述积极主动内心强大正确总结学习拒绝自我认识思辨能力执行力实...

2019-05-12 23:13:19 330

原创 JDK源码分析——SecurityManager安全管理器实例分析

样例github安全管理器简介样例分析样例相关文件调试分析1、直接运行(无参数)2、配置默认安全管理器3、配置默认管理+自定义策略文件(=)4、配置默认管理+自定义策略文件(==)样例githubhttps://github.com/mh47838704/JavaExample参考文章:http://47777205.com/view/24...

2018-05-15 14:20:42 1802

原创 JDK源码分析——类加载器的分析和实战

本篇文章中的实例代码已经放入github的JavaExample中:github地址:https://github.com/mh47838704/JavaExample该文章中的实例代码:https://github.com/mh47838704/JavaExample/tree/master/src/test/java/com/mh/JavaExample/cloader实例放在...

2018-05-02 23:42:40 662

原创 JDK源码分析——Java的SPI机制分析与实战

重点提示:在我博客中的所有的源码分析的实例,我都将会放到github上,感兴趣的朋友可以下载下来调试运行,我相信还是可以有所收获的。我的目的是让所有读到我博客的朋友都可以了解到有价值的东西,学习到java核心的原理,使用起来更加得心应手。所有实例的GitHub地址:https://github.com/mh47838704/JavaExample ,我会不定期的更新代码,所有大家可以长期关注一...

2018-05-01 23:21:52 364

原创 JDK源码分析——ThreadPoolExecutor参数详解

参考文章:JDK源码分析——ThreadPoolExecutor参数详解本篇文章主要对jdk中线程池ThreadPoolExecutor的参数进行详细分析ThreadPoolExecutor已经对上面的各种情况进行了封装处理,并且提供了相应的参数对上述各种情况进行控制,首先我们看一下该类的构造函数,从源码我们可以看出该类的构造函数有很多个,不同的构造函数需要填写的参数不同。针对没有填写的参...

2018-04-28 15:47:40 371

原创 nginx——安装和配置详解

参考文章:nginx安装和配置详解第一章Nginx介绍Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的。 如果需要更加详细的了解nginx,可以通过nginx的官网去了解,下面是nginx的官网地址 一、中文官网地址 https://w...

2018-04-26 23:07:16 48848 2

原创 Java流式处理——实例分析

参考文章:java流式处理实例分析由于在项目中使用了很多流式的处理,但是却对什么是流式处理没有概念,所以闲暇之余看了一下ArrayList的stream的实现,并按照该实现并结合Splitterator的样例实现了一个简单的可以并发的List,该List也支持流式处理的方式。由于本来是为了了解深入的分析一下流式处理而编写的样例,但是个人觉得通过调试分析该样例可以帮助大家对什么流式处理由一个...

2018-04-24 23:00:35 2703

原创 tomcat源码解读——启动过程分析

参考文章:tomcat源码解读——启动过程分析在上一篇文章中介绍了idea中tomcat源码调试环境的搭建,调试环境搭建完成之后首先配置tomcat的启动信息,配置信息如下(具体配置步骤参考源码中的README文件) 配置好了tomcat的启动信息之后,就可以开始从源码启动并调试tomcat了,在深入到tomcat的源码之前,为了对tomcat有一个更加直观的了解,可以首先分析一下tomcat...

2018-04-23 00:07:35 1094 1

原创 tomcat源码解读——Idea调试环境搭建

转载:tomcat源码解读——Idea调试环境搭建由于tomcat源码本身是基于ant构建的,所以如果想要在idea中运行,那么需要重新进行配置。通过在网络上查询相关的资料,找到了相关的配置,通过该配置可以在idea中正常的编译调试。已经添加好了配置文件的tomcat的源码可以在我的github上找到,下面是该源码的地址: https://github.com/mh47838704/...

2018-04-21 15:44:48 1161

原创 深入分析ReentrantLock公平锁和非公平锁的区别

在ReentrantLock中包含了公平锁和非公平锁两种锁,通过查看源码可以看到这两种锁都是继承自Sync,而Sync又继承自AbstractQueuedSynchronizer,而AbstractQueuedSynchronizer又继承自AbstractOwnableSynchronizer,下面是类的继承关系图: 其中AbstractOwnableSynchronizer是提供了设置占...

2018-04-20 00:24:41 23057 3

原创 tomcat源码分析——不同的应用隔离机制

通过为不同的应用创建一个webappclassloader即可实现不同的应用的隔离,避免不同应用之间的class的引用,从而引起的应用安全问题

2018-04-09 00:12:57 1148

原创 mybatis源码分析之Mapper初始化过程(2)

在上一节记录了Mapper的初始化的整个过程,本节将记录一下Mapper的初始化过程中一个子过程:从xml解析Mapper配置。Mapper的使用是首先定义一个mapper接口,在接口里面对mapper的入参和返回值进行定义,然后编写同名的mapper的xml配置文件,并在配置文件中对每一个接口的具体的sql的执行进行配置(当然使用注解也是一个很好的方式,在上一节提到了,注解的方式会覆盖掉xm...

2018-04-08 23:59:14 500

原创 mybatis源码分析之Mapper初始化过程(1)

通过分析MapperRegistry类的addMapper方法,可以看出mapper的生成过程以及初始化的机制:public <T> void addMapper(Class<T> type) { if (type.isInterface()) { if (hasMapper(type)) { throw new BindingExc...

2018-04-08 00:10:46 966

原创 深度剖析spring+shiro认证机制

引言项目中使用了shiro作为用户认证、角色管理、权限管理等,使用起来还是特别方便的,开发者只需要SecurityUtils.getSubject()获取subject就可以实现登录,以及权限验证。这样大大简化了开发者的功能,但是也有点让开发者感觉好奇,shiro是如何做到的呢。本章将会对shiro的认证机制进行深入剖析,由于从官方文档以及其他的一些博客对shiro的使用都做了详细的说明,...

2018-04-02 00:28:05 395

原创 java类加载机制的深入分析

绪jvm类加载机制在很多书籍里面都有讲解,主要介绍了基于委托的类的加载机制、类加载链接初始化的过程、以及类加载时机等,本篇文章通过编写自定义的classloader来对相关概念进行更加具体直观的分析。源码样例分析SelfClassLoader.javapackage cloader;import java.io.File;import java.io.FileInputSt...

2018-03-28 00:49:43 356

原创 LockSupport源码解析

绪今天和朋友讨论Java中的锁机制的时候,谈论到了LockSupport类,在之前一直没有使用过该类,所以当提到该类的时候还是有点陌生,然后看了一下JDK的源码和该类相关的技术博客,整理了一下该类的原理和使用场景。使用package mthread;import org.junit.Test;import java.util.concurrent.TimeUnit;i...

2018-03-26 00:21:53 677

原创 稳定高并发高性能程序设计原则简单总结

稳定性稳定性是第一前提,如系统崩溃恢复容灾备份这些,主要是一些数据保护的机制,还有就是程序参数的校验、异常的处理、事务的回滚、程序边界的设计(合理的边界划分可以避免服务的连锁崩溃)、对账机制等,这些都是日常生活中常用的一些手段在计算机领域的体现,更详细的设计就不深入的分析了。高并发通过多年来对操作系统的研究,以及结合多年来各种语言的编程经验来说,高性能的程序的开发其实都是有规可循的。因...

2018-03-23 00:32:26 3633

原创 ThreadPoolExecutor实现分析

该类是JDK中提供的线程池的实现,可以根据业务需求配置合适的参数,这样可以提高线程池的性能,该线程池的使用在前面的文章中已经讲解过了,本节主要分析其实现的机制是如何的。如果让开发者自己设计线程池,肯定也会提出下面几个问题: 1、在初始化的时候,线程池的初始化大小。 2、当线程池中线程不够用了,线程池如何处理。 3、线程池中只有很少或者没有任务运行的时候,线程池中空闲的线程该如何处理。...

2018-03-13 23:18:35 252

原创 Java引用分类和缓存实现

在JVM中将对象的引用分为了四类: 强引用:在GC阶段不会被垃圾回收 软引用:在GC阶段可能会被回收 弱引用:在GC阶段肯定会被回收 虚引用:不会影响对象的GC,当对象被GC的时候会得到一个通知如果用JVM做缓存的,考虑到缓存的性质,缓存中的数据并不是需要一直存在在jvm的整个生命周期中,所以可以在内存不够用的时候进行回收,所以可以使用软引用、弱引用的数据结构,如WeakHashMap...

2018-03-13 22:40:58 644

原创 阿里云nginx的https配置

域名是在腾讯备的案:可以申请相应的证书,证书的安装步骤见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...

2018-03-11 22:41:24 1120

原创 Socket高可靠性数据传输

在计算机网络中,TCP/IP保证了数据的可靠性传输,但是该可靠性传输时建立在链路可用的情况下的,也就是说在链路可用的情况下,该协议可用保证数据可靠的传输到对端。socket就是在TCP/IP协议(当然还包含其他协议)之上的更高层次的系统API,socket底层使用了TCP/IP来保证了链路在可用的情况下,数据可靠的传输到对端,那么应用层在使用socket的时候读写数据的时候就一定能保证数据可靠...

2018-03-10 09:30:32 2160

原创 netty源码注解——websocket握手和分片组合

在使用web socket的时候也是需要注意netty引用计数这个机制,否则也容易出现错误本节主要注解了netty中web socket的握手协议处理以及分片组合的实现方式 https://github.com/mh47838704/netty...

2018-03-06 21:11:04 1568

原创 Netty小记——引用计数机制

引用计数机制在很多框架中都有使用,如果在游戏引擎框架coscos2dx中,这种机制可以很简单的进行对象的生命周期的管理,netty引用计数机制原文:http://netty.io/wiki/reference-counted-objects.htmlSince Netty version 4, the life cycle of certain objects are managed by t...

2018-03-05 00:17:18 1422

原创 Hashmap的高性能使用小记

<p>An instance of <tt>HashMap</tt> has two parameters that affect its * performance: <i>initial capacity</i> and <i>load factor</i>. The * <i&gt

2018-03-01 00:21:44 582

原创 Netty和Mybatis源码中文注释

在上半年我会利用业余的时间,把netty和mybatis的源码看一遍,然后对某些关键的代码予以中文的注释,如果感兴趣的可以从下面的github获取相应的源码。https://github.com/mh47838704/netty 点击我跳转https://github.com/mh47838704/mybatis-3 点击我跳转还有一个基于netty+protobuf的简单的IM服...

2018-02-28 20:54:18 854 1

原创 mybatis深入浅出——连接管理+sql映射+结果集转换

本节主要对mybatis初始化源码的分析,简单的阐述mybatis的设计思想。数据库访问相关的框架是对jdk中的数据库访问相关操作的更高层次的封装,所以如果要探究一个框架的设计原理,那么可以从下而上的进行分析。通过分析jdk中数据库访问的痛点,和分析mybatis的所解决的问题相结合,可以更加透彻的理解框架的意义,从而可以更加高效的使用好框架,更好的整合到项目当中。大部分的数据库访问框架都...

2018-02-25 11:46:12 354

原创 java远程ssh小记——jsch那些坑

jsch是java ssh远程连接的框架,在使用的时候首先看了一下官方的实现,然后看了一下这个框架的源码,发现该源码注释太少了,简直可以说是没有注释,只能老老实实的把相关的关键类看一下,并结合官方例子完成java ssh连接和远程命令的执行,下面是官方的例子(官方的例子加入了一些界面相关的代码,看着比较混乱):/* -*-mode:java; c-basic-offset:2; inden...

2018-02-25 10:38:34 13181 3

原创 mybatis小记——数据库连接池实现

简单实现 说到数据库连接池的实现,可能大家并不陌生,应该都或多或少的实现过,那么先来说说一个简单的数据库连接池的实现。既然是连接池,首先得有连接,然后有池子(废话),连接使用jdk的Connection,池子使用一个List<Connection>即可,需要连接的时候从list中获取,如果list中没有那么就新new一个并加入到list中就可以了。使用完成之后,将连接放回list...

2018-02-10 21:51:16 2775

原创 spring多数据源路由小记

授之以鱼,不如授之以渔首先讲一讲如何实现自己的多数据源的配置和使用。多数据源的配置:这个问题很简单,什么jdbc.url….之类的多来几套即可以了,然后编写一个类读取几套该配置并为每一套连接建立一个连接池即可。如何使用多数据源呢:多个数据源提供统一的获取连接的接口,接口参数是数据源的key,该接口通过key值来找到对应的数据源的连接池,返回相应的连接即可。上面就是一个多数据的配置和

2018-02-03 22:16:20 547

原创 Netty小记——web socket分片聚合实现

在netty中已经对web socket的分片重组进行了相应的实现,具体的实现类是 WebSocketFrameAggregator,该类继承自netty的消息聚合器MessageAggregator。MessageAggregator ...... * @param the type that covers both start message and content messag

2018-02-03 20:46:38 1552

原创 https://www.cnblogs.com/guwei4037/p/5591183.html

关于设计模式https://www.cnblogs.com/guwei4037/p/5591183.html

2018-02-03 14:54:45 369

原创 apache shiro小记

功能介绍 1、shiro提供了session管理,并且默认实现了部分简单的session管理器,并且基于sessionDao的方式,可以方便用户自定义实现更加复杂的session管理器。 2、认证,shiro也提供了用户相关功能,对外提供了统一的认证的接口,具体的认证数据的来源用户可以自定义:支持文本配置、数据源配置、ldap、jndi等授权信息源配置。 3、授权,提供了细粒度的授权机制,可

2018-01-30 08:31:28 1304

原创 jdk源码小记——锁机制(ReentrantLock源码解析)

锁的具体含义和使用方式,在操作系统里面已经有了比较详细的讲解,就不在这里赘述了。本小节主要讲解一下Java当中的锁的实现和使用(其实jvm是用c++写的,所以最终的实现和操作系统提供的锁机制有很大的干系)synchronized 该关键字也是是jdk提供的一种隐性的锁机制,需要特别注意的有以下几点: 1、用在静态方法,锁的是类对象(类本身也是一个对象,是描述对象的对象),即class对象。

2018-01-27 15:30:09 241

原创 加密小记

从目前的了解来说主要包括两种:对称加密和非对称加密,其中非对称加密开销比对称加密开销大。 在连接建立的时候使用非对称加密传输随机生成的对称加密秘钥,在后续的数据加密中就是用随机生成的对称秘钥进行数据的加密传输。 一篇比较好的java的ssl socket文章

2018-01-25 23:08:59 165

原创 基于netty的web socket小记

1、WebSocketProtocolHandler里面包含了handshake过程,并且会在handshake完成之后产生一个用户事件往后面的管道传递,可以通过该事件判断web socket是否建立成功。ping、pong心跳帧已经在该handler中处理,管道后面的handler可以不用处理。2、在web socket服务器开发的时候,会用到http codec相关的handler,这些h

2018-01-22 22:32:24 543

原创 jdk源码分析 ——Selector深入分析

1、spi方式的selector定制化 selector通过SelectorProvider创建的,通常不同安装版本的jdk中已经封装了相应的Select和SelectorProvider了,通过spi的方式进行扩展。(PS:spi是一种jdk提供的低侵入方式的扩展实现,目前已经在大多数的框架中使用了,类似dubbo框架也使用该方式,让用户进行更好的定制化实现)2、selector的原理

2018-01-20 15:46:52 461

原创 web socket协议小记

1、协议upgrade 通过一个handshake进行协议升级,升级为websocket协议(同时不断开tcp连接),只有一次握手协议就可以完成协议升级,然后就可以进行进行websocket帧的发送。3、Extension data 该概念比较混淆,通过看rfc协议文档可知,类似于在握手时进行一些额外的验证,验证所需要的信息就是Extension data

2018-01-19 15:38:34 364

原创 jdk源码分析之ByteBuffer

ByteBuffer位于jdk源码包java.nio中通过对该源码文件的注释的阅读可知该ByteBuffer具有如下的特点: 1、该buffer可以使用直接内存(操作系统内存,不受java虚拟机管理)和间接内存(jdk管理的内存,受java虚拟机管理) PS(关于直接内存和间接内存的好处,网上搜索会出现很多,结论是直接内存比间接内存的I/O效率高,这仅限于在该buffer上有I/O操作,否则最好

2018-01-13 17:47:21 388

原创 Java多线程之—ForkJoinPool源码分析

首先推荐阅读ForkJoinPool的作者Doug Lea的一篇文章《A Java Fork/Join Framewor》 http://gee.cs.oswego.edu/dl/papers/fj.pdf 英文原文下载地址还推荐一个不错的资源java并发编程文章资源下面将首先介绍一下该类的使用,以及某些关键的函数接口的实现

2018-01-08 21:07:10 563

原创 Java线程池深入分析(2)

Executor.java 该接口主要定义将任务提交到线程池的接口方法,为什么在该接口中只定义任务的提交方法,在jdk文档中也给了一个大致的说明(该接口只负责任务提交到线程池,与具体线程池如何执行提交的任务解耦)ExecutorService 该类主要定义了线程池的关闭方式,以及在Executor的基础之上封装了更多类型的任务提交方式,主要有两种方式:一种是单个任务提交执行;一种是批量任务

2018-01-06 22:04:44 200 1

nodejs文档

nodejs的开发教程

2017-08-27

nginx的源码

nginx的开发源代码

2017-08-27

netty4.1源码

netty4.1的开放源代码

2017-08-27

ssm+netty的源码

spring mybatis springmvc netty

2017-08-14

zookeeper eclipse版本

zookeeper已经使用ant编译好了,可以直接导入到eclipse中运行

2017-08-10

spring-boot源码

spring-boot源码压缩包

2017-08-09

jdk1.8的主要压缩包

jdk1.8 main

2017-08-09

jdk-lib压缩

jdk1.8的lib

2017-08-09

jre1.8免压缩

jre 压缩包

2017-08-09

source insight 3压缩包

C/C++源码查看工具

2017-08-09

SpringAOP的例子

eclipse的SpringAOP和动态代理的小例子

2016-05-10

common-pool的eclipse源码+例子

common-pool的eclipse源码+例子,可以直接导入到eclipse中运行,例子的代码放在src/main/java mh.test中,注意eclipse的jre版本不要用1.8,那样会出现duplicate method的错误!

2016-05-05

java网络编程——网络版题库程序

java网络编程——网络版题库程序(主要技术java+socket+多线程+mysql),程序是C/S 版本的,由于服务器端是java写的,所有客户端使用android也是很容易与服务器对接的

2015-08-25

ssh框架简单实例,myeclipse

一个ssh的一个简单的实例 用的是oracle数据库,可以直接import 到myeclipse

2011-06-17

java ee servlet web connect mysql

this is a javaee project base on the myeclipes, contain some imformation of servlet and some imformation about sql

2010-12-20

tomcat javaEE 简单购物网站

tomcat javaEE 开发的一个购物的网站,只是实现的了简单的功能,其余的自己下来完善

2010-12-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除