自定义博客皮肤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)
  • 资源 (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

全国省市县表和数据.rar

全国省市县表和数据sql

2021-03-09

空空如也

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

TA关注的人

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