- 博客(35)
- 资源 (2)
- 收藏
- 关注
原创 案例分享-被*队友的mybatis蠢哭的一天
昨晚加班的时候被队友拉着看一个mybatis的问题,耗费了我一个小时时间,最后差点没被我打死,实在是觉得滑稽,今天回家写下来跟大伙分享一下。问题现象Invalid bound statement (not found),看到这个错我当时就没兴趣了,我说你这不就是xml里没写xxxMapper.java方法对应的语句吗,这还有啥犹豫的呢,检查你的xml啊。队友说,哥,我检查好多遍了,实在是...
2023-06-05 12:08:00
130
原创 案例分享-full gc导致k8s pod重启
在之前的记一次k8s pod频繁重启的优化之旅中分享过对于pod频繁重启的一些案例,最近又遇到一例,继续分享出来希望能给大家带来些许收获。问题现象报警群里突然显示某pod频繁重启,我随即上去查看日志,主要分这么几步:1.查看pod重启的原因,kubectl descirbe podLast State: Terminated Reason: Er...
2023-05-04 09:50:00
326
原创 分享一张2020年用jaegertracing画的tomcat8.5启动流程图
今天整理电脑的时候意外发现一张tomcat8.5的启动流程图,是笔者2020年借助jaegertracing绘制的,想想还比较有意思,在这里分享一下,当初闲来无事折腾了小半天,具体过程已经是记不起来了,等我想到了继续在评论区分享,话不多说,请欣赏吧(出不来的请耐心等待,有点长)。...
2023-03-23 13:25:00
95
原创 js直接操作数据库会怎么样
这几天刷脉脉的时候看到一个话题初看觉得可笑,再看陷入沉思,最后还是决定花点时间想清楚,写下来。确实没见人这么干过,为什么呢?技术限制被技术限制了?据我所知目前没有面向js的数据库驱动,但反观现在的技术大潮,写一个面向js的数据库驱动应该也不是什么难事。安全限制被安全性限制了?js在网站中的分量不言而喻,数据展现、交互、检验、酷炫的效果等等,前端的大半壁江山非它莫属,但它的隐私性...
2023-03-20 13:34:00
188
原创 抛砖系列之k8s HorizontalPodAutoscaler(HPA)
前言“大伙得眼里有活,看见同事忙的时候要互相帮助,这样我们团队才能快速成长,出成绩,多干点活没坏处的,领导都看在眼里记在心里,不会亏待大伙。”看到这也许你还有点懵,不是要讲k8s的HorizontalPodAutoscaler?怎么以一段经典pua开头,哈哈,别着急,接着往下看。“高可用、高并发、大流量”这些曾经似乎只会出现在互联网业务中的高大上词汇,现在已然是随处可见,不管真实业务场景...
2023-02-23 13:27:00
117
原创 MySQL空间暴涨150G导致锁定,发生了什么
背景12月1号中午突然收到大量报警,某客户环境操作数据库大量失败,报错信息如下图所示:这个报错我是第一次见,一时间有点无所适从,但是从字面意思来看是MySQL目前处于LOCK_WRITE_GROWTH状态,拒绝执行当前的语句,一定是MySQL出问题了。初定位我随即登录阿里云控制台查看MySQL是否有什么异常,果不其然运行状态那里提示“锁定中(空间不足)”,我根据提示链接简单阅读了阿里...
2022-12-08 12:51:00
130
原创 一个jsqlparse+git做的小工具帮我节省时间摸鱼
背景前些时间做了个小工具解决了团队内数据库脚本检验&多测试环境自动执行的问题,感觉挺有意思,在这跟大家分享一下。工具诞生之前的流程是这样:1.开发人员先在开发环境编写脚本&执行;2.执行没问题之后记录到代码目录下的upgrade目录;3.提测时手动将upgrade目录下的脚本文件在测试库执行。大概长这样这套流程在我之前就有了,刚进来的时候感觉有点low,毕竟老东...
2022-11-21 08:47:00
107
原创 恭喜磊哥喜提n+1
昨天下午两点多磊哥突然喊我下楼,第一反应是“这孙子,抽烟就直说,还说个事,你以外你是吉祥村大姐啊”。心里骂完以后我慢慢悠悠下楼了,见他在打电话我先默默点上一支,准备待他结束以后对其发起灵魂拷问。电话打完了,正当我口吐芬芳之际他来了一句:“我今天下班就不来了。”“中彩票了?”“刚老板找我谈话,一进门就说咱都是成年人,我就直说了,团队现在不需要自动化测试,两个选择,要么转业务测试,要么n...
2022-10-30 18:49:00
77
原创 抛砖系列之redis监控命令
前言redis是一款非常流行的kv数据库,以高性能著称,其高吞吐、低延迟等特性让广大开发者趋之若鹜,每每看到别人发出的redis故障报告都让我产生一种居安思危,以史为鉴的危机感,恰逢今年十一西安烟雨不断,抽时间学习了几个redis监控命令,和大家分享一波。redis-cli --stat【连续统计】连续统计可能是实时监控 Redis 实例的鲜为人知但非常有用的功能之一,要启用此功能,请...
2022-10-24 12:51:00
146
原创 案例分享-https证书链不完整导致请求失败
背景话不多说,直接上堆栈javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find va...
2022-10-09 21:09:00
375
原创 设计了一个自动归档工具
背景随着业务的发展,一些事务类表(源源不断产生业务数据)会越来越大,最终演变成我们说的大表,普通的查询可能毫秒级、秒级返回,但是稍微复杂的就会超时,甚至占满数据库cpu,进而导致大面积请求超时、堆积,jvm fullgc,触发熔断等连锁反应。前几天业务高峰期的时候收到客户反馈,说系统访问卡顿,已经严重影响业务,需要立即处理,根据以往的经验我第一时间查看了数据库监控,果不其然cpu 100%。...
2022-09-30 08:33:00
154
原创 抛砖系列之git仓库拆分工具git-filter-repo
最近负责把团队内的git仓库做了一次分拆,解锁一个好用的工具git-filter-repo,给大伙抛砖一波,希望以后遇到类似场景时可以信手拈来。背景笔者团队目前是把业务相关的java项目都放到了一个git仓库中,发展初期项目较少放到一块图的就是一个方便,但是几年下来随着项目、人员、玩法等多了以后逐渐显现出一些问题,主要痛点有以下:1.效率:更新代码缓慢,会下载很多我不关心的内容,既影响开发效...
2022-09-01 17:39:00
162
原创 刷抖音想到的一点废话
大唐不夜城一角刷抖音已然成了我放松的一种方式,短视频带来的愉悦感让人沉浸其中,实锤、官宣、福袋、美景、美食等皆引人入胜。足不出户就可以体会天堂到地狱的刺激、感受二锅头的粗犷到波尔多的细腻、体验大漠孤烟到塞上江南、国际局势到家长里短,可以说从不同的方面满足了“贪嗔痴”。这一切归结于抖音强大的推荐算法,刷到的几乎都是自己爱看的,比我自己还要了解自己,最近有几个推荐却让我有点猝不及防,甚至可...
2022-08-25 13:19:00
94
原创 抛砖系列之前端性能分析工具
背景上周接到一个性能问题的线上反馈:“浙江客户xxx报表展示超过20秒,小明看了相关接口响应都在2秒内,希望我协助排查。”听完这个简短的描述我猜测可能是客户机房网络问题,为什么这么说呢,从描述中我提取到这么几个关键信息“个例,不是所有客户”、“后台响应很快”,给我的感觉好像是机房出口带宽满了,当然这只是猜测,需要拿出具体的证据。初步排查“信任但需要确认”,虽然我从研发口中得知后台响应很...
2022-07-29 13:27:00
71
原创 分享一次机房出口带宽跑满的案例
背景有客户反馈6月12号下午14:00左右xxx域名有大量数据传出,一度占满出口带宽,导致系统缓慢,希望我们尽快查一下,带宽监控如下图所示:xxx正是我们部署在客户机房的招投标系统所使用的的域名。概念工作这么多年,带宽跑满这事也只是听说过,倒没亲身经历过,落到自己头上的时候多少有点不知所措,正式开始解决问题之前先把概念搞清楚,免得最终脱离目标。网络带宽:网络带宽是指在单位时间(一般指的...
2022-07-08 13:31:00
323
原创 借助SpotBugs将程序错误扼杀在摇篮中
背景最近一年多在一家toB业务的公司,部门主要做的是建筑行业的招投标业务信息化,希望借助软件来达到“阳光、降本、提效”的目的,我刚入职时大概30多家客户,截止现在已经超过100家,发展势头迅猛,随之而来也暴露出来一个很严重的问题:“质量差,线上反馈多。”大伙每天疲于处理线上反馈,需求响应缓慢,交付速度跟不上市场节奏,长此下去对团队士气是一种打击也会激化研发和业务的矛盾,鉴于此我们对线上反馈进...
2022-06-12 15:32:00
160
原创 Map传参优雅检验,试试json schema validator
背景笔者目前所在团队的代码年代已久,早年规范缺失导致现在维护成本激增,举一个深恶痛疾的例子就是方法参数使用Map“一撸到底“,说多了都是泪,我常常在团队内自嘲“咱硬是把java写成了JavaScript、php”,代码灵活的让人怀疑人生,你根本不知道方法需要什么、返回什么,新人来了想快速上手不可能的,老老实实debug吧,另一方面,以往的校验大多数都是放在前端做的,后端几乎没有校验,所幸业务量...
2022-05-09 08:25:00
240
原创 分享下最近遇到的5种网站变慢的案例
聊聊闲天:四月的西安阳光明媚,温度舒适,本应该是个全家出去春游的日子,奈何病毒再一次攻破了西安的严防死守,让大家本就悬着的心又紧绷起来,为了安全还是在家猫着吧,另一方面项目组内4月12号开始要开启一波996,意味着又要过一段加班狗的日子,估计顾不上写点东西了,避免四月留下空档,还是在家润色一篇技术贴。最近一年多在一家toB业务的公司,主营疑难杂症的解决、性能优化,和过往待过的公司相比,开发...
2022-04-22 13:05:00
91
原创 在线pdf请你谨慎打开
本篇其实算之前安全整改话题的一点补充,对之前内容感兴趣的可以走以下快捷通道:安全漏洞整改系列(二)安全漏洞整改系列(一)背景前不久某家客户对我们提供的系统又进行了一轮安全测试,其中有一条我觉得很有意思,也算是刷新了我的认知,那就是“pdf预览存在xss注入”,在此跟大家分享一波,也算是相互提醒。复现问题拿到安全报告以后我随即使用了提供的pdf文件成功复现问题,果不其然一预览浏览器就弹...
2022-02-21 13:02:00
590
原创 道与术
感谢HeapDump社区送的新年礼物通过一个小案例,聊聊不同角色对于同一个问题的不同见地,立场不同,思考方式不同,答案自然不同,对于决策者,如何更好的“以道御术”。问题背景有个新部署的项目,客户要使用https,希望我们支持一下,我心想这个在nginx端配置就可以,后台代码不需要任何改造,立马就答应了。第二天,客户将https证书提供过来,我协调运维2分钟配置完成,似乎很美好,稳妥...
2022-01-26 09:23:00
81
原创 抛砖系列之-MySQL中的数据类型JSON
今天介绍一个MySQL中的数据类型-JSON,相信大家对JSON都不陌生,在日常工作中使用到的频率也很高,话不多说,直接开始。何谓JSON看下RFC文档对于JSON的描述1.基于 JavaScript 语言的轻量级的数据交换格式2.基于文本3.语言无关JSON应用场景我大概使用过以下两类:1.接口的数据交换,比如ajax请求时的application/json、rpc调...
2022-01-05 09:06:00
68
原创 终于做了一把MySQL调参boy
本文通过笔者经历的一个真实案例来介绍一个MySQL中的重要参数innodb_buffer_pool_size,希望能给大家带来些许收获,当遇到类似性能问题时可以多一种思考方式。图片拍摄于大唐不夜城问题背景有个广西的客户,之前系统一直用的很流畅,最近反馈系统响应极慢,卡顿严重,希望我们尽快解决。收到反馈以后我立马去查看服务器各项指标,微服务所在机器各项指标正常,但是数据库服务器已不堪重...
2021-12-28 13:22:00
64
原创 安全漏洞整改系列(二)
本篇是之前安全漏洞整改系列(一)的延续,也是终结篇,希望通过这两篇内容带给大家一些关于安全问题的体验和重视,不至于漏洞真正来临的时候手忙脚乱,就像前几天的log4j2一夜间让多少程序员又白了头,宽了衣带。图片拍摄于西安太奥海洋馆问题4:反射性xss存储漏洞等级:高危漏洞详情:存在xss漏洞,可以将恶意脚本执行到合法网站或者Web应用程序中,漏洞验证截图如下漏洞危害:攻击者可以伪造...
2021-12-21 09:19:00
79
原创 安全漏洞整改系列(一)
图片拍摄于西安大雁塔广场玄奘像笔者目前做toB的业务,对接的客户还包括一些toG性质的公司,这类公司对安全问题的关注度日益增长,面对这种情况,我们开发人员也需要做出一些改变,以前逻辑上正确就行,现在安全上也不能出纰漏。接下来我阐述一下近期我们遇到的一些安全问题,以及一些整改措施。问题1:密码明文传输漏洞等级:高危漏洞详情:输入账号密码登录后拦截请求数据,发现用户名密码以明文的方式...
2021-11-01 10:22:00
120
原创 记一次k8s pod频繁重启的优化之旅
关键词:k8s、jvm、高可用1.背景最近有运维反馈某个微服务频繁重启,客户映像特别不好,需要我们尽快看一下。听他说完我立马到监控平台去看这个服务的运行情况,确实重启了很多次。对于技术人员来说,这既是压力也是动力,大多数时候我们都是沉浸在单调的业务开发中,对自我的提升有限,久而久之可能会陷入一种舒适区,遇到这种救火案例一时间会有点无所适从,但是没关系,毕竟......“我只是收了火,但没...
2021-09-24 08:46:00
120
原创 抛砖系列之文本处理工具-awk
AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/aw...
2021-08-27 00:05:00
69
原创 聊聊最近工作中解决的几个小问题
最近项目组搞冲刺,忙到爆,五月一篇文章也没写,眼看六月又将结束,抓住一个周末抽点时间写写最近工作中遇到的几个小问题,希望能给遇到相同问题的同学些许帮助。(冲刺阶段的装备-红头巾)问题1:用户进入微信公众号菜单时偶现oAuth2.0授权失败问题背景:我们有些功能以微信公众号的形式提供出去,为了避免用户使用时频繁输入用户名密码,所以借助微信的oAuth2.0鉴权流程实现了免登录的效果,但...
2021-06-29 13:23:00
71
原创 分享一次排查CLOSE_WAIT过多的经验
关键词:TCP、CLOSE_WAIT问题背景某日下午有测试人员急匆匆的跑来跟我反馈:“有客户反馈供应商附件预览不了,流程阻塞,需要紧急处理”,我立马精神起来,毕竟都是付费客户(目前做B端业务,客户都是付费用户,不像C端,出了问题发个道歉声明也就过去了)。等她说完,我第一时间用测试账号登上去验证,浏览器一直在转圈,差不多一分钟以后出了nginx的504错误页。初步排查也许有人对504...
2021-04-05 14:37:00
160
原创 使用OWASP Dependency-Check对应用做个安检
俗话说“人怕出名猪怕壮”,当系统小有名气以后就会被一些黑客盯上,三天两头的用各种漏洞扫描工具做渗透,如果不希望某天你负责的系统因为安全问题而出名,那就提前行动起来吧,这就是今天要讲的OWASP Dependency-Check。图片来源于百度背景随着业务的发展,系统的用户逐渐增多,这时就会有一些不速之客找上门来。俗话说“人怕出名猪怕壮”,当系统小有名气以后就会被一些黑客盯上,三天两头的...
2021-02-25 12:55:00
554
原创 基于tcp的应用层消息边界如何定义
聊聊基于tcp的应用层消息边界如何定义背景2018年笔者有幸接触一个项目要用到长连接实现云端到设备端消息推送,所以借机了解过相关的内容,最终是通过rabbitmq+mqtt实现了相关功能,同时在心里也打了一个问号“如果自己实现长连接框架,该怎么定义消息的边界呢?”,之后断断续续整理了一些,一直不成体系,最近放假了整理出来跟大家交流一番。为什么需要消息边界消息边界并非长连接场景才需要,即...
2021-02-23 12:54:00
54
原创 框架虽好,但不要丢了其背后的原理
近期团队中同学遇到几个问题,想在这儿跟大家分享一波,虽说不是很有难度,但是背后也折射出一些问题,值得思考。开始之前先简单介绍一下我所在团队的技术栈,基于这个背景再展开后面将提到的几个问题,将会有更深刻的体会。控制层基于SpringMvc,数据持久层基于JdbcTemplate自己封装了一套类MyBatis的Dao框架,视图层基于Velocity模板技术,其余组件基于SpringCloud全...
2021-01-31 18:11:00
57
原创 redis源码学习之lua执行原理
聊聊redis执行lua原理从一次面试场景说起“看你简历上写的精通redis”“额,还可以啦”“那你说说redis执行lua脚本的原理”“这个,这个,不就是那么执行的吗,eval 一段lua脚本就行了”“好的,了解了,今天面试先到这个吧,后续有消息会通知你”“好的,祝您生活愉快”面试场景纯属娱乐,但这个面试题确实是笔者真实遇到过的,今天我们就来看看redis执行lua脚本的...
2020-12-22 13:51:00
207
原创 redis源码学习之slowlog
目录背景环境说明redis执行命令流程记录slowlog源码分析制造一条slowlogslowlog分析1.slowlog如何开启2.slowlog数量限制3.slowlog中的耗时的含义4.slowlog中时间戳的含义自己的一些思考背景redis虽说是一个基于内存的KV数据库,以高性能著称,但是依然存在一些耗时比较高的命令,比如keys *,lrem等,更有甚者会在lua中写一些比较耗...
2020-11-22 17:56:00
61
原创 一次公交卡被“盗刷”事件带来的思考
需求缘起那是一个阳光明媚的早晨,笔者和往常一样背着帅气的双肩包,将头发梳成大人模样,换上一身帅气的西装前往公交站,踏上上班之路,运气不错,公交车很快就到了,刷完乘车码以后在外力的帮助下卷入人海默默的等待着下一次外力助我下车。早晨的时光过得总是很快,中饭过后我正准备趴在桌上午休时收到了微信推送的扣费通知。收到这种莫名奇妙的扣费通知,我第一感觉是号被盗刷了,谁偷拍了我的乘车码?但下一秒...
2020-11-07 14:36:00
141
原创 java线程池拒绝策略使用实践
前言线程池是开发过程中使用频率较高的一个并发组件之一,本篇会结合踩刀哥之前的实践经验来分享一下线程池拒绝策略的真实使用场景,至于线程池内部原理只会简单介绍,有需要的可以自行上网学习。线程池工作机制这里用一个例子来描述下线程池的工作机制,2015年公司boss创立公司,创立初期公司业务比较少,boss一个人(corePoolSize=1)干的有条不紊,没过多久,业务量上来了,他一个人干不过...
2020-10-31 15:34:00
81
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅