- 博客(10)
- 收藏
- 关注
原创 记录一次蛋疼的盏溢出问题
情景: 在程序运行期间莫名会出现StackOverflowError,(PS:长时间运行,数据量变大,此处由于不方便透露业务层面的东西所以将就哈啦) 所谓的盏溢出是应为在当前线程运行期间不断的增加线程中的引用量举个栗子: 首先为了方便我们将jvm的线程容量设置小一点即-Xss100kb 其次上代码!!!!但是要注意的是我们要用八大基本类型这样才能造成栈溢出,当然这地方我会一次性将常见的堆溢出也搞出来 //栈溢出栗子 Integer i = 0; @Test public void tes
2020-12-24 15:32:47
218
2
原创 手撸tomcat一点思路值撸tomcat猫
论撸猫编程流程 之所以tomcat可以接受到请求无非他内部封装了有一个Socket【不管你怎么改变封装都需要Socket来接受浏览器发出的请求】 Socket无非内部封装的有端口号,线程池之类的 我们通过Socket接受到数据后将对应的数据流转换为我们能看懂的字符 当然对于网络请求还必须要有req与res对象,这两对象的规定者是J2EE,而tomcat是实现了他,req与res有数据无非就是将我们拿到的Socket内部的字符解析封装成req与res中的数据【说到底他还是通过string进行语法解析】
2020-12-03 15:33:54
289
原创 手撸JDK之Semaphore那点事
前置思想 首先明确一点,削峰限流不一定非要用MQ队列,其实JDK就给我们提供了良好的环境Semaphore他主要作用是以【时间换空间】也就是我们现在处理不了的请求让他稍等一会,之后我们闲暇的空间了在处理他,此处主要是JDK已经实现了削峰限流所以手撸一个让自己更加深刻。 主要思想 Semaphore无非就是将不能处理的请求放入队列中,在可以处理的时候拿出。 主要使用到的类 LinkedBlockingQueue:此处当然少不了队列,当然此队列还有一个作用,谁哪的令牌谁放回去 AtomicInteger:主要
2020-09-22 16:16:40
235
原创 手撸JDK之ReentrantLock锁那点事
前置思想 首先明确一点ReentrantLock与synchronized最大的不同点在于synchronized是锁住了对象的头部,而ReentrantLock是类似于我们买一把锁,锁住我们不想因为多线程下导致资源的原子性 ,可见性的问题,在明确这一点时我们的锁其实与生活中的所没太大区别,生活中的锁无非就是大门挂一把锁,这样我们就告诉别人此处以上锁,唯一不同的是程序锁必须由上锁的人来解锁,而生活中我们可以持有别人的锁进行开锁。 主要使用到的类 AtomicInteger:主要保证此锁的原子性与可见性,
2020-09-21 15:10:13
979
原创 mysql分区优化的一些坑
说明: 一下几种都是本人进过测试的都是向数据库中加入2000W数据,存储引擎InnoDB版本5.7主要对比几种开启分区,与未开启分区之间的优化【ps:如有不对的地方请大手不吝啬指教】 1.一个表最多只能有1024个分区 2.如果分区字段中有主键或者唯一索引的列,那么所有主键列和唯一索引列都必须包含进来 3.分区表无法使用外键约束 4.NULL值会使分区过滤无效 5.所有分区必须使用相同的存储引擎 分区的类型: RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区 对于此分区我在测试的时候使用=、
2020-09-18 16:55:24
826
1
原创 论怎么不借助中间件来玩转并发操作
引言 使用MQ主要在高并发下实现限流削峰,这是优势,但是这也增加了开发成本,主要使用新技术我们需要进行研发,踩坑等等流程,此处搬运与网易云的Kane老师,觉得老师的无论脑洞还是思路都很开阔,好了夸完了开怼!!! /---------------------------------------------超大分割线------------------------------------------------------------/ 思路 首先我们要清楚并发无非就是一票子用户在怼你的数据库【此处不用缓存,应
2020-09-10 21:09:42
286
原创 论怎么彻底干掉ifelse的策略模式怎么实现
此处还是基于spring容器实现的 此处的灵感来源于spring中自动配置bean 首先我们还是定义一个策略集合 public interface CalculateStrategy { /** * 角色 */ public String userType(); /** * 算钱 */ public double discount(double fee); } 策略实现 @Service public class VipCalcu
2020-08-17 15:44:34
210
原创 基于spring实现观察者模式
观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。 此处主要基于spring实现观察者模式,废话不多说上干货 首先我们定义一个事件 public class OrderEvent extends ApplicationEvent { /** * 观察者中的事件 * 主要作用是传递参,让监听者感知有事件发布 */ public OrderEve
2020-08-17 15:29:35
765
原创 关于优雅的解决Redis缓存雪崩问题
作为一个内存数据库,redis也总是免不了有各种各样的问题,这篇文章主要是针对其中一个问题进行讲解:缓存雪崩。并给出一些解决方案。 关于缓存雪崩问题 缓存雪崩是指大量的缓存在同一时间过期,导致大量请求请求数据库这样会导致我们的数据库压力过大,甚至崩溃 解决方案 主要是加共享锁+双重检测锁来实现的,当然现在基本都是基于组件开发所以我准备使用注解开发,去除一大票子重复代码!!! pom与yml省略一万字 定义一个注解@Miss 主要作用是获取方法上的入参名称以及值 /** * CodeNOOB * * @
2020-08-06 15:03:10
241
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅