编程学习
文章平均质量分 87
乐字节教育
需要java方面资料的课私聊我,或者点个关注,后续有高级方面的知识分享哦
展开
-
好慌,Redis这么多集群方案,要用哪种?
redis速度快,可靠性高,是互联网公司的标配。它有单机、主从、哨兵、Cluster等四种部署模式。下面,仅从部署模式上,来说明一下它们的优缺点。单机模式单机模式的redis非常简单,你只需要启动一个单一的节点就可以了,安装过程不超过5分钟。通过redis-benchmark测试简单的命令,QPS可达到10w以上,不得不说非常的让人惊艳了。单机模式的问题也非常明显。缺乏高可用的机制!假如redis进程死了,进程就只能够穿透到底层的数据库中,对业务来说非常的危险。如果你把redis当作原创 2021-07-02 17:36:45 · 129 阅读 · 0 评论 -
Redis都要老了,你还在用什么古董客户端?
前几日,Redis 创始人 Antirez 在他的个人博客上宣布将结束自己的 Redis 之旅!大神累了,Redis老了,但Redis依旧很火。Redis的Java客户端有很多,比如jedis、redisson、lettuce等。那大家都在用啥呢?今天我做了一个小调查。下面是统计结果。可以看到jedis以绝对的优势占据了榜首。下面简单的分析一小下。jedisjedis和redis只相差1个字母。我通常把它叫做redis和Java的合体。它有以下特点:非常的轻...原创 2021-06-16 18:54:45 · 92 阅读 · 0 评论 -
新一代缓存Caffeine,速度确实比Guava的Cache快
我想把记忆缓存起来,等再次见到你,就能够很快认出你。能够说出这么有哲理的话,得益于我对缓存的理解,以及对它的看重。没有了缓存,我的人生就没有了意义。缓存是非常重要的,工作中大部分工作可以说是和缓存打交道。由于使用广泛,所以针对缓存系统的任何优化,如果能够提高一丁点儿性能,就会让人无比兴奋。很长一段时间,我都在用Guava的LoadingCache。它和ConcurrentHashMap是非常像的,但在其上封装了一些好用的逐出策略和并发优化,就显得好用的多。今天主要说的是Caffeine...原创 2021-06-15 18:49:52 · 510 阅读 · 0 评论 -
Redis的zset有多牛?请把耳朵递过来
本篇文章很短,但信息量很大,是关于redis的zset。我来分享一点遇到过的线上数据,或许对你的决策有帮助。redis支持一个数据结构,叫做zset,也就是有序的列表。当然redis也不能滥用,可以看我以前的规范文章:《这可能是最中肯的Redis规范了》(opens new window)忘了zset是个啥的同学可以看这张gif图。通过它,可以实现游戏排行榜一类的功能,或者实现Topx这样的需求,也能精准的让用户在海量数据中找到自己的位置。zset的底层结构是跳跃表,而与之类似...原创 2021-06-15 18:47:25 · 467 阅读 · 0 评论 -
神奇的闪电缓存,带系统飞
缓存,在高并发的应用中,用的那是相当多。为什么?就因为I/O实在是慢!为了解决不同组件之间的速度差,大家都寄希望于加入一个中间层,期待产生一些魔幻的事。就拿Redis来说,火的就一塌糊涂,但中间会产生很多数据同步和数据一致性问题。有的牛x公司嫌烦,同时有钱,干脆干掉缓存后面的DB,直接把所有的数据放在了缓存上。哦不,这时候缓存已经不叫做缓存,应该叫做快存,因为它最终是要通过rdb落地的。看到这里,先不要怀疑事实的正确性。有些公司的业务,确实不需要什么关系型数据库,一个redis就能玩得转。...原创 2021-06-09 17:18:51 · 138 阅读 · 0 评论 -
和 杠精 聊Redis多线程
周末被一位小同学憋的很窝火。 他要和我探讨一下,redis到底是多线程的还是单线程的。这个问题本来比较好解释,但我遇到的却是一个杠精。答案是显而易见的:redis6,逃不过真香定理,引入了多线程;而在redis6之前,却是单线程的。也就是说,这不是一个是和否的问题,还涉及到第二维度的版本参与。可是,这位同学要打我的脸。不知道小姐姐的脸皮很嫩么?摸不得。“照你的逻辑,redis5是单线程的了?”“是的。”“那下面这张截图是怎么回事?”同学甩给我一张图,并送来一个鄙视的眼神。...原创 2021-06-09 17:18:37 · 107 阅读 · 0 评论 -
与亲生的Redis Cluster,来一次亲密接触
笔者曾经维护过上千个redis实例,这些实例采用的简单主从结构,集群方案主要是客户端jar包。刚开始,个人并不是太喜欢redis cluster,因为它的路由实在是太死板,运维复杂。但官方在推这个东西,注定了它的应用越来越广泛,这在平常的交流中就能够发现。虽然有这样那样的缺点,但总抵挡不了权威推动的浪潮。随着redis cluster越来越稳定,是时候和redis cluster来一次灵魂交流了。简介redis cluster是亲生的集群方案,目前,在高可用和稳定性方面,都有了很大的进步。...原创 2021-06-07 19:00:18 · 214 阅读 · 3 评论 -
这可能是最中肯的Redis规范了
redis功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用。通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁、通用的思想去考虑问题,而不是绑定在某种实现上。Redis 根据不同的用途,会有不同的持久化策略和逐出策略,所以,在使用和申请 Redis 集群前,请明确是用来做缓存还是存储。redis 的集群有主从和 cluster 两种模式,各有优缺点。以下规范不区分集群模式,我们分别从使用场景和操作限制两方面说明。使用规范冷热数据区分虽然 Redis支持持久化,但将所有...原创 2021-06-03 19:17:03 · 160 阅读 · 0 评论 -
Redis,就是这么朴实无华
Redis是2009年发布的,到今天已经超过10岁了。作为必备技能之一,关于它也有聊不完的话题。本文中的任何一个点,都可以展开,完成一篇中等规模的文章。交流和面试时,你需要用最精准的语言进行描述,那么本文比较适合你。redis能力:1 0W/s QPS (redis-benchmark) 1w+ 长链接 (netstat / ss) 最复杂的Zset 6kw数据 写入1k/s 读取5k/s 平均耗时5ms 持久化 (rdb)1. 基本概览学习一门新语言,重要的是掌握它的基本数据...原创 2021-06-03 19:16:31 · 150 阅读 · 0 评论 -
冷门instrument包,功能d炸天
文中代码示例工程如下,更多参考btrace和arthas:https://github.com/sayhiai/example-javaagent5版本以后,jdk有一个包叫做instrument,能够实现一些非常酷的功能。市面上一些APM工具,就是通过它来进行的增强。这是基础架构的必备技能,但对业务开发来说并不是。许多面试会问到这个知识点,并不是因为将来会用到,而是因为你说对jdk比较熟悉,他想杀杀你的威风。不会用没问题,但你要说不知道,就过分了点。javaagent介绍...原创 2021-06-02 17:41:18 · 176 阅读 · 0 评论 -
为什么给Java代码加个空行,class文件就翻脸不认人了?
public class HelloWorld { public static void main(String[] args) { System.out.println("love dog"); }}为了写出这几行优美的代码,主要是为了让它输出的优美动听的乐符,我下了一番功夫。你不要觉得简单,我把它打印出来给普通的保洁阿姨去看,阿姨竟然连我都认不出来。别说代码了,中英文混血,就秒杀一大堆高干分子。想说爱我就那么难么?怎么这么多的废话呢?这次探讨的主要问题...原创 2021-06-02 17:41:01 · 134 阅读 · 0 评论 -
JAVA堆外内存排查小结
简介JVM堆外内存难排查但经常会出现问题,这可能是目前最全的JVM堆外内存排查思路。通过本文,你应该了解:pmap 命令 gdb 命令 perf 命令 内存 RSS、VSZ的区别 java NMT起因这几天遇到一个比较奇怪的问题,觉得有必要和大家分享一下。我们的一个服务,运行在docker上,在某个版本之后,占用的内存开始增长,直到docker分配的内存上限,但是并不会OOM。版本的更改如下:升级了基础软件的版本 将docker的内存上限由4GB扩展到8GB 上上...原创 2021-06-01 19:05:35 · 443 阅读 · 0 评论 -
为什么给Java代码加个空行,class文件就翻脸不认人了?
public class HelloWorld { public static void main(String[] args) { System.out.println("love you"); }}为了写出这几行优美的代码,主要是为了让它输出的优美动听的乐符,我下了一番功夫。你不要觉得简单,我把它打印出来给普通的保洁阿姨去看,阿姨竟然连我都认不出来。别说代码了,中英文混血,就秒杀一大堆高干分子。想说爱我就那么难么?怎么这么多的废话呢?这次探讨的主要问题...原创 2021-06-01 19:05:13 · 122 阅读 · 0 评论 -
我1万字,也讲Java不清内存排查。1万不行来2万~.~
本篇文章是《Java内存故障?只是因为你不够帅!》(opens new window)这篇文章的续篇。上篇侧重于理论,本篇侧重于实践。对于内存问题排查来说,搞理论的痛苦,搞实践的也痛苦,没有一片清净之地。why?因为内存溢出是Java码农永远的伤。溢出有很多种解释,有精满自溢,有缓冲区溢出攻击,还有另外一种叫做领导的溢出。不知道什么叫作溢出理论。内存溢出什么最重要?其实,内存溢出就像是一场交通事故。事故的发生方,就是具体的服务;事故的处理方,就是相关的程序员。其中有一个最重要的环节,...原创 2021-05-31 17:56:58 · 146 阅读 · 0 评论 -
Java内存故障?只是因为你不够帅!
从小我就对Java有着深厚的感情,算下来有几十年的Java经验了。当年的Java还是Sun公司的,我有着多年的Servlet经验,CURD经验,在现在已经被自我革新,转而研究人生的哲学。罢了,不吹了。本文是关于Java故障排查的,属上篇。为了保证文章的流畅性,我决定一口气把它写完。因为相关方面的培训做的多了,就不需要在写的时候参考资料、翻源代码。掐指一算,本文一个小时没花掉,但篇幅已经较长了。长了,那就割断。本篇就定为内存排查的上篇,主要讲一些原理。为什么要讲原理?开车还需要了解汽车结构么?这还原创 2021-05-31 17:47:22 · 89 阅读 · 0 评论 -
开车了,JMC坐稳 (jfr)
今天我们要开的车是,江铃汽车。全称Jiangling Motors Corporation,简称JMC。一车在手,吃喝不愁。车作为男人的第二个老婆,拥有一辆JMC是所有成功男人的梦想。打开小小的车窗,任嘶吼的狂风揉捏自己的面庞,是一种让人无比享受的存在。列车驶向何处,前方又是何方,全在掌舵者一念之间。程序员掌舵,当然与众不同。我们今天的列车,就是jmc监控工具。呸,撞车了。与JMC撞车的,也是jmc,全称Java Mission Control,是故障排查的一大利器。在世风日...原创 2021-05-28 18:49:45 · 105 阅读 · 0 评论 -
Java内存故障?只是因为你不够帅!
从小我就对Java有着深厚的感情,算下来有几十年的Java经验了。当年的Java还是Sun公司的,我有着多年的Servlet经验,CURD经验,在现在已经被自我革新,转而研究人生的哲学。罢了,不吹了。本文是关于Java故障排查的,属上篇。为了保证文章的流畅性,我决定一口气把它写完。因为相关方面的培训做的多了,就不需要在写的时候参考资料、翻源代码。掐指一算,本文一个小时没花掉,但篇幅已经较长了。长了,那就割断。本篇就定为内存排查的上篇,主要讲一些原理。为什么要讲原理?开车还需要了解汽车结构么?...原创 2021-05-28 18:49:18 · 73 阅读 · 0 评论 -
必看!java后端,亮剑诛仙
你可能有所感悟。零散的资料读了很多,但是很难有提升。到处是干货,但是并没什么用,简单来说就是缺乏系统化。另外,噪音太多,雷同的框架一大把,我不至于全都要去学了吧。这里,我大体根据基础、Java基础、Java进阶给分了下类,挑的也都是最常用最重要的工具。这篇文章耗费了我大量的精力,你要是觉得好,请不要吝啬你的赞。最新的内容会在github持续更新,添加新的精选相关文章。地址:https://github.com/sayhiai/javaok基础知识数据结构基本的数据结...原创 2021-05-27 17:24:31 · 134 阅读 · 0 评论 -
卓越性能 の 军火库
在介绍性能优化的军火库之前,先来扯几句题外话。希望这些题外话,能打消你追求卓越性能的理想,来甘心当一枚圆滑的钉子。我是非常不推荐程序员,对公司的业务,进行性能优化的。说这话,纯粹是基于个人自身安全考虑。因为性能优化,在大多数公司,属于费力不讨好的工作项。追求极简的代码,性能卓越的代码,是有追求的程序员的目标。但随着经历了大大小小的公司,我发现很多优秀的程序员,在经受着这种追求的反嗜,以至于痛不欲生。下有下面几点原因,虽然我们知道它肯定是错的,但我们无能无力:公司按照完成的功能,对程序员...原创 2021-05-27 17:24:21 · 121 阅读 · 0 评论 -
命令行版星球大战#挖坟会不会被打?
很古老的小东东了,挖出来暴尸。在任何平台,使用telnet即可开启视觉盛宴。telnet towel.blinkenlights.nl或者,使用瑞士军刀nc。nc -v towel.blinkenlights.nl 23nc -l -p 80监听本机的80端口。nc -nvv -w2 -z 192.168.x.x 80-445扫描192.168.x.x的tcp 80到tcp 445的所有端口nc -l -p 5432 -t -e /bi...原创 2021-05-26 16:49:53 · 264 阅读 · 0 评论 -
Vim,第三只手
Vim非常的好用,以至于我现在的IDE,包括VSCode、Idea甚至是Chrome等,首先就要安装一个Vim的插件,体验那如飞的感觉。不过Vim的上手门槛不是很低,相当于重新学习了一遍打字。加上其中有很多技巧,造成了很多同学没有耐心学习下去。不过,想要让自己的双手真正飞起来,还是需要勤加练习,多看文档。虽然Vim已经有了中文文档,但看起来还是太费劲了,没有大把时间很难进行下去。我这里收集了很多Vim的键盘图,现在分享给大家。很多其实图有高清版,是可以定制成非常漂亮的鼠标垫的。<...原创 2021-05-26 16:39:32 · 90 阅读 · 0 评论 -
Vim漫游键,为什么不设定左手?介绍一种5x倍速漫游方式
先给大家讲个故事。老家的一个小孩,习惯用左手吃饭,就连擦屁股,都是用左手拿纸。结果,这个习惯,被他粗心的奶奶发现了,不知出于什么原因,暴躁如虎。接下来,这位奶奶每天在他身边念叨、念叨...,甚至上了刑。前几天回去一瞧,这习惯竟然硬生生给改变了。老远就能看见,娃娃右手甩的小陀螺,滴溜滴溜直转。我侧了侧身子和孩子保持一个方向,弯腰比划了下手势,确认是右手无疑。为什么要强迫孩子用右手?因为她自己用的就是右手,基础设施也都是右倾,她就觉得左手不伦不类。Vim的问题vim对于程序员来说,无疑是原创 2021-05-25 18:03:44 · 141 阅读 · 0 评论 -
使用expect实现自动2步登录
以前的公司,由于机器太多太多,使用了跳板机。it觉得仅证书系统不够安全,所以开启了二次验证。也就是每次登陆,都要Google Authenticator中的动态令牌。但我不想每次登陆机器都输入这个动态密码。expect命令可以实现自动交互式任务,自动输入一些信息,无需人为干预,可以很方便的完成自动登录的功能。expect基本有以下几个命令:expect从进程接收字符串,判断后可以执行命令spawn启动新的进程send用于向进程发送字符串interact允许用户交互一个简单...原创 2021-05-25 16:56:58 · 422 阅读 · 0 评论 -
LWP进程资源耗尽,Resource temporarily unavailable
服务器环境使用root账户运行应用程序是非常危险的,容易让人拿到shell变成肉鸡。所以有点意识的团队,都会建立一个低权限的普通用户用来运行java程序。权限低,有点不像亲儿子,在资源紧张的困难时刻尤其能看出来。现象问题是在一台公用的测试环境机器发生的,正式环境并没有复现。这台服务器部署了几十个服务,且部署账户最近从root切换到了bot。运行一段时间后,服务器频繁发生问题了。首先,有大量连接处于CLOSE_WAIT状态,一度以为是被动关闭的问题。但并不是。netstat -antp原创 2021-05-24 11:36:40 · 244 阅读 · 0 评论 -
别小看tail 命令,它难倒了技术总监
tail命令能够看到日志的滚动,非常方便。于是xjjdog想,既然我们能够用这个命令,看到所有的日志,那能不能使用tail命令,做日志收集呢?想象归想象,如果你想要一个快速的实时日志收集工具,那tail确实是个非常棒的工具。它比什么flume、logstatsh,比什么filebeat之类的,快捷的多。事实上,在工具缺乏的旧年代,我就曾经这么干过,而且它工作的很好。下面是一段使用Java语言书写的代码。我们可以按行读取日志,然后使用自己喜欢的语言,做任何事情。import java.io.Bu原创 2021-05-21 15:12:03 · 130 阅读 · 0 评论 -
0条Linux命令锦囊,防你牢底坐穿
http://xjjdog.cn 对200+原创文章进行了细致的分类,阅读更流畅,欢迎收藏。每一年,都会有删库跑路的新闻。现实中,删库容易,跑路难,从业者充满了泪水。这些动作里面,并不总是存在主观的恶意,而是这些命令太危险了。线上操作时,一定要保持清醒的头脑,切记马虎大意。你说你误操作的,谁信呢?切记:严禁酒后登录线上服务器操作 严禁吵架后情绪激动登录线上服务器操作 严禁长时间加班后操作线上环境 禁止在线上试验不熟悉的命令 重要系统先做备份1. 准备工作在执行危险命令...原创 2021-05-20 11:02:42 · 178 阅读 · 1 评论 -
kill -9”一时爽,秋后算账泪两行
kill是杀死的意思,带有主动的意味。鉴于master、slave这样的名词,需要在计算机软件中进行整改,kill这样明显带有负面信息的单词,按理说也需要被干掉。不过,如果把命令名字改了,效果也许会更好。因为在Linux上,kill根本就不是杀死的意思。它只是想要给进程发送一个信号而已。使用kill -l可以看到长长的信号列表。对Java程序员来说,用的最多的就是kill -9,我也不知道从哪里来的传承,码农们都喜欢这种暴力性的命令--喜欢用锋利的匕首一击致命。但是这种玩法又危险的...原创 2021-05-20 10:53:38 · 155 阅读 · 0 评论 -
失联的架构师,只留下一段脚本,唉……
我对Linux非常的精通,尤其是脚本语言比如sed、awk、python等,用起来更是炉火纯青。我把它作为自己一个非常特立独行的技能,一个和其他普通程序员区别开来的技能。所以在我写脚本的时候,我都会自豪的抬高我的头,鼻孔朝天冥思精悍的code。比如,看到别人一遍遍的翻文档安装elasticsearch这个软件,xjjdog就浑身难受,就写了脚本来加快这个过程。mkdir /datauseradd es -d /data/eschown -R es:es /datacat > /e...原创 2021-05-19 14:55:49 · 301 阅读 · 2 评论 -
JAVA多线程使用场景和注意事项
我曾经对自己的小弟说,如果你实在搞不清楚什么时候用HashMap,什么时候用ConcurrentHashMap,那么就用后者,你的代码bug会很少。他问我:ConcurrentHashMap是什么? -.-编程不是炫技。大多数情况下,怎么把代码写简单,才是能力。多线程生来就是复杂的,也是容易出错的。一些难以理解的概念,要规避。本文不讲基础知识,因为你手里就有jdk的源码。线程Thread第一类就是Thread类。大家都知道有两种实现方式。第一可以继承Thread覆盖它的ru...原创 2021-05-18 09:40:49 · 255 阅读 · 0 评论 -
死磕面试系——mysql的索引有哪些?为什么要这么设计?
标签:【中级】【数据库】【数据结构】1. 问mysql的索引有哪些种类,使用了什么样的数据结构,为什么要使用这种结构2. 分析这种题目还真的不太好回答,因为它非常考验总结能力。所以这里就总结一下。从不同的角度去聊,索引的种类也不同。比如:从物理存储角度:会有聚集索引和非聚集索引之分;从数据结构角度:会有B+Tree和Hash等等之分。不过,鉴于国内通常喜欢聊B+树这一特点,这问题大概率是在考察应聘者对于B+Tree这种设计的折衷。此问题面试频率高,且涉及非常多的细节。本文只...原创 2021-05-18 09:22:36 · 115 阅读 · 0 评论 -
死磕面试系列——redis分布式锁与zk分布式锁区别?
标签:【高级】【Redis】【ZooKeeper】1. 问redis分布式锁与zk分布式锁区别?2. 解析这个问题对面试者要求较高,它不仅要了解实现方法,还要对原理有所掌握。所以问题回答起来,分为很多层次。众所周知,Redis标榜的是轻量级,直观上分布式锁是比较好实现的,比如使用setnx,但一旦加入高可用这个属性,Redis锁的实现难度就会爆炸式上升。再加上锁的其他几个属性:乐观悲观、读写锁等,事情会更加的复杂。如果你全都知晓,聊一天都聊不完。3. 答先来一个,比...原创 2021-05-17 15:05:28 · 191 阅读 · 0 评论 -
死磕面试系列——ThreadLocal夺命4问
摘要:一个折磨很多人的问题阅读本文需要首先大体了解ThreadLocal。不啰嗦,直接进入正题。标签:【各种级别】【Java】【源码】1. 问连环四问:ThreadLocal的原理? 内存泄漏的原因? InheritableThreadLocal用过吗? Netty的FastThreadLocal是什么?2. 分析ThreadLocal作为实现“线程封闭”的最主要的编程手段,经常被使用。比如,比如,传统的SimpleDateFormat,不是线程安全的。如果你声明成全局...原创 2021-05-17 09:45:05 · 129 阅读 · 0 评论 -
死磕面试系列——请说出读写锁的公平锁和非公平锁特点及其原理
1. 问读写锁里面两个特性,一个公平性,一个读和写。原理是什么样子?2. 解析说实在的,我也很讨厌面试这种源码级别的问题,没啥鸟用,也考验不出来应聘者的实际水平。懂源码难道就代表技术好?不过bat都是这么面的。所以你只能适应。用面试的话来说就是、筛选一下、懂原理的优先。矮个子里面挑高个子。我觉得还是要以线上优化,线上问题的解决方案,项目的技术架构设计为主要面试目的。不过话说回来,如果你面的是高级Java,这个不了解,基本上是没戏的。3. 答公平锁指的是按照线程请求的顺序,来分配...原创 2021-05-17 09:30:42 · 532 阅读 · 0 评论 -
死磕面试系列-HashMap如何根据Key的自然排序输出?Value呢?
标签:【入门】【Java】#问题HashMap如何根据Key的自然排序输出?Value呢?#意图为什么会有这么简单的问题?在平常的面试中,我发现,确实有很大一部分同学答不上来。这是缺乏实践经验和联想能力,只能说sorry了此题用来检测是否能够灵活应用Java的API。如果这道题都答不出来,那面试可想而知。#方式1第一种方式,使用stream流。其实很乱的代码。import java.util.HashMap;import java.util.LinkedHash...原创 2021-05-14 17:14:35 · 318 阅读 · 0 评论 -
spring中,以 Aware结尾的类,都是干什么用的?能举例说明么?
死磕面试系列。标签:【初级】【Spring】在我们平常的编码中,如果你使用Spring,会发现大量以Aware结尾的类。它们有什么规律么?面试官想从中获取些什么?#1. 问spring中,以 Aware结尾的类,都是干什么用的?能举例说明么?#2. 解析题目用于考察面试者的基础编码能力和总结能力。本题目属于初级定位,因为ApplicationContextAware的使用频率很高,使用Spring就一定会遇到。#3. 答Aware就是感知的意思,一般以该单词结尾的类,都实现了原创 2021-05-14 09:37:23 · 936 阅读 · 0 评论 -
因为我从小就对Java感兴趣,所以我研究了
从小我就对Java有着深厚的感情,算下来有几十年的Java经验了。当年的Java还是Sun公司的,我有着多年的Servlet经验,CURD经验,在现在已经被自我革新,转而研究人生的哲学。罢了,不吹了。本文是关于Java故障排查的,属上篇。为了保证文章的流畅性,我决定一口气把它写完。因为相关方面的培训做的多了,就不需要在写的时候参考资料、翻源代码。掐指一算,本文一个小时没花掉,但篇幅已经较长了。长了,那就割断。本篇就定为内存排查的上篇,主要讲一些原理。为什么要讲原理?开车还需要了解汽车结构么?这还原创 2021-05-13 15:49:30 · 75 阅读 · 0 评论 -
一图解千愁,jvm内存从来没有这么简单过!
看到这张图的同学,千万不要到处分享。我们仅限于小范围讨论,因为这张图威力很大,是我花了10年时间才画出来的!求关注欢迎大家关注我的 B站账号B站账号如果内容有帮到你,欢迎大家点赞、收藏 + 关注学习交流群交流群了解了这张图,会让你对JVM内存的划分有更深入的理解,而不仅限于什么虚拟机栈、程序计数器等比较浅显的认知。那么这张图有什么用呢?在进行内存排查的时候,我们需要了解到底是哪一个部分除了问题。如果你找不对地方,肯定切入就比较困难,这会耗费你大量的精力。一台4GB的机器,一般使用Xm原创 2021-05-13 15:48:42 · 97 阅读 · 0 评论 -
Spring Boot 集成 Elasticsearch
Elasticsearch (简称ES) 是一个基于 Lucene 的分布式、高扩展、高实时的搜索与数据分析引擎。本章介绍 Spring Boot 应用集成 Elasticsearch ,通过 Spring 封装的API访问 Elasticsearch 。Spring Data Elasticsearch 是 Spring Data 子项目,提供对 Elasticsearch 集成与访问的支持。需要注意的是 Spring Data Elasticsearch 版本 3.2.x 与 4.x 不兼容,在升级原创 2021-05-13 14:38:52 · 392 阅读 · 0 评论 -
Spring 中那些让你爱不释手的代码技巧
正好我对spring源码有过一定的研究,并结合我这几年实际的工作经验,把spring中我认为不错的知识点总结一下,希望对您有所帮助。求关注欢迎大家关注我的 B站账号B站账号如果内容有帮到你,欢迎大家点赞、收藏 + 关注学习交流群交流群一 如何获取spring容器对象1.实现BeanFactoryAware接口@Servicepublic class PersonService implements BeanFactoryAware { private BeanFactor原创 2021-05-13 11:59:19 · 781 阅读 · 0 评论 -
记录一次jvm内存排查
1. 发现问题:劳动节回来发现生产环境宕机。2. 问题排查:1.登陆linux,使用命令 top,发现 pid: 19693 的cpu和内存占用率很高(贴图已经是问题解决后,这里用来凑数)且迟迟没有下降的意思。2.使用命令 jps,发现 pid: 19693 为订单服务3.使用命令 jmap -heap 19693,发现箭头位置内存占用全都为99.9%(贴图已经是问题解决后,这里用来凑数) 4.问题已经找到了,是订单服务的内存爆满,jvm频繁gc导致cpu占用率高从而导致服务原创 2021-05-12 15:42:11 · 86 阅读 · 0 评论