自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

架构技术专栏

技术才是王道

  • 博客(109)
  • 资源 (1)
  • 收藏
  • 关注

原创 每日一个知识点:Volatile 和 CAS 的弊端之总线风暴

每日一个知识点系列的目的是针对某一个知识点进行概括性总结,可在一分钟内完成知识点的阅读理解,此处不涉及详细的原理性解读。一、什么是总线风暴总线风暴,听着真是一个帅气的词语,但如果发生在你的系统上那就不是很美丽了,废话不多说,先看图说结论。什么是总线风暴,先来看结论在java中使用unsafe实现cas,而其底层由cpp调用汇编指令实现的,如果是多核cpu是使用lock cmpxchg指令,单核cpu 使用compxch指令。如果在短时间内产生大量的cas操作在加上 volatile的嗅探机制.

2020-09-28 14:30:13 1503

原创 千字图文带你搞定Spring Boot核心知识点

最近新的项目架构启用spring boot cloud,SO现在先坐下简单的技术梳理,后边的博客会把spring的技术细节,boot的技术细节重新梳理一遍1、下面是根据条件初始化bean2、读取配置信息操作加载配置可以用@PropertySource("classpath:com/ecej/test2/test.properties") 记得要用...

2017-01-20 11:08:55 48243 1

原创 大厂程序员必知的排错调试方法

很好用, 将历史收集到的数据持久化在磁盘上,所以我们快速来查询历史的系统数据。当然实时的应用情况也是可以查询的啦。top除了看一些基本信息之外,剩下的就是配合来查询vm的各种问题了。tail -f 与tail F 与tailf三者区别。批量查询vm-shopbase满足条件的日志。查看内存使用 - free -m。查看系统,设备,环境信息。文本查找 - grep。文件监听 - tail。查看所有网络接口的属性。查看所有已经建立的连接。查看系统负载磁盘和分区。查看系统负载磁盘和分区。查看服务,模块和包相关。

2024-01-29 11:20:30 253

原创 一文搞定JMM核心原理

实例化的两个Integer对象将存储在堆上,但由于该方法每次执行该方法时都会创建一个新的Integer对象,因此执行此方法的两个线程将创建单独的Integer实例。基本类型的所有局部变量(boolean,byte,short,char,int,long,float,double)完全存储在线程堆栈中,因此对其他线程不可见。在左CPU上运行的一个线程将共享对象复制到其CPU缓存中,并将其count变量更改为2.对于在右边的CPU上运行的其他线程,此更改不可见,因为计数更新尚未刷新回主内存中.

2024-01-08 22:27:13 884

原创 一文搞定JVM内存模型

的值为20.75MB,这就是初始的高水位线,一旦触及这个水位线,Full GC 将会被触发并卸载没用的类(即这些类对应的类加载器不再存活),然后这个高水位线将会重置,新的高水位线的值取决于。对一个函数而言,它的参数和局部变量越多,使得局部变量表膨胀,它的栈帧就越大,以满足方法调用所需传递的信息增大的需求。在动态链接的时候用到的就是运行时常量池。每个线程在创建的时候都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次 Java 方法调用,是线程私有的,生命周期和线程一致。

2024-01-07 23:11:04 939

原创 一文搞定JVM字节码

为什么jvm不能直接运行java代码呢,这是因为在cpu层面看来计算机中所有的操作都是一个个指令的运行汇集而成的,java是高级语言,只有人类才能理解其逻辑,计算机是无法识别的,所以java代码必须要先编译成字节码文件,jvm才能正确识别代码转换后的指令并将其运行。在字节码的4,5,以及13,14中执行的是同一个操作,就是将int型的3入操作数栈顶,并存入第二个局部变量。顺便一提的是,当扩展的方法为Any时,意味着Any是non-null的,这时,编译器会在方法体的开头检查参数的非空,即调用。

2024-01-06 23:17:09 799

原创 程序员从菜鸟到大神成长书单

本书不仅仅是一个模式目录,还提供了经验驱动的建议,以帮助你设计、实现、测试和部署基于微服务的应用程序。本书是操作系统领域的经典之作.书中集中讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入/输出、死锁等,同时还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统、微内核、多核处理机上的虚拟机以及操作系统设计等方面的内容。比如代码的坏味道,讲到重复代码、过长的函数、过长的类、过多的参数等等,都是我们司空见惯的不好代码,我们工作中应该注意、积累、思考,写出优雅、健壮的好代码。

2024-01-05 11:06:47 795

原创 一文搞懂什么是阻塞IO、信号驱动IO、Reactor模型、零拷贝

IO两个阶段,进程都是非阻塞的。第二步,缓冲区描述符和数据长度传到 socket 缓冲区,这样网卡的 SG-DMA 控制器就可以直接将内核缓存中的数据拷贝到网卡的缓冲区里,此过程不需要将数据从操作系统内核缓冲区拷贝到 socket 缓冲区中,这样就减少了一次数据拷贝;你早上去买现炸油条,点单收钱和炸油条原来都是由一个人完成的,现在他成了瓶颈,所以专门找了个收银员下单收钱,他则专注在炸油条。你早上去买现炸油条,门口排队的人多,现在引入了一个叫号系统,点完单后你就可以做自己的事情了,然后等叫号就去拿就可以了。

2024-01-05 09:05:22 872

原创 聊聊分布式会话及实现方案

cookie和session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的,服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie,因此当我们完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用。是服务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。

2024-01-03 23:26:51 958

原创 面试官:说说JVM内存整体结构?

每个线程在创建的时候都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次 Java 方法调用,是线程私有的,生命周期和线程一致。当伊甸园的空间填满时,程序又需要创建对象,JVM 的垃圾回收器将对伊甸园区进行垃圾回收(Minor GC),将伊甸园区中的不再被其他对象所引用的对象进行销毁。如果 Java 虚拟机栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈,那 Java 虚拟机将会抛出一个。

2024-01-02 09:38:56 348

原创 生产升级JDK17必读手册

因此,在一些特定场景下(比如:机器学习,线性代数,密码学等),建议大家还是尽可能使用 Java16 为大家提供的 Vector API 来实现复杂的向量计算。关于堆外内存段的释放,Memory Access API 提供有显式和隐式 2 种方式,开发人员除了可以在程序中通过 MemorySegment 的 close()方法来显式释放所申请的内存资源外,还可以注册 Cleaner 清理器来实现资源的隐式释放,后者会在 GC 确定目标内存段不再可访问时,释放与之关联的堆外内存资源。提供线程间独立的随机序列。

2023-12-29 14:27:01 902 1

原创 Ambari HDP集群搭建全攻略

世界上最快的捷径,就是脚踏实地,本文已收录【架构技术专栏】关注这个喜欢分享的地方。最近因为工作上需要重新用Ambari搭了一套Hadoop集群,就把搭建的过程记录了下来,也希望给有同样需求的小伙伴们一个参考,作者:图头数据Ambari Ubuntu14.04 最新版本 2.2.1HDP Ubuntu14.04 最新版本 2.4.3.0Ambari是什么Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari已支持大.

2020-12-08 10:22:46 1565

原创 Spring Cloud Security OAuth2.0 认证授权系列(一) 基础概念

世界上最快的捷径,就是脚踏实地,本文已收录【架构技术专栏】关注这个喜欢分享的地方。前序最近想搞下基于Spring Cloud的认证授权平台,总体想法是可以对服务间授权,想做一个基于Agent 的无侵入的方式。因为新版本的Spring Cloud Security 、 OAuth2.0 貌似改了些东西,说上网随便翻翻,但发现没有针对Spring Security OAuth2.0认证授权系统性的文章。遂结合一些资料和自己的一些梳理,来搞一个认证授权系列,就当是一个总结了。其实前面我也搞了几个关.

2020-11-23 14:05:47 675

原创 授权和认证,如何实现用户追踪和认证?

世界上最快的捷径,就是脚踏实地,本文已收录【架构技术专栏】关注这个喜欢分享的地方。在一些互联网公司的面试中,面试官往往会问这样一个问题:如果禁用浏览器 cookie,如何实现用户追踪和认证?遗憾的是依然有大量候选人答非所问,无法搞清楚 cookie 和 session 之间的区别。而在工作中也有让人惊讶的真实案例:把 user ID 存储到 local storage 中当做 token 使用,原因是他们声称弃用了 cookie 这种落后的东西;一个移动端项目,服务器给出的 API 中需要客.

2020-11-10 14:28:58 1235

原创 InnoDB插入缓冲原理详解

世界上最快的捷径,就是脚踏实地,本文已收录【架构技术专栏】关注这个喜欢分享的地方。InnoDB引擎有几个重点特性,为其带来了更好的性能和可靠性:插入缓冲(Insert Buffer)两次写(Double Write)自适应哈希索引(Adaptive Hash Index)异步IO(Async IO)刷新邻接页(Flush Neighbor Page)今天我们的主题就是 插入缓冲(Insert Buffer),由于InnoDB引擎底层数据存储结构式B+树,而对于索引我们又有聚集索引和非聚.

2020-10-29 17:03:40 1343 5

原创 干货 | 14张图带你了解并发底层原理

零、开局前两天我搞了两个每日一个知识点,对多线程并发的部分知识做了下概括性的总结。但通过小伙伴的反馈是,那玩意写的比较抽象,看的云里雾里晕晕乎乎的。所以又针对多线程底层这一块再重新做下系统性的讲解。有兴趣的朋友可以先看下前两节,可以说是个笼统的概念版。好了,回归正题。在多线程并发的世界里synchronized、volatile、JMM是我们绕不过去的技术坎,而重排序、可见性、内存屏障又有时候搞得你一脸懵逼。有道是知其然知其所以然,了解了底层的原理性问题,不论是日常写BUG还是面试都是必备神器了。

2020-10-21 17:52:18 372

原创 你不知道的内存知识

世界上最快的捷径,就是脚踏实地,本文已收录【架构技术专栏】关注这个喜欢分享的地方。一、CPU与内存先铺垫几个概念,以免后面混乱:Socket或Processor: 指一个物理CPU芯片,盒装还是散装的。上面有很多针脚,直接安装在主板上。Core : 指在Processor里封装一个CPU核心,每个Core都是完全独立的计算单元,我们平时说的4核心CPU,指的就是Processor里面封装了4个Core。HT超线程: 目前Intel与AMD的Processor大多支持在一个Core里.

2020-10-21 09:26:35 353

原创 Spring Boot 系列:日志动态配置详解

世界上最快的捷径,就是脚踏实地,本文已收录架构技术专栏关注这个喜欢分享的地方。开源项目:分布式监控(Gitee GVP最有价值开源项目 ):https://gitee.com/sanjiankethree/cubic摄像头视频流采集:https://gitee.com/sanjiankethree/cubic-video一、简介Spring Boot 版本: 2.3.4.RELEASE不知道大家有没有过当线上出现问题的时候,需要某些DEBUG日志,但奈何当前使用时INFO。如果想启用D.

2020-10-16 18:38:18 222

原创 每日一个知识点:什么时候会触发Full GC

每日一个知识点系列的目的是针对某一个知识点进行概括性总结,可在一分钟内完成知识点的阅读理解。此处不涉及详细的原理性解读,只作为一种抛砖引玉。真正的理解一定是你自我研究探索所收获的知识,加入组织带你一起进步成长。世界上最快的捷径,就是脚踏实地。本文已收录架构技术专栏关注这个喜欢分享的地方,每日获得一个知识点1. 调用 System.gc()只是建议虚拟机执行 Full GC,但是虚拟机不一定真正去执行。不建议使用这种方式,而是让虚拟机管理内存。2. 未指定老年代和新生代大小,堆伸缩时会产.

2020-10-16 12:13:18 3271

原创 Spring Boot 系列:最新版优雅停机详解

爱生活,爱编码,本文已收录架构技术专栏关注这个喜欢分享的地方。开源项目:分布式监控(Gitee GVP最有价值开源项目 ):https://gitee.com/sanjiankethree/cubic摄像头视频流采集:https://gitee.com/sanjiankethree/cubic-video优雅停机目前Spring Boot已经发展到了2.3.4.RELEASE,伴随着2.3版本的到来,优雅停机机制也更加完善了。目前版本的Spring Boot 优雅停机支持Jett.

2020-10-14 23:00:49 1107

原创 看懂这篇,才能说了解并发底层技术

爱生活,爱编码,本文已收录架构技术专栏关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种JVM、多线程、源码视频、资料以及技术文章等你来拿零、开局前两天我搞了两个每日一个知识点,对多线程并发的部分知识做了下概括性的总结。但通过小伙伴的反馈是,那玩意写的比较抽象,看的云里雾里晕晕乎乎的。所以又针对多线程底层这一块再重新做下系统性的讲解。有兴趣的朋友可以先看下前两节,可以说是个笼统的概念版。好了,回归正题。在多线程并发的世界里synchronized、volatile、JMM是我们绕不过去.

2020-10-11 21:27:43 243

原创 垃圾回收器为什么必须要停顿下?

美丽又短暂的假期居然这么快就结束了,学习的小车轮继续的滚起来吧垃圾回收器为什么必须要停顿下?在垃圾收集器在获取根节点这一步时必须暂停用户线程的也就是我们常说的STW,目前可达性分析算法耗时最长的查找引用链的过程已经可以做到和用户线程一起并发,但根节点枚举的获取还必须是要在一个能保证一致性的快照中才能进行。这里说的一致性就是根节点枚举分析期间执行子系统看起来就像被冻结在某个时间点上,不会出现一边分析,根节点的对象引用关系还在不断的变化的情况。这也是导致垃圾收集过程必须停顿所有用户线程的其中一个重要原.

2020-10-09 20:40:42 300 2

原创 每日一个知识点系列:volatile的可见性原理

每日一个知识点系列的目的是针对某一个知识点进行概括性总结,可在一分钟内完成知识点的阅读理解,此处不涉及详细的原理性解读。img看图说话关键点1: 总线嗅探器(MESI 缓存一致性原理 )关键点2: 总线锁、缓存锁,为了解决并发问题,会在内存区域的值加锁(内存锁),是在store 之前会给总线内的值加一个锁,write 完成后在解锁(这里大部分是缓存行锁的,总线锁看情况)。关键点3:就是为了使一个CPU上运行的线程能够读取到另外一个CPU线程的共享变量更新。这个CPU必须先根据无效化队列中存储.

2020-09-27 12:18:03 179

原创 每日一个知识点:new 一个对象过程

1、 加载验证验证是否被加载过,是否能在常量池找到一个类的符号引用,并且这个符号引用代表的类有没有被加载、解析、和初始化过,没有的话执行类加载流程。2、 内存分配对象所需内存的大小在类加载完成后便可完全确定。由垃圾回收器决定分配的方式,有指针碰撞( parnew serial)和 空闲列表( cms)两种。为了安全的分配对象,内部会有两种分配方式,使用 CAS + 重试,另一种是本地线程缓冲分配TLAB,只有TLAB分配完了才需要同步锁定。虚拟机必须将分配到的内存空间(但不包括对象头)都初始化

2020-09-27 09:37:51 136

原创 (最新 9000 字 )Spring Boot 配置特性解析

爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种JVM、多线程、源码视频、资料以及技术文章等你来拿一、概述目前Spring Boot版本: 2.3.4.RELEASE,这更新的速度也是嗖嗖的了,随着新版本的发布,也一步步针对公司基础组件进行了升级改造,其中很重要的一块就是配置文件的更新(虽然目前已经全部使用了Apollo)。针对Spring Boot 新版本的配置文件也做了一次梳理,确实发现了以前没有注意到的点。二、新版的外部配置1、基础配置加.

2020-09-24 23:36:48 215

原创 Spring Boot 知识清单(一)SpringApplication

爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。一、概述目前Spring Boot已经发展到2.3.4.RELEASE ,对于它的好处网上也是铺天盖地的,这里就不再重复了。直接说重点,从Spring Boot1.x一步步跟着迭代升级到现在的2.3.4也是遇到了很多的坑,了解其新版本的特性是非常重要的,可以帮助我们避免很多不必要的麻烦。因为我也一直在搞基于Spring Boot技术栈的组件开发工作,最近准备针对基础组件进行部.

2020-09-23 23:27:01 252

原创 何时用多线程?多线程需要加锁吗?线程数多少最合理?

爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。一、什么时候应该使用多线程?今天看到一个问题,突然有感而发,想聊下这个话题。不知道大家有没有想过这个问题,就是什么时候我该使用多线程呢?使用多线程就一定会提升系统性能吗?1、其实是否应该使用多线程在很大程度上取决于应用程序的类型。计算密集型(如纯数学运算) 的, 并受CPU 功能的制约, 则只有多CPU(或者多个内核) 机器能够从更多的线程中受益, 单C.

2020-09-22 23:09:29 2459

原创 不了解 QPS、TPS、RT、并发数、吞吐量,劝你简历别写熟悉高并发

爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。一、概述分布式、微服务、Service Mesh目前都是大家耳熟能详的词语了,现在随便一个互联网公司说出来大家都是在搞微服务。但我们搞来搞去,怎么样来衡量一个应用当前的状态到底是怎么样的?到底需不需要扩容?是需要横向扩容还是进行项目重构?这时候我们就需要一堆监控指标来协助我们进行分析当前的应用状态,以便在某些事故发生前进行资源上的调配或优化。下面咱们就来说道说道这几个.

2020-09-20 22:32:27 1082

原创 看不懂ThreadDump?那是因为你不了解线程状态!

爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。苦恼每当线上应用出现各种吞吐下降、RT增长、CPU飚高、内存溢出等问题的时候是不是脑阔疼。面对出现的问题,简直就是无从下口啊。不要慌,其实对于线上出现的各种奇葩问题,我们使用ThreadDump就能解决90%了。很多时候根本不需要对JVM参数进行各种复杂的调优,好好看看线程栈,优化优化你的代码,简直就是美滋滋的提升性能。好了,言归正传,下面我们就来说下线程栈重点关注的点.

2020-09-20 20:07:37 619

原创 看完这篇,分布式服务链路追踪的原理就被你摸透了

爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。0. 概述Dapper–Google生产环境下的分布式跟踪系统。Dapper的英文论文:http://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/36356.pdf中文论文:https://bigbully.github.io/Dapper-translation/.

2020-09-17 21:54:39 1106

原创 微服务时代,你还不懂APM?

爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。1. APM?APM (Application Performance Management) 即应用性能管理(应用性能监控)APM主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化,提高企业IT应用的可靠性和质量。旨在确保最终用户获得高质量的体验,降低IT总拥有成本(TCO)TCO (Total Cost of Ownership ),即总拥有成本,包括产.

2020-09-17 19:09:00 1234

原创 百万级消息RocketMQ 不停机,扩容,平滑升级!

一、背景1、各业务系统持续迭代过程中,JDK、SpringBoot、RocketMQ Client 等框架也进行了升级,高版本的 RocketMQ Client 发送的消息到低版本中,在控制台中午无法查看消息明细,致使业务日常排查问题等相当困难。2、原业务端发送消息与本地事务很难做到一致性,要保障不丢失数据和数据不一致开发成本非常高,RocketMQ V4.4 版本增加了事务消息,引入事务消息后可大大降低实现这一特性的难度。3、我们对 MQ 的依赖越来越强,MQ 的重要性和稳定性都已经可以和 DB 相

2020-09-15 22:01:34 1313

原创 五分钟带你读懂 TCP全连接队列(图文并茂)

一、问题今天有个小伙伴跑过来告诉我有个奇怪的问题需要协助下,问题确实也很奇怪。客户端调用RT比较高并伴随着间歇性异常Connection reset出现,而服务端CPU 、线程栈等看起来貌似都很正常,而且服务端的RT很短。这里先说下结果:因为TCP全连接队列太小导致的连接被丢弃,因为项目使用Spring Boot 内置的Tomcat,而默认accept-count是100,而这个参数在这里就代表了全连接队列大小。所以在请求波峰的时候全连接队列被打满导致有连接丢弃。所以我们调整server.tomcat

2020-07-08 22:59:59 1370 3

原创 新秀网关Apache-APISIX 插件 proxy-rewrite

一、概述proxy-rewrite 官方的定义是上游代理信息重写插件(请求方是下游,服务方是上游)。举个例子就是你的应用服务(用于认证的)接口各式各样的REST API,我现在就可以通过proxy-rewrite 插件给他们统一加一个前缀auth来方便管理和使用而你应用代码不需要任何改变。以前访问你应用使用/sso/check api,现在就是/auth/sso/check api了,而这个转换过程就是proxy-rewrite的功能了。这里是官方的介绍:https://github.com/apac

2020-07-07 15:33:04 6153 1

原创 新秀网关-Apache-APISIX--初探

一、概述最近有工作需求需要搞一个网关来给我们的应用做路由、限流等等功能。以前使用的Spring Cloud Zuul做网关,但目前的技术体系如果要用它就比较繁琐点了,所以又看了看其他的,发现Apisix 这货很不错啊。主要是KONG忒复杂了,Apisix很轻量很简单的样子,看起来不错,下面看下和KONG的官方对比。功能Apache APISIXKONG项目归属Apache 软件基金会Kong Inc.技术架构Nginx + etcdNginx + postgres

2020-07-01 19:07:45 3163

原创 Mac Docker 新版换源的问题

一、问题因为官方仓库实在是太慢了,所以一般我们都换个国内的使用,但网上查了下都是老资料了,根本没用,所以查了下官方资料。当前使用的版本2、解决看了下资料,其实也很简单打开 Prefreences 点击Docker Engine ,如图然后将我们国内源加入即可,完整配置如下{ "debug": true, "experimental": false, "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn",

2020-06-30 15:22:48 3491

原创 Spring Boot RocketMQ 多集群客户端使用小坑记录

一、前情今儿听说业务小伙伴需要在项目中使用多个RocketMQ集群,当前业务有一个集群做canal消费使用(此MQ集群开启了ACL),需要在增加一个MQ集群做业务数据发送,项目使用了Spring Boot组件。好了,问题描述完了,概括下,就是当前有个MQ集群在进行数据消费,需要在像另一个MQ集群发送数据。整明白需求,搞起来,这不是分分钟的事儿吗,嗖嗖嗖,我就写了下面的Config。public class RocketMqConfig { @Value("${rocketmq.mall.na

2020-06-29 18:42:28 1523

原创 Netty 新手入门 ( 一 ) Netty 与 NIO

前言最近因为工作需要使用到Netty方面的技术点,而以前也对这方面没有太多的关注过,所以边学习边总结,也给自己留个资料,以便以后查看起来方便。Java NIO再说Netty 之前先简单了解下Java 的NIO,因为Netty也是为了简化我们的编码对Java NIO进行了一系列的封装。Java NIO 从java领域讲就是 NEW I/O ,另一种就是Non-blocking I/O。它是一种同步非阻塞的I/O模型,也是I/O多路复用的基础。在NIO中有三个非常重要的概念,缓冲区(Buffer)、通

2020-06-23 17:21:38 341

原创 @RefreshScope 刷新机制都不懂,还敢说会?

一、前言用过Spring Cloud的同学都知道在使用动态配置刷新的我们要配置一个@RefreshScope 在类上才可以实现对象属性的的动态更新,本着知其所以然的态度,晚上没事儿又把这个点回顾了一下,下面就来简单的说下自己的理解。总览下,实现@RefreshScope 动态刷新的就需要以下几个:@ Scope@RefreshScopeRefreshScopeGenericScopeScopeContextRefresher二、@Scope一句话,@RefreshSco

2020-06-11 00:01:43 58187 10

原创 ThreadDump分析实战(性能瓶颈分析)

一、回顾在前面我们了解了ThreadDump的查看方式,也大概了解了其能够做些什么,下面我们来继续探讨这个问题,不了解的同学回顾下以前的资料ThreadDump分析笔记(一) 解读堆栈ThreadDump分析笔记(二) 分析堆栈二、瓶颈在哪里改善资源也就是我们常说的性能优化,改善也就是需要在有限的资源内去做更多的事情。线程的运行因某个特定资源受阻时,我们称之为受限于该资源比如受限于数据库,受限于对端的处理能力等。其实利用并发来提高系统性能,就是意味着我们要使CPU尽可能的处于忙碌的状态。如果程序

2020-06-01 23:47:31 749

java问题定位技术

本文档用于帮助开发读懂thread dump 根据其查询系统瓶颈

2018-11-08

空空如也

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

TA关注的人

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