自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring bean初始化流程

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

2024-04-17 16:39:24 69

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

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

2024-03-14 10:16:57 342

原创 Java面试八股文

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

2024-02-22 15:12:00 429

原创 系统问题排查思路

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

2024-02-22 14:49:42 344

原创 数据结构好文集合

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

2024-02-21 19:53:55 372

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

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

2024-01-17 11:07:47 390

原创 线程数计算模型

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

2024-01-03 11:23:37 405

原创 常用算法资源

算法pdf。

2023-12-23 17:51:40 43

原创 分布式框架合集

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 77

原创 CLH锁原理

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

2023-11-29 21:12:45 131

原创 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 75

转载 一致性哈希原理

一致性哈希原理

2023-11-22 11:00:48 48

原创 JVM定位问题小工具

1.jstat查看GC情况。

2023-11-14 10:29:45 37

原创 Arthas使用技巧

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

2023-11-06 16:53:57 37

原创 计算机网络文章荟萃

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

2023-10-23 17:05:08 420

原创 如何画好技术图

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

2023-09-12 17:21:46 83

原创 Java参数按值传递

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

2023-09-10 13:28:31 232

原创 可用的maven镜像地址

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

2023-09-03 14:42:54 322

原创 线程唯一的单例

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

2023-09-02 13:56:16 317

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

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

2023-09-01 10:56:47 218

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

Java String对象占用多大内存?

2023-08-15 17:19:41 48

原创 Arthas常用命令

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

2023-08-07 15:26:07 67

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

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

2023-07-19 15:38:57 148

原创 sublime Text快捷键

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

2023-07-19 11:53:51 75

原创 提取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 773

原创 元对象MetaObject

使用MetaObject优雅替换setter/getter

2023-06-24 22:38:50 400

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

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

2023-06-23 13:37:44 576

原创 行业黑话之水位

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

2023-06-20 11:28:24 489

原创 PreparedStatemnet概念

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

2023-06-20 11:22:53 155

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

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

2023-06-19 14:11:48 3338

原创 JDK动态代理

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

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

原创 NameSpace概念

命名空间(Namespace)是一种在计算机科学和编程中广泛使用的概念,主要用于避免名称冲突和提高代码组织结构。命名空间可以将不同范围内的标识符(如变量、函数、类等)隔离开来,以便在不同的上下文中使用相同的名称,而不会引起冲突。:命名空间可以将代码划分为多个独立的模块,每个模块都有自己的命名空间。:在 XML 和其他技术中,命名空间可用于标识特定版本的语言或规范,从而提供对不同版本的支持和兼容性。通过为 XML 文档中的元素和属性分配不同的命名空间,我们可以确保它们在全局范围内具有唯一性。

2023-06-18 16:40:29 438

原创 TransientStorePool堆外缓存池技术

RocketMQ的TransientStorePool设计主要通过内存池和MMAP技术将消息先写入内存池中的内存块,然后将内存块的数据刷入MMAP内存,最后再将MMAP内存的数据刷入磁盘。它通过预分配内存块,将消息写入预分配的内存块(直接内存),然后使用内存映射文件(Memory-Mapped File)将内存块中的数据刷到磁盘,从而提高写入性能。当文件被映射到内存地址空间时,文件的读写操作实际上是在内存中进行的,这部分内存位于堆外,不受 Java 垃圾回收(GC)机制的影响。

2023-06-16 11:43:41 1523

原创 RocketMQ MappedFile设计思路

然而,内存映射文件也有一定的局限性,如地址空间的大小受到操作系统的限制,因此对于非常大的文件可能无法完整映射到内存中。需要注意的是,在选择回收的物理内存页时,操作系统会考虑这个页的使用情况,如是否被修改(脏页)。虚拟内存管理是操作系统中的一种内存管理技术,它允许程序拥有独立的、连续的地址空间,并将这些地址空间映射到物理内存和磁盘上的存储资源。避免了额外的内存拷贝:当我们从磁盘文件读取数据时,如果不使用内存映射文件,数据需要先从磁盘读取到操作系统的缓冲区,然后再从缓冲区拷贝到Java堆内存中。

2023-06-15 12:27:40 1046

原创 理解归并排序的递归算法时间复杂度

首先这棵递归树的高度为lgn,其次,每一层的合并最差的比较效率是n-1,即O(n),从底层开始合并的话,这棵合并树总共需要合并O(nlgn)

2020-02-17 21:23:03 803

原创 因式分解Java实现

package cun.zheng.weng.algorithmn.mathmatic;import java.util.ArrayList;import java.util.List;public class FindAllDivisors {List<Integer> result = new ArrayList<>();public List<Int...

2020-02-13 13:14:34 1005

原创 程序包org.springframework.boot不存在

可能是maven倒入依赖包出错了,需要删除本地的repo中spring的包,重新下载。

2020-01-17 19:18:07 1507

原创 SQL选择红包场次

需求:设置多级奖励,按红包数量发放相应奖励。可以使用for循环实现,但使用sql实现更简洁、高效。<select id="selectReward" parameterType="com.tiefan.fbs.sps.mg.entity.MgRedPacketSessionReward" resultMap="BaseResultMap"> select &l...

2019-11-01 13:46:01 191

原创 IDEA载入项目出错

这张图中所有的类都无法使用IDEA跳转到实现类,原因是IDEA未编译这个项目,需要为这个项目配置JDK和Maven包。

2019-10-23 14:52:48 429

原创 关联表嵌套信息的更新

需求场景:创建活动,活动可以设置红包雨场次和奖励信息。主表是活动表,关联表是红包雨场次表和奖励表。在更新活动信息时,判断该活动关联的红包雨场次信息和奖励信息是更新还是新增是需要考虑的问题。解决思路:如果是更新,那么旧数据必然有数据库产生的id,就以id作为判断依据,若有id,则执行更新语句,否则,执行插入语句。if(mgRedPacketSessionInfo.getId() != nu...

2019-10-21 16:34:54 186

常用算法资源:算法pdf

常用算法资源:算法pdf

2023-12-23

空空如也

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

TA关注的人

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