自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小工匠

show me the code ,change the world

原创 Tomcat - 源码分析Tomcat是如何处理一个Servlet请求的

文章目录Tomcat中的NIO模型 Tomcat中的NIO模型 Tomcat 8.5.55

2020-06-01 21:44:03 19 0

原创 Tomcat - Tomcat 8.5.55 启动过程源码分析阶段三_start阶段

文章目录启动流程分析Pre 启动流程分析 Pre Tomcat - Tomcat 8.5.55 启动过程源码分析阶段二_load加载初始化 说完了load阶段,这里我们继续来看下最后一个start阶段

2020-05-31 16:34:06 52 0

原创 Tomcat - Tomcat 8.5.55 启动过程源码分析阶段二_load加载初始化

文章目录启动流程分析Preload 加载初始化总体预览源码解析 启动流程分析 Pre Tomcat - Tomcat 8.5.55 启动过程源码分析阶段一_init实例化Bootstrap 我们分析了 init 的主要功能,实例化Bootstrap , 调用init 通过反射调用Ca...

2020-05-30 13:57:40 55 0

原创 Tomcat - Tomcat 8.5.55 启动过程源码分析阶段一_init实例化Bootstrap

文章目录Pre生命周期统一管理组件LifeCycle Pre 上篇我们搭建了tomcat的源码环境: Tomcat - 源码构建Tomcat 8.5.55 启动 接下来我们来分析一下tomcat的启动过程。 回忆一下 tomcat的架构图 Tomcat启动的时候肯定要把架构中提到的组件进...

2020-05-28 15:19:39 82 0

原创 Tomcat - 源码构建Tomcat 8.5.55 启动

文章目录官方地址源码搭建分析源码搭建步骤 官方地址 https://tomcat.apache.org/download-80.cgi 历史版本: https://archive.apache.org/dist/tomcat/tomcat-8/ 这里最新的是 8.5.55 ,我们就用这个吧 ...

2020-05-28 10:29:02 143 4

原创 Tomcat - Tomcat套娃式架构与配置文件的对应关系解读

server-service-----connector/container-----engine-----host-----context-----wrapper

2020-05-26 06:58:31 48 0

原创 Tomcat - Tomcat的套娃式架构设计初探

文章目录Tomcat的主要功能Tomcat的架构初探 Tomcat的主要功能 核心功能: http服务器和servlet 容器 Http服务器功能 : Socket通信(TCP/IP)、解析HTTP报文 Servlet容器功能 : 实现了Servlet规范 , 有多个Servle...

2020-05-24 23:44:57 122 0

原创 Java - 死锁 Dead Lock 定位分析

文章目录PrejstackThread dumpDead Lock 分析 Pre JVM-11虚拟机性能监控与故障处理工具之【JDK的可视化工具-JConsole】 jstack jstack主要用来查看某个Java进程内的线程堆栈信息 ,建议多杀几次线程dump ,每次都有某个事件,基本没跑...

2020-05-20 15:01:43 85 0

原创 Redis进阶 -CLUSTER NODES 信息结合实际输出信息解读

文章目录Precluster nodes作用输出格式flags 含义slot第一种 单哈希槽第二种 Range第三种特殊状态 导入和迁移 Pre Redis进阶 - 因异常断电导致的Redis Cluster Fail故障处理 处理了redis cluster 断电后的异常,中间使用了c...

2020-05-19 20:31:26 174 0

原创 Redis进阶 - 因异常断电导致的Redis Cluster Fail故障处理

文章目录Pre现象 Pre 测试环境,搭建的伪集群 101 : 7001 7002 7003 三个节点 102 : 7004 7005 7006 三个节点 现象 Redis Cluster 不可用 ,应用无法正常启动 172.168.15.101:7001> CLUSTER INFO...

2020-05-19 19:34:15 104 0

原创 Java 8 - 07 复合 Lambda 表达式

文章目录PreComparator逆序 reversed()比较器链谓词复合 Pre 前面几个我们使用lambda表达式,都用的是默认的抽象方法,还记得不? 事实上,许多函数式接口,比如用于传递Lambda表达式的 Comparator 、 Function 和 Predicate 都提供了允...

2020-05-17 23:56:37 79 0

原创 Java 8 - 06 Lambda 和方法引用实战

文章目录Pre第 1 步:传递代码第 2 步:使用匿名类第 3 步:使用 Lambda 表达式第 4 步:使用方法引用 Pre 前几篇文章,我们已经学习了行为参数化、匿名类、Lambda表达式和方法引用,实现了给工程师按照职位排序的功能 enginnerlist.sort(comparing(E...

2020-05-17 23:23:31 83 0

原创 小工匠聊架构-写给研发工程师的全链路压测
原力计划

文章目录Pre全链路是怎么一回事儿为什么要全链路压测全链路压测前的准备工作压测环境监控工具(推荐pinpoint)预埋数据和背景数据压测指标 & 压测场景压测工具压测环境 Pre 随着用户需求的不断增加,系统的功能越来越庞杂,为了快速支撑这些业务的变化,架构也变得越来越复杂,甚至有很多...

2020-05-17 17:01:36 109 0

原创 小工匠聊架构-分布式场景下的并发幂等性常见的解决方案
原力计划

Pre 我们来回顾下单体时代 单体时代,应用部署在一台主机上,可以使用JVM级别的锁来控制并发请求 。 随着应用规模的不断扩大,集群化或者微服务化的分布式部署越来越普及,每个应用都是一个单独的JVM应用,所以单体时代的这种处理方式已经无法满足当前架构下的业务需求了。 JVM级别的锁已经无法满足...

2020-05-17 13:11:52 165 0

原创 Java 8 - 05 方法引用

文章目录Pre方法引用 Pre 先来看段代码 Comparator<Enginner> enginnerComparator = new Comparator<Enginner>() { @Override public...

2020-05-17 09:02:20 73 0

原创 Java 8 - 04 类型检查、类型推断以及限制

文章目录Pre类型检查 Pre 当我们第一次提到Lambda表达式时,说它可以为函数式接口生成一个实例。然而,Lambda 表达式本身并不包含它在实现哪个函数式接口的信息。为了全面了解Lambda表达式,women 应该知道Lambda的实际类型是什么 . 类型检查 Lambda的类型是从使用...

2020-05-16 23:28:09 119 0

原创 Java 8 - 03 Lambda 函数式接口Predicate & Consumer & Function & Supplier

文章目录PrePredicate Pre Java 8 - 02 Lambda Expression中我们讨论了函数式接口, 函数式接口定义且只定义了一个抽象方法。因为抽象方法的签名可以描述Lambda表达式的签名。函数式接口的抽象方法的签名称为函数描述符。 所以为了应用不同的Lambda表达式...

2020-05-16 09:29:41 72 0

原创 Java 8 - 02 Lambda Expression

文章目录PreLambda 初探 Pre 上一节 Java 8 - 01 优雅编程 lambda 以及 @FunctionalInterface注解一点通 中有的时候使用了匿名类来表示不同的行为 ,代码比较啰嗦 List targetEngineerList6 = enginnerT...

2020-05-13 00:19:45 43 0

原创 Java 8 - 01 优雅编程 lambda 以及 @FunctionalInterface注解一点通

文章目录Pre为啥需要lambdalambda的妙用@FunctionalInterface Pre 在软件工程中,不管你做什么,用户的需求肯定会变的,如何应对这样不断变化的需求? 理想的状态下,应该把你的工作量降到最少。 此外,类似的新功能实现起来还应该很简单,而且易于长期维护。 行为参数化就...

2020-05-11 00:17:48 117 0

原创 Java-COW在Java中的应用

文章目录PreJ.U.C 中的COW应用 Pre Linux-Copy On Write写时复制机制初探 J.U.C 中的COW应用

2020-05-09 14:45:23 45 0

原创 Linux-Copy On Write写时复制机制初探

文章目录COW概述 COW概述 来看下 https://en.wikipedia.org/wiki/Copy-on-write的说明 Copy-on-write (COW), sometimes referred to as implicit sharing[1] or shadowing,[...

2020-05-08 10:55:33 58 0

原创 Redis进阶-Redis持久化原理

文章目录Pre快照原理fork( 多进程)AOF 原理 Pre Redis-16Redis备份(持久化) Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。 Redis 的持久...

2020-05-06 22:06:34 128 0

原创 Redis进阶-Redis 4种MQ 方案对比

文章目录Pre方案1 Pub/Sub优点缺点小结方案2 List优点缺点小结方案3 ZSet优点缺点小结方案4 stream Pre 最终方案-----> Redis进阶-Stream多播的可持久化的消息队列 我们知道redis 5.x版本,作者提供了stream这种基于radix t...

2020-05-05 23:14:57 93 0

原创 Redis进阶-Stream多播的可持久化的消息队列

文章目录PreStream简介 Pre Redis-13Redis发布订阅 中提到了PubSub的不足之处 。 PubSub 的生产者传递过来一个消息,Redis 会直接找到相应的消费者传递过去。如果一个消费者都没有,那么消息直接丢弃。 如果开始有三个消费者,一个消费者突然挂掉了,生产者会继...

2020-04-30 00:32:40 160 0

原创 Redis进阶-如何从海量的 key 中找出特定的key列表 & Scan详解

文章目录需求 需求 假设你需要从 Redis 实例成千上万的 key 中找出特定前缀的 key 列表来手动处理数据,可能是修改它的值,也可能是删除 key。那该如何从海量的 key 中找出满足特定前缀的 key 列表来? 我们可以用 keys 来列出所有满足特定正则字符串规则的 key . 1...

2020-04-27 22:31:26 88 0

原创 Redis进阶-Redis的惰性删除

文章目录Predel ------> unlinkFLUSHDB/FLUSHALL --> FLUSHDB ASYNC/FLUSHALL ASYNC异步队列AOF Sync扩展阅读 Pre Redis进阶-Redis对于过期键的三种清除策略 我们一直说 Redis 是单线程的,这...

2020-04-27 07:07:00 171 0

原创 Redis进阶-Redis安全相关操作

文章目录Preportcommandlua scriptSSL proxy小结 Pre 这里我们主要谈一下使用 Redis 需要注意的安全风险以及防范措施,避免数据泄露和丢失,避免所在主机权限被黑客窃取,以及避免人为操作失误。 port 默认会监听 *:6379,如果当前的服务器主机有外网...

2020-04-26 07:05:00 193 0

原创 Redis进阶-无所不知的info命令诊断redis

文章目录官方指导infoinfo 指令内存占用多大连接了多少客户端每秒执行多少次指令复制积压缓冲区多大info demo 官方指导 https://redis.io/commands/info info 在使用 Redis 时,时常会遇到很多问题需要诊断,在诊断之前需要了解 Redis 的运...

2020-04-25 23:52:02 94 0

原创 Redis进阶-string底层数据结构精讲

文章目录Prestring 字符串字符串的实现字符串 内部结构embstr vs raw Pre Redis进阶-核心数据结构进阶实战 Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合) ...

2020-04-25 22:19:50 83 0

原创 Redis进阶-List底层数据结构精讲
原力计划

Redis 的列表相当于 Java 语言里面的 LinkedList,是链表而不是数组 。 这意味着list 的插入和删除操作非常快,时间复杂度为 O(1),但是查找数据很慢,时间复杂度为 O(n) 。

2020-04-25 21:37:24 105 0

原创 Redis进阶-JedisCluster初始化 & 自动管理连接池中的连接 _ 源码分析

文章目录PreCode初始化槽计算无需手工调用close方法 Pre Redis进阶-Redis集群原理剖析及gossip协议初探 集群原理部分 简单的提了下Jest是如何实现Redis Cluster 的 ,这里我们再来梳理一下 Code import redis.clients.je...

2020-04-23 00:30:07 168 0

原创 Redis进阶-Redis集群 【高可用切换】&【cluster-require-full-coverage】集群是否完整才能对外提供服务

文章目录Pre需求 Pre Redis进阶-Redis集群原理剖析及gossip协议初探 中提到了 “ 集群是否完整才能对外提供服务” ,这里我们详细展开验证下 需求

2020-04-19 22:38:22 464 0

原创 Redis进阶-Redis集群原理剖析及gossip协议初探

文章目录Pre集群架构集群原理槽位定位算法跳转重定位Redis集群节点间的通信机制 Pre Redis进阶-分布式存储 Sequential partitioning & Hash partitioning 集群架构 再来所以说为啥需要集群? 两个方面: 并发量 : redis...

2020-04-12 22:07:56 106 0

原创 Redis进阶-分布式存储 Sequential partitioning & Hash partitioning

文章目录分布式存储顺序分布哈希分布顺序分布VS哈希分布集群架构 分布式存储 了解Redis集群原理之前我们先来梳理一下分布式存储的相关知识 拆分在算法中是一个非常重要的思想,当你的数据集巨大时,你可以按照特定的规则将大数据拆分成小数据集,降低因数据量增长过大带来的问题。 基本方案有两种:顺序分...

2020-04-12 17:36:32 92 0

原创 Redis进阶-Jedis以及Spring Boot操作 Redis 5.x Cluster

文章目录PreJedis操作Redis Cluster添加依赖CodeSpring Boot 操作Redis Cluster引入 依赖application.ymlCode Pre Redis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署搭建了Redis Cluster ...

2020-04-12 13:10:33 80 0

原创 Redis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署

文章目录Redis 下载地址Redis 编译安装Redis 启停 Redis 下载地址 下载地址: http://redis.io/download 历史版本: http://download.redis.io/releases/ 之前装过4.0.11 ----> Redis-02Re...

2020-04-11 22:19:37 103 0

原创 Redis进阶- Redisson分布式锁实现原理及源码解析

文章目录Pre用法Redisson分布式锁实现原理Redisson分布式锁源码分析 Pre Redis进阶-细说分布式锁中我们梳理了使用Redis实现分布式锁的演进过程,并提出了目前最完善的解决方案:Redisson 实现分布式锁 。 这里我们来分析下Redisson分布式锁实现原理及源码解析...

2020-04-11 11:30:33 125 0

原创 Redis进阶-lua脚本

文章目录Pre语法jedis操作lua好处lua实战注意事项 Pre Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行。 语法 从Redis2.6.0版本开始,通过内置的Lua解释器,可以使用EVAL命令对Lua脚本进行求值。 EVAL命令的格式如下: ...

2020-04-08 00:38:33 100 0

原创 Redis进阶-细说分布式锁

文章目录Pre引 Pre Redis Version : 5.0.3 Redis进阶-核心数据结构进阶实战 中我们讲 strings 数据结构的时候,举了一个例子 事实上,要实现一把相对完善的分布式锁,需要注意的细节还是蛮多的,这里我们好好的梳理一把。 引 我们先来看段代码 int st...

2020-04-06 23:34:06 121 0

原创 Redis进阶-布隆过滤器

布隆过滤器返回某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在

2020-03-26 00:34:19 134 0

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