先看下Thread的代码结构 public class Thread implements Runnable { //默认线程里存放的为空,维护的是当前线程关联的的ThreadLocal.ThreadLocalMap的值 ThreadLocal.ThreadLocalMap threadLocals = null; //线程退出时 private void exit() { //解除了线程和threadloca的关系 threadLocals = null; }} 再看下ThreadLocal的代码结构 publi…

2021/04/24 0条评论 1198点热度 0人点赞 阅读全文

转自:Java高级架构狮  链接:https://www.jianshu.com/p/5c62b71fd882 一. 前提 很早之前就了解到目前主流的APM开源框架如Pinpoint、SkyWalking等等都是通过java.lang.instrument包提供的字节码增强功能来实现的。趁着对这块的热情还没消退,抽时间分析一下java.lang.instrument包的使用方式,记录下来写成一个系列的文章。本系列博文针对的是JDK11,其他版本的JDK可能不适合。 二. instrument简介 java…

2021/04/22 0条评论 1480点热度 0人点赞 阅读全文

项目地址:https://github.com/yxkong/agent 目前已实现对线程池、jvm的监控; 主要是在线程池创建时,对线程池进行增强,将线程池强引用到bootstrap-load-client-0.1.jar中的ThreadPoolMonitorData里。 使用此包的前提是线程池是固定资源,启动后不会销毁,如果动态创建线程池并销毁,需要调用shutdown或者shutdowNow,这块已实现对对强引用的解除,否则因为这块强引用导致资源无法释放,没法被gc回收 bootstrap-load…

2021/04/21 0条评论 1069点热度 2人点赞 阅读全文

今天看了下github上发现前几年fork的项目,我这的最后更新时间是2年前,源头还在实时更新,要做一下同步,记录下步骤。 一、克隆自己fork的项目到本地 git clone https://github.com/yxkong/useful-scripts.git 并进入对应的目录 cd useful-scripts# 查看所有d的分支git branch -a* master remotes/origin/HEAD -> origin/master remotes/origin/master remote…

2021/04/21 0条评论 1031点热度 0人点赞 阅读全文

5ycode 被管理耽误的架构师。工作、学习过程中的知识总结与分享,jvm,多线程,架构设计,经验分享等。 28篇原创内容 公众号 读了Java线程池实现原理及其在美团业务中的实践 后,我就想一个问题,如果让我去做这个线程池的监控,我该怎么做? 要对线程池进行监控,首先得明白,我们监控线程池的目的是什么? 监控是为了防患于未然,防止生产事故的发生。或者能在未发生时就进行入状态。 出问题线程池的现象: 线程池异步处理,消费速度过慢,导致任务积压,响应过慢,或者队列有限,导致提交被拒绝; 使用线程池做并行请求…

2021/04/20 0条评论 1072点热度 0人点赞 阅读全文

13.2 线程安全 13.2.1 java语言中的线程安全 java语言中各种操作共享的数据分为以下五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。 一、不可变 不可变的对象一定是线程安全了(废话,线程的不安全主要体现在增删改,只读没有任何不安全的地方) 如:java中的字符串实例是一个典型的不可变对象,用户调用内部的substring()、replace()这些方法都是返回一个新构造的字符串对象。 二、绝对线程安全 一 个类要达到“不管运行时环境如何,调用者都不需要任何额外的同步措施”可能需要付出非…

2021/04/08 0条评论 1133点热度 0人点赞 阅读全文

事故一,jvm相关 大对象(运营商数据;数据库查询未加查询条件,结果集过大;第三方接口或异步消息);来回转化 死循环; 推文并发量大 String.intern() 导致oom static字符串拼接 导致oom 堆内存过小 ConcGCThreads 线程过多,stw,导致性能上不去 jvm配置问题,堆、对象晋升(进入老年代过快或过慢) 额度服务因stw停顿过长导致程序性能不稳定 堆外内存过大; 堆外内存,人脸ocr服务,照片上传 排查方法: jmap -heap 查看进程jvm的使用情况jmap -histo …

2021/04/07 0条评论 1377点热度 0人点赞 阅读全文

这几天玩了下消息公众号,写了几篇文章,也群发了下,用了以后发现和我想象的不太一样。 先把我在这个过程中的问题回想一下吧。 公众号不群发不会对外展示; 公众号预览为什么有有效期,还限制访问人?; 公众号群发后,修改消息保存,信息不会同步到已群发的消息里; 已群发的消息不能撤回,只能删除; 上图分析下。 经过分析得出以下结论: 1,对外展示的都是生成的静态页面; 2,预览是生成了有有效期的缓存,过期失效; 3,除了修改错别人,工作号不允许修改内容(可能是静态文件生产以及cdn加速的成本较高); 4,撤回对于接收消息的用…

2021/04/07 0条评论 1143点热度 0人点赞 阅读全文

第一章DDD对我而言 还可以指引构建正确软件模型的方向。 领域驱动对团队人的要求较高: 具备深厚的业务能力(领域专家) 具备业务抽象能力; 具备技术抽象能力 DDD 领域驱动设计 可以实现目标 如果你希望打磨软件匠艺并提高项目的成功率; 如果你迫切期望创造软件来帮助企业把业务竞争力提升到新高度; 如果你期望实现出来的软件既能正确地对业务需求建模又可以采用最新建的软件架构进行扩张; 设计 设计是不可或缺的,除了优秀设计就是糟糕设计,根本不存在不做设计. 有效设计(Effective Design) 可以满足商业组织希…

2021/04/06 0条评论 1258点热度 0人点赞 阅读全文

今天测试在验证的时候,测试反馈工单后台查看数据特别慢,慢到数据无法展示。那就看下呗。看了下有慢sql。 本着对生产敬畏的心态,转移到测试环境进行验证。测试数据不够,自己造呗。工单表具备以下特征: 数据字段多,索引也多; 随着数据的流转,数据一直在更新;以下数据是参考测试表结构的模拟; -- 创建表,多加了几个字段为了占用空间填充CREATE TABLE `t_loan_order` ( `app_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '工单ID', `cust…

2021/04/03 0条评论 1184点热度 0人点赞 阅读全文
1789101132