- 博客(47)
- 收藏
- 关注

原创 mysql 索引结构
假设现在以主键索引来维护这棵树,一般会用bigint、int,假设我们用bigint,mysql 里面大概是8 byte,根节点大概是16kb, 16kb * (8+6)约等于1170 个索引元素,叶子结点是16kb,除了索引元素还有data 元素,1170 * 1170 * 16 约等于两千多万…我们要查找30,首先把根节点所有的字段放到内存中,然后在内存中做比对,因为他是从左到右依次递增,因此我们可以折半查找,找到在15-56之间,继续在分叉节点进行查找,整个查找过程经历三次的磁盘io。......
2022-08-10 18:08:25
256

原创 多线程基础
1.进程和线程,并行和并发一个程序就是一个进程,一个程序中多个任务就是多个线程,进程表示资源分配的基本单位,线程是进程中执行运算的基本单位,也是调度运行的基本单位2.为什么使用多线程一段时间内,多个任务都需要有进展的情况,使用多线程会加大资源消耗,所以不是什么情况下都要用比如redis,es,解决的是好不好的问题,没有也能用,就是速度慢,效率低但多线程使用,解决的是能不能的问题例如:8:00数学 10:10语文 2:00英语 4:10政治一个对象若干个功能,依次调用,做完一个再做另一个如果
2020-05-21 11:38:05
316
1

原创 SpringCloudClient
1.创建client2.创建完成之后不要写代码、要看eureka项目与client项目对应的版本是否一致3.3.启动类加注解4.配置文件5.启动先启动eureka项目、再启动client项目。6.添加配置重启项目 点击刚才的链接、出现新的页面的地址栏中就会出现8.eureka高可用、创建两个eureka 互相注册EurekaApplication2同上9.修改并启动访问localhost:8761再修改访问localhost:8762就会发现client
2020-05-16 09:03:02
696
原创 final,finally,finalize的区别
在Java中,final、finally和finalize是三个不同的关键字,它们具有不同的作用和用法.
2025-07-08 16:03:57
65
原创 在 Redis 分布式锁场景中,锁超时但业务逻辑未完成解决方案
推荐方案:优先使用自动续期(看门狗),如Redisson框架,简单可靠。适用场景短业务:预估超时时间+ Lua脚本释放锁长业务:分段处理 + 状态记录强一致性:结合数据库事务补偿根据业务特点选择合适的方案,避免锁超时导致的并发问题。
2025-07-03 12:05:37
167
原创 linux系统的常用命令
符号模式:chmod u+x filename (给所有者添加执行权限), chmod o-w filename (移除其他用户的写权限), chmod a=r filename (所有用户只有读权限)tar -czvf archive.tar.gz file1 dir1/:创建 © gzip (z) 压缩包,显示过程 (v),指定文件名 (f)cut -d’,’ -f1,3 data.csv:按逗号 (,) 分隔符 (-d) 取第 1 和第 3 个字段 (-f)
2025-07-02 11:53:48
681
原创 SpringCloud 核心组件及其应用
Eureka 将各个服务维护在了一个服务清单中(双层map,第一层key 是服务名,低层key 是实例名,value是服务地址加端口)。Ribbon :服务间发起请求的时候,基于Ribbon 做负载均衡,从一个服务的多台机器中选自一台(被调用方的服务地址有多个),Ribbon 也是通过发起http请求,来进行的调用,只不过是通过调用服务名的地址来实现的,发现:eureka 注册的服务之间调用不需要指定服务地址,而是通过服务名向注册中心咨询,并获取所有服务实例清单(缓存到本地),然后发现服务的请求访问。
2025-06-25 00:24:24
169
原创 内存泄漏和内存溢出的区别
或者,因为之前很多人租了小房间不还(内存泄漏),导致现在连一个能容纳 10 人的小会议室都租不到了(累积导致 OOM)。可用的空房子(可用内存)越来越少,最终新租客(新内存请求)租不到房子了(OOM)。解决内存溢出通常需要先排查是否存在内存泄漏。: 内存溢出也可能单纯因为一次性申请的内存过大(超过配置上限)或瞬时压力过大(如高并发创建对象)造成,此时可能并不存在长期的内存泄漏。内存设置过小: JVM 堆内存(-Xmx)或其他内存区域(如栈 -Xss, 方法区/元空间)配置得太小,不足以支撑应用正常运行。
2025-06-25 00:15:23
2296
1
原创 synchronized的技巧与要点
同步代码块:通过 monitorenter 和 monitorexit 指令实现(编译后插入字节码)。同步方法:方法常量池中设置 ACC_SYNCHRONIZED 标志,调用时隐式获取锁。线程通过CAS竞争进入 _owner,失败则进入 _EntryList 阻塞。3、 _WaitSet:调用 wait() 后进入的等待队列。3、轻量级锁(Lightweight Lock)2、_EntryList:阻塞等待锁的线程队列。原理:通过CAS自旋尝试获取锁(避免线程阻塞)1、 _owner:持有锁的线程。
2025-06-24 19:51:01
306
原创 mysql 存储过程学习
从SQL执行的流程中我们分析存在的问题:1.如果我们需要重复多次执行相同的SQL,SQL执行都需要通过连接传递到MySQL,并且需要经过编译和执行的步骤;2.如果我们需要执行多个SQL指令,并且第二个SQL指令需要使用第一个SQL指令执行的结果作为参数。
2024-01-26 12:16:27
1186
2
原创 Logstash学习
下载地址: https://www.elastic.co/cn/downloads/logstash。Logstash配置文件有如下三部分组成,其中input、output部分是必须配置,filter部分是可选配置,而filter就是过滤器插件,可以在这部分实现各种日志过滤功能。logstash之所以功能强大和流行,还与其丰富的过滤器插件是分不开的,过滤器提供的并不单单是过滤的功能,还可以对进入过滤器的原始数据进行复杂的逻辑处理,甚至添加独特的事件到后续流程中。2、Logstash输入插件(input)
2023-11-02 10:04:59
255
原创 redis数据结构及其应用场景
redis中存储数据是以key-value的形式去存储的,其中key为String字符串类型,value的数据类型有string、hash、list、set、zset等这五种常用的。这五种数据结构在开发中基本上可以应对大部分场景的数据存储!!下面分别来介绍value的五种数据结构的用法以及使用场景。
2022-10-09 15:01:36
693
1
原创 Spring事务传播机制,多个事务方法互相调用时,事务如何在这些方法间传播
方法A 是一个事务的方法,方法A 执行过程中调用了方法B,那么方法B 有无事务以及方法B 对事务的要求不同都会对方法A的事务具体执行造成影响,同时方法A的事务对方法B 的事务执行也有影响,这种影响力具体什么就有两个方法所定义的事务传播类型所决定。嵌套事务:在a调用b 的时候,a要是没有事务,b自己开启了一个事务, a要是有事务,b 就嵌套在里面。aop 的缺陷会使事务失效。挂起事务:a里面他已经有事务,b就要把A 的事务挂起,b就自己以事务方式运行,说白了就是a自己处理自己的事务,b自己处理自己的事务。
2022-08-31 22:35:28
3180
4
原创 MacBook版IntelliJ内置Maven的配置文件setting.xml 位置
MacBook版IntelliJ内置Maven的配置文件setting.xml 位置查找
2022-08-31 18:10:40
775
原创 java中 String、StringBuffer、StringBuilder 区别及使用场景
String、StringBuffer、StringBuilder 区别及使用场景
2022-08-30 21:55:12
1460
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人