自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

转载 Java秒杀系统优化的工程要点

这篇博客是笔者学习慕课网若鱼老师的《Java秒杀系统方案优化 高性能高并发实战》课程的学习笔记。若鱼老师授课循循善诱,讲解由浅入深,欢迎大家支持。 本文记录课程中的注意点,方便以后code review。此外,本文将注意点相关的优质讲解链接在了一起,方便初学者系统学习。 本文并非单纯介绍秒杀系统特有的技术点,不适合高手。进阶学习的话,极客时间有个不错的小专栏——如何设计一个秒杀系统,阿...

2019-09-27 08:56:00 133

转载 自定义注解+拦截器优化项目代码

自定义注解+拦截器的优势 类似用户权限或者接口限流的需求,但并不是所有操作或者接口需要。可以使用过滤器或者拦截器,但这样就必须在配置文件里加上所有方法或者使用通配符。 所以可以采用一种比较简单灵活的方式:采用自定义注解加Spring拦截器来实现。 编写示例 例如我们现在要做个接口的计数器限流,只需要像下面这样,加上一个注解即可。定义为每seconds秒内,最大访问量maxCount。 @...

2019-09-25 07:12:00 114

转载 有关Spring事务,看这一篇就足够了

本文将按照声明式事务的五个特性进行介绍: 事务传播机制 事务隔离机制 只读 事务超时 回滚规则 Spring事务传播机制 事务的特性 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部...

2019-09-24 13:36:00 77

转载 浅析数据库与缓存的双写一致性问题

缓存由于其高并发和高性能的特性,在项目中被广泛使用。读缓存流程如下图: 双写一致性有以下三个要求: 缓存不能读到脏数据 缓存可能会读到过期数据,但要在可容忍时间内实现最终一致 这个可容忍时间尽可能的小 要想同时满足上面三条,可以采用读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况。但是,串行化之后,就会导致系统的吞吐量会大幅度的降低,要用比正常情况...

2019-09-23 09:45:00 75

转载 LNMP环境搭建最好用的两种方法(亲测)

经历了一个PHP服务器项目,手动编译部署PHP,Swoole环境太让人郁闷了,所以尝试过两种不错的方法,分享出来方便同样经历痛苦的coder。 第一种方式: 安装LNMP按照这里的步骤执行,网址戳我 , 如果服务器原本有mysql或者nginx,最好先自行清理下。笔者的服务器原来有损坏的mysql服务,导致前两次安装都失败了。 跳转到FAQ中,网址戳我,编辑配置开启PHP错误日志。 ...

2019-09-20 10:58:00 140

转载 Java多线程之原子操作类

在并发编程中很容易出现并发安全问题,最简单的例子就是多线程更新变量i=1,多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchronized进行控制来达到线程安全的目的。但是由于synchronized是采用的是悲观锁策略,并不是特别高效的一种解决方案。实际上,在J.U.C下的Atomic包提供了一系列的操作简单,性能高效,并能保证线程安全的类去更新...

2019-09-18 12:36:00 89

转载 手写RPC框架指北另送贴心注释代码一套

Angular8正式发布了,Java13再过几个月也要发布了,技术迭代这么快,框架的复杂度越来越大,但是原理是基本不变的。所以沉下心看清代码本质很重要,这次给大家带来的是手写RPC框架。 完整代码以及说明文档,点我跳跃~ 1. 什么是RPC? RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接...

2019-09-17 08:54:00 88

转载 快速了解TCP的流量控制与拥塞控制

有关TCP你不能不知道的三次握手和四次挥手问题,点我跳转 流量控制 1. 滑动窗口 数据的传送过程中很可能出现接收方来不及接收的情况,这时就需要对发送方进行控制以免数据丢失。利用滑动窗口机制可以很方便地在TCP连接上对发送方的流量进行控制。TCP的窗口单位是字节,不是报文段,发送方的发送窗口不能超过接收方给出的接收窗口的数值。 TCP规定,即使设置为零窗口,也必须接收以下几种报文段:...

2019-09-16 08:30:00 97

转载 关于三次握手与四次挥手你要知道这些

TCP的整个连接过程 如果没有基础的话,直接看这张图或者网络上各种文字描述,十分生涩,所以先看懂接下来的握手挥手的图,理解之后,再看这个有限状态机就感觉原来如此简单。 三次握手 握手过程 第一次握手:主机A发送位码为syn=1,随机产生seq number=x的数据包到服务器,客户端进入SYN_SEND状态,等待服务器的确认;主机B由SYN=1知道A要求建立连接。 第二次握手:主...

2019-09-12 08:10:00 66

转载 你该用HTTP2了

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 HTTP版本简史 HTTP/0.9: (1991年)基于GET请求的文本传输协议 HTTPS: (1994年)安全的HTTP传输协议 HTTP/1.0: (1996年)增加HTTP头、扩展PUT、POST等方法 HTTP/1.1: (1999年)长连接、流水线支持,最广泛使用的HTTP传输协议 ...

2019-09-11 11:38:00 167

转载 Redis哨兵(Sentinel)模式快速入门

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。 所以更多时候,我们优先考虑哨兵(sentinel) 模式。 Redis sentinel是Redis高可用实现方案:故障发现、故障自动转移、配置中心、客户端通知。从Redis的2.6版本开始...

2019-09-10 08:59:00 103

转载 Redis主从复制的原理

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 在Redis集群中,让若干个Redis服务器去复制另一个Redis服务器,我们定义被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave),这种模式叫做主从复制模式。 数据流向是单向的,只能是从master到slave 一个slave只能有一个master...

2019-09-06 08:48:00 67

转载 Redis持久化的原理及优化

更多内容,欢迎关注微信公众号:全菜工程师小辉~ Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF两种方案,两种方案分别有其长处和短板,可以配合起来同时运行,确保数据的稳定性。 RDB 保存数据快照至一个RDB文件中,用于持久化。RDB操作和Mysql Dump相似。 执行方式 save。同步操作,会阻塞Redis。 bgsave。调用linux的fork(),然后使...

2019-09-05 13:36:00 66

转载 Redis的高级特性一览

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 应用场景 缓存系统:用于缓解数据库的高并发压力 计数器:使用Redis原子操作,用于社交网络的转发数,评论数,粉丝数,关注数等 排行榜:使用zset数据结构,进行排行榜计算 实时系统:使用Redis位图的功能实现布隆过滤器,进而实现垃圾邮件处理系统 消息队列:使用list数据结构,消息发布者push数据...

2019-09-04 08:01:00 76

转载 session一致性的解决方案

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文,这个相关信息就是session。这样,当用户在应用程序的Web页之间跳转时,存储在session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。 session是对http无状态协议的补...

2019-09-03 08:48:00 79

转载 快速了解会话管理三剑客cookie、session和JWT

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 存储位置 三者都是应用在web中对http无状态协议的补充,达到状态保持的目的 cookie:cookie中的信息是以键值对的形式储存在浏览器中,而且在浏览器中可以直接看到数据。下图为safari的cookie截图: session:session存储在服务器中,然后发送一个cookie存储在浏览器中,...

2019-09-02 07:23:00 119

转载 动态规划快速入门

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 动态规划算法一直是面试手撕算法中比较有挑战的一种类型。很多的分配问题或者调度问题实际上都可能用动态规划进行解决。(当然,如果问题的规模较大,有时候会抽象模型使用动归来解决,有时候则可以通过不断迭代的概率算法解决查找次优解) 所以,动归很重要,至少算法思想很重要。 什么是动态规划? 通过把原问题分解为相对简...

2019-08-30 08:50:00 118

转载 图解一致性hash算法和实现

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 一致性hash算法是什么? 一致性hash算法,是麻省理工学院1997年提出的一种算法,目前主要应用于分布式缓存当中。 一致性hash算法可以有效地解决分布式存储结构下动态增加和删除节点所带来的问题。 在Memcached、Key-Value Store、Bittorrent DHT、LVS中都采用了一致...

2019-08-29 08:11:00 77

转载 Spring与后端模板引擎的故事

更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 现在很多开发,都采用了前后端完全分离的模式,随着近几年前端工程化工具和MVC框架的完善,使得这种模式的维护成本逐渐降低。但是这种模式目前并不利于SEO(前后端分离的SEO问题会慢慢改善),而且某些场景使用模板引擎会更方便,比如说邮件模板以及数据变化不频繁的后台系统。 Spring,确切来说是Spring ...

2019-08-28 07:28:00 66

转载 SpringIoC和SpringMVC的快速入门

更多内容,欢迎关注微信公众号:全菜工程师小辉~ Spring的优势? 降低了组件之间的耦合性 ,实现了软件各层之间的解耦 可以使用容易提供的众多服务,如事务管理,消息服务等 容器提供单例模式支持 容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 Spring的IoC机制降低了业务对象替换的复杂性 容器提供了众多的辅助类,能加快应用的开发 Spring对于主流的应用框架...

2019-08-27 08:08:00 68

空空如也

空空如也

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

TA关注的人

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