自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

闻臻

一起学习,共同进步

  • 博客(33)
  • 收藏
  • 关注

原创 SpringBoot自动装配

2022-07-22 16:03:09 2317

原创 Synchronized原理

2022-07-22 16:01:17 477

原创 地基代码——Locale环境处理

2022-07-18 16:31:19 132

原创 地基代码——Cookie工具

2022-07-18 16:27:26 289

原创 地基代码——SSO

2022-07-18 16:24:56 133

原创 Redis最常问的三个问题:缓存雪崩、击穿、穿透

2022-07-16 13:58:58 196

原创 地基代码——线程池

2022-07-08 14:56:27 200

原创 地基代码——获取本地线程用户

2022-04-08 15:26:23 262

原创 地基代码——Spring 注入

2022-04-08 15:24:48 75

原创 地基代码——json转换工具类

2022-04-08 15:23:56 234

原创 地基代码——日志切面

2022-04-08 15:22:38 87

原创 基地代码——简单分布式锁

2022-04-08 15:20:55 144

原创 地基代码——自定义注解

2022-04-08 15:16:41 243

原创 地基代码——分页插件

2022-04-08 15:11:58 207

原创 Dubbo原理

dubbo服务暴露:ServiceBean implements InitializingBean, ApplicationListener<ContextRefreshedEvent>void afterPropertiesSet(); setApplication(); ...void onApplicationEvent(E event); export(); doExport(); doExportUrl()...

2021-09-16 15:32:11 101

原创 Spring随记(一)

Spring之AOP顺序 S4之正常顺序: @Before ==》@After ==〉@AfterReturning S4之异常顺序: @Before ==》@After ==〉@AfterThrowing ******************************************** S5之正常顺序: @Before ==》@AfterReturning ==〉@After S5之异常顺序: ...

2020-11-20 10:48:44 97

原创 深入理解AQS底层源码(二)——lock.unlock()

接着上一次线程2和线程3park后,需要unpark()唤醒。第一步:线程1执行完成后,调用lock.lock()方法,实际调用的是sync.release(1)方法;第二步:线程1调用底层的release(int arg)方法,走到tryRelease(arg)方法;getState() = 1,因为之前线程1加锁后state设值为1,它也是volatile修饰的。Thread.currentThread() = 线程1,c = 0,free = true,setState(0),返回

2020-11-19 17:16:20 140

原创 深入理解AQS底层源码(一)——lock.lock()

前期准备:1、可重入锁(递归锁):外层使用锁后,在内层仍然可以使用锁。同一个线程可以获取多个同一把锁。优点:避免死锁。特点:锁对象是同一个对象2、LockSupport:LockSupport.park(); LockSupport.unPark(Thread t);类比 synchronized wait notify ; lock.newCondition await signalwait notify必须和synchronized搭配使用且先wait后notify;awai...

2020-11-19 15:30:01 1279

原创 CPU占用过高定位思路分析

2020-10-20 16:25:56 709

原创 高并发下的ThreadLocal

通常 ThreadLocal 可以提供线程内的局部变量,确保每个线程都有自己的专属变量值。但在使用线程池的场景下,线程经常会被复用,同一个线程可能会处理多个业务会话场景(比如多个用户 session),这样就可能会造成后续业务逻辑上的混乱和错误。另外,尽管 ThreadLocal 底层利用弱引用和其它机制来回收资源,ThreadLocal 使用不当时仍可能会产生内存泄漏。ThreadLocal 使用本身实例作为key将用户的值保存在 Thread 的 ThreadLocalMap 中,如果一个 T.

2020-10-20 16:25:24 1105

原创 jvm调优相关随记

1、jvm的参数类型:标配参数,如:java -versionX参数XX参数(重点)---------------------------------------------------查看正在运行中的Java程序,它的jvm参数是否开启,具体值为多少?jps -ljinfo -flag jvm参数 进程编号 (如,jinfo -flag PrintGCDetails 进程编号)-------------------------------------------------

2020-07-03 12:40:16 201

原创 7种垃圾回收器介绍

先看图:新生代收集器Serial收集器Serial收集器是采用复制算法的新生代收集器,一个单线程收集器,只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是它在进行垃圾收集时,必须暂停其他所有的工作线程,直至Serial收集器收集结束为止(“Stop The World”)。这项工作是由虚拟机在后台自动发起和自动完成的,在用户不可见的情况下把用户正常工作的线程全部停掉。ParNew 收集器ParNew收集器是多线程的,它也是一个新生代收集器。其余行为包括Serial收集

2020-07-02 16:13:30 4211

原创 MySql高级部分总结(一)

1、MySQL的配置文件:2、MySQL的主要存储引擎:对比项 myisam innodb 外键 不支持 支持 事务 不支持 支持 行/表锁 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作 缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响 关注点 节省资源、消耗少、简单业务

2020-06-20 14:17:22 224

原创 Redis-避免缓存穿透的利器之BloomFilte

Bloom Filter 概念布伦过滤器实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。Bloom Filter 原理布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素

2020-06-16 17:21:56 269

原创 Map集合相关总结

1、Collections.synchronizedMap是怎么实现线程安全的?答:在SynchronizedMap内部维护了一个普通对象Map,还有排斥锁mutex。如图:我们在调用这个方法的时候就需要传入一个Map,可以看到有两个构造器,如果你传入了mutex参数,则将对象排斥锁赋值为传入的对象。如果没有,则将对象排斥锁赋值为this,即调用synchronizedMap的对象,就是上面的Map。创建出synchronizedMap之后,再操作map的时候,就会对方法上锁。2、为啥 Ha

2020-06-15 16:35:19 222

原创 8种锁

一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待,换句话说,某一个时刻内,只能有唯一一个线程去访问这些synchronized方法锁的是当前对象this,被锁定后,其它的线程都不能进入到当前对象的其它的synchronized方法加个普通方法后发现和同步锁无关换成两个对象后...

2020-05-06 16:22:10 154

原创 线程间的通信_B

2020-05-06 14:54:14 81

原创 线程间的通信_A

2020-05-06 14:28:41 131

原创 Linux下常用命令详解随记

Linux常用命令:整机 top 查看 CPU MEM load average:系统的负载均衡,三个值分别代表1分钟,5分钟,15分钟,系统的平均负载值。 三个值相加除以3*100%>60%,系统负担压力重 uptime,系统性能精简版CPU vmstat vmstat -n 2 3 查看CPU,每...

2019-12-20 14:27:40 132

转载 JDK动态代理的实现及原理

https://blog.csdn.net/zhangerqing/article/details/42504281动态代理,听上去很高大上的技术,在Java里应用广泛,尤其是在Hibernate和Spring这两种框架里,在AOP,权限控制,事务管理等方面都有动态代理的实现。JDK本身有实现动态代理技术,但是略有限制,即被代理的类必须实现某个接口,否则无法使用JDK自带的动态代理,因此,如果...

2019-12-19 14:03:24 96

原创 OutOfMermory系列

java.lang.StackOverflowError(方法的深入的调用加载,递归调用,栈内存512m~1024m)java.lang.OutofMemoryError: Java heap space(堆内存不够用导致)java.lang.OutofMemoryError: GC overhead limit exeeded(GC回收时间过长,几乎一直在进行垃圾回收)java.lang....

2019-12-09 12:13:05 209

原创 CAS,自旋锁底层原理

底层原理:自旋锁Unsafe类调用操作系统底层资源执行任务valueOffset = unsafe.objectFieldOffset (AtomicInteger.class.getDeclaredField("value"));像C的指针一样直接操锁内存unsafe.getAndAddInt(this,valueOffset,1);this:当前对象valueOff...

2019-12-09 12:11:54 1162

原创 线程池7个核心参数及执行流程

线程池核心参数:1、corePoolSize:线程池中的常驻核心线程数2、maximumPoolSize:线程池能容纳同时执行的最大线程数,此值必须>=13、keepAliveTime:多余的空闲线程的存活时间当前线程池数量超过corePoolSize时,当空闲的时间达到keepAliveTime值时,多余的空闲线程会被直接销毁直到只剩下corePoolSize个线程为止...

2019-12-09 12:08:26 4255

空空如也

空空如也

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

TA关注的人

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