首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
something
haifeiWu
创建于2021-05-17
订阅专栏
just record
等 8 人订阅
共42篇文章
创建于2021-05-17
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
双重检查锁定与单例
对于单例模式,相信大多数人都可以写出好几种实现方法,懒汉,饿汉等等,然而小小单例真要写好,写的完全正确也并非易事。 下面是我们经常使用的一种单例的实现,也就是双重检查所的实现方案。 让我们来看一下这个代码是如何工作的:首先当一个线程发出请求后,会先检查instance是否为nu…
实时数据并发写入 Redis 优化
当前架构的逻辑是将并发请求数据写入队列中,然后起一个单独的异步线程对数据进行串行处理。这种方式的好处就是不用考虑并发的问题,当然其弊端也是显而易见的~ 根据当前业务的数据更新在秒级,key 的碰撞率较低的情况。笔者打算采用使用 CAS 乐观锁方案:使用 Lua 脚本实现 Red…
我理解的零拷贝
最近做的业务涉及到的 I/O 操作比较多,对于Linux上的 I/O 操作的优化 Zero Copy 早有耳闻,今天打算由上而下(从应用层到底层,当然并不会涉及到内核的细节)的研究一下这个问题。 为了更好的描述 zero copy ,本文将以网络服务器的简单过程所涉及的内容展开…
Redis 与 Lua 使用中的小问题
通过上面的脚本可以看到,当 Redis 返回的结果为 (nil) 时候,其真实的数据类型为 boolean,因此我们直接判断 nil 是有问题的。 Redis to Lua conversion table. Lua to Redis conversion table. Lua…
lang3 的 split 方法误用
apache 的 lang3 是我们开发常用到的三方工具包,然而对这个包不甚了解的话,会产生莫名其秒的 bug ,在这里做下记录。 通过分析字符串的拆分结果,发现该方法并不是将分隔符去截取字符串,而是将分隔符的每一个字符都当成分隔符去截取字符串,当我们的分隔符是一个字符的时候一…
实现自己的 RPC 框架(二)
前段时间自己搞了个 RPC 的轮子,不过相对来说比较简单,最近在原来的基础上加以改造,使用 Zookeeper 实现了 provider 自动寻址以及消费者的简单负载均衡,对之前的感兴趣的请转 造个轮子---RPC动手实现。 在原来使用 TCP 直连的基础上实现基于 Zooke…
Docker 快速上手指南
Docker 听其大名已久,但总是疏于操练,今天准备好好搞一下。
Docker 快速上手指南
Docker 听其大名已久,但总是疏于操练,今天准备好好搞一下。 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。 它是目前最流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚…
散列表
是根据键 (Key) 而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。
Nginx 不停机升级 及 gzip 压缩优化
好久不写博客手都生了,不过这个习惯不能丢,仅以一篇水文记录一下 nginx 不停机版本升级及配置 gzip 压缩优化网站访问体验过程。 何为水文,楼主对水文的定义就是百度一搜一大把,但是始终比较杂乱,需要自己仔细甄别才能真正解决问题,这也是楼主写这篇文章的原因,记录一下这个过程…
聊聊 volatile 关键字
我们知道 volatile 关键字的作用是保证变量在多线程之间的可见性,它是 java.util.concurrent 包的核心,没有 volatile 就没有这么多的并发类给我们使用。本文将简单介绍一下 volatile 这个东东。 CAS(compare-and-swap)…
Filter 设计模式编码实践
最近项目中遇到各种输出数据监控,数据校验等逻辑,一个个实现很是麻烦。项目是中途接手的,不是很熟悉,偶然一天发现项目中对 Filter 的使用扩展起来很是方便,所以,今天楼主来分享下,也为自己学习做个记录。下面我们从三方面来阐述。 Filter 在设计模式里面被称为责任链设计模式…
造个轮子之基于 Netty 实现自己的 RPC 框架
服务端开发都会或多或少的涉及到 RPC 的使用,当然如果止步于会用,对自己的成长很是不利,所以楼主今天本着知其然,且知其所以然的精神来探讨一下 RPC 这个东西。 child-rpc 采用 socket 直连的方式来实现服务的远程调用,然后使用 jdk 动态代理的方式让调用者感…
高性能无锁队列 Disruptor 初体验
最近一直在研究队列的一些问题,今天楼主要分享一个高性能的队列 Disruptor 。 它是英国外汇交易公司 LMAX 开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题。基于 Disruptor 开发的系统单线程能支撑每秒600万订单。 目前,包括 Apache Stor…
炮打TCP – 关于一而再再而三的粘包拆包问题的大字报
TCP 所谓的粘包和拆包问题,是技术圈里最奇葩的问题之一! 一而再,再而三,就跟傻逼的中国球迷支持中国足球队一样,前赴后继。有时候同一个人多次在犯同一个错误,有时候是前脚一个犯错了后脚又来一个还犯同样的错。
Netty 源码中对 Redis 协议的实现
近期一直在做网络协议相关的工作,所以博客也就与之相关的比较多,今天楼主结合 Redis的协议 RESP 看看在 Netty 源码中是如何实现的。 RESP 是 Redis 序列化协议的简写。它是一种直观的文本协议,优势在于实现非常简单,解析性能极好。 Redis 协议将传输的结…
Redis协议规范(译文)
Redis客户端使用名为RESP(Redis序列化协议)的协议与Redis服务器进行通信。 虽然该协议是专为Redis设计的,但它可以用于其他CS软件项目的通讯协议。 RESP可以序列化不同的数据类型,如整型,字符串,数组。 还有一种特定的错误类型。 请求将要执行的命令作为字符…
线上 ELK 集群健康值 red 状态问题排查与解决
之前一直运行正常的数据分析平台,最近一段时间没有注意发现日志索引数据一直未生成,大概持续了n多天,当前状态: 单台机器, Elasticsearch(下面称ES)单节点(空集群),1000+shrads, 约200G大小。 查看ES集群健康值,发现 status 为 red,这…
聊聊 JDK 非阻塞队列源码(CAS实现)
正如上篇文章聊聊 JDK 阻塞队列源码(ReentrantLock实现)所说,队列在我们现实生活中队列随处可见,最经典的就是去银行办理业务,超市买东西排队等。今天楼主要讲的就是JDK中安全队列的另一种实现使用CAS算法实现的安全队列。
聊聊 JDK 阻塞队列源码(ReentrantLock版)
项目中用到了一个叫做 Disruptor 的队列,今天楼主并不是要介绍 Disruptor 而是想巩固一下基础扒一下 JDK 中的阻塞队列,听到队列相信大家对其并不陌生,在我们现实生活中队列随处可见,最经典的就是去银行办理业务等。
下一页