自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BIO和NIO

显然,NIO编程难度远大于BIO,不仅需要熟悉非阻塞io、多路复用相关的api,还需要熟练掌握多线程,甚至可能需要解决应用层的问题,不像BIO每个连接有自己独立的线程,如果用NIO开发类似http这种请求响应类的协议,请求和响应的对应关系必须仔细设计一番。以tcp为例,主要的io操作包括建立连接、读、写,服务端监听一个端口,多个客户端可以来连接,同一个主机也可以通过多个端口来连接服务端,只要保证客户端的ip和端口不完全相同即可建立一条连接。,多路复用器执行select方法筛选出有io事件的socket,

2024-06-27 21:05:36 601

原创 Java应用内存区域

附:OOM的问题排查,在java应用启动时可以添加参数-XX:+HeapDumpOnOutOfMemoryError和-XX:HeapDumpPath=来设置当应用出现OOM时自动生成内存快照,也可以在运行时使用jmap -dump:format=b,file= 命令来生成当前内存快照dump文件,使用工具 VisualVM或MAT分析dump文件可以看出在当时各类型对象的数量和大小,找到大对象等,从而推测出内存泄露的位置。6、直接内存:记得释放。

2024-06-16 17:43:27 621

原创 Java锁和分布式锁用法浅析

这里的num自增自减虽然在java层面只有一行代码,但是在cpu执行时其实是多个步骤,至少包括读取数值、计算加1、写回内存,而这中间便可能发生线程切换,例如:线程一读取了num的值为0,然后线程二也读取了num的值为0,线程一计算+1再写回内存值为1,线程二再计算-1然后写回内存值为-1,所以明明应该得到结果为0,但是这里得到的值却是-1,这里最本质的问题就是。的,即由一个线程来执行从外部传进来的诸多命令,一个命令一个命令排着执行,先到的先执行,后到的后执行。Java代码层面最简单的方法就是加锁,

2024-04-26 23:53:26 1010 3

原创 JDK动态代理用法简介

答案是自己想办法提供原始类的对象,图示中我自己new了一个原始类对象obj,然后在invoke方法中直接用反射调用,invoke方法的第二个参数method,就是对应的原始方法,第三个参数就是这个method的实参,这两个参数值都是在proxyInstance调用方法时才动态确定。c、一个InvocationHandler对象,我这里用了匿名内部类,当然可以专门单独写一个类。时,实际都是执行我们的InvocationHandler对象的invoke方法,这就相当于把原始的方法全都给替换了。

2024-04-15 15:06:53 313

原创 Spring启动流程解析

主要是准备工作,在后面执行BF后置的时候,我们会发现context有的属性莫名奇妙的已经有值了,比如beanFactory对象,那么他们的值很可能就是在这里产生的,但是SpringBoot的话是在context构造器中new出的beanFactory,这些逻辑根据context的类型不同而异,有些xml类的context在这里解析了xml并生成beanDefinition存入beanDefinitionMap中。,SpringBoot的tomcat是在这里启动的,端口在此正式监听。

2024-04-10 17:46:33 795

原创 SpringBoot配置文件优先级解析

其实以上的优先级介绍并没有覆盖所有的配置文件类型和配置形式,譬如我们还可以在classpath的config目录中放一个application.yaml,这个文件的优先级应该在哪个位置呢?来自各个地方的配置,最终都存在了这个List中,所以我们会得到一个有序的配置文件列表,其中每一个元素对应一个配置文件。所以其实一共有几种类型的配置文件并不确定,我们可以自行增加,如果项目使用了配置中心,可以查看到其配置数据在List中的位置相对靠前,也就是为什么我们配置中心里的配置优先级高于jar包中的配置。

2024-02-15 23:37:00 1766

原创 Spring循环依赖源码解析

为什么会出现循环依赖?Spring怎样使用三级缓存解决循环依赖?为什么是三级缓存,只使用两级可以吗?

2024-01-24 14:22:27 1069

原创 Spring Bean的生命周期概要

Spring Bean的生命周期概要

2024-01-12 17:40:00 368

原创 SpringBoot启动refresh()流程概要

​​​​​​​。

2024-01-09 17:57:44 393

原创 SpringBoot启动流程概要

SpringBoot启动流程要点总结

2024-01-05 17:41:27 408

空空如也

空空如也

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

TA关注的人

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