自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

持之以恒

致力于理解技术底层原理,专注后端领域,微服务、分布式、缓存、大数据、网络、操作系统 ... 目前死抠 redis、netty、springcloud

  • 博客(583)
  • 资源 (7)
  • 收藏
  • 关注

原创 用户体系之账户设计

随着互联网的发展,越来越多的应用、网站需要用户进行登录才能使用。为了方便用户登录,现在的应用通常提供多种登录方式,比如手机号、微信、抖音、快手 … ,这样你就不用干巴巴的记下账号、密码,通过几种常见的登录方式快速登录

2023-07-30 12:46:26 771

原创 Apollo 热更新配置

简单来说,Apollo 是一个配置中心,可以非常方便管理公司所有项目配置,并支持热更新。本文主要讲解 Apollo 在 Spring 环境下的热更新操作。

2023-06-15 17:55:29 2337

原创 Ebean 字段别名配置引发语法问题

Ebean 没听过?这里简单给你介绍下:Ebean 是一个 Java ORM(Object-Relational Mapping)框架,具有以下优势:1. 简单易用:Ebean 的 API 设计简单易用,可以快速上手,无需繁琐的配置。2. 自动化 SQL 生成:Ebean 可以自动化生成 SQL 语句,开发者无需手写 SQL,提高了开发效率。

2023-05-13 13:11:45 621 1

原创 服务端实时推送技术之SSE(Server-Send Events)

服务端推送,也称为消息推送或通知推送,是一种允许应用服务器主动将信息发送到客户端的能力,为客户端提供了实时的信息更新和通知,增强了用户体验。

2023-04-28 09:12:32 7697 3

原创 短链接是怎么设计的?带你入门

说到 URL 你肯定不陌生,浏览器输入一段 URL,立马就跳转到你想要的网站,不过你应该也遇到过一些带了很多参数、特别长的 URL,看起来就乱糟糟的,能不能把它变短一点?首先你要知道的是,长链是没法压缩成短链的,那我们这里怎么设计短链?

2023-03-23 07:30:31 2044 2

原创 fastjson 返回 $ref 数据

序列化结果中,出现了 $ref 这类引用信息,首先猜测是由于某些规则的限制导致。

2023-03-08 21:40:50 726

原创 Cookie、Session、JWT 那些事

目前 C/S 模式盛行,HTTP 是其中最常见的通信协议,我们知道 HTTP 协议是无状态的,但是这场景完全不够用。比如,我们微信扫描登录一个网站后,肯定不希望频繁登录嘛,那我们的诉求就是希望在一段时间内,网站能够 “记忆” 我们的登录状态,而这个 “记忆” 的能力 HTTP 是没法完成的,所以需要我们额外做点什么 ...你想想,两端通信过程,状态信息要么存在客户端、要么存在服务端,简言之,现在的问题是,要如何存、存哪里的问题。当然,这块技术已经很成熟了,我们只需要学会怎么去用就 OK 了。

2023-02-28 08:18:44 219

原创 Jackson 序列化:Cannot deserialize value of type `java.time.LocalDateTime`

Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDateTime` from String "2023-02-13 19:43:01": Failed to deserialize java.time.LocalDateTime:

2023-02-18 11:07:53 2833

原创 Redis 核心原理串讲(下),架构演进之高扩展

本文围绕「架构主线」来透视 Redis「高可靠」的核心原理,在正文开始之前,我们先思考几个问题: - 数据要如何切分,在扩缩容过程迁移量最小? - 分片元数据如何维护?中心化 or 去中心化? - 如何平滑的从单机版升级到 cluster 集群版

2023-01-31 22:23:53 325

原创 Redis 核心原理串讲(中),架构演进之高可用

本文围绕「架构主线」来透视 Redis「高可靠」的核心原理,在正文开始之前,我们先思考几个问题:- Redis 数据丢失风险?- 持久化机制会拖慢 Redis 吗? - fork 子进程是否会阻塞主线程?不用 fork 操作行不行? - 有了持久化还需要副本机制? - 能不能自己写个 HA 来代替 Redis 哨兵?

2023-01-09 07:15:00 345

原创 Redis 核心原理串讲(上),从一条请求透视高性能的本质

本文围绕「请求主线」透视 Redis 高性能的核心原理,在正文开始之前我们先思考几个问题:- Redis 为什么节省内存又高效?- 同步/异步、阻塞/非阻塞有什么区别?- 删除一个百万级数据的 hash 字典会阻塞吗?- Redis6.0 的多线程需要考虑并发问题吗?

2022-12-26 22:39:35 370

原创 为什么要选择 Redis?

Redis(Remote Dictionary Server),即「远程字典服务」是一个使用 ANSI C 编写的、开源的、支持网络的、基于内存的、可选持久化的键值对存储系统。 在 2013 年 5 月之前,Redis 的开发由 VMware 赞助,2013 年 5 月至 2015 年 6 月,由 Pivotal 赞助,从 2015 年 6 月起,Redis 的开发由 Redis Labs 赞助。根据数据库使用排行网站 db-engines.com 上的排名,Redis 是`目前最流行`的键值对存

2022-12-05 22:21:00 445

翻译 Redis 源码该怎么读?(译文)

当你阅读 `README` 文档时,不管是通过 GitHub 页面上还是下载 Redis 分支源码等方式,离源码仅一步之遥,因此,我们在这里对 Redis 源码做粗略讲解,你会看到:

2022-11-20 16:45:59 411

翻译 Redis release cycle(译文)

Redis 新版本如何发布的?Redis 是系统软件,并且是处理用户数据的软件,也就是说,它处于软件栈关键的一环上。

2022-11-09 08:12:27 267

原创 Doris 平滑缩容,Be 节点卡住不动

云服务成本攀升,为降低成本,开始将一些资源使用率相当较低的云服务进行缩容,Doris 也加入了这个行列...这一两年(2020-2022) Doris 发展很快,直观来看就是版本迭代快,从 0.xx 快速进入 1.xx 序列,也就意味着功能、性能、Bug 等都不断完善 ...Doris 提供了平滑缩容策略,支持在不影响业务的情况下,完成数据迁移以及节点剔除,但这过程中会遇到一些问题,我们一起来看看~

2022-11-02 21:53:52 975

原创 Redis数据结构为什么既省内存又高效?Redis 数据类型 + 数据结构超全指南

**Redis 数据结构为什么既高效又节省内存?**永恒的问题 ------ `空间`与`时间`的较量1)节省内存: - 一般通过特定的编码约定,将数据进行压缩,比如 ziplist、quicklist、listpack ..., - 还有,比如一些只包含数字的字符串可以通过 int 来存储(int 通常有 2字节、4字节、8字节) ,对应 redis 的 intset 结构 ... - 另外,把大家可能都有的部分抽取出来公用也是一种手段,比如 radix 前缀树、共享对象 ...

2022-10-24 07:42:39 584

原创 Doris 数据副本分区均衡策略,fromBe has no replica in the map, can‘t move

某天观察到线上 Doris 集群资源使用情况,发现整体上内存、CPU 使用率较低,为降低成本进行了一波缩容操作。缩容之后,大部分业务都能正常运行,但对于一些大吞吐的查询速度慢了很多,或者根本跑不出来。进一步分析发现分区数据分布不均匀,出现的情况是,一部分节点数据多、一部分节点数据少,当查询计划具体分配到 BE 节点体现为部分节点负载高、部分负载低。

2022-10-22 09:09:21 1256

原创 redis HyperLogLog,看这篇就够了

考虑这样一个场景,如何统计一个大型网站的去重日活、月活用户(UV)?你可以通过 set 集合、bitmap 这类常用工具,但有个最大的缺点是,如果数据量巨大,比如 1 亿,甚至 10 亿将耗费巨大内存消耗。有人研究出了这样一种算法叫 `HyperLogLog`,是一种概率性的统计算法,每个 `HyperLogLog` 对象最大占用空间为 `12KB`,相当节省内存。你应该也猜到了,这么小的内存消耗,是无法记录真实的明细数据,统计数值也不是完全精准,有一定的误差比例。

2022-10-18 11:30:00 5191

原创 redis 过期删除策略、惰性删除(lazy-free),深入剖析

如果一个键过期了,什么时候会被删除呢?又如何找出这些过期 key 并删除?会不会影响服务正常运行?redis 中有两种 key,一种带有 expire 过期时间,另一种则是不带过期时间,本文讨论的过期删除策略是针对带有 expire 过期时间的 key。为了方便找出带过期时间并且已经过期的 key,redis 用了额外的字典专门存储带 expire 过期时间的 key,这样一来,只需遍历该字典即可找出过期的 key。

2022-10-11 07:15:00 2500 1

原创 okhttp 应用之 Interceptors 拦截器,「实践 + 原理」一样都不少

okhttp 是什么?一款封装 HTTP 协议的 HTTP 客户端。拦截器是 okhttp 提供的一个强有力的工具,我们可以在请求前后做监控、请求/响应进行重写、失败重试等操作。

2022-10-05 09:22:26 2009 1

原创 Feign 应用之 RequestInterceptor 拦截器,超实用指南

思考一下,你目前正在使用微服务体系,一个普通的用户请求可能会在微服务之间多次调用,而途径的每个微服务都需要原始请求的部分参数,你会如何传递这些参数?在之前的文章中,我们了解到,Feign 的本质就是 JAVA 易用版的 HTTP 上层封装,本质还是 `HTTP` 调用想要原始请求参数在微服务之间流转,本质就是在调用下游服务的 HTTP 请求头上添加这些参

2022-09-26 12:15:00 14343 6

原创 redis 通信协议(RESP),最简单的应用层协议,没有之一

所谓 `协议`,本质是一种约定,需要使用者双方来准守,常见于 `C/S 通信模式`中,比如在浏览器中最常用的 `HTTP` 应用层通信协议。通信两端需要某种约定,才能保持正常通信。一端通过约定的格式发送数据,另一端通过约定的格式解析数据,这种约定,取了一个好听的名字 ---- `协议`。典型的 HTTP 协议,最本质的原理也是如此。redis 作为一款高性能内存组件,要尽可能将精力花在数据的组织形式上,因此,没有采用开源的一些复杂协议,比如 HTTP,而是简单的自定义一套应用层通信协议。

2022-09-19 12:00:00 4777

原创 【Redis 实战】dump.rdb、appendonly.aof 文件路径

本文是实战性文章,带大家一起找找 `dump.rdb` 和 `apendonly.aof` 文件的路径。redis 服务在启动时有两种方式,既可以指定配置文件,也可以不指定配置文件。

2022-09-18 09:10:05 4136

原创 《高性能网络模型学习路线图》让你少走弯路,持续更新中 ...

说到高性能网络编程,你的脑海里会想到:IO 多路复用、Reactor 、epoll 等等。这些都是高性能网络模型的组成,本文致力于梳理高性能网络模型系列文章,帮助你真正吃透高性能网络模型。

2022-09-15 07:30:00 378

原创 Redis 内存淘汰策略,从根儿上理解

Redis 基于内存设计,所有数据存放在内存,随着时间推移,内存占用也越来也高 ...由于内存容量这个物理限制,我们需要在内存使用量达到一定比例后,做一些内存清理工作,以保证有足够的空间来完成正常的处理。在 Redis 中,完成这个工作的就是本文的主角 ------- Redis 内存淘汰机制。 - 一定比例:在 redis 中就是 maxmemory 阈值 - 淘汰策略:在 redis 中目前有两种流行的算法:LRU 与 LFU 算法

2022-09-13 07:15:00 346

原创 Doris 应用实践之高并发 & 大吞吐,如何选择?

Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。...

2022-09-05 19:45:00 3723

原创 Feign-Hystrix 熔断降级,一文看透本质

最近这些年,微服务盛行。服务拆分越来越细、越来越多。为方便微服务之间的调用,各种 RPC 框架层出不穷,目的就是让开发者像调用本地方法一样调用微服务。微服务之间交流的核心是网络请求,这个过程涉及到应用层和网络层: - 网络层:最常用的是 TCP / UDP 协议 - 应用层:本质上说,应用层协议是负责对数据编码、解码的约定,比如我们常见的 HTTP、Websocket 协议等。一般情况下,我们想要实现网络通信,有两种选择:- 使用现成应用层协议:比如 http 等- 基于网络层(TCP/UD

2022-08-30 08:00:00 2002

原创 redis 事务,深入解读

事务,古老而神秘的词汇,说起它,你应该能想起它的四大特性:原子性、隔离性、持久性和一致性。我们先往简单了想,事务解决了什么问题?确保一揽子修改操作的 `正确性` 和 `一致性`。事务需要做什么?本质是做了两件事,`控制并发` 和 `故障恢复`。redis 也提供了事务功能,不过,基于 redis 的一些特性,会在传统事务特性上做了一些宽松处理,也就是说,redis 的事务并非传统意义上的 “严格型事务”。我们先来回忆下,事务的的四大特性及其概念:`原子性`:一批操作要么一起成功,要么一起

2022-08-22 07:15:00 367

原创 redis 管道(pipeline),深入解读

管道,你肯定不陌生,你家里的自来水管、天然气管等,应用相当广泛。这些管道有啥特点?传输特定的物质、流式,.... 等等。我们知道,redis 是 C/S 模式,即客户端 + 服务端。当两端想要通信时,需要先建立特定的 TCP 握手连接,在进行通信时,采用 发送请求 -> 等待响应 这种`一问一答`模式。当然,这种一问一答模式在 redis 中应用非常广泛,可以说,绝大部分都是这种场景。但是,还是会存在一些特殊的场景,这个时候,我们可能更需要通过`批量`的方式来处理。比如,在一个接口或者某个操作中

2022-08-15 18:00:00 3415 2

原创 保险,一生必备

最近系统的梳理了保险相关知识,惊出一身冷汗,原来一直在裸奔!保险的重要性不言而喻,一切对你来说贵重的物品、身体等都可以配置保险 ----- 为其安全保驾护航。对于普通人来说,一般有 房险、车险、财产险,当然,最重要的是你和你家人的健康险。另外,每个人的情况不同,保险结构也会不一样,因此,要充分考虑自身情况。同时,买保险`最关键的是买足额,保障一定要充分`。你可能会问了,国家已经提供了社保(医保)作为基础服务,还需要额外购买保险?`医保作用有限,大病面前很有可能无能为力`!......

2022-08-07 11:30:10 632

原创 redis 发布订阅(PubSub),深入解读

发布订阅模式,本质来说,是将提供消息的人和需要消息的人,通过第三方组件联系起来,使得两类群体之间的消息能够及时触达。举例看看,在一些优化场景下,可能会使用 本地 + 远程 双缓存机制,远程缓存是一套共用的中间件,总共只有一套数据。而 本地缓存就不一样了,如果你部署的是多个实例,那就有多套本地数据,当数据更新了,如何触达这些本地缓存?这个时候,你就可以考虑使用发布订阅模式,消息提供者 - 更新数据的人,消息接收方 - 需要更新本地缓存的服务。我们以 redis 发布订阅的实现来看,其实是非常简单的

2022-08-04 07:53:20 7738

原创 分布式限流利器,小试牛刀

限流,是网站防止流量洪峰的必要手段,尤其是一些重要资源的处理,甚为重要。限流的核心目的自然是保障网站的正常运行,避免处理超过网站自身的流量,压死骆驼的最后一个稻草,你懂得。常见的限流算法有 `计数器`、`漏桶算法` 和 `令牌算法`。在之前的文章已经做过分析,有兴趣可以[详情查看](https://blog.csdn.net/ldw201510803006/article/details/83717870?spm=1001.2014.3001.5501)本文主要分析令牌桶算法,令牌桶有哪些特点?

2022-07-31 16:57:02 2399

原创 redis cluster 集群,终极方案?

前面系列文章,我们聊了 redis 主从模式、哨兵模式,这些都是单节点的高可用保障,受限于单机内存,另外,由于 redis 持久化的特性,单个 redis 实例的内存不宜过大。分布式存储的终极解决方案是什么?`加机器`。一台不够加两台、三台,直到足够撑起你的业务。因此,redis 也提出了集群版的解决方案。本质来说就是将数据尽可能`均分`到多个节点服务,这些节点可以同时对外提供服务,这样一来,集群模式既提高了整体存储容量,又提高了整体吞吐量。那这些数据如何进行切片分配呢?按关键字区间还是 关键字

2022-07-28 08:10:20 296

原创 redis 哨兵,高可用的执行者

哨兵是啥?站岗、放哨、巡逻之人,这种模式在生活中也十分常见,军队、安保、押运等等,都需要时刻注意周边异样,并及时作出响应。redis 哨兵也是如此。前面文章我们分析了 redis 副本机制,本质就是多个数据副本,为防止单副本故障而生。在 redis 服务遇到故障崩溃时,我们可以通过切换副本节点对外提供服务,你可以写一些脚本,做到一键切换,十分方便;前提是,需要人为判断是否需要故障切换,在工作时间遇到可能还能忍受,要是凌晨两三点呢?所以,我们可以选择更加智能一些,比如,你想继续写一个自动检测故障的

2022-07-20 22:39:01 1101

原创 redis 副本机制 - 高可用的保障?

前面的系列文章我们聊了 redis 持久化机制,尽可能的保障少丢数据。那么,如何保障服务的高可用呢?相信你也想到了,`副本机制`。副本,也就是我们常说的主从模式,从节点通过全量或增量的方式从主节点同步数据。一般情况下,从节点可以作为只读节点对外提供服务,也可以仅作为主节点的备份节点;当主节点故障挂掉之后,提升从节点为主节点,并对外提供无间断服务。本文主要探讨,redis 副本数据同步的过程以及相关原理介绍,至于如何做到主节点故障后,从节点自动切换为主节点?我们将通过后面的文章在进行分析。...

2022-07-11 22:39:32 971

原创 redis 持久化原理,原理 + 应用

前言本文参考源码版本为 redis6.2我们先来看看演进这个事儿。软件都是迭代中越做越复杂。redis 也是这样,刚开始做了一个简单功能,通过一定的数据结构组织数据,让你能够相当快的拿到这些数据;慢慢地,场景越来越多,想要的功能支持越来越强烈;好,redis 慢慢给你实现。以上,是功能上的迭代演进,性能上呢?首先,我要处理客户端的请求,按照服务端 socket 编程几个步子写,相当容易;写好之后,你说不行,QPS 至少 1W+;于是,继续.........

2022-06-30 22:46:03 1164

原创 redis 6.0之多线程,深入解读

前言一般来说,一个 redis 请求有两大模块,网络模块 + 命令处理模块。我们常说的 redis 单线程模型,其实主要就是值的一个正常请求涉及的网络模块和命令处理模块。当然,两者都有可能出现问题,我们分别来看看:当一个执行一个特别慢的命令时,比如删除一个百万级的字典,可能会造成暂时的卡.

2022-05-31 21:31:53 12396 11

原创 Redis 6.0之前真的是单个线程吗?面试官:看来你只会背面试题

我们常说 redis 是`单线程模型`,一般是指正常的`请求处理` + `周期任务`。其中:- 处理请求包括:包括接收连接、IO监听/读/写以及命令执行。- 周期任务,如删除过期key、字典 rehash 等。其实,还有一些非常耗时的操作,redis 通过专用的线程来处理,这里的`专用线程`,便是我们这篇文章的主角,我们接着往下看~

2022-05-23 08:00:00 651 2

原创 Redis事件驱动框架(下),时间事件&文件事件详解

redis 服务器是典型的事件驱动程序,而事件又分为`文件事件`(socket 的可读/可写事件)与`时间事件`(定时任务)两大类。无论是文件事件还是时间事件都封装在结构体 `aeEventLoop`中。

2022-05-15 20:41:56 778 3

原创 一文搞懂,redis单线程执行全貌(深入拆解分析)

redis 6.0 版本之前,采用的是单线程模型,即:一个线程既要负责命令读写、解析,又要负责命令执行。但是,仍然能达到极高的并发能力,其终极法宝是`优秀的IO模型 + 纯内存操作 + 优秀的数据结构及算法的设计`。redis6.0 及之后的版本,引入了多线程模型,主要目的是`分担主线程的压力`,负责部分IO事件读写、解析的工作;但是,命令执行仍然都由主线程处理。

2022-05-04 16:28:54 3166 3

channel_v3.json

sublime text3在下载package install无反应,原因是: perforences->package setting->package controll->settings-default下有"https://packagecontrol.io/channel_v3.json",该文件由于网络缓慢导致;因此先现在到本地,然后在 perforences->package setting->package controll->settings添加绝对路径即可

2019-01-21

google chrome插件, 用于yapi的接口测试所需插件-2.8.0

cross_request, chrome插件, 用于yapi的接口测试所需插件-2.8.0

2019-01-20

sql server2008 jdbc驱动

sql server2008 jdbc驱动、 sql server2008 jdbc驱动、

2018-01-03

hibernate注解开发所需的jar包

hibernate注解开发所需的jar包 包括 ejb3-persistance.jar、hibernate-commons-annotations.jar、hibernate-annotations.jar

2017-12-30

cglib-3.1.jar 、asm-6.0.jar

Mabatis 使用懒加载所需要的两个jar包 cglib 和 asm,最新版本

2017-11-28

jackson-core-2.7.4.zip

jackson-core-2.7.4.zip 包含了三个jar包,jackson-core-2.7.4.zip 包含了三个jar包

2017-10-16

SpringMVC开发jar包

SpringMVC开发所需jar包,包含spring4.3.10发布的版本和hibernate4.1.4发布的版本

2017-10-07

空空如也

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

TA关注的人

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