摘要:一、JVM 架构基础 JVM 进程启动时,ClassLoader 会将需要的所有类加载到内存,主要分为以下三步: Bootstrap Class: 核心类库,由 “Bootstrap Class Loader”负责加载, 例如基础的运行时类库 JRE\lib\rt.jar。 Extension Cl 阅读全文
posted @ 2021-02-23 13:07 WindWant 阅读(318) 评论(0) 推荐(0) 编辑
摘要:一、protocal buffer 是什么? 一种序列化机制。 什么是序列化? 一种转化为可存储和传输对象的过程。 序列化的方式有很多,那么proto有什么特殊的呢? 它的英文介绍里提到了neutral这个词,中立,无关的。 language-neutral 跨语言:它可以应用于多种开发语言之间数据 阅读全文
posted @ 2021-02-14 18:39 WindWant 阅读(113) 评论(0) 推荐(0) 编辑
摘要:一、TCP 队列 1、syns queue:半连接队列 TCP 三次握手(参考:TCP建立连接之三次握手),第一步,服务端接收到客户端发送的 syn 消息后,将连接信息放入 syns queue,此时,双方连接尚未建立,称之为半连接。 2、accept queue:全连接队列 TCP 三次握手,第三 阅读全文
posted @ 2020-11-03 13:23 WindWant 阅读(443) 评论(0) 推荐(0) 编辑
摘要:Redis Hashes 是我们日常使用中比较高频的 Redis 数据类型,内部使用 Redis 字典结构存储,底层实现之一为哈希表结构。 下面从哈希表节点,哈下表结构,Redis 字典,Redis 字典元素操作,Redis rehash 几点来简要概述。 一、Redis 哈希表节点 Redis 内 阅读全文
posted @ 2020-10-19 13:19 WindWant 阅读(217) 评论(0) 推荐(2) 编辑
摘要:数据出问题了! 一次偶发的端上问题。 排查日志、监控、数据、代码逻辑。 服务没有添加事务性保障,不可避免的数据不一致:缓存有数据,数据库没数据或者相反;有A阶段数据,没有B阶段数据;该有的数据没有,不该有的数据却存在。 主从机制遇到了强一致性需求,偶发的缓存不一致。 服务被埋下了错误的逻辑,日积月累 阅读全文
posted @ 2020-09-23 11:40 WindWant 阅读(891) 评论(1) 推荐(1) 编辑
摘要:一、背景 什么是重试? 一种保障机制,why not try again! 无论是单体服务模块化的调用,或是微服务当道的今天服务间的相互调用。一次业务请求包含了太多的链条环扣,每一扣的失败都会导致整个请求的失败。因此需要保障每个环节的可用性。 二、动态策略配置 1、基本配置项 涉及重试,我们所需要关 阅读全文
posted @ 2020-09-04 14:52 WindWant 阅读(446) 评论(1) 推荐(1) 编辑
摘要:1、取数组a[n]中不相邻的m个元素,使得其和最大 不要尝试去使用暴力破解,因为即使可能行得通,但通常也会受制于空间和时间的复杂度。 限制条件:一个数组、取不相邻的元素 取多少个,m个,不确定。是不是要取最多个?不确定。 不过有一点能够确定的是,第一个需要取的元素肯定是在第一个和第二个中间、最后一个 阅读全文
posted @ 2020-08-10 00:35 WindWant 阅读(176) 评论(0) 推荐(1) 编辑
摘要:一、引子 这要从线上的一个接口偶发异常耗时说起,事情往往不是你想象的样子,尤其是在排查问题的时候,切忌有先入为主的的某些判断。 二、问题: 接口监控图:显示每天总会有那么几次耗时特别长的请求。 三、排查: 1、直观的认识是“偶发”,每天零星的几个,不规律。 对于这种情况,第一感觉是因为服务的波动影响 阅读全文
posted @ 2020-07-11 02:04 WindWant 阅读(513) 评论(0) 推荐(4) 编辑
摘要:青蛙总是被被要求跳台阶,我想,他一定很累的! 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法? 对于这样的问题,n可大可小,如果n很小,我们可以直观暴力拆解就可以得到答案,但是如果n很大,那么这个问题就升级了。 一般处理问题,我们最直接的思路,可能就 阅读全文
posted @ 2020-07-01 00:26 WindWant 阅读(614) 评论(2) 推荐(1) 编辑
摘要:一、什么是堆? 维基百科的解释是:堆是一种特别的树状数据结构,它需要满足任意的子节点必须都大于等于(最大堆)或者小于等于(最小堆)其父节点。 二、堆排序 堆排序是通过二叉堆数据结构实现,二叉堆满足一下两个特性: 1、满足对的基本特性 2、完全二叉树,除了最底层外,其它层都已填充满,且是从左到右填充。 阅读全文
posted @ 2020-06-27 02:11 WindWant 阅读(310) 评论(0) 推荐(3) 编辑
摘要:1、什么是SDS? Redis 自定的字符串存储结构,关于redis,你需要了解的几点!中我们对此有过简要说明。 Redis 底层是用C语言编写的,可是在字符存储上,并未使用C原生的String类型,而是定义了自己的字符串结构 Simple Dynamic Stirng,简称SDS。 SDS基本结构 阅读全文
posted @ 2020-06-24 00:46 WindWant 阅读(588) 评论(0) 推荐(1) 编辑
摘要:一、偏见是什么? 偏见,就是,不管它是黑的或者白的,我就认为它是黑的。 可能,会有人问,为什么不能认为它是白的? 我想说,那就不是偏见了,偏执的认为一个事物向好,那是偏好。 国语词典中对偏见的解释为:“不公平或固执的见解”。这是一种由人们的主观倾向所致的结果。 二、偏见由何而来? 1、认知、关注点 阅读全文
posted @ 2020-06-22 00:51 WindWant 阅读(280) 评论(0) 推荐(1) 编辑
摘要:一、什么是粘包拆包? 粘包拆包是TCP协议传输中一种现象概念。TCP是传输层协议,他传输的是“流”式数据,TCP并不知道传输是哪种业务数据,或者说,并不关心。它只是根据缓冲区状况将数据进行包划分,然后进行传输。 在这个前提下,就有可能发生发生同一个业务数据被分割程多个数据包,或者多个业务数据被打包到 阅读全文
posted @ 2020-06-20 14:45 WindWant 阅读(262) 评论(1) 推荐(0) 编辑
摘要:Channel、EventLoop、Unsafe、multiplexor、AdaptiveRecvByteBufAllocator、ChannelPipeline... 阅读全文
posted @ 2020-06-19 00:49 WindWant 阅读(397) 评论(0) 推荐(1) 编辑
摘要:netty 高性能之道... 阅读全文
posted @ 2020-06-10 01:01 WindWant 阅读(408) 评论(1) 推荐(2) 编辑
摘要:服务化分包、粒度、异常、兼容性等规约... 阅读全文
posted @ 2020-06-07 16:26 WindWant 阅读(155) 评论(0) 推荐(0) 编辑
摘要:职场生存... 阅读全文
posted @ 2020-06-07 01:39 WindWant 阅读(194) 评论(0) 推荐(4) 编辑
摘要:libssl.1.0.0.dylib、replace into、on duplicate update、文件上传 阅读全文
posted @ 2020-06-03 13:32 WindWant 阅读(211) 评论(0) 推荐(0) 编辑
摘要:队列的一种实现:循环队列 阅读全文
posted @ 2020-06-01 01:23 WindWant 阅读(123) 评论(0) 推荐(0) 编辑
摘要:枚举和常量是定义配置性信息的两种方式... 阅读全文
posted @ 2020-05-30 18:39 WindWant 阅读(1924) 评论(1) 推荐(2) 编辑
摘要:G1 垃圾回收器简单调优,yong GC日志解析,GC日志分析工具 阅读全文
posted @ 2020-05-28 00:37 WindWant 阅读(1347) 评论(0) 推荐(0) 编辑
摘要:并发框架 LMAX Disruptor 阅读全文
posted @ 2020-05-25 01:30 WindWant 阅读(231) 评论(0) 推荐(0) 编辑
摘要:Zab 协议:zookeeper 基于 Paxos 协议的改进协议 zookeeper atomic broadcast 原子广播协议。 zookeeper 基于 Zab 协议实现选主及事务提交。 阅读全文
posted @ 2020-05-23 02:54 WindWant 阅读(426) 评论(0) 推荐(0) 编辑
摘要:缓存的两面性,使用它并且要驾驭它! 阅读全文
posted @ 2020-05-20 02:07 WindWant 阅读(1094) 评论(1) 推荐(7) 编辑
摘要:本篇章节主要从 redis 主从复制延迟相关知识及影响因素做简要论述。 阅读全文
posted @ 2020-05-17 13:44 WindWant 阅读(2635) 评论(0) 推荐(0) 编辑