【后端开发实战经验】
文章平均质量分 93
蛮三刀酱
这个作者很懒,什么都没留下…
展开
-
如何在JVM层写切面?JVM Sandbox工具入门教程与原理浅谈
本文花了较短的篇幅重点介绍了JVM Sandbox的功能,实际用法,以及基础原理。它通过封装一些底层JVM控制的框架,使得对JVM层面的AOP开发变的异常简单,就像作者自己所说“JVM-SANDBOX还能帮助你做很多很多,取决于你的脑洞有多大了。原创 2022-11-14 20:03:59 · 298 阅读 · 0 评论 -
管理订单状态,该上状态机吗?轻量级状态机COLA StateMachine保姆级入门教程
在平常的后端项目开发中,状态机模式的使用其实没有大家想象中那么常见,笔者之前由于不在电商领域工作,很少在业务代码中用状态机来管理各种状态,一般都是手动get/set状态值。去年笔者进入了电商领域从事后端开发。电商领域,状态又多又复杂,如果仍然在业务代码中东一块西一块维护状态值,很容易陷入出了问题难于Debug,难于追责的窘境。原创 2022-06-01 23:14:12 · 2666 阅读 · 4 评论 -
如何保证同事的代码不会腐烂?一文带你了解 Alibaba COLA 架构
本文开始前,问大家一个问题,你觉得一份业务代码,尤其是互联网业务代码,都有哪些特点?我能想到的有这几点:互联网业务迭代快,工期紧,导致代码结构混乱,几乎没有代码注释和文档。互联网人员变动频繁,很容易接手别人的老项目,新人根本没时间吃透代码结构,紧迫的工期又只能让屎山越堆越大。多人一起开发,每个人的编码习惯不同,工具类代码各用个的,业务命名也经常冲突,影响效率。大部分团队几乎没有时间做代码重构,任由代码腐烂。每当我们新启动一个代码仓库,都是信心满满,结构整洁。但是时间越往后,代码就变得腐败不.原创 2022-03-30 23:59:21 · 2862 阅读 · 0 评论 -
WebSocket新手入门指南
文章目录介绍 WebSocket 的原理,了解原理后,用起来更放心大胆;类似技术对比,搞清楚自己的业务场景是不是需要使用 WebSocket;使用过程中的经验分享,让你少走一些弯路;1 WebSocket 是什么WebSocket 是 HTML5 新增的在单个 TCP 连接上进行全双工通讯(不受限的双向通信)的协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。全双工(Full Duplex)的通讯传输允许数据在两个方向上同时传输,相当于两个单工通信方式的结合。发送和接收分别由两原创 2021-12-14 19:16:19 · 8155 阅读 · 0 评论 -
可能被你误解的 DRY 原则
规则终究是规则,思想终究是思想。实践起来困难重重原创 2021-12-13 22:58:34 · 752 阅读 · 0 评论 -
PlantUML——程序员画架构图都靠它
引言作图可以说是程序员的必备技能,最近发现身边同学们主要还是在用 OmniGraffle、ProcessOn、draw.io 这类软件作图,用的过程中可以思考一下下面这些问题是否困扰了你:版本管理困难、团队协作困难、二次编辑困难:假如老文档中的设计图需要修改,是你画的还好就是找源文件得费点功夫,如果不是你画的那就别想找到源文件了,别指望可以二次编辑了,重画吧;作图效率不够高:如果希望作图质量保持一定的水准,又想画得快,多数人都做不到;强迫症患者经常把时间浪费在了对齐矩形、对齐间距上。鉴于上述困原创 2021-12-13 22:55:18 · 14776 阅读 · 0 评论 -
模仿UP主,用Python实现一个弹幕控制的直播间
up主通过代码实现了实时读取直播间里的弹幕内容,进而控制自己的电脑,把弹幕翻译成指令操控《赛博朋克2077》游戏。原创 2021-12-02 20:15:09 · 3114 阅读 · 1 评论 -
3分钟搭建一个网站?腾讯云Serverless开发体验
作为一个开发者,应该都能理解一个网站从开发到上线,要经过很多繁琐的步骤。编写代码,部署应用,部署数据库,申请域名,申请SSL证书,域名备案,到最终上线起码要几天时间。作为一个不精通代码的业务玩家,当你想搞个网站玩玩时,经常会被淘宝贵得离谱的报价吓跑。这两年Serverless的概念被炒得火热,顾名思义,“无服务”。今天的这篇文章,我想站在一个开发者的角度,带大家简单的体验下使用腾讯云Serverless来开发网站的整体流程。看看在Serverless的概念下,开发网站是不是变得更加简单了。本文的主.原创 2021-08-01 21:05:43 · 594 阅读 · 0 评论 -
软件开发的22条黄金法则
编程本质上是一门手艺活,既然是手艺,里面就会有很多个人技巧和经验。“破窗理论”,DRY(Don’t repeat yourself),曳光弹,正交性,这些词的意思是什么你还记得么?《程序员修炼之道》这本书在我看来就是一本师傅写给徒弟的开发哲学指南。里面既讲了一些软件开发的哲学,比如破窗理论,它解释了你的代码为什么很快就会变成“屎山”。也讲了一些有用的技巧和工具,比如如何利用好shell,提升你的编程效率。这本书没有复杂的代码,没有晦涩难懂的原理,你完全可以当作一本闲书来看。这本书里提到的看似人人.原创 2021-07-12 17:14:16 · 387 阅读 · 0 评论 -
什么是微服务网关?SpringCloud Gateway保姆级入门教程
什么是微服务网关SpringCloud Gateway是Spring全家桶中一个比较新的项目,Spring社区是这么介绍它的:该项目借助Spring WebFlux的能力,打造了一个API网关。旨在提供一种简单而有效的方法来作为API服务的路由,并为它们提供各种增强功能,例如:安全性,监控和可伸缩性。而在真实的业务领域,我们经常用SpringCloud Gateway来做微服务网关,如果你不理解微服务网关和传统网关的区别,可以阅读此篇文章 Service Mesh和API Gateway关系深度.原创 2021-05-20 17:35:51 · 976 阅读 · 0 评论 -
Github Action 快速上手指南
前言各位读者,新年快乐,我是过了年匆忙赶回上海努力搬砖的蛮三刀。Github之前更新了一个Action功能(应该是很久以前了),可以实现很多自动化操作。用来替代用户自己设置的自动化脚本(比如:钩子+Jenkins)。由于平时根本不会有需求用到它,毕竟平时都在用公司的CI/CD流程,所以一直没有机会玩Action。借着春节放假,就自己写个小Demo体验一下。本文通过实现一个提交代码后自动执行Junit单元测试并输出测试报告的自动化流程小Demo,来快速上手Github Action。Github原创 2021-02-20 17:06:50 · 1323 阅读 · 0 评论 -
大型项目废弃fastjson迁移至Gson保姆级攻略
前言大家好,又双叒叕见面了,我是天天放大家鸽子的蛮三刀。在被大家取关之前,我立下一个“远大的理想”,一定要在这周更新文章。现在看来,flag有用了。。。本篇文章是我这一个多月来帮助组内废弃fastjson框架的总结,我们将大部分Java仓库从fastjson迁移至了Gson。这么做的主要的原因是公司受够了fastjson频繁的安全漏洞问题,每一次出现漏洞都要推一次全公司的fastjson强制版本升级,很令公司头疼。文章的前半部分,我会简单分析各种json解析框架的优劣,并给出企业级项目迁移json原创 2021-01-12 19:51:07 · 1548 阅读 · 1 评论 -
【线上问题排查技巧】动态修改LOGGER日志级别
前言大多数情况下,我们会在打印日志时定义日志的LOGGER级别,用来控制输出的信息范围。一方面,过多的输出会影响查看日志的效率,另一方面,过少的日志让问题定位变得困难。但当线上出现问题时,线上容器通常定义在info级别,发生一些疑难问题时,光靠info级别的日志很难定位问题。一个典型的场景:在一些需要打印MySQL语句的场景,如果你正在使用MyBatis框架,由于MyBaits中SQL语句是DEBUG级别的信息,通常在线上容器就没法看到。一个丑陋的解决办法就是在沙箱/预发环境,将log4j.xml原创 2020-11-12 23:40:59 · 933 阅读 · 0 评论 -
【线上排查实战】AOP切面执行顺序你真的了解吗
前言忙,是我这个月的主旋律,也是我频繁鸽文章的接口————蛮三刀把刀公司这两个月启动了全新的项目,项目排期满满当当,不过该学习还是要学习。这不,给公司搭项目的时候,踩到了一个Spring AOP的坑。本文内容重点:问题描述Spring AOP执行顺序探究顺序错误的真相代码验证结论本文阅读大概需要:3分钟码字不易,求个关注,欢迎关注我的个人原创公众号:后端技术漫谈(二维码见文章底部)问题描述公司新项目需要搭建一个新的前后分离HTTP服务,我选择了目前比较熟悉的SpringB原创 2020-10-24 10:22:49 · 808 阅读 · 8 评论 -
缓存与数据库一致性问题深度剖析
前言本篇文章是我之前系列文章中的一篇,主要讨论了我们在平时的开发过程中,各大系统中都要用到的缓存数据的问题,进一步延伸到数据库和缓存的双写一致性问题,并且给出了所有方案的实现代码方便大家参考。本篇文章主要内容数据缓存为何要使用缓存哪类数据适合缓存缓存的利与弊如何保证缓存和数据库一致性不更新缓存,而是删除缓存先操作缓存,还是先操作数据库非要保证数据库和缓存数据强一致该怎么办缓存和数据库一致性实战实战:先删除缓存,再更新数据库实战:先更新数据库,再删缓存实战:缓存延时原创 2020-09-04 11:34:02 · 1123 阅读 · 0 评论 -
一次完整的JVM堆外内存泄漏故障排查记录
前言记录一次线上JVM堆外内存泄漏问题的排查过程与思路,其中夹带一些JVM内存分配机制以及常用的JVM问题排查指令和工具分享,希望对大家有所帮助。在整个排查过程中,我也走了不少弯路,但是在文章中我仍然会把完整的思路和想法写出来,当做一次经验教训,给后人参考,文章最后也总结了下内存泄漏问题快速排查的几个原则。本文的主要内容:故障描述和排查过程故障原因和解决方案分析JVM堆内内存和堆外内存分配原理常用的进程内存泄漏排查指令和工具介绍和使用文章撰写不易,请大家多多支持我的原创技术公众号:后端原创 2020-08-26 18:13:02 · 1333 阅读 · 2 评论 -
MySQL选错索引导致的线上慢查询事故复盘
前言又和大家见面了!又两周过去了,我的云笔记里又多了几篇写了一半的文章草稿。有的是因为质量没有达到预期还准备再加点内容,有的则完全是一个灵感而已,内容完全木有。羡慕很多大佬们,一周能产出五六篇文章,给我两个肝我都不够。好了,不多说废话了…最近在线上环境遇到了一次SQL慢查询引发的数据库故障,影响线上业务。经过排查后,确定原因是SQL在执行时,MySQL优化器选择了错误的索引(不应该说是“错误”,而是选择了实际执行耗时更长的索引)。在排查过程中,查阅了许多资料,也学习了下MySQL优化器选择索引的基本准.原创 2020-07-30 20:07:45 · 694 阅读 · 3 评论 -
【删库跑路】使用Binlog日志恢复误删的MySQL数据
前言“删库跑路”是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路!开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你能够了解到:MySQL的binlog日志是什么?通常是用来干什么的?模拟一次误删数据的操作,并且使用binlog日志恢复误删的数据。写这篇文章的初衷,是有一次我真的险些把测试数据库的一张表给删除了,当时吓...原创 2020-01-13 23:14:11 · 885 阅读 · 0 评论 -
Java线上问题排查神器Arthas快速上手与原理浅谈
前言当你兴冲冲地开始运行自己的Java项目时,你是否遇到过如下问题:程序在稳定运行了,可是实现的功能点了没反应。为了修复Bug而上线的新版本,上线后发现Bug依然在,却想不通哪里有问题?想到可能出现问题的地方,却发现那里没打日志,没法在运行中看到问题,只能加了日志输出重新打包——部署——上线程序功能正常了,可是为啥响应时间这么慢,在哪里出现了问题?程序不但稳定运行,而且功能完美,但...原创 2019-11-17 11:54:55 · 7425 阅读 · 10 评论 -
Zookeeper和Kafka环境搭建总结
前言由于项目需要涉及到zookeeper和Kafka的使用,快速做了一篇笔记,方便小伙伴们搭建环境。zookeeper官方定义What is ZooKeeper?ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synch...原创 2019-03-19 22:18:51 · 3512 阅读 · 4 评论 -
[网站加载优化]公共CDN库/Nginx启用Gzip/全站CDN加速
前言接触到CDN的起因:我自己搭建的网站https://price.monitor4all.cn/网页打开的速度一直比较慢,经查证是我的网站有很多静态js大文件,通过浏览器读取这些js比较耗时间。最近有了一些空余精力, 好好优化一下加载速度。分析思路公用CDN加速公用js库其实首先想到的是把公共的js库使用公共CDN来加速,比如我的前端用到了echarts,js-cookie等。这些...原创 2019-05-19 22:30:27 · 742 阅读 · 0 评论