自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 spring bean 生命周期 2 (spring5.0版本)

spring初始化1 上一篇spring初始化1主要分析了this()方法; 本主要讲如下的register(componentClasses)方法; public AnnotationConfigApplicationContext(Class<?>... componentClasses) { this(); register(componentClasses); r...

2020-04-23 16:18:32 134

原创 spring bean 生命周期 3 (spring5.0版本)

spring生命周期2 上一篇spring bean 生命周期2主要分析了register(componentClasses)方法; public AnnotationConfigApplicationContext(Class<?>... componentClasses) { this(); register(componentClasses); refresh();...

2020-05-16 17:11:08 201 1

原创 spring-web项目不用配置web.xml的方式原理

springmvc时的入口 比较早之前使用springmvc的时候,都要配置个web.xml文件.并且在文件写个servlet的标签,如下: <!-- 配置Spring的前置控制器DispatcherServlet --> <servlet> <servlet-name>spring</servlet-name> ...

2020-05-04 12:35:04 1524

原创 spring如何解决循环引用问题

DDF

2020-03-14 18:46:15 934 1

原创 spring bean 生命周期 1(spring5.0版本)

AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(DemoApplication.class); 分析spring初始化过程跟踪下去 public AnnotationConfigApplicationContext(Class<?>... componentClasses)...

2020-01-16 15:22:36 178

原创 java开发hutool工具你值得拥有

网址:https://www.hutool.cn/

2019-10-23 18:02:52 265

原创 synchronize锁的膨胀及批量重偏向和撤销

一个java对象包含:对象头,数据,对齐填充; 对象头包含:markword(如上图),类类型指针(klass word,如上图),legth(若是数组对象有这个值) 现在讲解下上图: 上图是jvm64位的对象头在各种锁状态下的信息;正常情况markword占64bit ;klass word 占64bit(一般默认开启指针压缩的:会压缩到32bit) 要分析对象头我们可以借助jo...

2019-10-22 17:48:21 1759

原创 并发之证明偏向锁存在

jdk锁的话synchronize在1.5之前都是重量级索,1.6之后有了偏向锁,轻量锁,重向锁; 重向锁就是每次获取锁都要直接调用操作系统的函数(这里指linux系统)pthread_mutex_lock(); 偏向锁是第一次也会调用操作系统函数,之后就不会在调用了; 证明之前先说java线程和os线程的关系;目前来说java和os线程是一一对应的; 当在java中开一个线程的时候,调用star...

2019-10-15 23:44:01 211

原创 java序列化demo

public class Testtest { public static void main(String[] args) throws IOException,ClassNotFoundException { // Person对象文件路径 String path = "d:/person.dat"; // 创建一个Person对象 ...

2019-10-09 15:57:37 151

原创 netty启动源码5

之前的服务端的channel初始化好了,接下来就会监听连接事件看以下reactor线程的死循环做的事情跟踪代码到 nioeventloop类的run方法 //事件循环 @Override protected void run() { for (;;) { try { try { ...

2019-10-06 11:57:45 128

原创 netty启动源码4

接着之前讲到 final ChannelFuture regFuture = initAndRegister(); 接下来讲doBind0(regFuture, channel, localAddress, promise); private ChannelFuture doBind(final SocketAddress localAddress) { //初始化和注册 ...

2019-10-05 13:48:49 114

原创 netty启动源码3

接着执行如下代码: ChannelFuture future = serverBootstrap.bind(8088).sync(); 这里是真正的启动源码的地方:这行代码做的事情太多太多太多…了 跟踪源码到AbstractBootstrap类的如下方法: private ChannelFuture doBind(final SocketAddress localAddress) { ...

2019-10-04 16:22:59 94

原创 netty启动流程源码2

执行如下代码: serverBootstrap.group(bossGroup,workerGroup) 跟踪代码: public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup) { //bossGroup,workerGroup super.group(parentGroup); Objec...

2019-10-04 12:00:20 73

原创 netty启动流程源码1

public static void main(String[] args) throws InterruptedException { //就是一个死循环,不停地检测IO事件,处理IO事件,执行任务 //创建一个线程组:接受客户端连接 主线程 EventLoopGroup bossGroup=new NioEventLoopGroup(1);//cpu核心数*2 ...

2019-10-04 11:32:34 117

原创 Hotspot虚拟机创建对象过程

首先这里的创建对象指的是正常的不包括数组和class对象; 过程 1:在jvm遇到new指令的时候,会先去检查该类是否已加载,没有的话进行类加载;对象的大小在类加载后就确定了; 2:加载后,就要在内存给它一个空间存储吧,但是要jvm怎么给他分配的呢? 如果收集器是标记整理的话,已用的内存是紧凑的排序的这时候只要指针往下一个空闲内存位置指向就行,这叫''指针屏障"; ...

2019-07-18 20:19:42 227

原创 jvm内存模块

1;程序计数器: 线程私有的,当处理器切换线程的时候,该线程上下文运行到哪都是根据程序技术器的值,来去获取字节码指令.一般来说计数器的值是字节码指令地址;当线程执行native方法的时候,计数器的值为null; 程序计数器这个内存模块是唯一没有内存溢出的情况的 2java虚拟机栈: 线程私有的,存储的是栈桢,每个方法就是一个栈桢,所以栈桢包含了局部变量表,方法出口,操作数栈.其中...

2019-07-17 17:51:29 243

原创 jdk api

jdk的cloneable接口: object类有clone()方法,要想使用该方法必须实现cloneable接口,不然会报错 clone()方法作用是克隆一个本身的对象; java中的assert() 方法:断言方法,方法里是布尔表达式,如果代码里写了assert(false)运行到这行会抛出错误; ...

2019-06-29 16:44:05 94

原创 ServletContainerInitializer注册组件应用

servletcontainerinitializer 是servlet3.0以上版本才有的; 可以用来插拔式注册组件: 原理: Tomcat容器的ServletContainerInitializer机制的实现,主要交由Context容器和ContextConfig监听器共同实现,ContextConfig监听器负责在容器启动时读取每个web应用的WEB-INF/lib目录下包含的jar包...

2019-02-01 17:09:57 475 1

原创 spring-整合mybatis源码注解的方式--简单解析

现在主流的spring整合mybatis用注解@MapperScan("com.cat.mapper") 这个注解里包含了注解@Import(MapperScannerRegistrar.class) 在spring源码那篇讲到.扫描到注解@import的时候.会处理里面的class 这里的MapperScannerRegistrar implements ImportBeanDefinit...

2019-01-11 18:24:58 652

原创 spring 的一些小知识

自动装配:五种形式 1、no  默认不使用; 2、byName  通过属性的名字的方式查找JavaBean依赖的对象并为其注入; 3、byType  通过属性的类型查找JavaBean依赖的对象并为其注入。使用Seter方法为其注入。   4、constructor 与byType的区别在于它不是使用Seter方法注入,而是使用构造子注入。  5、autodetect  在byType和cons...

2019-01-11 16:45:32 172

原创 spring5.0日志体系

 市场上日志有很多:  jdklogging  简称jul   log4j         common-logging 简称 jcl    slf4j 等   其中 jul 和log4j是不可扩展的,好比如java中的一个类 jcl 是扩展的 好比如java中的接口 : 源码中 jcl 是for循环去判断 项目中是否有先有log4j .有就用.没有就用jul14(jdk1.4)....

2019-01-07 14:05:20 683

空空如也

空空如也

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

TA关注的人

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