![](https://img-blog.csdnimg.cn/2b3612c7133f4107a9fc60d83412e532.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
技术
文章平均质量分 72
学习,钻研,热爱,分享
湘王
湘王,创业公司CTO及技术合伙人;
十五年以上软件研发经验,有大型研发团队(200+人)的管理经验;
精通Java,熟悉Python、Scala、Go,熟悉敏捷开发模式,能熟练使用各类中间件;
开发速度快、交付质量高、稳定易维护;
擅长业务场景驱动开发、软件工程实践、重难点技术攻关、团队能力培养。
展开
-
JVM系统优化实践(24):ZGC(一)
截止到目前,算上ZGC,Java一共有九种类型的GC,它们分别是……原创 2023-08-07 20:38:16 · 671 阅读 · 0 评论 -
JVM系统优化实践(23):GC生产环境案例(六)
在互联网大厂中,对每天亿级流量的日志进行清洗、整理是非常常见的工作。在某个系统中,需要对用户的访问日志做脱敏处理,也就是清洗掉姓名、身份证号、手机号等个人隐私信息后在保存到数据库中或者交付给其他应用使用。原创 2023-07-26 19:55:37 · 449 阅读 · 0 评论 -
JVM系统优化实践(22):GC生产环境案例(五)
除了Tomcat、Jetty,另一个常见的可能出现OOM的地方就是微服务架构下的一次RPC调用过程中。笔者曾经经历过的一次OOM就是基于Thrift框架封装出来的一个RPC框架导致的宕机。原创 2023-07-24 20:02:44 · 818 阅读 · 1 评论 -
JVM系统优化实践(21):GC生产环境案例(四)
前面说了一般应用的OOM情况,但是OOM不知发生在应用层,有时候专门负责运行Java的Tomcat也会偶尔罢工一下,抛出OOM异常。因为Tomcat本身也是一个JVM进程。原创 2023-07-21 19:45:26 · 318 阅读 · 0 评论 -
JVM系统优化实践(20):GC生产环境案例(三)
某新手开发工程师接到了一个保存Elasticsearch日志的任务,以供后续分析之用。但写代码的时候,误将保存日志的代码段弄成了无限循环,程序启动后,没用多久就崩溃了。原创 2023-07-19 21:08:57 · 1317 阅读 · 0 评论 -
JVM系统优化实践(19):GC生产环境案例(二)
接昨天的问题继续来说,在高并发场景中,对象过多容易导致OOM。由于高并发导致Young GC存活对象过多,因此会有太多对象进入老年代,导致老年代也被填满,频繁触发Full GC,而老年代空间也很快被塞满。可以用图来表示。原创 2023-07-17 20:25:03 · 390 阅读 · 0 评论 -
JVM系统优化实践(18):GC生产环境案例(一)
生产环境中,最常见的一种案例就是OOM,也叫「内存溢出」,它表示JVM已经无法支撑业务系统的运行。而很多工程师都没有类似处理线上系统故障的经验,尤其是这种突发的故障。原创 2023-07-15 07:30:00 · 307 阅读 · 0 评论 -
JVM系统优化实践(16):线上GC案例(一)
一般新手工程师在部署生产环境时基本不会对JVM进行设置,基本跟上也都是使用JVM的默认设置,这是一个很大的隐患。例如,如果不设置-Xmx或者-Xms的话,可能初始的年轻代和老年代就几百M大小。Full GC一般在正常情况下,都是按天为单位来发生的,比如每天一次,或几天一次Full GC。原创 2023-04-18 07:30:00 · 288 阅读 · 0 评论 -
JVM系统优化实践(15):GC可视化工具实践
线上系统的JVM监测要么使用jstat、jmap、jhat等工具查看JVM状态,或者使用监控系统,如Zabbix、Prometheus、Open-FaIcon、Ganglia等。作为一个工具人,怎么能不懂jstat、jmap、jhat呢?原创 2023-04-10 07:30:00 · 447 阅读 · 0 评论 -
JVM系统优化实践(14):GC可视化工具
工欲善其事,必先利其器。知道了GC工作原理,学会了看GC日志之后,再来了解一下分析GC的工具。它们分别是jstat、jmap、jhat。原创 2023-04-07 07:30:00 · 328 阅读 · 0 评论 -
JVM系统优化实践(13):GC动手实践
上一次留了个小尾巴:怎么以通过代码模拟对象年龄在15岁之后才进入老年代呢?自己试着实现了一下。然后再结合之前了解的其他GC知识,来模拟更多的触发GC的实例。原创 2023-04-03 07:30:00 · 213 阅读 · 0 评论 -
JVM系统优化实践(12):GC日志分析
了解了基本的G1垃圾回收机制以后,就可以结合实际日志分析一下它的日志内容了,以后再遇到问题自己也能看懂。原创 2023-03-27 21:38:29 · 600 阅读 · 0 评论 -
JVM系统优化实践(9):G1垃圾回收器
在JDK8及其之前,一直用的都是ParNew+CMS的组合:ParNew负责年轻代的垃圾回收,而由CMS负责老年代的垃圾回收,但会产生Stop the World这个无法避免的问题。原创 2023-03-08 07:48:19 · 544 阅读 · 0 评论 -
JVM系统优化实践(8):订单系统的垃圾回收案例
上回说到了年轻代和老年代的两个垃圾回收器:ParNew和CMS,并且将CMS的GC过程也一并介绍了,现在来看个订单系统的案例。原创 2023-03-06 06:58:11 · 408 阅读 · 0 评论 -
JVM系统优化实践(7):垃圾回收器与垃圾回收算法
上回说到了年轻代、老年代与数据计算的一个案例。接下来就先讲一讲年轻代和老年代的两个垃圾回收器:ParNew和CMS。原创 2023-03-04 07:30:00 · 424 阅读 · 0 评论 -
JVM系统优化实践(6):年轻代、老年代与数据计算
如果当前Survivor区中年龄相同的一批对象总大小 ≥ Survivor总数× 50%,那么这批对象及比它们年龄更大的对象,就都直接进入老年代。但是也有可能在Minor GC之后,发现剩余的存活对象太多,导致其大小总和超过Survivor区域,那么就会把这些对象直接转移到老年代,也不计算所谓的50%。原创 2023-03-02 07:30:00 · 273 阅读 · 0 评论 -
JVM系统优化实践(5):什么时候GC以及有哪些GC
既然程序运行会产生大量的废弃物,也就是「垃圾」,那总不能一直堆着不管吧。现在就来粗浅地谈谈Java里面什么时候会触发GC以及有哪些GC。原创 2023-02-28 07:30:00 · 692 阅读 · 0 评论 -
JVM系统优化实践(4):以支付系统为例
前面说过,JVM会将堆内存划分为年轻代、老年代两个区域。年轻代会将创建和使用完之后马上就要回收的对象放在里面,而老年代则将创建之后需要长期存在的对象放在里面。那么现在再来看一个比较具体的例子。原创 2023-02-26 07:30:00 · 358 阅读 · 0 评论 -
JVM系统优化实践(3):分代模型
大部分在代码里创建的对象,存活周期都是极短的,只有少数对象是长期存活的,如静态类和静态变量。采用不同方式创建和使用对象,其生存周期也不同。因此,JVM将堆内存划分为年轻代、老年代两个区域。原创 2023-02-24 07:30:00 · 54 阅读 · 0 评论 -
JVM系统优化实践(2):JVM内存与回收
上次把JVM的类加载过程粗略地过了一遍,今天再来粗略地看看JVM运行代码时,系统里究竟发生了什么。原创 2023-02-22 07:30:00 · 151 阅读 · 0 评论 -
JVM系统优化实践(1):JVM概览
这里聚集了多个真实的JVM优化案例,每个案例都从背景开始,通过现场故障还原,一步步分析、排查和定位每个问题,包括解决问题的过程中涉及到的底层JVM原理的剖析。同时通过大量真实案例的手动实践和演练,逐步积累起丰富的排查经验。原创 2023-02-20 07:30:00 · 332 阅读 · 1 评论 -
自命为缓存之王的Caffeine(6)
之前用Caffeine替代Redis的时候,发现先保存KV,再获取key,过期时间为3秒。但即使过了3秒,还是能获取到保存的数据。这是为什么呢?原创 2023-02-18 07:30:00 · 415 阅读 · 0 评论 -
自命为缓存之王的Caffeine(5)
普通的缓存和Token的区别在于时效性和持久性,自定义缓存计时非常麻烦,大部分中间件又没有过期失效。如果只是单节点,完全可以用Caffeine替代Redis。原创 2023-02-16 07:30:00 · 320 阅读 · 0 评论 -
自命为缓存之王的Caffeine(4)
SpringBoot有两种使用Caffeine的方式:1、直接引入Caffeine依赖,然后使用Caffeine方法实现缓存;2、引入Caffeine和Spring Cache依赖,使用注解方式实现缓存。第一种方式比较灵活,第二种方式比较方便。原创 2023-02-14 07:30:00 · 241 阅读 · 0 评论 -
自命为缓存之王的Caffeine(3)
缓存的存储空间是远远小于磁盘的。所以对于有些过期的数据,就需要定期进行清理,腾出存储空间。Caffeine又是怎么做的呢?原创 2023-02-12 07:30:00 · 884 阅读 · 0 评论 -
自命为缓存之王的Caffeine(2)
缓存除了过期策略,其实还有刷新和填充策略。刷新策略就是当数值变化时怎么处理,而所谓填充策略,就是将数据保存到缓存的方式。原创 2023-02-10 07:30:00 · 398 阅读 · 0 评论 -
自命为缓存之王的Caffeine(1)
Caffeine完全继承自Google Guava的衣钵,青出于蓝而胜于蓝。据说速度很快,性能很好,不管是读还是写,号称「拿望远镜都看不到对手」!原创 2023-02-08 07:30:00 · 236 阅读 · 0 评论 -
Java两大工具库:Commons和Guava(6)
除了操作集合、限流和缓存,Guava还有另一个隐秘的功能:事件总线EventBus机制——是发布-订阅模式的实现,不需要显式地注册回调——比观察者模式更灵活。原创 2023-02-06 07:30:00 · 261 阅读 · 0 评论 -
Java两大工具库:Commons和Guava(4)
在Nginx中提到过通过限流算法实现对后端服务的保护,避免因服务器承载压力太大而被冲垮。大家都知道Guava是用来操作集合的,但其实Guava也可以实现限流的功能。原创 2023-02-02 07:30:00 · 272 阅读 · 0 评论 -
Java两大工具库:Commons和Guava(3)
虽然Apache Commons提供了专门的Commons-Collections来封装集合操作,但Google Guava更为强大,并且已经是事实上的集合操作扩展类了。原创 2023-01-31 07:30:00 · 276 阅读 · 0 评论 -
Java两大工具库:Commons和Guava(2)
如果需要将文件或图片存储到自己的服务器上去,也可以直接使用Commons库提供的commons-fileupload工具,不用自己造轮子。原创 2023-01-29 07:30:00 · 235 阅读 · 0 评论 -
Java两大工具库:Commons和Guava(1)
在互联网行业,另一个和Apache一样出名甚至更出名的就是Google,一个是全世界最大的开源软件基金会,一个是全世界最大的搜索引擎,出于自身业务的需要,他们都对JDK进行了封装和扩展,分别是Apache Commons和Google Guava。原创 2023-01-27 07:30:00 · 592 阅读 · 0 评论 -
Nginx与LUA(7)
进程一般是应用程序的启动实例,进程拥有代码和打开的文件资源、数据资源、独立的内存空间,例如,独立部署的jar包、运行的redis、mongodb程序等,都可以成为进程。而线程从属于进程,是应用程序的实际执行者,一个进程至少包含一个主线程,或者有更多的子线程,线程拥有自己的栈空间。原创 2023-01-24 07:30:00 · 1352 阅读 · 0 评论 -
Nginx与LUA(6)
OpenResty已经为开发者提供了很多成熟且开箱即用的「模块」:cjson、redis客户端、mysql客户端等。lua-resty-redis是为Lua提供的redis客户端,而lua-resty-mysql则是为Lua提供的mysql客户端。原创 2023-01-22 07:30:00 · 1559 阅读 · 0 评论 -
Nginx与LUA(5)
Nginx又是业务直接和外部交流的接入点,对二次开发和动态变化又有着强烈的以及一些定制化的需求,因此出现了LUA这种嵌入式的脚本语言,它能揉和以及处理各种不同的Nginx上游输出(proxy、log等)。原创 2023-01-20 07:30:00 · 1942 阅读 · 0 评论 -
Nginx与LUA(4)
Nginx既然可以限制流量,那能不能「扩展」流量呢?当然可以,但可能不是你想象的那种「扩展」,更准确地来说是复制,或者说「拉分支」。原创 2023-01-18 07:30:00 · 342 阅读 · 0 评论 -
Nginx与LUA(3)
在互联网应用中,很多场景都会涉及到高并发请求,如果不对这些请求做限制,那么服务器很快就会被挤垮。就像在12306买票一样,如果全国人民都去抢票,服务器是无论如何也扛不住压力的。原创 2023-01-16 07:30:00 · 248 阅读 · 0 评论 -
Nginx与LUA(2)
除了反向代理,Nginx另一个主要的功能就是「负载均衡」。所谓负载均衡,就是将请求分摊到多个服务器上执行,从而减轻单台服务器的访问压力。原创 2023-01-13 07:30:00 · 537 阅读 · 0 评论 -
Nginx与LUA(1)
HTTP服务器是相对于HTTP客户端来说的——HTTP客户端就是各种常用的「浏览器」,如IE、chrome、微信浏览器。那什么是Web容器,什么又是反向代理呢?原创 2023-01-11 07:30:00 · 205 阅读 · 0 评论 -
加解密与HTTPS(6)
随着成本的下降,主流网站都已经开始使用HTTPS了。但有了可信机构颁发的证书,网站就真的绝对安全了吗?以之前出现过的上大学被冒名顶替的事件为例,如果个人信息被「抓包」怎么办?原创 2023-01-09 07:30:00 · 270 阅读 · 0 评论