自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用 100 行代码手写一个 Hystrix

熔断与降级离小眼睛家不远的地方,开了一个熟食店。店内有两个窗口总能排起长龙,一个窗口是选好的凉菜让师傅调味,一个窗口是买到的扒鸡让胖师傅现场脱骨。顾客的正常的流程,大致是这个样子滴:炎炎夏日,邀三五好友,喝杯啤酒吹吹牛皮,岂不美哉。可能大家跟小眼睛想法一致,小店的生意日渐火爆。这天,小眼睛选好了菜,付了钱,正准备排队让师傅调口味、脱骨。目测两个窗口排队时间不会少于 20 分钟,加之几个朋友轮番催促,果断放弃,拎着菜直接回家。于是我到流程就变成了:当下游的服务(调料...

2020-07-01 01:24:11 528

原创 用100行代码手写一个Hystrix

01GAOKAO熔断与降级离小眼睛家不远的地方,开了一个熟食店。店内有两个窗口总能排起长龙,一个窗口是选好的凉菜让师傅调味,一个窗口是买到的扒鸡让胖师傅现场脱骨。顾客的正常的流程,大致是...

2020-06-29 09:27:00 238

原创 手写负载均衡算法

概述「负载均衡」是指,通过一定的算法使请求可以均匀的宠幸服务提供方,做到雨露均沾。市面上,软件硬件产品一大把,解决的最最核心的问题都是选谁。分类按实现方式,可以分为硬件负载均衡(如 F5 、A10)、软件负载均衡(如 LVS、Nginx、HAProxy)、DNS 负载均衡。硬件负载均衡和DNS 负载均衡我们不过多关注,重点看一下软件负载均衡。软件负载均衡又分四层和七层负载均衡,四层负载均衡就是在网络层利用 IP 地址端口进行请求的转发,基本上就是起个转发分配作用。而七层负...

2020-06-22 12:15:42 787

原创 一个包子铺看懂 I/O 模型演变

小眼睛打算开个包子铺,拜访了 N 个餐饮界大佬后,决定直接搞 O2O 模式。依据大佬们透露的数据,省掉了房租、水电、工资,结合平台的优势只要按照每年 10% 的增速,用不了多久就能迎娶白富美走上人生巅峰了。在美好的幻想中,包子托拉斯开业了……BIO开张第一个月,下单量短暂增长,一周之后开始迅速滑落。持续收到大量投诉:客户投诉送餐太慢,骑手投诉取餐等待太久。眼看着刚开张,就有倒闭的预兆。包子托拉斯请来了著名咨询公司鹰邦邦给大家支招。鹰邦邦的基尔,梳理出来了整个运转的流程:收到外卖订单后(socke

2020-06-16 09:23:56 274 2

原创 读懂才会用:Redis ZSet 的几种使用场景

Redis 的 ZSet 结构,可以应用在实现延时队列、限流、获取排行榜等场景。本文通过demo代码简单实现了三种功能,供大家参考。delay queue ,rate limit

2020-06-11 20:23:20 4973 1

原创 NIO 看破也说破(五): 搞,今天就搞,搞懂Buffer

Java NIO 中的三件法宝:Channel 、Selector 和 Buffer 。前面几节中,我们花了很大篇幅讲过 Selector ,咱们今天只搞 Buffer 。希望能通过本文搞明白 Buffer 的基本用法和原理。掌握重点:两个重要指针不停变换;一块 Buffer 可读可写;基本操作的 api 用法;ByteBuffer 可以在 JVM 堆外分配直接内存

2020-06-07 08:58:05 348 1

原创 读懂才会用 : 带你见识 Redis 的 zset

本文从代码角度分析Redis 的 zset 结构,希望通过本文掌握如下内容:Redis 中 zset 不是单一结构完成,是跳表和哈希表共同完成跳表的实现原理,跳表升维全靠随机跳表中查找、插入、删除的三个口诀使用场景(简单延时队列、排行榜、简单限流)

2020-06-06 22:16:49 1272

原创 NIO看破也说破(四)—— Java的NIO

Java的NIO有selector,系统内核也提供了多种非阻塞IO模型,Java社区也出现了像netty这种优秀的 NIO 框架。Java的NIO 与内核的阻塞模型到底什么关系,为什么Java有NIO的API还出现了netty这种框架,网上说的 reactor 到底是什么?本文通过分析代码,带你一步步搞清楚Java的NIO和系统函数之间的关系,以及Java NIO 是如何一步步衍生出来netty框架。

2020-06-06 14:07:37 323

原创 NIO 看破也说破(三)—— 不同的IO模型

NIO系列,不同的IO模型是如何实现的

2020-06-02 09:25:37 251

原创 眼中有码,心中无码

日常生活中二维码的使用已经无处不在,付款码、微信名片、健康码、乘车码……一张小小的二维码侵入到生活中的方方面面。黑白色块组成的有限区域,如何携带信息。不同应用场景下的二维码会不会重复,会不会像 IPV4 一样被耗尽?如果您对这些也有疑问,请您带着问题阅读本文。

2020-06-01 10:43:04 9010

原创 NIO 看破也说破(二)—— Java 中的两种BIO

上一篇Linux/IO基础我们得出结论,提供网络能力的不是Java是Linux操作系统。本文我们通过分析系统函数调用,观察不同jdk版本中BIO的实现差别。NIO看破也说破(一)- Linux/IO基础核心结论:不同版本jdk实现方式不一致如果不给socket设置nonblocking,accept会阻塞直到数据到达poll的调用是阻塞的,直到注册的event发生后,返回发生事件的fd环境准备centOS 7jdk1.5.0-jdk1.8.0strace测试代码BIOServe

2020-05-26 03:12:46 288 2

原创 那个业务大拿死在了这个地方

那个业务大拿死在了这个地方业务代码中的技术是每个程序员的基础,但只是掌握了这些技巧,并不能成为技术大牛,还要不断打怪升级。Do more,Do better,Do exercise ,送给身边所有程序员 !!!一个工业级哈希表的要求:支持快速的查询、插入、删除操作内存占用合理,不能浪费过多的内存空间性能稳定,极端情况下,散列表的性能也不会退化到无法接受的情况Java 8 中哈希表底层采用数组存储,利用 hash 算法计算出下标值来存储元素,再配合上动态扩容,才能成为大拿写业务代码的利器。

2020-05-26 00:02:00 738 1

原创 NIO看破也说破(一)—— Linux/IO基础

知识准备Linux中一切类型都被抽象成文件,如:普通文件、目录、字符设备、块设备、套接字等内存被划分为内核态和用户态,数据在用户态和内核态之间拷贝,内核态可以访问用户态数据,反之不可以只有内核可以操作硬件资源(网卡、磁盘等),内核提供syscall函数文件描述符文件描述符是内核创建的方便管理已打开文件的索引,指代被打开的文件。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。所有执行I/O操作的系统调用都通过文件描述符在Linux系统中,s

2020-05-25 15:06:04 376 1

原创 读懂才会用 : 瞅瞅Redis的epoll模型

上一篇提到了Redis采用epoll模型来提升链接处理能力。本文,我们从源代码的角度,简单理解Redis是如何使用epoll以及epoll的实现原理。浅入浅出~通过本文了解如下三件事儿,就算是达到了本文目的:1、epoll是Linux提供的系统实现,核心方法只有三个2、epoll效率高,是因为基于红黑树、双向链表、事件回调机制3、redis的IO多路复用,Linux上用epoll进行了实现epoll是Linux内核提供的一种多路复用器,照例问问Linux的男人:EPOLL(7

2020-05-24 20:00:48 1279

原创 读懂才会用 : Redis的多线程

Redis 6.0.1正式发布。除了增加新功能和新的API,支持多线程是最大变化。本文以简化的方式理解Redis线程模型的演进。

2020-05-24 19:58:15 1572

空空如也

空空如也

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

TA关注的人

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