- 博客(10)
- 问答 (1)
- 收藏
- 关注
原创 并发中锁原理
befre lockA object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 4 (object header) 01 00 00 00 (00000001 00000000 00000000 00000000) (1) 4 4 (object header)
2021-01-08 13:23:28
302
原创 记录一次mysql分区操作
需求背景生产环境运维哥们说有几张表太大,历史数据太多,删除速度慢,delete数据不会释放磁盘空间,drop表在进行中时对数据库性能影响很大。所以对数据量大的表进行分区。操作步骤:原表结构:1.主键的设置根据记录的创建时间进行按月分表。前提是分区字段要为主键或者主键的一部分。所以首先删除表的原主键,重新设置联合主键alter table erp_interface_order_log drop PRIMARY KEY;alter table erp_interface_ord
2020-08-17 18:49:38
140
原创 记录springboot集成rocketmq关于tag的坑
新项目使用springboot的若依框架集成rocketmq,选择集成RocketMQTemplate这种方式实现消息的发送和接收。1.客户端发送代码,此处回调方法里有些业务不用关注,只关心发送方法@Componentpublic class RocketMqHelper { Logger logger = LoggerFactory.getLogger(RocketMqHe...
2019-12-20 13:03:07
8224
4
转载 【转】如何正确地写出单例模式
单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。懒汉式,线程不安全当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样教我们的。 ...
2019-06-14 11:47:27
94
原创 NIO原理浅析
传统的I/O 即BIO使用传统的I/O程序读取文件内容, 并写入到另一个文件(或Socket), 如下程序:File.read(fileDesc, buf, len);Socket.send(socket, buf, len);会有较大的性能开销, 主要表现在一下两方面:1. 上下文切换(context switch), 此处有4次用户态和内核态的切换2. Buffer...
2019-05-10 00:34:51
205
原创 通过zk实现分布式共享锁原理
思路直接上图实现核心两点:1.zookeeper的WatchedEvent监听事件2.zookeeper保存节点数据的两个特点。有序和临时基本核心代码(简单粗暴,很多细节没有考虑):public class DistributedClientLock { // 会话超时 private static final int SESSION_TIMEOUT = 200...
2019-04-20 10:58:33
608
原创 mysql中SQL索引的使用以及一些优化方式(不定期更新)
查看sql的执行效率explain select * from table;desc select * from table;解释如图举例:创建t1表,主键自增查看几个查询语句的解释几个关键的信息 type key rows,比较可以发现rows越大影响行数越大。第一个全表扫描type为ALL,也没有主键效率最差。1.为查...
2019-04-11 14:16:19
124
原创 通过ZK客户端实时感知服务器动态上下线的机制
客户端调用分布式服务,当服务端上下线时如何感知?原理如图所示,中间用zookeeper作为服务发现组件,所谓的注册中心。1.服务端上线时,各自去zk上注册各自信息。创建自己的临时带序列的节点,挂上自己ip,端口,服务名等信息.(这里还有当前连接数信息,当一个客户端请求了服务端,服务端会在zk节点上连接数+1.实现负载均衡,暂不考虑)2.客户端启动getChildren,获取当前...
2019-03-17 01:12:18
868
原创 安装zookeeper集群详细步骤
在虚拟机安装zk集群遇到了不少坑,耽误了很多时间,步骤记录在此,日后生产安装时有个参照1.虚拟机准备了3台,ip分别为192.168.220.2192.168.220.3192.168.220.4安装jdk省略 (此处有坑,之前在root下安装的jdk)2.上传zookeeper-3.4.5.tar.gz,解压后修改conf下zoo.sample.cfg并改名为zoo.cf...
2019-03-10 23:14:44
708
原创 jvm内存模型和gc浅析
Java虚拟机运行时数据区域被分为五个区域:堆(Heap)、栈(Stack)、本地方法栈(Native Stack)、方法区(Method Area)、程序计数器(Program Count Register)。1.堆Heap对于大多数应用来说,Java Heap是Java虚拟机管理的内存的最大一块,这块区域随着虚拟机的启动而创建。在实际的运用中,创建的对象和数组就是存放在堆里面。J...
2019-02-28 12:40:00
193
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人