自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (7)
  • 收藏
  • 关注

原创 Java中的13个原子操作类

atomic 包中的 13 个类,属于 4 中类型的原子更新方式.(1)原子更新基本类型(2)原子更新数组(3)原子更新引用(4)原子更新属性atomic 包里的类基本都是使用 Unsafe 实现的包装类.1.原子更新基本类型(1) AtomicBoolean(2) AtomicInteger(3) AtomicLong本类以 AtomicInteger 进行讲解:int a...

2019-11-02 23:38:55 282

原创 RocketMQ 启动命令分析

autoCreateTopicEnable=true

2022-09-26 21:09:15 399 1

原创 关于 Nacos 任务执行引擎的设计

说明:本篇文章部分内容参考了网上的文章(在下文已给出原文链接),由于本人能力有限,如果有书写错误的地方,欢迎各位大佬批评指正!我们互相交流,学习,共同进步!该项目的地址:https://github.com/xiaoheng1/nacos_read关于 Nacos 任务执行引擎的设计// 任务的抽象.public interface NacosTask {/** * Judge Whether this nacos task should do. * * @return true means

2021-06-16 22:49:30 401

原创 一致性协议的抽象

一致性,即多个副本之间是否能保持一致的特性. 而副本的本质就是数据,对数据的操作,不是获取就是修改. 同时,一致性协议其实是针对分布式情况的,所以必然会涉及多个节点. 因此,需要有相应的接口能够调整一致性协议的协同工作节点.所以,一致性协议其实更加关注的是读、写在集群间的一致性.ConsistencyProtocolpublic interface ConsistencyProtocol<T extends Config, P extends RequestProcessor> exten

2021-06-06 21:43:37 220

原创 Nacos NamingServer 再分析

说明:本篇文章部分内容参考了网上的文章(在下文已给出原文链接),由于本人能力有限,如果有书写错误的地方,欢迎各位大佬批评指正!我们互相交流,学习,共同进步!该项目的地址:https://github.com/xiaoheng1/nacos_readNacos NamingServer 再分析NamingServer 先从 @CanDistro 这个注解说起吧.1.按服务名选择 nacos 节点,即一个服务的实例增删改,只由特定的 nacos 节点负责.上面的描述如何理解了?先看下如下的注解:/

2021-05-31 22:35:30 455

原创 Nacos 事件模型补充

说明:本篇文章部分内容参考了网上的文章(在下文已给出原文链接),由于本人能力有限,如果有书写错误的地方,欢迎各位大佬批评指正!我们互相交流,学习,共同进步!该项目的地址:https://github.com/xiaoheng1/nacos_readNacos 事件模型补充:在 Nacos 中,事件模型模块,出镜最高的是 NotifyCenter. 我们先从这个入手,看下其是如何设计的.NotifyCenter 代码注释第一行:统一事件通知中心.其中有一个很重要的属性:private static

2021-05-30 21:39:47 439

原创 Client-NacosConfigService 再分析

先看下 Client 端 NacosConfigService 的核心组件:两大核心组件:ServerHttpAgent 和 ClientWorker.需要注意的是,在 ServerHttpAgent 中,有一个 ServerListManager 成员变量. 这个类就是为了获取 nacos server 服务列表.现在支持两种方式,一种是固定 ip 的,另一种是从服务器获取 nacos server 列表.需要注意的是,在 ServerHttpAgent 中,有一个 ServerListMana

2021-05-24 21:42:19 389 2

原创 nacos-client源码分析

说明:本篇文章部分内容参考了网上的文章(在下文已给出原文链接),由于本人能力有限,如果有书写错误的地方,欢迎各位大佬批评指正!我们互相交流,学习,共同进步!该项目的地址:https://github.com/xiaoheng1/nacos_readnacos-client 源码分析IConfigRequest 的作用,我理解是配置请求.void putParameter(String key, Object value);Object getParameter(String key);IConf

2021-05-21 21:00:41 640

原创 EventDispatcher 的原理

先说下 EventDispatcher 的原理:EventDispatcher 核心功能:1.管理 listener2.触发事件Entry 是说将 event 分组,因为每个 event 可能有多个不同的 listener 关注.AbstractEventListener 表征感兴趣的事件,子类需要重写 interest 和 onEvent 方法.再说下 listener 在 nacos 中的实现类:1.LongPollingService1.1ClientLongPolling 对客户端长

2021-05-17 23:24:59 1103

原创 NacosConfigServer 初始化流程

说明:本篇文章部分内容参考了网上的文章(在下文已给出原文链接),由于本人能力有限,如果有书写错误的地方,欢迎各位大佬批评指正!我们互相交流,学习,共同进步!该项目的地址:https://github.com/xiaoheng1/nacos_readNacosConfigServer 初始化流程.1.NacosConfigService 的构造1.1初始化 namespace1.2初始化 HttpAgent(一个关于发起 http 请求的代理,httpAgent 有关于 token 续期的处理)1

2021-05-06 22:11:01 694

原创 NACOS 设计

说明:本篇文章部分内容参考了网上的文章(在下文已给出原文链接),由于本人能力有限,如果有书写错误的地方,欢迎各位大佬批评指正!我们互相交流,学习,共同进步!该项目的地址:https://github.com/xiaoheng1/nacos_readNACOS 设计1.首先明白如下概念:namespace 命名空间 —— 环境group 分组 —— 项目dataId 配置集 —— 工程首先 Nacos 数据是存储在数据库的,不管是内置数据库,还是外置的.参考:com.alibaba.nacos

2021-04-30 23:29:21 360 1

原创 Nacos Auth 模块分析

关于安全如何设计:@Retention(RetentionPolicy.RUNTIME)public @interface Secured {/** * The action type of the request. * * @return action type, default READ */ActionTypes action() default ActionTypes.READ;/** * The name of resource related to the request.

2021-04-28 23:29:23 289

原创 Kafka 索引设计

先看下索引的类图设计:abstract class AbstractIndex(@volatile private var _file: File, val baseOffset: Long, val maxIndexSize: Int = -1,val writable: Boolean) extends Closeable {import AbstractIndex._// Length ...

2021-03-28 21:36:33 333 1

原创 Dubbo Monitor 分析

DubboRCP调用次数和调用时间的监控,以 Statistics 为中心,扩展接口为 MonitorFactory、Monitor、MonitorService.MonitorService 主要提供两个接口,收集和查找监控数据./*** Collect monitor data* 1. support invocation count: count://host/interface?application=foo&method=foo&...

2020-12-14 22:34:40 1268

原创 JVM参数优化及OOM故障分析步骤

关于 JVM 参数优化步骤1.上线前:先合理评估自己系统的压力,合理设置参数2.上线后:通过 jstat 命令监控显示系统的 eden 区增长速度,ygc 频率和耗时,老年代增长频率,耗时,然后优化参数关于 GC 问题定位排查1.通过 jstat 分析新生代、老年代对象增速,耗时和频率2.分析代码逻辑,也可以转存堆内存快照,使用 MAT 工具进行分析.OOM 分析解决1.看是那块内存抛出异常,比如堆、栈、Metaspace 区域2.如果是栈内存溢出的话,通过日志,定位栈内存溢出的地方,然后分

2020-08-01 16:09:43 282

原创 一次 gc 日志分析

/*** -XX:NewSize=5242880* -XX:MaxNewSize=5242880* -XX:InitialHeapSize=10485760* -XX:MaxInitialHeapSize=10485760* -XX:SurvivorRatio=8* -XX:PretenureSizeThreshold=10485760* -XX:+UseParNewGC* -XX:+UseConcMarkSweepGC* -XX:+PrintGCDetails* -XX:+PrintG

2020-06-27 21:19:32 196

原创 Mybatis PagerHelper 实现原理

首先说下使用.@Overridepublic PageInfo selectDocByPage1(int currentPage, int pageSize) {PageHelper.startPage(currentPage, pageSize);List docs = docMapper.selectByPageAndSelections();PageInfo pageInfo = ...

2020-04-28 00:07:22 493

原创 Mybatis # 和 $ 的区别及参数如何对应

调试 ParamNameResolver.final Annotation[][] paramAnnotations = method.getParameterAnnotations();二维数组,第一维是参数长度,第二维是注解个数.1.看参数上是否有 @Param 注解,有就读取该注解中的值.2.如果第1步不成立,则看能否获取实际参数名.3.如果还不行,则是第几个参数(排除特殊参数,例...

2020-04-23 01:00:57 287

原创 SpringMVC工作流程

DispatcherServlet 为 SpringMVC 处理 servlet 的入口.在 doService 方法中调用 doDispatcher 方法,也就是说业务逻辑主要是在 doDispatcher 中实现.HandlerMapping 抽象了请求 URL 到请求处理器之间的映射. 当一个请求过来时,DispatcherServlet 会轮询 HandlerMapping 那个请求...

2020-04-06 23:11:44 709

原创 Mybatis 插件原理

MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setPa...

2020-04-04 19:17:20 252

原创 Mybatis启动流程分析

1.解析配置文件,包括 mybatis-config.xml、mapper.xml 文件.2.获取 xxxMapper.直接定位到 RegisterMapper 类中.public T getMapper(Class type, SqlSession sqlSession) {final MapperProxyFactory mapperProxyFactory = (MapperPr...

2020-03-25 10:18:58 184

原创 Mybatis Cache包分析

Cache 类主要提供 put/get/remove 方法.public interface Cache {/**cache 的 id.*/String getId();/**@param key Can be any object but usually it is a {@link CacheKey}@param value The result of a select....

2020-03-19 17:52:54 205

原创 Mybatis IO 包源码分析

ClassLoaderWrapper 类是对 ClassLoader 的包装. 怎么理解了?看下这个方法就知道了.ClassLoader[] getClassLoaders(ClassLoader classLoader) {return new ClassLoader[]{classLoader,defaultClassLoader,Thread.currentThread().get...

2020-03-15 16:59:28 162

原创 Mybatis SqlSession 接口源码分析

我们可以看下 SqlSession 类上面的注释:使用 Mybatis 的主要 java 接口,通过此接口你可以执行 sql、获取 mapper 和管理事务.public interface SqlSession extends Closeable {// 查询一条 T selectOne(String statement);// 带参数查询一条 T selectOne(String s...

2020-03-14 20:58:49 237

原创 Mybatis事务包分析

上面写的很清楚,Transaction 是对 database connection 的封装,处理 connection 的生命周期.创建、准备、提交、回滚和关闭.public interface Transaction {/**Retrieve inner database connection.@return DataBase connection@throws SQLExcep...

2020-03-14 13:15:35 199 1

原创 Mybatis datasource 包源码分析

和所有的框架一样,凡是功能性的,都会自定义异常.所以就有了 DataSourceException 这个类.public class DataSourceException extends PersistenceException {private static final long serialVersionUID = -5251396250407091334L;public DataS...

2020-03-08 22:05:16 301

原创 最全 Mybatis 使用笔记

说明:本篇文章中有部分内容参考自下面相关链接上的内容,小伙伴可自行参考.本文在其基础上进行整理并扩充部分内容.我们从最开始的 jdbc 开始说起.public class JdbcUtil {// 单机 MySQL 支持的最大连接数是 16384private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";priva...

2020-03-08 11:42:29 241

原创 虚拟机字节码执行过程

先看个例子吧.方法定义:public int calc(int a, int b, int c){ return (a+b) * c; }javap 查看其字节码public int calc(int, int, int); descriptor: (III)I flags: ACC_PUBLIC Code: stack=2, ...

2020-02-29 17:38:24 247

原创 tomcat类加载机制

1.Tomcat 类加载器架构Tomcat 服务器类加载要解决的问题:1.同一个 tomcat 服务器下的不同应用所使用的类库可以实现隔离.2.同一个 toncat 服务器下的不同应用所使用的类库可以互相共享.3.服务器需要尽可能保证自身的安全不受部署的 web 应用程序影响(服务器使用到的类库应当和应用程序使用到的类库互相隔离).在 Tomcat 目录结构中,有 3 组目录:/comm...

2020-02-29 16:33:31 258

原创 Kafka producer 端的工作逻辑及样例

producer 的工作逻辑:启动 producer 的线程将待发送消息封装成 ProducerRecord. 然后将其序列化发送给 partitioner, 再由后者确定了目标分区后一同发送给位于 producer 程序中的一块内存缓冲区. 而 producer 的另一个线程负责实时从缓冲区中提取出来准备就绪的消息封装成一个批次,发送给对应的 broker.public class Sim...

2020-02-26 20:14:42 258

原创 虚拟机运行时栈帧的结构

执行引擎是 java 虚拟机最核心的组成部分之一.在虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型称为各种虚拟机执行引擎的统一外观. 在不同的虚拟机实现里,执行引擎在执行 java 代码的时候,可能会解释执行和编译执行等,但是从外观上来看,所有的 java 虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果.运行时栈帧结构栈帧是用于...

2020-02-24 21:28:55 323

原创 Kafka线上环境配置选择

1.系统选择linux 系统优于 windows 系统. 因为 linux 采用的是 epoll 模型,而 window 一般采用的是轮询方式,并且 linux 有 sendfile,传输效率高2.磁盘规划(1)普通的机械盘就能满足kafka的存储要求,因为 kafka使用的是顺序 I/O,它的速度比较快,但是 SSD 更好.(2)JBOD 性价比优于 RAID.3.磁盘容量规划需要考虑...

2020-02-23 21:42:23 348

原创 类加载器之双亲委托模型

类加载器虚拟机设计团队把类加载阶段中的“通过一个全限定性名获取二进制字节流”这个动作的实现放到 java 虚拟机外部去实现,以便让程序自己决定如何去获取所需要的类. 这个动作的代码模块称为“类加载器”。任何一个类,都是由加载它的类加载器和这个类本身一同确立其在 java 虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间.换句话说,比较两个类是否相等,只有在这两个类在同一个类加载器...

2020-02-23 16:57:12 169

原创 虚拟机类加载过程之解析和初始化阶段

解析阶段解析阶段是虚拟机将常量池中的符号引用转换为直接引用的过程(在验证阶段我们知道,符号引用是将对类自身以外的信息进行匹配性验证,说人话就是说比如一个类A,调用了类B的方法,那么在解析阶段需要看下类A的中的符号能否定位到B类的方法).符号引用例如Constant_Class_info、Constant_Fieldref_info、Constant_Methodref_info 等.符号引用:...

2020-02-22 19:18:31 468

原创 虚拟机类加载过程(二)

类加载过程也就是加载、验证、准备、解析、初始化这5阶段的具体动作:加载阶段①通过一个类的全限定名来获取定义此类的二进制字节流②将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构③在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口.虚拟机规范并没有详细说明从哪里获取一个二进制字节流,充满创造力的开发人员玩出了各种花样,例如从...

2020-02-21 12:51:47 121

原创 虚拟机类的初始化过程(一)

上篇文章我们学习了 Class 文件的结构,现在来看下虚拟机是如何加载 Class 文件的?以及Class 文件中的信息进入到虚拟机后会发生什么样的变化?虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是 Java 虚拟机的类加载机制.我们知道,java 语言和其他在编译期就进行连接的语言不同(例如c)...

2020-02-20 11:18:37 370

原创 Kafka线上环境部署

本章内容是如何规划 Kafka 服务器的相关内容.1.操作系统选型linux 效率优于 windows. 因为 I/O 模型和网络传输效率(sendfile).2.磁盘规划1.性价比 JBID 优于 RAID2.使用机械盘完全可以满足 Kafka 集群的使用,SSD 更好.3.磁盘容量规划1.新增消息数2.消息留存时间3.平均消息大小4.副本数5.是否启用压缩4.内存规划...

2020-02-18 22:40:58 250

原创 虚拟机字节码指令集

我们都知道 *.java 源代码经过编译器编译后会生成 *.class 文件,方法体中的代码会存放在方法表中 Code 属性中(接口和抽象类除外,没有 Code 属性).Code 属性的结构:attribute_name_index -> UTF8(Code)attribute_lengthinfo{max_stackmax_localscode_lengthcodeLin...

2020-02-18 20:01:03 550

原创 虚拟机平台无关性(二)

字段表集合字段表 (field_info) 用于描述接口或类中申明的变量. 字段(field) 包括类级别变量以及实例级别变量,但不包括在方法内部申明的局部变量.在 Java 中描述一个字段包含哪些信息?1.作用域(private/public)、实例变量还是类变量(static)、可变性(final)、并发可见性(volatile)字段数据类型(基本类型、对象、数组)、字段名称.字段表结...

2020-02-18 11:56:26 134

转载 【JVM虚拟机】(7)---深入理解Class中-属性集合

转载:https://www.cnblogs.com/qdhxhz/p/10693324.html之前有关class文件已经写了两篇博客:1、【JVM虚拟机】(5)—深入理解JVM-Class中常量池2、【JVM虚拟机】(6)—深入理解Class中访问标志、类索引、父类索引、接口索引那么这篇博客主要讲有关 字段表集合 相关的理解和代码示例。字段表:用于描述接口或者类中声明的变量,字段包括...

2020-02-17 22:42:59 144

OFBiz 主题修改文档

OFBiz 主题修改文档

2016-05-13

javascript api

javascript api

2016-05-13

poi-bin-3.14.zip

poi 是 apache 提供解析 word 的jar 包,但是它对 word 样式的解析支持不是很好,单 poi 解析 word 的速度快.

2016-03-31

jacob-1.118.zip

jacob 是微软提供解析 word 的jar 包, 他对样式解析的支持挺好

2016-03-31

ace后台模板

这是一个后台html模板,很容易改造成你需要的样式

2016-01-09

基于bootstrap的后台html模板

这是一套基于bootstrap的后台模板UI,里面有很到比较酷的页面和效果,个人感觉还不错

2015-12-26

基于c语言实现的五子棋

五子棋,基于c语言实现的,该功能基本实现了,但是界面比较丑陋,这个有待后续完善

2015-12-19

空空如也

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

TA关注的人

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