自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(244)
  • 收藏
  • 关注

原创 MySQL为什么选择B+树

在选择数据结构时,不同的结构有其特定的优缺点。Hash表虽然查询速度快,但不支持范围查询。跳表通过增加索引层来加速查询,但索引层增加过快会导致IO成本急剧上升。二叉树、AVL树和红黑树在数据量增加时,树高度增长过快,同样导致IO成本增加。B树虽然在一定程度上控制了树高,但进行范围查询时仍需中序遍历,IO成本较高。相比之下,B+树在非叶子节点不存储数据,有效控制了树高度的增长,降低了IO成本,同时其叶子节点的双链表结构使得范围查询成本较低,因此在需要高效范围查询的场景中,B+树是一个更优的选择。

2025-05-11 15:40:40 459

原创 深入理解二分查找

1.基本原理2.应用场景2.1跳表2.2快排2.3二叉搜索树。

2025-04-29 14:01:21 130

原创 Java面试题汇总

1王二哥2.小林3.JavaGuide。

2025-04-23 22:33:46 348

原创 Java基本类型自动拆箱NPE异常

同理,对于Long、Float、Double也是编译器默认调用了取值函数,如果业务传的是NULL就会报空指针异常。(Autoboxing):把基本数据类型转换成对应的对象类型。在Java中,自动装箱和拆箱是十分重要的特性,允许基本数据类型(如。(Unboxing):把对象类型转换回基本数据类型。值,这个过程在编译时是自动处理的。)和它们对应的包装类(如。在自动拆箱操作中,会调用。

2025-02-12 16:47:21 119

原创 Java面试突击

ArrayList和LinkedList有什么区别? | Javaᶜⁿ 面试突击

2024-11-19 19:23:03 109

原创 Maven包强制更新失败终极解法

1.找到maven本地仓库地址。4.再次执行刷新maven命令。2.找到需要更新的jar包。

2024-08-05 14:15:43 514

原创 MyBatis相关问题汇总

https://www.cnblogs.com/Createsequence/p/16963891.htmlmybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache_mybatis缓存机制-优快云博客

2024-07-24 20:01:50 334

原创 动态代理技术应用场景分析

Mybaits代理Mapper。

2024-05-13 15:41:57 263

原创 Arthas watch命令加过滤字段

2.查看入参personList里name是'isMe'的Person实例信息。1.查看入参personList里id等于100L的Person实例信息。如果Person内容太多,我只关心name,那么可以这么写。3.查看返回结果List的某个Car的实例信息。

2024-04-26 17:27:27 1571

原创 Spring bean初始化流程

https://www.cnblogs.com/lxiaojun/articles/13855948.html

2024-04-17 16:39:24 135

原创 中文引号导致读取JSON字段值失败问题

调试代码遇到无法读取其中一个字段的值,其他字段的值可以正常读取,百思不得其解,偶然在日志中发现了,这个字段后边是乱码,不是引号,猜测可能是手动输入入参时,最后一个参数的引号错误使用了中文引号,导致序列化没有成功,就无法读取这个字段对应的值。

2024-03-14 10:16:57 479

原创 Java面试八股文

一文搞懂所有计算机网络面试题 - 知乎01 我应该站在谁的肩膀上 - OSI vs TCPIP模型面渣逆袭必看,面试题八股文Java基础、Java 集合框架、Java 并发编程、JVM、Spring、Redis、MyBatis、MySQL、操作系统、计算机网络、RocketMQ、分布式、微服务👍 | 二哥的Java进阶之路代码随想录配套 JetBrains 刷题插件 | labuladong 的算法笔记

2024-02-22 15:12:00 540

原创 系统问题排查思路

整体思路:https://www.toutiao.com/article/6844670025068970500/?wid=1708583600413

2024-02-22 14:49:42 408

原创 数据结构好文集合

https://blog.youkuaiyun.com/weixin_46195957/article/details/125298629https://www.cnblogs.com/crazymakercircle/p/16320430.html#autoid-h2-5-2-0

2024-02-21 19:53:55 418

原创 记一次Log记录大对象导致的CPU异常和磁盘打满

代码里有个大对象Map,缓存了100M数据,在多线程任务中记录异常的任务时错误地记录了这个Map,导致JSON序列化时疯狂刷磁盘写入数据,导致磁盘被打满,CPU100%,机器拒绝访问。

2024-01-17 11:07:47 476

原创 线程数计算模型

如果线程使用率达到100%,那么需要设置的最大线程数为C*(T1+T2)/T1.那么单线程的TPS为1/(T1+T2);

2024-01-03 11:23:37 448

原创 常用算法资源

算法pdf。

2023-12-23 17:51:40 85

原创 分布式框架合集

https://cn.dubbo.apache.org/zh-cn/blog/2019/05/01/dubbo-%E4%B8%80%E8%87%B4%E6%80%A7hash%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%AE%9E%E7%8E%B0%E5%89%96%E6%9E%90/

2023-12-05 17:00:42 157

原创 CLH锁原理

所有自旋锁都在一个内存地址上自旋,持有锁的线程释放锁后,会引发惊群效应,而且会造成个别线程一只拿不到锁,处在饥饿状态,CLH锁通过队列将所有线程排队,避免惊群效应,也保证所有线程都能执行。将线程包装为CLH节点,locked代表线程状态,false表示释放锁或未持有锁,true表示持有锁或正在排队等待锁。1.设置一个尾节点tail,初始为一个空节点,节点状态为false;1.将当前节点的状态设置为false,表示锁已释放。4.自旋监听前一个节点的状态是否为释放锁;3.将前一个节点set进当前节点的属性;

2023-11-29 21:12:45 203

原创 JavaCPU异常飙升诊断套路

可以看到两个ID,tid是JVM层面的线程ID,nid是native ID,即OS的本地线程ID,Java线程模型是将JVM线程和本地线程1:1映射;1.2找到%CPU最大的线程ID,如25695,需要转十六进制 645f。grep 645f -A 30意思是显示匹配645f的行及其后边的30行。jps找到JVM进程ID,如6937,然后使用top命令查看资源信息。1.1 使用 top 命令找出有问题 Java 进程的 ID;-H会显示线程占用资源情况。2.抽象成shell脚本。-p指定被监视的进程。

2023-11-27 10:58:32 129

转载 一致性哈希原理

一致性哈希原理

2023-11-22 11:00:48 107

原创 JVM定位问题小工具

1.jstat查看GC情况。

2023-11-14 10:29:45 89

原创 Arthas使用技巧

阿里Java诊断工具 arthas - 排查线上环境内存使用过大、线程cpu使用率高问题_arthas排查内存高问题-优快云博客 arthas--vmtool查看内存对象_arthas查看对象_韩师学子--小倪的博客-优快云博客

2023-11-06 16:53:57 100

原创 计算机网络文章荟萃

计算机网络文章荟萃,常识

2023-10-23 17:05:08 509

原创 如何画好技术图

1.业务架构图2.技术架构图3.UML3.1时序图。

2023-09-12 17:21:46 147

原创 Java参数按值传递

当对象(或引用类型)作为参数传递给方法时,传递的是对象的引用值,而不是对象本身。这个引用值会被复制到方法内部的新变量中,这意味着这两个引用变量都指向同一个对象。因此,在方法内部对这个新引用变量进行的任何操作都会影响到原始对象。但是,如果在方法内部将新引用变量指向另一个对象(即重新分配),这将不会影响到原始引用变量。按值传递:当基本数据类型被作为参数传递给方法时,实际上传递的是该数据类型的值。在方法内部,这个值会被复制到一个新的变量中,因此对这个新变量的任何修改都不会影响到原始变量。

2023-09-10 13:28:31 306

原创 可用的maven镜像地址

【代码】可用的maven镜像地址。

2023-09-03 14:42:54 380

原创 线程唯一的单例

别跟我扯什么双重检测单例模式,性能太差,不考虑,单例模式就用静态内部类实现,高性能+延迟加载,还要什么双重检测!思路很简单:将线程id绑定对象实例就行了。以下使用Map和JDK原生的ThreadLocal实现这个想法。那么,问题来了,如果我要实现线程绑定呢,换句话说就是实现线程间唯一的单例,进程中可以有多个实例。

2023-09-02 13:56:16 361

原创 Java无锁并发工具类Unsafe.compareAndSwapLong方法

方法是一个原子操作,通常用于并发编程中的无锁算法。它的作用是以原子方式比较并交换某个对象的一个long类型的字段。类一起使用,这是一个用于执行低级操作的类。它允许你直接操作Java对象的内存,包括获取和设置字段的值、分配和释放内存等。如果不相等,说明其他线程可能已经修改过这个字段的值,那么方法不做任何操作,并返回。如果相等,说明没有其他线程修改过这个字段的值,那么方法会将该字段更新为。方法通常用于实现高性能的并发数据结构,如。

2023-09-01 10:56:47 386

转载 Java String对象占用多大内存?

Java String对象占用多大内存?

2023-08-15 17:19:41 96

原创 Arthas常用命令

trace className methodNamewatch className methodName "{params,returnObj}" -x5vmtool --action getInstances --className className -x3

2023-08-07 15:26:07 160

原创 Maven强制更新jar包失败怎么办?

根据maven文件夹路径找到目标jar包,手动删除本地缓存的jar包,再次更新maven依赖即可。

2023-07-19 15:38:57 242

原创 sublime Text快捷键

josn 快捷键 command + ctrl +j。sql 快捷键 command + k + f。macbook适用!

2023-07-19 11:53:51 113

原创 提取SQL中的参数

group函数是与你的正则表达式有关的,String PS3 = "(#(\\{(.*?group()或者group(0)表示当前匹配的全部字符,group(x)代表匹配字符集的第几个分组,也就是第几个小括号内的字符集。不知道你注意到了java.util.regex.Matcher#group(int)吗?例如,对于字符串 "aaab",正则表达式。例如,对于字符串 "aaab",正则表达式。会非贪婪匹配到1个 "a"。会贪婪匹配到3个 "a"。

2023-06-25 17:29:05 943

原创 元对象MetaObject

使用MetaObject优雅替换setter/getter

2023-06-24 22:38:50 704

原创 主备库的事务管理器如何设置

一般主库负责写,从库负责读,事务管理器主要作用是能在异常时回滚业务代码,读数据没有回滚业务代码的必要,所以主从模式下不需要为主从数据源都配置事务管理器,只需要为主库配置事务管理即可。

2023-06-23 13:37:44 653

原创 行业黑话之水位

MySQL水位是指MySQL数据库中的数据量或负载水平。在数据库管理中,高水位意味着数据库中的数据量或负载水平较高,可能导致性能下降、查询速度变慢等问题。相反,低水位意味着数据库中的数据量或负载水平较低,性能较好。系统管理员、开发人员和运维人员需要关注各种资源的水位,以确保系统的稳定运行、性能优化,防止资源耗尽等问题。通过监控水位,可以合理地分配和管理资源,提高系统的整体性能。相反,低水位意味着资源使用率较低,性能较好。例如,内存水位、磁盘水位、CPU使用水位等。

2023-06-20 11:28:24 1015

原创 PreparedStatemnet概念

都是Java中 JDBC(Java Database Connectivity)规范的一部分,它们用于执行SQL语句并与数据库交互。PreparedStatement防止SQL注入的关键在于它将参数值与SQL语句进行分离处理,而不是直接将参数值拼接到SQL语句中。数组中的参数值和类型一起发送给数据库服务器。数据库服务器会将这些参数值与 SQL 语句进行合并,然后执行处理过的 SQL 语句。对象设置参数值和类型。在执行 SQL 语句时(例如调用。方法中,参数类型将被设置为。方法中,参数类型将被设置为。

2023-06-20 11:22:53 222

原创 数据库横表和竖表有什么区别

横表和竖表是描述数据库表结构的两种形式,它们之间的主要区别在于数据的组织方式和用途。2.竖表(长表): 竖表是一种非常规表结构,其特点是将属性作为行而不是列存储。竖表通常包括实体ID、属性名和属性值三个字段。竖表的优点是可以处理稀疏数据和动态添加属性,适合用于数据仓库和数据挖掘。

2023-06-19 14:11:48 5463

原创 JDK动态代理

确保代理类和目标类在相同的类路径下被加载,可以避免类加载器之间的不兼容性问题。类加载器之间可能存在不同的类路径和委托模式,如果代理类和目标类使用不同的类加载器,可能导致代理类无法找到目标类或目标类的依赖。方法中,你应该调用目标对象(而非代理对象)上的方法,并在方法调用前后添加其他操作(如日志、安全检查等)。:当代理类和目标类使用相同的类加载器时,可以确保它们实现的接口是相同的。方法中,可以自定义如何处理方法调用,通过反射来调用目标对象的实际方法,以及在方法调用前后添加其他操作(如日志、安全检查等)。

2023-06-18 17:39:06 2329 1

常用算法资源:算法pdf

常用算法资源:算法pdf

2023-12-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除