- 博客(11)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 jdk8 stream与parallelStream实现源码阅读
从java 8以后,jdk底层新增了Stream API,使我们写出更简洁、干净的代码来对集合、数组等进行操作,先简单介绍下流的几个概念:Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。 数据源流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。 聚...
2019-07-22 23:56:41
2054
4
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Spring源码解读
Spring Framework源码地址:https://github.com/spring-projects/spring-framework从目录结构可以看出整个Spring框架都遵从模块化设计的思路,总共分为20多个模块,如下图所示:从上图可以看出:Spring主要分为五个部分:1、测试模块:主要实现了Spring的Junit等测试框架。2、Spring核心容器:里面...
2018-10-18 22:51:39
9286
1
原创 dubbo源码之SPI实现
引言 SPI机制是JDK5出现的新特性,很多框架用它来做服务发现,简单的说就是根据接口加载实现类,目的是为了实现开发的灵活性,实现可插拔式的系统架构。 但JDK自带SPI实现比较简单,存在以下缺陷,所以dubbo自己通过自己实现类似于JDK的SPI机制来达到功能的增强。JDK实现SPI方式中,会加载实例化所有配置在META-INF/services/Service文件中的Service接口实现,一旦应用中某些实现初始化耗时长并且也不会用到的话,会浪费资源,无...
2020-06-18 19:35:31
279
原创 数据库使用总结
传统数据库的几大特性 传统数据库服务系统需要完全实现对事务的支持。 事务的四大特性(ACID)Atomicity(原子性):一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。 ...
2019-05-12 20:59:32
428
原创 Springboot学习
Springboot是基于Spring框架封装的,用于简化Spring应用的配置流程,非常适合用来做快速开发。Springboot的几大特性: 1、快速构建标准Spring应用 2、不需要服务端容器即可构建Web服务 3、自动配置Spring及其他第三方框架模块一个Springboot工程的目录结构如下:从上图可以看出,一...
2018-10-19 21:08:23
162
原创 线程安全
线程安全包括多线程环境下,各个线程执行时,临界资源的安全性;也包括,如何让确定高并发下,线程数量的创建,在有限的资源下如何让达到计算机最优效率。线程的基本概念 1. 线程的定义 在计算机中,线程是这样定义的:线程是计算机运行的基本的单位,一个进程拥有多个线程,多个线程共享同一个进程拥有的系统资源。而在Java中,我们可以将线程定义为:计算机指令的集合,可...
2018-10-14 16:38:28
143
原创 Java中几种代理实现的方式
一、问题来源 最近在做项目的过程中,遇到一个问题,随着项目的日益庞大,组件间关系依赖复杂,项目的运行日志在多线程中杂乱无章,问题的定位与排查越来越困难;因此,团队讨论后决定使用日志聚合工具,对同一业务的单个流程的日志进行聚合,为了方便日志聚合,团队决定对项目日志的输出进行增强,对每个运行流程添加相同的traceId输出。 我们的项目采用了目前最流程的日志框架log4j进行...
2018-09-08 21:28:40
2377
原创 Java中static、final、volatile、synchronized、transient、strictfp关键字的使用及原理小结
1、static: static可以用来修饰class、field、method等,被static修饰的关键字都存在于堆内存中,也即其生命周期一般是整个应用生命周期,static修饰的field又叫做全局变量,可以在整个类包括其子类中被使用,static修饰的class一般用于静态内部类,是一个类的静态成员,外部可以直接通过类名.静态内部类名来访问,可用new关键字,保证该类所有实例共享一...
2018-07-26 21:08:50
714
原创 Java字节码学习
概述我们都知道,Java是一种编译运行语言,Java编译器(javac)会将我们编写的部分源文件(*.java)文件编译成(*.class),然后再由Java虚拟机(JVM)将编译好的class文件加载进入JVM内存,生成相关的Object对象,供Java程序调用,而其中关键的一步是,class文件到底是存放了那些东西,我们可以看到是Java字节码信息。懂得Java字节码信息,我们可以站在一个...
2018-07-26 21:00:40
1162
原创 基于Hotspot的VM内存模型及GC理解
Hotspot VM内存模型:主要分为栈、堆、方法区栈空间:主要分为Java虚拟机栈和本地方法栈,其中Java虚拟机栈的生命周期与当前线程相同。每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链表、方法出口信息等。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。本地方法栈主要是指执行JNI方法的栈空间。栈中存储的数据包括基本数据类型的值或者该...
2018-04-16 18:19:37
301
原创 HashMap源码解读
HashMap:HashMap是最常用的Map结构。具体的实现是以一个Node<K,V>为的静态内部类的数组来实现,每个Node可能是Node的链表或红黑树结构。初始化容量为16或不小于自定义initialCapacity最小二进制数或最大容量,从JDK8之后,小于8个元素是链表存储结构。大于8个并且整个table的容量大于64个之后变成了红黑树结构。HashMap每次增加容量将原数组...
2018-04-04 11:46:26
248
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人