
Java
小鑫鑫大猩猩
逆水行舟,不进则退
展开
-
BIO和NIO
阻塞:放弃CPU【以socket为例】BIO:阻塞IO,accept和read都会阻塞不支持并发,想要并发就需要多线程。每个连接都需要一个线程来处理(子线程自己阻塞),有可能一万个连接里面只有一千个有数据交互,还有九千个可能只是仅仅连接服务器但是什么事都没做,所以会造成大量的资源浪费NIO:单线程并发,需要处理accept和read阻塞问题。ServerSocketChannel类提供了API解决,每个连接放到list里面,轮询list中的连接是否有数据交互。问题1:如果list中有一万原创 2020-09-27 11:40:53 · 81 阅读 · 0 评论 -
Spring源码详解
Spring源码分析new AnnotationConfigApplicationContext(ExtConfig.class);this();//创建BeanFactory,加载一些内置的处理器register(componentClasses);//扫描并保存ExtConfig的定义信息都是做的预处理和解析工作refresh();容器的创建和刷新工作(重要内容)prepareRefresh();刷新前的预处理initPropertySources();初始化一些属性配置,空原创 2020-09-21 10:48:13 · 322 阅读 · 0 评论 -
Spring的IOC、AOP、源码分析笔记
GroupID是项目组织唯一的标识符,比如我的项目叫test001,那么GroupID应该是com.lixiaoming.test001,域名.公司名.项目名ArtifactID就是项目的唯一的标识符, 一般是项目名-xxx,比如test001-modelGroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。一般GroupID就是填com.info.test.这样子。原创 2020-09-21 10:47:19 · 106 阅读 · 0 评论 -
包装类Integer底层剖析
@Testpublic void test4() { Integer a = new Integer(10); Integer a1 = new Integer(10); System.out.println(a == a1);//false,比较的是两个不同对象的地址,所以肯定不同 Integer b = 10; Integer b1 = 10; System.out.println(b == b1);//true, // 首先b、b1是自动装箱原创 2020-08-06 18:53:46 · 320 阅读 · 0 评论 -
JAVA8新特性(Lambda表达式,函数型接口,Stream API,新时间)
Lambda表达式Lambda基础语法Java8中引用入了一个新的操作符:“->”,该操作符称为箭头操作符或者Lambda操作符。箭头操作符将Lambda表达式拆分成两部分:左侧:Lambda表达式的参数列表右侧:Lambda表达式的要执行的功能,即Lambda体语法格式:无参数,无返回值Runnable r = () -> System.out.println("Hello World");一个参数(小括号可以省略不写),无返回值Consumer原创 2020-08-04 11:17:13 · 236 阅读 · 0 评论