- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 CountDownLatch实现原理
文章目录前置知识构造器怎么阻塞当前线程的怎么唤醒被阻塞线程 public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(3); for (int i = 0; i < 3; i++) { new Thread(()->{ countD
2022-01-18 16:07:24
373
原创 建造者模式
文章目录1、2、使用案例2.1 BeanFactoryAspectJAdvisorsBuilder1、2、使用案例2.1 BeanFactoryAspectJAdvisorsBuilder
2022-01-12 15:47:20
167
原创 抽象工厂模式
文章目录1、2、使用案例2.1 AopProxyFactory1、2、使用案例2.1 AopProxyFactory抽象public interface AopProxyFactory { AopProxy createAopProxy(AdvisedSupport config) throws AopConfigException;}实现public class DefaultAopProxyFactory implements AopProxyFactory, Serializ
2022-01-12 15:20:11
248
原创 @Async 深度源码解析
文章目录1、实现流程2、源码解析2.1 @EnableAsync2.2 AsyncAnnotationBeanPostProcessor2.3 AnnotationAsyncExecutionInterceptor3、深度解析3.1 怎么判断类是否需要被代理3.2代理对象怎么执行AnnotationAsyncExecutionInterceptor的1、实现流程@EnableAsync 开启异步注解,注入BeanPostProcess对类中有方法带有@Async的进行拦截创建代理类最终会由Ann
2022-01-11 23:53:52
377
原创 Lock锁实现
文章目录一、ReentrantLock结构源码NonfairSync一、ReentrantLock结构SyncNonfairSync 非公平锁FairSync 公平过//默认非公平锁public ReentrantLock() { sync = new NonfairSync();}//公平锁public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();
2022-01-10 15:51:12
414
原创 AQS 队列同步器
文章目录一、AbstractQueuedSynchronizer是什么?二 、类结构AQSNode一、AbstractQueuedSynchronizer是什么?队列同步器Lock锁实现依赖BlockingQueue阻塞队列实现依赖ThreadPoolExecutor线程池实现依赖阻塞队列线程辅助类:CountDownLatch,CyclicBarrier,Semaphore的实现依赖发现这些东西都是面试中:并发,juc方面常见的面试题。 他们都直接或间接依赖AQS。AQS很重要!!
2022-01-10 15:17:15
252
原创 Condition精准唤醒原理
文章目录Await当前线程进入等待加入waiter队列完全释放锁SignalAll总结前置知识:Lock锁的实现原理,AQSAwaitpublic class ConditionObject implements Condition, java.io.Serializable { //队列头 private transient Node firstWaiter; //队列尾 private transient Node lastWaiter;
2022-01-10 14:33:14
395
原创 BeanPostProcess
文章目录一、BeanPostProcessor1.1 postProcessBeforeInitialization1.2 postProcessAfterInitialization二、MergedBeanDefinitionPostProcessor2.1 postProcessBeforeInstantiation2.2 postProcessAfterInstantiation三、InstantiationAwareBeanPostProcessor一、BeanPostProcessor1.1
2021-10-28 16:30:32
113
原创 源码:Springboot的启动流程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言入口一、SpringApplication构造器二 run前言springboot2.5.6版本入口public static void main(String[] args) { SpringApplication.run(KafkaMain.class, args);}一、SpringApplication构造器public SpringApplication(ResourceLoader re
2021-10-28 14:36:21
98
原创 es检索响应字段
文章目录一、source二、fields三、Doc value fields四、Script fields五、总结官网地址一、source文档_source在 Lucene 中存储为单个字段。这种结构意味着_source即使您只请求其中的一部分,也必须加载和解析整个对象二、fieldsPOST my-index-000001/_search{ "query": { "match": { "user.id": "kimchy" } }, "fields":
2021-10-21 14:43:36
424
转载 jvm堆内存
文章目录堆内存为什么不建议超过32GB堆内存为什么不建议超过32GB在Java中,所有对象都分配在堆上并由指针引用。普通的对象指针(OOP)指向这些对象,传统上它们是CPU本地字的大小:32位或64位,取决于处理器。对于32位系统,这意味着最大堆大小为4 GB。对于64位系统,堆大小可能会变得更大,但是64位指针的开销意味着仅仅因为指针较大而存在更多的浪费空间。并且比浪费的空间更糟糕,当在主存储器和各种缓存(LLC,L1等等)之间移动值时,较大的指针消耗更多的带宽。Java使用称为压缩oops的技巧
2021-10-20 12:02:46
72
原创 Spring类
Spring类分析BeanFactory遗留问题BeanFactory遗留问题这边的getbeanProvider是干嘛的?不是有getBean了么,为什么还要有getbeanProvider上面部分方法里有参数ResolvableType ,这个是什么,和其他的区别在哪里?public interface BeanFactory { //区分factoryBean和普通bean,举个例子:如果myBean是个factoryBean,那么get &myBean将获得这个工厂实例
2021-08-03 22:37:59
322
原创 SpringBoot启动流程(一)
文章目录前言1、主启动类2、SpringApplication2.1、实例化SpringApplication做了什么:2.1.1 SpringApplication实例化过程2.1.1 实例run方法前言1.springboot的自动装配,是我们可以简单的在主启动类上使用@SpringbootApplication注解2.main方法SpringApplication调用静态run方法就可以实现实现一个简单的应用1、主启动类@SpringBootApplicationpublic clas
2021-07-28 23:59:05
148
原创 ApplicationRunner
ApplicationRunner前言一、是什么?二、怎么用?三、为什么?前言是什么?怎么用?为什么?一、是什么?@FunctionalInterfacepublic interface ApplicationRunner { /** * springboot启动流程最后一步,之后回调 * @param args incoming application arguments * @throws Exception on error */ void run(Applica
2021-07-28 19:02:31
561
原创 IO概念
文章目录一、什么是IO?二、IO交互一、什么是IO?IO有三种、通常我们说的IO指的是后两者内存IO网络IO磁盘IO我们都知道linux世界里、一切皆文件、而文件是什么呢?文件就是一串二进制流而已、不管socket、还是FIFO、管道、终端、对我们来说、一切都是文件、一切都是流、在信息交换的过程中、我们都是对这些流进行数据的收发操作、简称为I/O操作(input and output)、往流中读出数据、系统调用read、写入数据、系统调用write、不过话说回来了、计算机里有这么多的流、
2021-07-23 14:59:14
729
原创 HTTP是什么
HTTP一、HTTP二、请求三、响应一、HTTPHttp : Http 允许 Web 服务器和浏览器通过 Internet 发送并接受数据, 是一种基于”请求—响应”的协议, 客户端请求一个文件, 服务器端对该请求进行响应. Http 使用可靠的 tcp 连接, tcp 协议默认使用 tcp 80端口, http协议的第一个版本是 http/0.9, 后来被 http/1.0取代, 随后 http/1.0又被http/1.1取代, http/1.1 定义域 RFC(Request for Comme
2021-07-23 13:38:05
191
原创 JMM 内存模型
JMM 模型文章目录JMM 模型一、可见性二、有序性三、原子性jmm 体现在以下三个方面原子性 保证指令不会受到上下文切换的影响可见性 保证指令不会受到cpu缓存的影响有序性 保证指令不会受并行优化的影响一、可见性不会停止的程序public class Visibility { static boolean mark = true; public static void main(String[] args) throws InterruptedException
2021-06-23 15:27:13
46
原创 ES同义词
配置mappingPUT /megacorp{ "mappings": { "properties": { "name":{ "type": "text", "analyzer": "ik-index" } } }, "settings": { "analysis": { "filter": { "local_synonym" : { "ty
2021-03-10 10:06:41
281
原创 Spring
bean的生命周期创建 -------初始化--------销毁创建: 单实例: 在容器启动的时候创建对象 多实例: bean在获取的时候创建对象初始化: 对象创建完成,并赋值好,调用初始化方法销毁: 单实例: 在容器关闭时销毁 多实例: 容器不会管理这个bean后置处理器BeanPostProcessor bean后置处理器在bean初始化前后进行一些处理工作postProcessBeforeInitialization:在bean初始化之前工作postProcessAfte
2020-10-30 10:52:50
74
原创 MySQL索引
什么是索引:1.索引是一种排好序的,帮助我们快速查询的一种数据结构2.索引实际上也是一张表,也要占用次哦按空间,mysql在增删改查时不仅要保存数据,还要保存一下索引文件3.mysql中的聚簇索引,复合索引,唯一索引默认都是使用B+数索引B+Tree是BTree的演变,一种多叉平衡树,非叶子节点不存储真实的数据,只存储指搜索方向的数据项. (二分查找)单列索引唯一索引复合索引聚簇索引索引优化Explain + SQL语句怎么避免索引失效1.不遵循左前缀原则2.在索引列上做任
2020-10-29 20:39:40
46
原创 Swagger基本使用
Swagger引入依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</grou
2020-10-27 10:36:52
109
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人