自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蛮三刀酱

微信公众号:蛮三刀酱、后端技术漫谈

  • 博客(352)
  • 收藏
  • 关注

原创 【秒杀系统】秒杀系统实战(四):缓存与数据库双写一致性深度分析

前言微笑挖坑,努力填坑。        ———— 已经拥有黑眼圈,但还没学会小猪老师时间管理学的蛮三刀同学本文是秒杀系统的第四篇,我们来讨论秒杀系统中缓存热点数据的问题,进一步延伸到数据库和缓存的双写一致性问题,并且给出了实现代码。前文回顾和文章规划零基础上手秒杀系统(一):防止超卖零基础上手秒杀系统(二):令牌桶限流 + 再谈超卖零基础上手秒杀系统(三):抢购接口隐藏 + 单用户...

2020-04-25 15:46:36 5078 9

原创 【秒杀系统】零基础上手秒杀系统(三):抢购接口隐藏 + 单用户限制频率

前言时光飞逝,两周过去了,是时候继续填坑了,不然又要被网友喷了。本文是秒杀系统的第三篇,通过实际代码讲解,帮助你了解秒杀系统设计的关键点,上手实际项目。本篇主要讲解秒杀系统中,关于抢购(下单)接口相关的单用户防刷措施,主要说两块内容:抢购接口隐藏单用户限制频率(单位时间内限制访问次数)当然,这两个措施放在任何系统中都有用,严格来说并不是秒杀系统独特的设计,所以今天的内容也会比较的...

2020-03-27 21:09:26 3251 1

原创 【秒杀系统】零基础上手秒杀系统(二):令牌桶限流 + 再谈超卖

前言本文是秒杀系统的第二篇,通过实际代码讲解,帮助你快速的了解秒杀系统的关键点,上手实际项目。本篇主要讲解接口限流措施,接口限流其实定义也非常广,接口限流本身也是系统安全防护的一种措施,暂时列举这几种容易理解的:令牌桶限流单用户访问频率限流抢购接口隐藏此外,前文发出后很多同学对于乐观锁在高并发时无法卖出全部商品提出了“严正抗议”,所以还是在本篇中补充讲解下乐观锁与悲观锁。前文回...

2020-03-14 16:09:31 2480 10

原创 【秒杀系统】从零开始打造简易秒杀系统(一):防止超卖

前言大家好,好久不发文章了。(快一个月了- -)最近有很多学习的新知识想和大家分享,但无奈最近项目蛮忙的,很多文章写了一半搁置在了笔记里,待以后慢慢补充发布。本文主要是通过实际代码讲解,帮助你一步步搭建一个简易的秒杀系统。从而快速的了解秒杀系统的主要难点,并且迅速上手实际项目。我对秒杀系统文章的规划:从零开始打造简易秒杀系统:乐观锁防止超卖从零开始打造简易秒杀系统:令牌桶限流从零开...

2020-03-07 19:40:50 8863 10

原创 【算法】二叉树遍历算法总结:前序中序后序遍历

前言二叉树遍历是非常经典的算法题,也是二叉树的一道基础算法题。但是在平常的笔试面试中,其出现的频率其实并不是特别的高,我推测是这种题目相对来说比较基础,算是一个基础知识点。比如剑指offer中出现的后序遍历题目,是给出一个数字序列,让你判断是不是平衡二叉树后序遍历序列,这样出题的难度比直接让你写后序遍历难很多。但是,二叉树遍历容易吗?在递归方法下,前中后序遍历都是一个思路,理解起来也比较...

2020-02-22 17:53:56 5003

原创 【设计模式自习室】结构型:组合模式 Composite

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的应用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关注我的...

2020-02-12 23:38:43 593

原创 【读书笔记】《解忧程序员》读后感

写在开头2020年的春节假期,可能是近几年大家度过的最无趣,但是最印象深刻的假期了。肺炎的疫情愈发严重,春节的假期被“无限”的拉长。在这样“宅”在家的日子里,除了天天在床上无限翻滚,在手机电视上刷武汉疫情消息之外,也只好被迫在家里找点乐子,一顿翻箱倒柜之后,翻到了留在家里的几本技术书。之前特意留在家里的书,要么是看过的,要么是暂时都不太想法翻的书。这本《解忧程序员》也是如此。不过,为了让...

2020-01-30 21:51:58 941 1

原创 【设计模式自习室】详解代理模式

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的应用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关注我...

2020-01-22 17:55:27 928

原创 【设计模式自习室】享元模式 Flyweight Pattern:减少对象数量

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的应用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关注我...

2020-01-19 21:20:15 622

原创 【设计模式自习室】门面模式 Facade Pattern

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的应用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关注我...

2020-01-18 12:32:15 691

原创 【设计模式自习室】桥接模式 Bridge Pattern:处理多维度变化

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的应用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关注我...

2020-01-16 19:37:28 833

原创 【删库跑路】使用Binlog日志恢复误删的MySQL数据

前言“删库跑路”是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路!开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你能够了解到:MySQL的binlog日志是什么?通常是用来干什么的?模拟一次误删数据的操作,并且使用binlog日志恢复误删的数据。写这篇文章的初衷,是有一次我真的险些把测试数据库的一张表给删除了,当时吓...

2020-01-13 23:14:11 910

原创 【设计模式自习室】装饰模式

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的实际使用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关...

2020-01-05 21:00:30 1040

原创 【设计模式自习室】适配器模式

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的实际使用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关...

2020-01-04 23:32:40 675

原创 【设计模式自习室】理解工厂模式的三种形式

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的实际使用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部)也希望各位观众老爷能够关...

2020-01-02 22:42:27 805

原创 【设计模式自习室】透彻理解单例模式

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括:引子、意图(大白话解释)类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的实际使用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部)也希望各位观众老爷能够关...

2019-12-27 16:12:54 683

原创 【设计模式自习室】原型模式

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该设计模式的详细介绍,包括:引子,意图(大白话解释)类图,时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:不可以滥用模式该模式的实际使用案例:了解它在哪些重要的源码中出现过该系列会逐步更新于我的博客和公众号(博客见文章底部)也希望各位观众老爷能够关注我的个...

2019-12-25 17:49:37 876

原创 【设计模式自习室】建造者模式

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该设计模式的详细介绍,包括:引子,意图(大白话解释)类图,时序图(理论规范)该模式的代码示例:熟悉它长的样子该模式的实际使用案例:了解它在哪些重要的源码中出现过该系列会逐步更新于我的博客和公众号(博客见文章底部)也希望各位观众老爷能够关注我的个人公众号:后端技术漫谈,不会错过精彩好看的文...

2019-12-24 18:02:26 1589

原创 【设计模式自习室】开篇:为什么要有设计模式?

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。但是,在开篇中,我想要先整体的介绍下设计模式,让大家知道为什么要学习设计模式。所以这篇文章的主要内容是:我对设计模式的理解设计模式的至高目标:解耦(高内聚低耦合)设计模式的分类设计模式遵循的设计原则为什么我写代码常常用不到设计模式?文章会逐步更新于我的各个博客上(见文章尾部介绍),也希望各位观众老爷能够...

2019-12-22 17:33:49 1013 1

原创 【读书笔记】《码农翻身》——一本差点被书名耽误的好书

写在开头双11期间,当当网买了一波书,一般我买技术书籍都会提前先在网上大概浏览下目录和内容,再决定买不买纸质书,主要是为了防止自己买了后又觉得不感兴趣,闲置在那,浪费钱。这次买书为了凑单,准备额外多买一本书,本想再来一本小说,作为床头放松读物,但是翻到了销量前几的《码农翻身》,看了看副标题是:用故事给技术加点料。想了想就下单了,就权当是看小说顺便复习下技术,安慰下自己焦虑的内心。本来看见这书名...

2019-12-14 19:56:21 1566 4

原创 【剑指offer题解】二维数组中的查找

前言众所周知,对于面试而言,《剑指offer》是一本“好书”。如果你和我一样是个算法菜鸡,那么最推荐的是先把剑指offer的题目搞明白,其次再去刷LeetCode等习题,这样对于面试突击非常有用,因为面试官最常考的算法题都在这本书里。如果你发现看这本书很吃力,可以先直接参考些网上的代码,照着抄一遍,理解下算法题是应该解题,多抄几道题目,你就对算法题的做法有感觉了,这个高考做固定套路数学题是...

2019-12-01 14:50:12 511

原创 【Git实战技巧】恢复被强制推送push失踪的代码

前言Git是一个易学难精的分布式版本控制系统,被我们码农常用于代码的管理。如果你还不了解Git,建议先通过廖雪峰的Git教程进行了解,再来看本文,因为本文以使用技巧为主,不会在基础名词上做过多解释。廖雪峰的Git教程:https://www.liaoxuefeng.com/wiki/896043488029600/896067008724000恢复被强制推送push失踪的代码在常规的开...

2019-11-27 20:51:40 4575 1

原创 Java线上问题排查神器Arthas快速上手与原理浅谈

前言当你兴冲冲地开始运行自己的Java项目时,你是否遇到过如下问题:程序在稳定运行了,可是实现的功能点了没反应。为了修复Bug而上线的新版本,上线后发现Bug依然在,却想不通哪里有问题?想到可能出现问题的地方,却发现那里没打日志,没法在运行中看到问题,只能加了日志输出重新打包——部署——上线程序功能正常了,可是为啥响应时间这么慢,在哪里出现了问题?程序不但稳定运行,而且功能完美,但...

2019-11-17 11:54:55 7511 10

原创 [SpringBoot实战]快速配置多数据源(整合MyBatis)

前言由于业务需求,需要同时在SpringBoot中配置两套数据源(连接两个数据库),要求能做到service层在调用各数据库表的mapper时能够自动切换数据源,也就是mapper自动访问正确的数据库。本文内容:在Springboot+Mybatis项目的基础上,学习多数据源的快速配置避免网上某些配置数据源文章的深坑SpringBoot实战系列教程回顾:[Springboot]S...

2019-10-04 10:23:27 882 1

原创 [WebSocket]使用WebSocket实现实时多人答题对战游戏

前言前两章教程,我们使用WebSocket的基础特性打造了一个小小聊天室,并在第二章对其进行了集群化改造。系列教程回顾:[WebSocket]第一章:手把手搭建WebSocket多人在线聊天室(SpringBoot+WebSocket)[WebSocket]第二章:WebSocket集群分布式改造——实现多人在线聊天室在本文中,我将介绍如何使用WebSocket向实时多人答题对战游戏提供...

2019-09-07 14:39:31 12770 7

原创 [WebSocket]第二章:WebSocket集群分布式改造——实现多人在线聊天室

前言书接上文,我们开始对我们的小小聊天室进行集群化改造。上文地址:[WebSocket入门]手把手搭建WebSocket多人在线聊天室(SpringBoot+WebSocket)本文内容摘要:为何要改造为分布式集群如何改造为分布式集群用户在聊天室集群如何发消息用户在聊天室集群如何接收消息补充知识点:STOMP 简介功能一:向聊天室集群中的全体用户发消息——Redis的...

2019-08-25 16:46:24 13159 13

原创 [WebSocket入门]手把手搭建WebSocket多人在线聊天室(SpringBoot+WebSocket)

前言本文中搭建了一个简易的多人聊天室,使用了WebSocket的基础特性。源代码来自老外的一篇好文:https://www.callicoder.com/spring-boot-websocket-chat-example/本文内容摘要:初步理解WebSocket的前后端交互逻辑手把手使用 SpringBoot + WebSocket 搭建一个多人聊天室Demo代码源码及其解释...

2019-08-08 19:08:18 23141 11

原创 [剑指offer题解][Java]1到n整数中1出现的次数

前言众所周知,《剑指offer》是一本“好书”。如果你是个算法菜鸡(和我一样),那么最推荐的是先把剑指offer的题目搞明白。对于剑指offer题解这个系列,我的写作思路是,对于看过文章的读者,能够做到:迅速了解该题常见解答思路(偏门思路不包括在内,节省大家时间,实在有研究需求的人可以查阅其它资料)思路尽量贴近原书(例如书中提到的面试官经常会要求不改变原数组,或者有空间限制等,尽量体...

2019-07-31 17:54:56 447

原创 [Selenium+Chrome使用总结]加载Flash/禁用JS脚本/滚动页面至元素/缩放页面

前言本文快速回顾了常考的知识点,用作面试复习,事半功倍。Selenium主要参考Selenium使用总结(Java版本):https://juejin.im/post/5c13880ef265da610f639c3cSelenium准备chromedriver各版本镜像:https://npm.taobao.org/mirrors/chromedriver/chromedriv...

2019-07-30 19:39:10 2911

原创 [剑指offer题解][Java]连续子数组的最大和

前言众所周知,《剑指offer》是一本“好书”。如果你是个算法菜鸡(和我一样),那么最推荐的是先把剑指offer的题目搞明白。对于剑指offer题解这个系列,我的写作思路是,对于看过文章的读者,能够做到:迅速了解该题常见解答思路(偏门思路不包括在内,节省大家时间,实在有研究需求的人可以查阅其它资料)思路尽量贴近原书(例如书中提到的面试官经常会要求不改变原数组,或者有空间限制等,尽量体现...

2019-07-29 22:42:22 463

原创 精选程序员面试常问的逻辑题

前言大家在面试的时候,难免会遇到让人摸不着头脑的逻辑题,这类题目让同学们往往连答案应该回答些什么都摸不清楚,只能和面试官四目相对,非常尴尬。其实,很多面试的考官,都是从题库随机挑选逻辑题来考验同学们,面试官有时候自己也未必完全摸透这类题目,所以面试的时候不必过于紧张,就算答不出来啊也非常正常。在我的理解中,这类题目主要还是考大家的思路,至于答案标准与否,其实不是特别重要。本文总结了面试中我...

2019-06-04 14:57:38 1676

原创 [网站加载优化]公共CDN库/Nginx启用Gzip/全站CDN加速

前言接触到CDN的起因:我自己搭建的网站https://price.monitor4all.cn/网页打开的速度一直比较慢,经查证是我的网站有很多静态js大文件,通过浏览器读取这些js比较耗时间。最近有了一些空余精力, 好好优化一下加载速度。分析思路公用CDN加速公用js库其实首先想到的是把公共的js库使用公共CDN来加速,比如我的前端用到了echarts,js-cookie等。这些...

2019-05-19 22:30:27 757

原创 [Python爬虫]新闻网页爬虫+jieba分词+关键词搜索排序

前言最近做了一个python3作业题目,涉及到:网页爬虫网页中文文字提取建立文字索引关键词搜索涉及到的库有:爬虫库:requests解析库:xpath正则:re分词库:jieba…放出代码方便大家快速参考,实现一个小demo。题目描述搜索引擎的设计与实现输入:腾讯体育的页面链接,以列表的方式作为输入,数量不定,例如:["http://fiba.qq.c...

2019-05-16 20:53:28 3394

原创 [SpringBoot实战系列]实现发送邮件API/发件人中文别名

前言由于价格监控项目的需求,实现了一个小的邮件发送接口服务,使用了一个单独的SpringBoot项目,给他取名为spring-mail-sender,开源在了Github上。内部我给他命名为提醒服务,因为未来希望还能扩展下,用来做短信发送服务,或者安卓等推送服务的API。简介本项目使用springboot,采用web api的方式提供邮件,短信等服务的调用接口,目前仅支持邮件提醒。邮件提...

2019-04-25 16:47:34 1962

原创 [数据结构拾遗]图的最短路径算法

前言本专题旨在快速了解常见的数据结构和算法。在需要使用到相应算法时,能够帮助你回忆出常用的实现方案并且知晓其优缺点和适用环境。并不涉及十分具体的实现细节描述。图的最短路径算法最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。算法具体的形式包括:确定起点的最短路径问题:即已知起始结点,求最短路径的问题。适合使用Dijkstra算法。...

2019-04-21 16:42:11 815

原创 [剑指offer题解][Java]最小的k个数

前言众所周知,《剑指offer》是一本“好书”。为什么这么说?因为在面试老鸟眼里,它里面罗列的算法题在面试中出现的频率是非常非常高的。有多高,以我目前不多的面试来看,在所有遇到的面试算法题中,出现原题的概率大概能有6成,如果把基于原题的变种题目算上,那么这个出现概率能到达9成,10题中9题见过。如果你是个算法菜鸡(和我一样),那么最推荐的是先把剑指offer的题目搞明白。至于为什么给...

2019-04-20 15:28:30 375

原创 [剑指offer题解][Java]数组中出现次数超过一半的数字

前言最近看了好多数据结构文章,但是数据结构拾遗系列迟迟憋不出,主要原因是很多数据结构其实非常偏门,不仅日常很难遇到,学起来还涉及很多数学模型,很难有快速的理解方法。本着女排“短平快”的精神,先更新下剑指offer题解系列。众所周知,《剑指offer》是一本“好书”。为什么这么说?因为在面试老鸟眼里,它里面罗列的算法题在面试中出现的频率是非常非常高的。有多高,以我目前不多的面试来看,在所有...

2019-04-19 16:20:09 533

原创 [数据结构拾遗]字符串排序算法总结

前言本专题旨在快速了解常见的数据结构和算法。在需要使用到相应算法时,能够帮助你回忆出常用的实现方案并且知晓其优缺点和适用环境。并不涉及十分具体的实现细节考究。字符串排序算法简介对于许多排序应用,决定顺序的键都是字符串。其主要思想是利用比较,根据字符的有限性通过计数的方式来划分字符串的排名位置。主要介绍以下几种方式:预备知识:键索引计数法低位优先的字符串排序 LSD string...

2019-04-07 10:32:25 1043

原创 [菜鸟SpringCloud实战入门]第十章:分布式链路跟踪 Sleuth和Zipkin

前言欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud。本系列适合有一定Java以及SpringBoot基础的同学阅读。每篇文章末尾都附有本文对应的Github源代码,方便同学调试。Github仓库地址:https://github.com/qqxx6661/springcloud...

2019-03-24 20:47:57 808

原创 [菜鸟SpringCloud实战入门]第九章:服务网关Zuul体验

前言欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud。本系列适合有一定Java以及SpringBoot基础的同学阅读。每篇文章末尾都附有本文对应的Github源代码,方便同学调试。Github仓库地址:https://github.com/qqxx6661/springclou...

2019-03-23 20:44:36 790

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除