摘要:🐜 版本信息: 🐞 JDK:1.8+ 🐌 IDEA:2019.3 🐝 插件项目基于gradle构建。 🦟 知识背景:swing 🦇 参考文档: http://www.jetbrains.org/intellij/sdk/docs/tutorials/build_system/prereq 阅读全文
posted @ 2019-12-13 12:52 胖虎1993 阅读 (486) 评论 (0) 编辑
摘要:🌏 环境: 🌳 JDK11 🌱 IDEA 2019.03 🌾 Resilience4j 0.13.2 🍃 知识依赖:juc,位图 一、什么是熔断 在分布式系统中,各服务间的相互调用更加频繁,上下游调用中充满了可能性,一个服务可能会被很多其他服务依赖并调用,在这个过程中如果某个服务由于某种原 阅读全文
posted @ 2019-12-10 21:58 胖虎1993 阅读 (63) 评论 (0) 编辑
摘要:前言 目前工作中用到的分布式缓存技术有redis和memcached两种,缓存的目的是为了在高并发系统中有效降低DB的压力,但是在使用的时候可能会因为缓存结构设计不当造成一些问题,这里会把可能遇到的坑整理出来,方便日后查找。 一、常用的两种缓存技术的服务端特点 1.1:Memcache服务端 Mem 阅读全文
posted @ 2019-10-24 23:01 胖虎1993 阅读 (67) 评论 (2) 编辑
摘要:基于依赖程序的版本信息:HikariCP:3.3.1 驱动程序mysql-connector-java:8.0.17 上一篇:Druid是如何管理数据库连接的 零、类图和流程图 开始前先来了解下HikariCP获取一个连接时类间的交互流程,方便下面详细流程的阅读。 获取连接时的类间交互: 图1 一、 阅读全文
posted @ 2019-08-28 00:18 胖虎1993 阅读 (188) 评论 (0) 编辑
摘要:基于依赖程序的版本信息:druid:1.1.16 驱动程序mysql-connector-java:8.0.17 下一篇:HikariCP是如何管理数据库连接的 零、类图&流程预览 下方流程中涉及到的类、属性、方法名均列在这里:Druid-类图-属性表 ←该表格用来辅助理解下面的流程图和代码,不用细 阅读全文
posted @ 2019-08-28 00:16 胖虎1993 阅读 (472) 评论 (0) 编辑
摘要:一、关于BeanPostProcessor 1.1:它是什么? 首先它是一个接口,定义了两个方法: public interface BeanPostProcessor { @Nullable //所有bean初始化之前触发该方法 default Object postProcessBeforeIn 阅读全文
posted @ 2019-07-16 23:34 胖虎1993 阅读 (65) 评论 (0) 编辑
摘要:最近公司有个需求需要借助InfluxDB实现(或者更准确的说,使用该数据库可以更容易的实现),因此稍微看了下这个数据库,把比较重要的一些东西先简单记录一下,日后如果踩坑,也会继续在下面补充。 零、下载&安装 官方地址:https://portal.influxdata.com/downloads/ 阅读全文
posted @ 2019-06-21 00:09 胖虎1993 阅读 (191) 评论 (0) 编辑
摘要:上一篇介绍了jvm的内存模型,本篇将介绍虚拟机中最为复杂的一部分:垃圾收集,本篇会从垃圾回收前的准备工作到后面的收集阶段的方式以及HotSpot虚拟机对这些工作的实现做个较为系统的记录,方便自己以后查找阅读。 一、栈帧、变量类型、引用分析 讲解垃圾收集器的实现之前,结合之前讲的jvm内存区域划分,先 阅读全文
posted @ 2019-05-07 09:29 胖虎1993 阅读 (70) 评论 (0) 编辑
摘要:本篇文章基于上一篇,只针对数据采集做介绍,会提供一个SDK的实现和使用,会做实现方案的介绍,具体详细介绍下面边框加粗的部分: 一、数据采集 接着拿上一篇里的例子来说,把例子里的图贴过来: 图1 简单回顾下上图,一次API调用,完成上面各个业务服务的调用,然后聚合所有服务的信息,然后Redis_02的 阅读全文
posted @ 2019-04-15 22:20 胖虎1993 阅读 (286) 评论 (1) 编辑
摘要:一、分布式链路追踪可以做什么? 1.1:简单集群架构&微服务架构 先来看下最简单的网站集群架构图: 图1 在这个图里,存在从1~n个服务器,通过负载均衡器SLB进行请求分发,在每个服务器里,都做同一件事情。 现在来看下这个系统的具体业务逻辑(就是图1中每台服务器执行的逻辑,这里是假设其中一个业务接口 阅读全文
posted @ 2019-04-11 08:56 胖虎1993 阅读 (765) 评论 (0) 编辑
摘要:一、JAVA程序执行流程 JAVA程序执行的基本流程(基于HotSpot): 图1 二、内存模块划分 2.1:程序计数器 程序计数器是一块较小的内存空间,是当前线程执行字节码的行号指示器,字节码解释器就是通过改变这个计数器的值来获取下一条需要执行的字节码指令,其中分支、循环、跳转和异常处理,线程恢复 阅读全文
posted @ 2019-04-06 09:50 胖虎1993 阅读 (81) 评论 (0) 编辑
摘要:注:本篇文章例子基于上一篇进行:Java NIO学习与记录(七): Reactor单线程模型的实现 前言:单线程Reactor模型的缺点 紧接着上篇Reactor单线程模型的例子来,假设Handler的read那里的处理方式延迟5s,当做是业务性能瓶颈,改变下原来的Handler,让其read方法在 阅读全文
posted @ 2019-04-01 23:46 胖虎1993 阅读 (446) 评论 (2) 编辑
摘要:一、Selector&Channel 1.1:各种channel 写这个模型需要提前了解Selector以及Channel,之前记录过FileChannel,除此之外还有以下几种Channel: ServerSocketChannel:用于监听新的TCP连接的通道,负责读取&响应,通常用于服务端的实 阅读全文
posted @ 2019-03-27 21:59 胖虎1993 阅读 (405) 评论 (1) 编辑
摘要:一、前言 开始之前,你需要准备的环境: Linux系统机器或者虚拟机一台,里面需要安装的软件:git、jdk、perl。 二、简单介绍 java性能分析火焰图的所做的事情就是能够分析出java程序运行期间存在的性能问题,因为某段代码拖慢整个程序执行是不允许的,因此靠火焰图的绘制和分析就可以找出类似的 阅读全文
posted @ 2019-03-22 19:42 胖虎1993 阅读 (808) 评论 (2) 编辑
摘要:上一篇说的是基于操作系统的IO处理模型,那么这一篇来介绍下服务器端基于IO模型和自身线程的处理方式。 一、基于BIO下的线程处理模式 这种处理模型是基于阻塞IO进行的,上一篇讲过,阻塞IO会阻塞每一个IO操作,直到事件就绪,下面来看下阻塞IO下的服务端线程模型: 图1 如上图所示,该线程模型基于阻塞 阅读全文
posted @ 2019-03-20 23:12 胖虎1993 阅读 (412) 评论 (0) 编辑
摘要:在开始介绍NIO Reactor模式之前,先来介绍下操作系统的五种I/O模型,了解了这些模型,对理解java nio会有不小的帮助。 前言:一次网络请求的流程 先来看下一个服务端处理一次网络请求的流程图: 图1 一、图1解析 1.1:内核空间&用户空间 内核空间:指操作系统运行时用于程序调度、虚拟内 阅读全文
posted @ 2019-03-19 13:53 胖虎1993 阅读 (163) 评论 (0) 编辑
摘要:一、线程池的Future模式 在了解java8的CompletableFuture之前,先通过Future来解决一个问题,看个例子: 假设现在有一个网站,首页有顶部Banner位、左边栏、右边栏、用户信息几大模块需要加载,现在出一个接口,要求包装并吐出这几大模块的内容 先来抽象一个首页接口对象: p 阅读全文
posted @ 2019-03-14 22:50 胖虎1993 阅读 (246) 评论 (0) 编辑
摘要:一、join & interrupt 这俩方法属于线程对象里的方法,属于线程本身的操作。 1.1:join方法 用于等待一个线程的终止,等待期间将会阻塞,直到被等待的线程终止结束。 所以join可以用来做多任务异步处理,比如还是拿利用CompletableFuture优化程序的执行效率这篇里的第一个 阅读全文
posted @ 2019-03-13 09:08 胖虎1993 阅读 (197) 评论 (0) 编辑
摘要:SocketChannel可以创建连接TCP服务的客户端,用于为服务发送数据,SocketChannel的写操作和连接操作在非阻塞模式下不会发生阻塞,这篇文章里的客户端采用SocketChannel实现,利用线程池模拟多个客户端并发访问服务端的情景。服务端仍然采用ServerSocket来实现,主要 阅读全文
posted @ 2019-03-08 23:18 胖虎1993 阅读 (198) 评论 (0) 编辑
摘要:上一篇知道了Buffer的工作机制,以及FileChannel的简单用法,这一篇介绍下 Scatter&Gather 1.Scatter(分散) 用于描述在Channel中读取的数据分散在不同的Buffer里。 接着上一篇的例子(rua文件内容为123456789),改造下代码: readFile 阅读全文
posted @ 2019-03-07 09:21 胖虎1993 阅读 (155) 评论 (0) 编辑