随笔分类 - 后端开发实战
摘要:本文花了较短的篇幅重点介绍了JVM Sandbox的功能,实际用法,以及基础原理。它通过封装一些底层JVM控制的框架,使得对JVM层面的AOP开发变的异常简单,就像作者自己所说“JVM-SANDBOX还能帮助你做很多很多,取决于你的脑洞有多大了。”
阅读全文
摘要:前言 在平常的后端项目开发中,状态机模式的使用其实没有大家想象中那么常见,笔者之前由于不在电商领域工作,很少在业务代码中用状态机来管理各种状态,一般都是手动get/set状态值。去年笔者进入了电商领域从事后端开发。电商领域,状态又多又复杂,如果仍然在业务代码中东一块西一块维护状态值,很容易陷入出了问
阅读全文
摘要:本文开始前,问大家一个问题,你觉得一份业务代码,尤其是互联网业务代码,都有哪些特点? 我能想到的有这几点: 互联网业务迭代快,工期紧,导致代码结构混乱,几乎没有代码注释和文档。 互联网人员变动频繁,很容易接手别人的老项目,新人根本没时间吃透代码结构,紧迫的工期又只能让屎山越堆越大。 多人一起开发,每
阅读全文
摘要:灵感来源 之前在B站看到一个有意思的视频: 【B站】【亦】终极云游戏!五千人同开一辆车,复现经典群体智慧实验 大家可以看看,很有意思。 up主通过代码实现了实时读取直播间里的弹幕内容,进而控制自己的电脑,把弹幕翻译成指令操控《赛博朋克2077》游戏。 观众也越来越多,最后甚至还把直接间搞崩了(当然,
阅读全文
摘要:作为一个开发者,应该都能理解一个网站从开发到上线,要经过很多繁琐的步骤。 编写代码,部署应用,部署数据库,申请域名,申请SSL证书,域名备案,到最终上线起码要几天时间。 作为一个不精通代码的业务玩家,当你想搞个网站玩玩时,经常会被淘宝贵得离谱的报价吓跑。 这两年Serverless的概念被炒得火热,
阅读全文
摘要:编程本质上是一门手艺活,既然是手艺,里面就会有很多个人技巧和经验。 “破窗理论”,DRY(Don't repeat yourself),曳光弹,正交性,这些词的意思是什么你还记得么? 《程序员修炼之道》这本书在我看来就是一本师傅写给徒弟的开发哲学指南。 里面既讲了一些软件开发的哲学,比如破窗理论,它
阅读全文
摘要:什么是微服务网关 SpringCloud Gateway是Spring全家桶中一个比较新的项目,Spring社区是这么介绍它的: 该项目借助Spring WebFlux的能力,打造了一个API网关。旨在提供一种简单而有效的方法来作为API服务的路由,并为它们提供各种增强功能,例如:安全性,监控和可伸
阅读全文
摘要:前言 各位读者,新年快乐,我是过了年匆忙赶回上海努力搬砖的蛮三刀。 Github之前更新了一个Action功能(应该是很久以前了),可以实现很多自动化操作。用来替代用户自己设置的自动化脚本(比如:钩子+Jenkins)。 由于平时根本不会有需求用到它,毕竟平时都在用公司的CI/CD流程,所以一直没有
阅读全文
摘要:前言 大家好,又双叒叕见面了,我是天天放大家鸽子的蛮三刀。 在被大家取关之前,我立下一个“远大的理想”,一定要在这周更新文章。现在看来,flag有用了。。。 本篇文章是我这一个多月来帮助组内废弃fastjson框架的总结,我们将大部分Java仓库从fastjson迁移至了Gson。 这么做的主要的原
阅读全文
摘要:前言 本篇文章是我之前系列文章中的一篇,主要讨论了我们在平时的开发过程中,各大系统中都要用到的缓存数据的问题,进一步延伸到数据库和缓存的双写一致性问题,并且给出了所有方案的实现代码方便大家参考。 本篇文章主要内容 数据缓存 为何要使用缓存 哪类数据适合缓存 缓存的利与弊 如何保证缓存和数据库一致性
阅读全文
摘要:前言 Canal是阿里巴巴开源的数据库Binlog日志解析框架,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 在之前我写的文章阿里开源MySQL中间件Canal快速入门中,我已经介绍了Canal的基本原理和基础使用。 在部署到生产环境的过程中,自己作为一个菜鸟,又踩了一些
阅读全文
摘要:前言 “删库跑路”是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你能够了解到: MySQL的binlog日志是什么?通常是用来干什么的? 模拟一次误删数据的操作,并且使用binlog日
阅读全文
摘要:前言 Git是一个易学难精的分布式版本控制系统,被我们码农常用于代码的管理。如果你还不了解Git,建议先通过廖雪峰的Git教程进行了解,再来看本文,因为本文以使用技巧为主,不会在基础名词上做过多解释。 廖雪峰的Git教程: https://www.liaoxuefeng.com/wiki/89604
阅读全文
摘要:前言 由于业务需求,需要同时在SpringBoot中配置两套数据源(连接两个数据库),要求能做到service层在调用各数据库表的mapper时能够自动切换数据源,也就是mapper自动访问正确的数据库。 本文内容: 在Springboot+Mybatis项目的基础上,学习多数据源的快速配置 避免网
阅读全文
摘要:前言 前两章教程,我们使用WebSocket的基础特性打造了一个小小聊天室,并在第二章对其进行了集群化改造。 系列教程回顾: [WebSocket]第一章:手把手搭建WebSocket多人在线聊天室(SpringBoot+WebSocket) [WebSocket]第二章:WebSocket集群分布
阅读全文
摘要:前言 书接上文,我们开始对我们的小小聊天室进行集群化改造。 上文地址: [WebSocket入门]手把手搭建WebSocket多人在线聊天室(SpringBoot+WebSocket) 本文内容摘要: 为何要改造为分布式集群 如何改造为分布式集群 用户在聊天室集群如何发消息 用户在聊天室集群如何接收
阅读全文
摘要:前言 本文中搭建了一个简易的多人聊天室,使用了WebSocket的基础特性。 源代码来自老外的一篇好文: https://www.callicoder.com/spring-boot-websocket-chat-example/ 本文内容摘要: 初步理解WebSocket的前后端交互逻辑 手把手使
阅读全文
摘要:前言 接触到CDN的起因: 我自己搭建的网站https://price.monitor4all.cn/网页打开的速度一直比较慢,经查证是我的网站有很多静态js大文件,通过浏览器读取这些js比较耗时间。 最近有了一些空余精力, 好好优化一下加载速度。 分析思路 公用CDN加速公用js库 其实首先想到的
阅读全文
摘要:前言 由于项目需要涉及到zookeeper和Kafka的使用,快速做了一篇笔记,方便小伙伴们搭建环境。 zookeeper 官方定义 What is ZooKeeper? ZooKeeper is a centralized service for maintaining configuration
阅读全文
摘要:前言 我的京东价格监控网站需要不间断爬取京东商品页面,爬虫模块我采用了Scrapy+selenium+Headless Chrome的方式进行商品信息的采集。 由于最近爬虫用的服务器到期,需要换到新服务器重新部署,所以干脆把整个模块封装入Docker,以便后续能够方便快速的进行爬虫的部署。同时,由于
阅读全文