- 博客(276)
- 资源 (7)
- 收藏
- 关注
原创 Java IO的演进
一个系统的性能遵循木桶原理,IO的性能的高低直接影响着一个系统的吞吐量,尤其在高并发的场景下,IO的优化就是那个key-point之一。
2021-01-21 20:26:31 510 1
原创 MySql主从复制及延迟
主从延迟问题又称为“过期读”问题,是数据一致性问题;另外,对于MySQL数据库来说,任何时刻尽量不允许大事务的执行;若要执行,则将大事务拆成一个个小的子事务来执行,这是最基本心法口诀。
2020-11-27 17:37:40 512
原创 MySql死锁分析
在我们使用锁的时候,有一个问题是需要注意和避免的,我们知道,排他锁有互斥的特性。一个事务或者说一个线程持有锁的时候,会阻塞其他线程的获取锁,这个时候会造成线程的阻塞和等待,如果说是循环等待,就有可能造成死锁。
2020-11-27 10:36:33 410
原创 Innodb中的锁
目标:并发场景下加锁保证数据访问的安全性的同时,又要保证性能。无锁编程: 自旋锁 自适应自旋锁 无锁:cas 加锁的优化: 特点: 粒度控制的更细 减少锁的阻塞 一种试探性的算法 — 显的更加智能 锁消除 锁粗化 偏向锁:只有a去竞争,重入锁的实现; 轻量级锁:a和b交替竞争 - aqs 重量级锁【真正的加锁】:多个线程并发去竞争 - aqs 粒度锁..
2020-11-26 17:22:43 323
原创 CAS思想
从锁的角度出发看CAS机制,在多任务环境中,如果有对共享变量的写操作,一般想到都会加锁,加锁固然没错,但是对于性能来说是一个很大的消耗,会使线程阻塞。而基于CAS机制的乐观锁,实现很简单,在高并发中,对于程序性能的提升有很大的帮助,思想很重要。
2020-11-25 14:48:36 1068
原创 FutrueTask原理分析
通常一个请求分为请求-处理-返回,如果通过异步线程去完成一个任务,我们通常会选择FutureTask +Submit+ Callable()来实现获取返回值。
2020-11-25 09:44:18 1023
原创 ThreadLocal的原理
ThreadLocal是一种线程隔离机制,为我们提供了另一种解决线程并发访问的问题,利用副本机制解决了并发变量访问安全,采用了空间换时间的策略。
2020-11-24 11:47:25 547 1
原创 再聊线程池原理
面对资源限制,为了更好的掌握充分利用有限的资源,所以有很多的池化技术,比如对象池,线程池,连接池等等,主要是用来更好的利用和控制池子里的资源,不至于线程过多导致系统内存,cpu,网络资源不足,过少又浪费cpu性能。
2020-11-23 23:16:39 255
原创 降级限流
对于高可用的服务,除了尽量保证自身的服务的可靠性外,还的防止不被上游压垮,控制上游的访问一般使用限流策略,避免被下游服务不可用拖垮,一般采取降级策略,只有更好的了解和控制上下游才能使自身的服务的稳定性增强。
2020-11-23 19:37:39 1276
原创 SpringBoot自定义starter
Starter主要是在根据条件帮我们做Bean的自动装配。包括包扫描,加载,实例化和注册Bean,提供一种开箱即用的组件。
2017-06-04 17:40:21 910
原创 SpringBoot的启动原理
SpringBoot最终还是对Spring框架的封装,主要任务还是在做(IOC)控制反转,(DI)依赖出入和(DL)依赖查找,实现自动化装配,一切交给spring托管,更好的完成各功能的集成。
2017-05-09 19:32:05 1695
原创 Spring的AOP流程
一种技术的诞生,主要是思维模式的改变,有C的面向过程,到C++/java的面向对象,到面向类,面向方法编程的AOP,最后到面向服务编程的微服务。
2017-05-07 19:11:08 1908
原创 Spring的IOC初始化流程
Spring的出现就是为了更好的管理Bean,而IOC/DI/DL又是Spirng的核心,IOC在Spring中可以简单的理解为一个Map容器,帮我们管理控制着Bean的生命周期。
2017-05-07 19:06:09 900
原创 了解线程池
并发处理的广泛应用是使得 Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类压榨计算机运算能力最有力的武器。
2016-08-31 21:50:10 2165 3
原创 线程的启动与停止
中断线程仅仅只是优雅的打个招呼,改变一个状态位,具体怎么做完全取决于线程自己,让程序有时间去完成一些未完成的事情,释放资源等,温柔以待。
2016-08-31 21:25:30 1987 1
原创 了解线程
并发处理的广泛应用是使得 Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类压榨计算机运算能力最有力的武器。线程也是一把双刃剑,帮我们充分利用cpu高效快速的完成任务的同时也带来了线程安全和性能相关的问题。
2016-08-30 16:36:50 1641 2
原创 jvm性能监控与问题分析工具
工欲善其事,必先利其器。工具的本身还是底层命令的实现,没什么神奇的地方,只是对命令的封装图形化展示让我们使用更加高效和直观。
2016-07-13 19:38:55 3206
原创 强-软-弱-虚引用
如果reference类型的数据中存放的数值是另外一块内存的起始地址,就称这块内存代表着一个引用。为了更好的控制对象的生命周期,提高内存利用率,JDK1.2 之后,java扩充了引用的概念,将引用分为强引用/软引用/弱引用/和虚引用四种。
2016-07-12 16:42:34 4737
原创 垃圾回收算法
c++和java之间有一堵由内存动态分配和垃圾收集技术所围成的墙。墙外面的人想进去墙里面的人想出来。Java/JVM通过gc营造出了一种“无限内存”的假象,正式由于gc的存在,程序员才这么肆无忌惮。
2016-07-12 16:31:36 1506
原创 explain详解
explain(Execution plan cost)就是优化器做的事情。执行计划,很重要!! 只有明白sql是如何执行的,才能更好的优化,先了解它,然后才能优化它,explain就是和mysql优化对话的大门和打开优化器门的钥匙~
2016-07-12 16:12:20 2717
原创 了解between和limit及count(*)
设计表结构或者是创建索引的时候,我们的目标就是在满足当前需求的情况下,减少对数据库的io次数,避免大量数据的获取及排序,减少资源的消耗。
2016-07-10 15:31:01 2108
quartuesii安装向导文件
2014-10-28
linux及c语言库函数精华大全
2014-04-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人