自定义博客皮肤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

  • 博客(1833)
  • 资源 (12)
  • 收藏
  • 关注

原创 MyBatis源码-深入理解MyBatis Executor的设计思想

文章目录Pre回顾JDBC的执行过程Pre如果MyBatis的基础用法还不熟悉,31篇入门博客送给您https://blog.csdn.net/yangshangwei/category_7205317.html回顾JDBC的执行过程

2020-06-04 23:35:21 7317

原创 Tomcat - 都说Tomcat违背了双亲委派机制,到底对不对?

文章目录类加载的本质jvm里ClassLoader的层次结构BootstrapClassLoader(启动类加载器)ExtensionClassLoaderAppClassLoaderTomcat的 类加载顺序常见错误NoClassDefFoundErrorNoSuchMethodErrorClassCastException类加载的本质ClassLoader是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件 *.class,

2020-06-04 00:38:37 8540 1

原创 Tomcat - Tomcat 网络通信模型剖析 & 并发参数解读

文章目录什么是IOTomcat 支持四种线程模型Tomcat 如何使用指定IO模型什么是IOIO是指为数据传输所提供的输入输出流,其输入输出对象可以是:文件、网络服务、内存等。举个例子,假设应用在从硬盘中读取一个大文件过程中, CPU会与硬盘一样出于高负荷状态么?CPU 没有太高的增涨 。 通常情况下IO操作是比较耗时的,所以为了高效的使用硬件,应用程序可以用一个专门线程进行IO操作,而另外一个线程则利用CPU的空闲去做其它计算。这种为提高应用执行效率而采用的IO操作方法即为IO模型。To

2020-06-03 14:03:10 7370

原创 Tomcat - 你该知道的Tomcat生产环境部署

文章目录PreTomcat 各组件及关系server.xml 配置详解serverserviceconnectorPreTomcat Version : 8.5+我们先回顾下 前几节学习的的tomcat的功能及架构Tomcat是一个基于JAVA的WEB容器,其实现了JAVA EE中的 Servlet 与 jsp 规范,与Nginx apache 服务器不同在于一般用于动态请求处理。在架构设计上采用面向组件的方式设计, 即整体功能是通过组件的方式拼装完成。Tomcat 各组件及关系

2020-06-03 00:49:42 7718

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

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

2020-06-01 21:44:03 6711

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

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

2020-05-31 16:34:06 6731

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

文章目录启动流程分析Preload 加载初始化总体预览源码解析启动流程分析PreTomcat - Tomcat 8.5.55 启动过程源码分析阶段一_init实例化Bootstrap我们分析了 init 的主要功能,实例化Bootstrap , 调用init 通过反射调用Catalina#setParentClassLoader ,后面调用的load 和 start方法 均为 反射调用的Catalina对象的load和start 方法。load 加载初始化总体预览源码解析

2020-05-30 13:57:40 6874

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

文章目录Pre生命周期统一管理组件LifeCyclePre上篇我们搭建了tomcat的源码环境: Tomcat - 源码构建Tomcat 8.5.55 启动接下来我们来分析一下tomcat的启动过程。回忆一下 tomcat的架构图Tomcat启动的时候肯定要把架构中提到的组件进行实例化(实例化创建–>销毁等:生命周期)。Tomcat中那么多组件,为了统一规范他们的生命周期,Tomcat抽象出了LifeCycle生命周期接口 。生命周期统一管理组件LifeCycle查看Li

2020-05-28 15:19:39 6733

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

文章目录官方地址源码搭建分析源码搭建步骤官方地址https://tomcat.apache.org/download-80.cgi历史版本:https://archive.apache.org/dist/tomcat/tomcat-8/这里最新的是 8.5.55 ,我们就用这个吧得到 apache-tomcat-8.5.55-src.zip源码搭建分析我们在使用tomcat时,俩目录 conf 和 webapps 是不是经常需要修改?一个负责tomcat的配置文件信息,一个负

2020-05-28 10:29:02 7680 7

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

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

2020-05-26 06:58:31 6713

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

文章目录Tomcat的主要功能Tomcat的架构初探Tomcat的主要功能核心功能: http服务器和servlet 容器Http服务器功能 : Socket通信(TCP/IP)、解析HTTP报文Servlet容器功能 : 实现了Servlet规范 , 有多个Servlet(自带Servlet + 自定义Servlet),Servlet处理具体的业务Tomcat的架构初探刚才说了tomcat核心功能有两个 : http服务器和Servlet 容器。 那tomcat为了实现

2020-05-24 23:44:57 7012

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

文章目录PrejstackThread dumpDead Lock 分析PreJVM-11虚拟机性能监控与故障处理工具之【JDK的可视化工具-JConsole】jstackjstack主要用来查看某个Java进程内的线程堆栈信息 ,建议多杀几次线程dump ,每次都有某个事件,基本没跑了~用法也很简单Thread dumpFound one Java-level deadlock:============================="T-ShortConn-4": wa

2020-05-20 15:01:43 6685

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

文章目录Precluster nodes作用输出格式flags 含义slot第一种 单哈希槽第二种 Range第三种特殊状态 导入和迁移PreRedis进阶 - 因异常断电导致的Redis Cluster Fail故障处理 处理了redis cluster 断电后的异常,中间使用了cluster nodes 命令,我们来看下这个命令的组成cluster nodesRedis Version : 5.0.5172.168.15.101:7001> cluster nodesf43

2020-05-19 20:31:26 9066 4

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

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

2020-05-19 19:34:15 19863

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

文章目录PreComparator逆序 reversed()比较器链谓词复合Pre前面几个我们使用lambda表达式,都用的是默认的抽象方法,还记得不?事实上,许多函数式接口,比如用于传递Lambda表达式的 Comparator 、 Function 和 Predicate 都提供了允许你进行复合的方法这些函数接口中的其他方法(default方法或者static方法) 有啥用呢?在实际使用场景中,可以把多个简单的Lambda复合成复杂的表达式。 比如 可以让两个谓词之间做一个 or 操

2020-05-17 23:56:37 6688

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

文章目录Pre第 1 步:传递代码第 2 步:使用匿名类第 3 步:使用 Lambda 表达式第 4 步:使用方法引用Pre前几篇文章,我们已经学习了行为参数化、匿名类、Lambda表达式和方法引用,实现了给工程师按照职位排序的功能enginnerlist.sort(comparing(Enginner::getJob))那我们来分解一下,看具体是怎样一步步的实现这么精简的写法的第 1 步:传递代码Java 8的API已经为你提供了一个 List 可用的 sort 方法, 这个是最难的部分

2020-05-17 23:23:31 6664

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

文章目录Pre全链路是怎么一回事儿为什么要全链路压测全链路压测前的准备工作压测环境监控工具(推荐pinpoint)预埋数据和背景数据压测指标 & 压测场景压测工具压测环境Pre随着用户需求的不断增加,系统的功能越来越庞杂,为了快速支撑这些业务的变化,架构也变得越来越复杂,甚至有很多二级子系统(模块) 。全链路是怎么一回事儿通常来讲,业务系统都是很复杂的,我们把业务系统中的核心业务流程抽象一下比如业务1 需要经过 5个应用的调用业务2 需要经过4个应用业务3 相对简单 需要调用2个

2020-05-17 17:01:36 6895

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

Pre我们来回顾下单体时代单体时代,应用部署在一台主机上,可以使用JVM级别的锁来控制并发请求 。随着应用规模的不断扩大,集群化或者微服务化的分布式部署越来越普及,每个应用都是一个单独的JVM应用,所以单体时代的这种处理方式已经无法满足当前架构下的业务需求了。JVM级别的锁已经无法满足跨进程之间访问控制了,进而演化出来了分布式锁。分布式锁 能否解决幂等性问题?分布式锁解决什么问题? 简言之: 解决跨进程间无法共享本地资源的问题 ,解决的是分布式场景下并发访问的问题。为什么需要确保并发.

2020-05-17 13:11:52 7036

原创 Java 8 - 05 方法引用

文章目录Pre方法引用Pre先来看段代码 Comparator<Enginner> enginnerComparator = new Comparator<Enginner>() { @Override public int compare(Enginner o1, Enginner o2) { return o1.getJob().compareTo(o2.getJob());

2020-05-17 09:02:20 6645 3

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

文章目录Pre类型检查Pre当我们第一次提到Lambda表达式时,说它可以为函数式接口生成一个实例。然而,Lambda表达式本身并不包含它在实现哪个函数式接口的信息。为了全面了解Lambda表达式,women 应该知道Lambda的实际类型是什么 .类型检查Lambda的类型是从使用Lambda的上下文推断出来的。 上下文(比如,接受它传递的方法的参数,或接受它的值的局部变量)中Lambda表达式需要的类型称为目标类型。举个例子List<Apple> heavierThan15

2020-05-16 23:28:09 7047

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

文章目录PrePredicatePreJava 8 - 02 Lambda Expression中我们讨论了函数式接口, 函数式接口定义且只定义了一个抽象方法。因为抽象方法的签名可以描述Lambda表达式的签名。函数式接口的抽象方法的签名称为函数描述符。所以为了应用不同的Lambda表达式,我们需要一套能够描述常见函数描述符的函数式接口Java API中已经有了几个函数式接口,比如 Comparable 、 Runnable 和Callable 。Java 8 在 java.util.functi

2020-05-16 09:29:41 6821 1

原创 Java 8 - 02 Lambda Expression

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

2020-05-13 00:19:45 6729

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

文章目录Pre为啥需要lambdalambda的妙用@FunctionalInterfacePre在软件工程中,不管你做什么,用户的需求肯定会变的,如何应对这样不断变化的需求? 理想的状态下,应该把你的工作量降到最少。 此外,类似的新功能实现起来还应该很简单,而且易于长期维护。行为参数化就是可以帮助我们处理频繁变更的需求的一种软件开发模式。简言之,它意味着拿出一个代码块,把它准备好却不去执行它。这个代码块以后可以被我的程序的其他部分调用,这意味着我可以推迟这块代码的执行。例如,我可以将代码块作为参

2020-05-11 00:17:48 6990 2

原创 Java-COW在Java中的应用

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

2020-05-09 14:45:23 6741

原创 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,[2] is a resource-management technique used in compu...

2020-05-08 10:55:33 7250

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

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

2020-05-06 22:06:34 6594

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

文章目录Pre方案1 Pub/Sub优点缺点小结方案2 List优点缺点小结方案3 ZSet优点缺点小结方案4 streamPre最终方案-----> Redis进阶-Stream多播的可持久化的消息队列我们知道redis 5.x版本,作者提供了stream这种基于radix tree 基数树的数据结构,解决使用Redis实现MQ“百花齐放”的乱象。方案1 Pub/Sub...

2020-05-05 23:14:57 8320

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

文章目录PreStream简介PreRedis-13Redis发布订阅 中提到了PubSub的不足之处 。PubSub 的生产者传递过来一个消息,Redis 会直接找到相应的消费者传递过去。如果一个消费者都没有,那么消息直接丢弃。如果开始有三个消费者,一个消费者突然挂掉了,生产者会继续发送消息,另外两个消费者可以持续收到消息。但是挂掉的消费者重新连上的时候,这断连期间生产者发送的消息...

2020-04-30 00:32:40 8787 1

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

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

2020-04-27 22:31:26 9534

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

文章目录Predel ------> unlinkFLUSHDB/FLUSHALL --> FLUSHDB ASYNC/FLUSHALL ASYNC异步队列AOF Sync扩展阅读PreRedis进阶-Redis对于过期键的三种清除策略我们一直说 Redis 是单线程的,这里的我们默认指的都是Redis主要的工作线程,面向开发的。 实际上 Redis 内部实并不是只有一个主...

2020-04-27 07:07:00 11432 2

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

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

2020-04-26 07:05:00 6747

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

文章目录官方指导infoinfo 指令内存占用多大连接了多少客户端每秒执行多少次指令复制积压缓冲区多大info demo官方指导https://redis.io/commands/infoinfo在使用 Redis 时,时常会遇到很多问题需要诊断,在诊断之前需要了解 Redis 的运行状态,通过强大的 Info 指令,你可以清晰地知道 Redis 内部一系列运行参数。info 指令...

2020-04-25 23:52:02 6955

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

文章目录Prestring 字符串字符串的实现字符串 内部结构embstr vs rawPreRedis进阶-核心数据结构进阶实战Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合) 。Redis 所有的数据结构都是以唯一的key 字符串作为名称,然后通过这个唯一 key 值来获取相...

2020-04-25 22:19:50 7593 2

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

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

2020-04-25 21:37:24 9863

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

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

2020-04-23 00:30:07 10330

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

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

2020-04-19 22:38:22 9661

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

文章目录Pre集群架构集群原理槽位定位算法跳转重定位Redis集群节点间的通信机制PreRedis进阶-分布式存储 Sequential partitioning & Hash partitioning集群架构再来所以说为啥需要集群?两个方面:并发量 : redis官方称10万的QPS,如果我的业务真的大到百万的QPS呢? 单节点的读写 显然不行。数据量 :...

2020-04-12 22:07:56 7545

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

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

2020-04-12 17:36:32 6918 2

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

文章目录PreJedis操作Redis Cluster添加依赖CodeSpring Boot 操作Redis Cluster引入 依赖application.ymlCodePreRedis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署搭建了Redis Cluster 集群,接下来我们看下如何使用Java 代码来操作集群Jedis操作Redis Cluster添加...

2020-04-12 13:10:33 6642

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

文章目录Redis 下载地址Redis 编译安装Redis 启停Redis 下载地址下载地址: http://redis.io/download历史版本: http://download.redis.io/releases/之前装过4.0.11 ----> Redis-02Redis在linux下的安装及常见问题Redis 编译安装第一步 : 安装gcc# 安装gcc...

2020-04-11 22:19:37 7239

Scalable IO in Java

NIO - Scalable IO in Java

2023-11-10

腾讯万亿级 Elasticsearch 架构实践

腾讯万亿级 Elasticsearch 架构实践

2023-07-24

实时分析引擎&实时分析引擎

实时分析引擎

2023-07-24

X86-NFS rpm包

gssproxy-0.7.0-21.el7.x86_64.rpm keyutils- libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config libnfsidmap libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind tcp_wrappers

2020-11-24

中标龙芯-MIPS- NFS rpm包

gssproxy-0.7.0-4.ns7_4.mips64 keyutils-1.5.8-3. libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config-1.3 libnfsidmap-0.25- libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind-0.2.0-42. tcp_wrappers-7.6

2020-11-24

mybatisSource.zip

MyBatis源码功能演示环境 ,演示MyBatis的Executor 、StatementHandler 、 SQL映射、对象转换 等核心功能

2020-06-14

apache-tomcat-8.5.50-src.zip

Tomcat启动流程分析 组件的生命周期管理 用Lifecycle管理启动、停止、关闭 Lifecycle接口预览 几个核心方法 Server中的init方法示例 为啥StandardServer没有init方法 LifecycleBase中的init与initInternal方法 为什么这么设计? 分析Tomcat请求过程 链接器(Connector)与容器(Container) 解耦 Connector设计 监听服务端口,读取来自客户端的请求 将请求数据按照指定协议进行解析 根据请求地址匹配正确的容器进行处理 将响应返回客户端 Container设计 Servlet容器的实现。

2020-06-02

「Tomcat源码剖析」.pdf

Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑)

2020-06-01

Jest-5.3.4.zip

Jest是Elasticsearch 的Java Http Rest 客户端。 ElasticSearch已经具备应用于Elasticsearch内部的java API,但是Jest弥补了ES自有API缺少Elasticsearch Http Rest接口客户端的不足。 Jest 配置ES 集群 示例代码 及源码解读 - 核心原理 - NodeChecker源码解读 -

2020-01-19

MQ对比:Kafka VS Rocketmq VS Rabbitmq.pdf

MQ对比:Kafka VS Rocketmq VS Rabbitmq 超详细 ,值的收藏,参考资料

2019-11-04

elasticsearch-analysis-ik-6.4.1.zip

修改ik分词器源码,支持从mysql中每隔一定时间,自动加载新的词库

2019-08-20

Nginx1.14.2 + zlib + pcre + openssl

1. nginx 主软件 和 3个依赖包 zlib + pcre + openssl

2019-03-12

Spring4CachingAnnotationsExample

Spring4CachingAnnotationsExample的示例,通过Java注解的方式整合EhCache框架

2017-10-04

ORACLE_AWR报告详细分析

ORACLE_AWR报告详细分析

2016-09-28

Java反编译工具

jd-gui.exe使用C++开发,主要具有以下功能: 一、支持众多Java编译器的反编译; 二、支持对整个Jar文件进行反编译,并本源代码可直接点击进行相关代码的跳转;

2015-06-04

空空如也

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

TA关注的人

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