自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 jvm打破砂锅问到底- 为什么要标记或记录跨代引用

第二: 强分代假说: 强者恒强, 一个对象如果能持久一段gc次数而不消亡, 他突然消亡的可能性就很小, 或者说越难以消亡)(是以下两条的讨论, 第一:弱分代假说: 弱者居多, 弱者就是指朝生夕死,

2023-10-14 17:00:51 278

原创 jvm打破砂锅问到底- JVM中对象进入老年代的条件

深入理解Java虚拟机书中有详尽描述, 本文做一下咀嚼.3.8.1 对象优先在Eden分配。3.8.2 大对象直接进入老年代。

2023-10-14 16:37:21 179

原创 识jvm堆栈中一个数据类型是否为为引用类型,目前虚拟机实现中是如何做的?

调用栈里的引用类型数据是GC的根集合(root set)的重要组成部分;找出栈上的引用是GC的根枚举(root enumeration)中不可或缺的一环。要看JVM选择用什么方式。通常这个选择会影响到GC的实现。如果JVM选择不记录任何这种类型的数据,那么它就无法区分内存里某个位置上的数据到底应该解读为引用类型还是整型还是别的什么。这种条件下,实现出来的GC就会是“[b]保守式GC(conservative GC)[/b]”。

2023-08-06 08:44:56 572

原创 JVM 之 OopMap 和 RememberedSet

但问题是,栈上的本地变量表里面只有一部分数据是 Reference 类型的(它们是我们所需要的),那些非 Reference 类型的数据对我们而言毫无用处,但我们还是不得不对整个栈全部扫描一遍,这是对时间和资源的一种浪费。仍然是拿空间换时间的办法。但问题是,确实可能存在位于老年代的某个 GC Root,它引用了新生代的某个对象,这个对象你是不能清除的。一个很自然的想法是,能不能用空间换时间,在某个时候把栈上代表引用的位置全部记录下来,这样到真正 gc 的时候就可以直接读取,而不用再一点一点的扫描了。

2023-08-06 08:44:01 795

原创 JVM 之 OopMap 和 RememberedSet

但问题是,栈上的本地变量表里面只有一部分数据是 Reference 类型的(它们是我们所需要的),那些非 Reference 类型的数据对我们而言毫无用处,但我们还是不得不对整个栈全部扫描一遍,这是对时间和资源的一种浪费。仍然是拿空间换时间的办法。但问题是,确实可能存在位于老年代的某个 GC Root,它引用了新生代的某个对象,这个对象你是不能清除的。一个很自然的想法是,能不能用空间换时间,在某个时候把栈上代表引用的位置全部记录下来,这样到真正 gc 的时候就可以直接读取,而不用再一点一点的扫描了。

2023-08-06 08:42:46 872

原创 自增id坑

自增id坑:

2023-07-19 16:15:58 481

原创 docker运行 mycli

mycli in docker

2023-07-07 14:55:10 613

原创 关于线程状态切换(来自chatgpt)

线程的阻塞和唤醒:当线程调用阻塞方法(如 Thread.sleep() 、 Object.wait() 等)时,线程会进入阻塞状态,这会导致线程从用户态切换到内核态。同步原语的使用:当线程使用同步原语(如 synchronized 、 Lock 等)进行同步操作时,如果发生了竞争或需要等待锁资源,线程可能会从用户态切换到内核态,直到获取到锁资源或竞争解决后再切换回用户态。需要注意的是,线程的用户态和内核态之间的切换是由操作系统负责管理的,具体的切换行为和开销可能因操作系统的不同而有所差异。

2023-06-28 09:38:00 553

原创 rocketmq事务消息在分布式事务中的适用分析

不知道理解是否偏差。

2023-05-11 17:46:26 84

原创 关于广播是否丢消息? 成熟的mq是不会的.

也就是, mq服务器持久化了所有消息(如果没达到7天过期的话), 消费者自己本地有记录消费位点, 也没有别的消费者来干扰你的消费位点. 所以不会丢消息。这里说的不会丢消息是, mq服务和设计支持. 但是没说支持重试. 消费失败或者说如果有必要持久化消费位点的话, 需要消费者自己处理.还是集群消费 (这当然更不会丢消息, 持久化和重试.提交消费位点都是封装好了的 只要别异常当做成功, 别业务侧再次并发消费就行)这压根不是广播好吗, 这就是发布订阅, 只不过是多个消费者订阅了同一个消息队列, 仅此而已.

2023-05-11 09:47:32 527

原创 Rocketmq HA和kafka HA为何不同

partition维度 需要尽量错开主副本, 对节点数还是有要求的 (比如es), 节点少副本多是不太好的. 高可用受影响。尽量只要少数几个可写的文件 (所有主题共用一个, kafka是每个主题的每个副本各一个日志文件)按partition维度会造成文件个数增加, 磁盘io读写竞争增加。

2023-05-10 17:47:45 66

原创 Java IO 底层原理&刷盘机制 & pagecache和mmap在java中的使用

2.带缓冲区的 BufferedOutputStream 性能提升的法宝就是:每次调用 write() 方法并不会产生实际的 write 系统调用,而是会先将数据存放于 BufferedOutputStream 实例内部的缓冲区中(缓冲区默认大小 8 KB),等缓冲区满、或者手动调用 BufferedOutputStream.flush() 或 close() 方法时,才会真正调用 write 系统调用将缓冲区数据写入 page cache。1.普通IO每次都会产生write系统调用。

2023-05-07 09:49:34 988 1

原创 nio的成本和收益以及客户端是否需要使用nio

1.场景一, 不用. 安排了网络线程池, 却没有受益, 或者是负受益, 如果本身就是同步场景, 业务线程必须要等待http结果才能处理下一步, 并且不能放在网络线程回调中处理(网络线程不能处理太慢的业务, 就像netty一样), 这种情况还是挺多的.2.场景二, 不满足场景一的, 比如, 调用方业务不用同步等结果, 可以在网络线程的响应回调中执行 (大不了多开点网络线程), 或者就只要调一个就行了, 对于响应的处理并不复杂耗时。是否需要使用nio?这个只讨论客户端就行了, 因为连接客户端发起的.

2023-05-06 16:24:07 702

原创 关于业务缓存的存储结构

而当我们采用 [账号id -> 角色id -> 权限列表] 的缓存模型时,则只需要清除或修改 [角色id -> 权限列表] 一条缓存即可。通常我们系统的权限架构是RBAC模型:权限与用户没有直接的关系,而是:用户拥有指定的角色,角色再拥有指定的权限。而这种’拥有关系’是动态的,是可以随时修改的,一旦我们修改了它们的对应关系,便要同步修改或清除对应的缓存数据。:为什么不直接缓存 [账号id->权限列表]的关系,而是 [账号id -> 角色id -> 权限列表]?为了避免redis keys问题.

2023-04-27 10:25:21 426

原创 网络编程答疑融合连环tcp/nio/bio/redis/redisson/lettuce/netty/dubbo

网络编程答疑融合连环tcp/nio/bio/redis/redisson/lettuce/netty/dubbo

2023-04-15 18:24:18 466

原创 并发量和最大线程数的相关计算公式

但是这只是理想情况,因为并发量受限于系统能力而不可能持续上升,例如DUBBO线程池就对线程数做了限制,超出最大线程数限制则会执行拒绝策略,而拒绝策略会提示线程池已满,这就是DUBBO线程池打满问题的根源。我们首先分析一个问题:一个公司有7200名员工,每天上班打卡时间是早上8点到8点30分,每次打卡时间系统执行时长为5秒。如果系统为每一个请求分配一个处理线程,那么并发量可以近似等于线程数。基于上述公式不难看出并发量受QPS和RT影响,这两个指标任意一个上升就会导致并发量上升。并发量 = QPS x RT。

2023-04-09 19:47:48 692

原创 nginx openresty子请求get带url参数转发

【代码】nginx openresty自请求get带url参数鉴权转发。

2023-04-07 10:58:24 422

原创 @Async不支持循环引用的设计原因

在这个例子中,BeanA和BeanB彼此循环依赖。如果调用任何一个@Async方法,都会由于循环引用而导致运行时错误. 假如这里让异步生效, 就会无限异步, 这个可能都没法检测, 因为是异步, 栈桢不再同一个, 也不是stackoverflow会无限提交异步任务。这个限制是特定于@Async的,并不适用于Spring的大多数其他方面的AOP。实际上,Spring的AOP被设计为以优雅的方式处理循环引用,只要它们不涉及异步处理。同时,这里是一个循环引用如何导致@Async问题的示例。

2023-03-29 23:31:05 118

原创 spring循环依赖-isSingletonCurrentlyInCreation

isSingletonCurrentlyInCreation(beanName) 正常都会是true.只要是正常通过beforeSingletonCreation走的.不要被迷惑了(并不是说循环依赖才true)所以强制一二三级缓存。

2023-03-27 10:41:38 269

原创 @lazy注入

【代码】@lazy注入。

2023-03-25 18:43:31 498

原创 dubbo dovoke源码解析

dubbo

2023-03-23 17:15:26 51

原创 引用计数的内存回收使用场景

引用计数也能内存回收

2023-03-23 11:32:55 38

原创 同一时刻, 同一机器的不同对象的hashcode也是可能冲突的

hashcode冲突不可避免

2023-03-21 14:28:00 104

原创 布隆过滤器是多个hash函数占用多个bit位来减少冲突

布隆过滤器

2023-03-21 12:59:41 130

原创 定时任务与cron

定时任务实际上只要关注下次是何时执行就行了。不用管下次的下次, 那是下次才要管的计算。cron只是用来解析下次执行规则。

2023-03-20 15:36:06 29

原创 spring bean重命名

2023-03-20 15:32:27 79

原创 spring bean重命名等

附录:https://www.cnblogs.com/jlustone/p/7517323.html。2. 在某些条件下, 打个日志。

2023-03-16 15:28:42 65

原创 一个值得学习的枚举类写法

来自: org.springframework.boot.autoconfigure.condition.FilteringSpringBootCondition.ClassNameFilter。

2023-03-15 00:25:14 35

原创 spring-aop组件详解——TargetSource目标源

spring aop

2023-03-12 00:54:22 810

原创 idea leetcode插件无法登录

idea leetcode插件无法登录

2023-03-09 20:46:50 1209

原创 hashmap源码

hashmap

2023-03-01 08:03:02 41

原创 线程安全集合类举例

线程安全 及 集合

2023-02-27 23:13:00 37

原创 客户端对集群的感知

客户端

2023-02-24 12:06:46 45

原创 常见排序算法

Arrays.java 源码包含了常见调优完毕后的查找算法和排序算法

2023-02-23 11:24:34 24

原创 排序算法是不是稳定的,比如选择排序

简单算法

2023-02-22 15:05:45 160

原创 gc三色标记与两次stw

java gc

2023-02-21 12:35:37 59

原创 分代jvm下,不同 gc的gc root可能有点不一样,比如StringTable

StringTable

2023-02-20 09:56:43 65

原创 JVM的符号引用和直接引用是什么

jvm符号引用

2023-02-15 12:42:46 305

原创 假如java类里的成员变量是自身的对象

java

2023-02-12 16:07:56 253

原创 吃透mq系列-kafka

mq

2023-02-11 16:26:04 101

空空如也

空空如也

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

TA关注的人

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