- 博客(20)
- 资源 (10)
- 收藏
- 关注
原创 mysql锁
根据优化2, 这是一个等值查询, 向右查找到了不满足条件的行, 所以会退化成(c=10,id=10) 到 (c=15,id=15)的间隙锁。因为扫描到id=15, 就可以确定不用往后再找了。2. 同时根据优化2, 这是一个等值查询(id=7), 而id=10不满足查询条件, next-keylock退化成间隙锁, 因此最终加锁的范围是(5,10)。这里你需要注意一点, 首次session A定位查找id=10的行的时候, 是当做等值查询来判断的, 而向右扫描到id=15的时候, 用的是范围查询判断。
2024-05-03 16:19:19
964
原创 mysql简介
如果使用非自增主键,由于每次插入主键的索引值都是随机的,因此每次插入新的数据时,就可能会插入到现有数据页中间的某个位置,这将不得不移动其它数据来满足新数据的插入,甚至需要从一个页面复制数据到另外一个页面,我们通常将这种情况称为页分裂。前缀索引顾名思义就是使用某个字段中字符串的前几个字符建立索引,使用前缀索引是为了减小索引字段大小,可以增加一个索引页中存储的索引值,有效提高索引的查询速度。key是查询的语句, value是查询的结果。表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。
2024-05-03 10:57:51
870
原创 udp丢包问题排查
类似于实时语音转译文本的产品,录音软件将客户端的语音流推送至后台服务,由后端服务转译后推送至客户端界面,后端服务使用到了redis,但是不和后端服务部署在一起。由于仅用于演示作用,所以找了个已有的测试环境,同时找了台笔记本部署录音软件。服务的部署情况如下:录音软件:笔记本,连接公司办公网后台服务:腾讯云服务器redis服务:公司服务器。
2021-02-01 20:47:47
3902
1
原创 volatile简单解读
1.可见性lock信号,锁总线(大部分是锁缓存行),该指令意义:将当前处理器缓存行的数据写回到系统内存 这个写回内存的操作会使得在其他处理器缓存了该内存地址无效简单讲就是通过总线缓存协议将其他的处理器中的相关缓存行置为无效以达到缓存一致性。2.禁止重排序内存屏障,happens-before,简单说明一下:当第二个操作是voaltile写时,无论第一个操作是什么,都不...
2020-05-03 01:23:34
306
原创 java开发115建议
第1章 Java开发中通用的方法和准则建议1: 不要在常量和变量中出现易混淆的字母建议2: 莫让常量蜕变成变量建议3: 三元操作符的类型务必一致建议4: 避免带有变长参数的方法重载建议5: 别让null值和空值威胁到变长方法建议6: 覆写变长方法也循规蹈矩建议7: 警惕自增的陷阱建议8: 不要让旧语法困扰你建议9: 少用静态导入建议10: 不要在本类中覆盖静态导入的变量和方法...
2020-03-07 20:23:05
231
原创 JDK自带JVM工具汇总
一、jmap (jvm统计信息) 用法: jmap [option] <pid> (to connect to running process) jmap [option] <executable <core> (to connect to a core file) jmap [option]...
2019-12-21 18:34:52
354
原创 ThreadLocal个人解读
Thread ThreadLocalMap(ThreadLocal内部实现的Map) table:ThreadLocal.ThreadLocalMap.Entry[] // 一个线程可对应多个ThreadLocal Entry类(继承WeakReference,父类构造key让key成弱引用)ThreadLocal(可当成工具类)...
2019-11-22 13:14:21
251
原创 Dubbo原理
一、RPC原理一次完整的RPC调用流程(同步调用,异步另说)如下:1)服务消费方(client)调用以本地调用方式调用服务; 2)client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体; 3)client stub找到服务地址,并将消息发送到服务端; 4)server stub收到消息后进行解码; 5)server stub根据解码结果调...
2019-10-06 11:36:57
279
转载 【转】开发细节问题
在Dubbo官方文档上看到一篇关于开发细节的好文章,转载过来记录一下防止空指针和下标越界这是我最不喜欢看到的异常,尤其在核心框架中,我更愿看到信息详细的参数不合法异常。这也是一个编写健壮程序的开发人员,在写每一行代码都应在潜意识中防止的异常。基本上要能确保每一次写完的代码,在不测试的情况下,都不会出现这两个异常才算合格。保证线程安全性和可见性对于框架的开发人员,对线程安全性和...
2019-09-15 20:46:28
177
原创 Dubbo入门
一、核心概念1.简介Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用 智能容错和负载均衡 服务自动注册和发现特点:连通性、健壮性、伸缩性、以及向未来架构的升级性(可参考Dubbo官方文档)2.架构及基本概念节点角色说明调用关系说明:服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向...
2019-09-15 20:10:05
174
原创 Zookeeper入门
一、Zookeeper简介1.1概述Zookeeper是一个开源的分布式的,为分布式应用一致性和分布式协调技术服务的项目。 从设计模式角度理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理数据,然后接受观察者的注册,一旦数据的状态发生变化,Zookeeper就负责通知已在Zookeeper上注册的观察者做出相应反应。 Zookeeper=类似unix的文件系统+通...
2019-09-01 21:26:42
263
转载 【转】Java工程师成长之路
原文:https://blog.csdn.net/hollis_chuang/article/details/80305641一、基础篇JVMJVM内存结构。堆、栈、方法区、直接内存、堆和栈区别 Java内存模型。内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收。内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调...
2019-07-10 14:39:46
378
原创 操作系统多线程例子--生产者与消费者
import java.util.concurrent.locks.*;public class ProducerandConsumer { private static int count = 0; private final int FULL = 100;// 定义最多生产100个 private int flag = 0;// 生产者消费者切换标志 Lock lock = n...
2017-08-06 08:05:12
722
原创 操作系统多线程例子--吃水果问题
import java.util.concurrent.locks.*;class Resource // 封装水果资源,提供放水果和吃水果方法。{ private String name; private static int ap = 0; // 苹果信号,0表示无,1表示有 private static int or = 0; // 橘子信号,0表示无,1表示有 privat...
2017-08-06 08:02:13
8256
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人