logo头像
Snippet 博客主题

线程池容易被忽略的地方

为什么用线程池? 节约省资源创建线程有损耗,销毁线程也有损耗 执行效率高充分利用多核CPU,并行处理。处理任务,不需要等待线程创建的过程立即执行。 管理线程线程是操作系统稀缺的资源,不可滥用。线程池可以做到统一分配,调优和监控。 线...

Redis incr做接口访问频率的坑

背景在互联网高并发的分布式系统中,我们需要对接口限流,我会用Redis的incr命令,如果是单机的话,用Guava的RateLimiter就可以了。 前置知识INCRBY key increment redis> SET pag...

Redis执行expire命令失败引发的坑

背景在我们做系统开发的时候,遇到高并发的场景,我们对一些数据会直接借助Redis存储,又或者借助Redis实现分布式锁,它带给我们很多的好处,同时我们在使用的时候,会遇到很多的坑,接下来,是我面试的时候遇到的一个问题,我平时一直没意识...

源码阅读利器-UML类图

预备知识为什么要有类图?类图(Class diagram)主要用于描述系统的结构化设计。类图也是最常用的UML图,用类图可以显示出类、接口以及它们之间的静态结构和关系。 领域UML类图 VS 实现UML类图通常在软件需求分析的时候,产...

如何平滑数据迁移不影响服务的可用性

今天去壹钱包面试,问了一些解决方案,被有道题目难住了。 业务场景 有个用户基础信息表,注册的时候,用户的手机号当前是明文保存在db,用户信息泄露的问题影响是不能容忍的,安全部要求把这个明文手机号改成密文,但是我们号称是24*7小时全...

MYSQL事务默认隔离级别为什么是可重复读

预备知识ACID是做什么的简而言之,解释为 原子性(atomicity) 一致性(consistency) 隔离性(isolation) 持久性(durability) 为保证数据库事务操作的正确...

SQL优化神器explain

SQL优化,离不开explain。这里记下explain的常用列,方便以后查询。 这里提2个关键关于查询效率的列 type列 | ALL | 全表扫描 | index | 索引...

volatile 必备知识

前置知识JMM虚拟机线程内存模型: 每个线程,都是在自己的工作内存里面操作,想与另外一个线程共享变量值,需要将工作内存的变量刷到主内存,其他线程从主内存复制一份到工作线程来取值。 区别volatile 保证了线程之间的可见性和有序...

垃圾回收器的选择

其实,要不是读周志明的《深入理解java虚拟机》,垃圾回收器这个东西,我工作中是不需要接触到的。既然学习了,我就得沉淀点东西,以供后续复习。那么有这本书详细的描述了这块的知识,还需要我写点什么呢?恩,据我了解,周围同事读过这本书感受,...

类的加载机制与对象的实例化

今天读到周志明的《深入理解java虚拟机》中类加载机制与对象的实例化这块,这本书说实话,还是有点生涩难懂,不过老祖先有祖训:“书读百遍,其义自见”,这句话是对的,我也是时隔2年,重新拜读的。 前置知识点成员变量与静态变量的区别静态变...