自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 资源 (25)
  • 收藏
  • 关注

原创 python 备份zk配置项

使用python 脚本备份zk中的配置python 备份代码 python3 back.pyimport osimport os.pathfrom kazoo.client import KazooClientfrom kazoo.client import KazooStatezk = KazooClient('test:2181')...

2019-08-22 16:16:33 554 1

原创 protobuf--序列化原理

前提:了解下Varint32 编码参考:https://blog.csdn.net/convict_eva/article/details/91484163protobuf 是什么: google 提供一个高效的序列化工具优点: 对比json 和 xml 更加节省空间,序列化反序列化效率更高。适合对数据大小和传输速率比较敏感的场合使用。 像...

2019-06-15 16:26:50 2872 1

原创 protobuf--Varint编码

Varint编码:一种变长的编码方式。用字节表示数字值越小的数字,使用越少的字节数表示。通过减少表示数字的字节数从而进度数据的压缩。变长:采用一个或者多个字节表示一个数字,对于小的数字使用一个字节,大的数需要5个字节。实现方式:每个字节的最高位为1,表示后续的一个字节也是数字的一部分。如果字节的最高位为0,则表示结束。使用其它7位来表示数字。所以小于128的数字,使用一个字节就可以表示,大...

2019-06-11 23:41:10 2931

原创 字节序

字节序定义:字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。两种常见表示方式(还有其它的):Little endian 简写:LE 常见翻译:小端序,低端序 解释:将低序字节存储在起始地址。就是高位值放在存储(可以认为是内存)的高位,低位值放在存储的低位, 即:顺序写入到内存中。最符合人的思维,低位高位对应内存地址的高位低位。...

2019-06-05 11:50:20 1567 1

原创 mqtt协议--整理

诞生: MQTT由Andy Stanford-Clark(IBM)和Arlen Nipper(Eurotech,现为Cirrus Link)于1999年开发,用于监测穿越沙漠的石油管道。目标是拥有一个带宽有效且使用很少电池电量的协议,因为这些设备是通过卫星链路连接的,当时这种设备非常昂贵。 与HTTP及其请求/响应范例相比,该协议使用发布/订阅体系结构。发布/订阅是事件驱动的,可以将...

2019-06-03 17:25:06 365

转载 java-BIO 总结

iojava io 包中包含了各种 InputStream  OutputStream   Reader Writer 子类,用途汇总如下:文件网络内存缓存线程内部通信(管道)缓冲过滤解析读写文本(Read、Writer)读写基本类型读写对象  字节流 字符流   字节输入 字节输出 字符输入 字符输出 基类 Input...

2018-11-02 11:23:24 251

原创 spring事物--05源码分析-事务提交

接上一篇在回调TransactionInterceptor.invoke() 方法,会调用 TransactionAspectSupport.invokeWithinTransaction() 方法在这个方法调用完所有的aop及目标方法后,会调用commitTransactionAfterReturning(txInfo) 方法,提交事务。  待续...........

2018-11-02 10:52:06 419

原创 spring事物--05源码分析-创建事务

接上篇第4篇中(https://blog.csdn.net/convict_eva/article/details/83544563) invokeWithinTransaction() 方法中调用了创建事务的方法:TransactionInfo txInfo = createTransactionIfNecessary(tm, txAttr, joinpointIdentificatio...

2018-11-02 10:51:06 499

原创 spring事物--04源码分析-事务处理拦截器的实现分析

事务处理拦截器的实现分析接上篇:https://blog.csdn.net/convict_eva/article/details/83544328通过上面的分析,很明确spring在事务方面aop是怎么玩的了。那么真正要处理事务是ProxyFactory.getObject() 方法返回的代理对象,通过调用代理对象的方法时,拦截器有一个invoker() 方法会被回调(aop的玩法)。...

2018-10-30 16:47:42 573

原创 spring事物--03源码分析入口

版本:spring5.0.6spring 事务处理模块是通过aop功能来实现声明式事务的。通过TransactionProxyFactoryBean 可以生成proxy代理对象,在这个代理对象中通过TransactionInterceptor 来完成对代理方法的拦截,将事务处理功能编织起来;这正是aop的功能。可以参考spring aop 源码分析相关文章。https://blog.cs...

2018-10-30 16:44:18 818

原创 spring事物---02发展历程

1、spring事物apispring 定义事物主要有三个apiTransactionDefinition 定义事物属性PlatformTransactionManager 管理事物,进行提交或者回滚TransactionStatus 表示一个事物运行的状态事物的定义 TransactionDefinitionpublic interf...

2018-10-22 16:18:18 399

原创 spring事物---01使用总结

1、数据库事务隔离级别https://blog.csdn.net/convict_eva/article/details/535613102、spring 事物传播方式https://blog.csdn.net/convict_eva/article/details/585861103、实现方式动态代理 如果类的抽象接口父类,就会使用JDK动态代理实现,只有pulic 修饰...

2018-10-17 15:50:27 569

原创 rocketmq--特性之延迟消息及消息重试

1、消息延迟级别定义    源码 MessageStoreConfig.java 是定义如下:    private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";    可以在brocker配置    messageDelayLevel=1s 5s 10s ...

2018-10-11 15:31:04 3445

原创 rocketmq--特性之顺序消息

应用场景:    网购的时候,我们需要下单,那么下单需要假如有三个顺序,第一、创建订单 ,第二:订单付款,第三:订单完成。也就是这个三个环节要有顺序,这个订单才有意义。RocketMQ可以保证顺序消费 实现原理:    produce在发送消息的时候,把消息发到同一个队列(queue)中。发送消息的时候可以实现MessageQueueSelector类的select 方法,返回的就是que...

2018-09-11 16:00:09 1348 2

原创 spring--aop_2_源码分析之MethodInterceptor

前提:https://blog.csdn.net/convict_eva/article/details/81084833https://blog.csdn.net/convict_eva/article/details/81101432前两篇分析了aop 两种方式实现的大致流程和方式,在这两种实现方式中都有一个很重要的方法获取拦截器链List<Object> chain...

2018-07-18 20:58:59 1727 3

原创 spring--aop_2_源码分析之CglibAopProxy实现

接着上一篇 https://blog.csdn.net/convict_eva/article/details/81084833DefaultAopProxyFactory.createAopProxy() 方法生成AopProxy 代理对象。AopProxy 有两个实现类 JdkDynamicAopProxy,CglibAopProxy。上一篇说的是JdkDynamicAopProxy,这里...

2018-07-18 17:08:13 1614

原创 spring--aop_1_源码分析之JdkDynamicAopProxy实现

aop实现有两种方式1. ProxyFactoryBean方式: 这种方式是通过配置实现2. ProxyFactory方式:这种方式是通过编程实现这里说ProxyFactoryBean ,先上一张ProxyFactoryBean的关系图,后面能用到。示例代码:/** * 代理接口,如果不是接口使用CGLIB代理 */public interface ProxyIn...

2018-07-17 17:49:35 1315

原创 spring--扩展点

扩展点:BeanFactoryPostProcessor 构建 BeanFactory后调用,此时BeanFactory , BeanDefinition 已经解析完毕。BeanPostProcessor 初始化 Bean 对象时调用,所有bean的构建都会调用这个接口的两个方法。两个方法参数传入的bean属性都已经注入完毕。InitializingBean Bean 实例创建后,所有的属性...

2018-07-11 14:38:42 1686 1

原创 java设计模式--原型模式

原型模式定义: 用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象。 原型模式的核心是一个clone方法, 通过该方法进行对象的拷贝, Java 提供了一个Cloneable接口来标示这个对象是可拷贝的,在JVM中具有这个标记的对象才有可能被拷贝。 比如:比如批量发送邮件,邮件模板是一样的,发送给不同的人内容不同,那么就可以把模板 clone 给不同的发送者,发送者修改一下内容模板内...

2018-07-06 16:05:20 830

原创 java设计模式--工厂方法模式 & 抽象工厂模式

工厂方法模式:定义一个用于创建对象的接口, 让子类决定实例化哪一个类。 工厂方法使一个类的实例化延迟到其子类。 角色: Product  抽象产品,负责定义产品的共性,实现对事物抽象的定义 Creator  抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂完成 ConcreteCreator   具体实现工厂 总结一下模板代码:/*** 产品抽象*/public interf...

2018-07-06 14:59:06 249

原创 jvm---6.3、JVM监控工具 VisualVM

运行时监控 VisualVMVisualVM 是jdk发布的功能最强大的运行监视、故障处理、性能分析工具。不需要被监视的程序基于特殊的Agent运行,因此它对应用程序的实际性能影响很小,可以直接使用在生产环境中。实现功能:显示jvm进程及进程配置,环境信息------jps jinfo监视jvm进程的cpu,gc,堆,方法区及线程的信息----jstat jstackdump及分...

2018-06-12 14:11:54 319

原创 jvm---6.2、jstack分析死锁

jstack分析死锁写一个死锁:先写两个锁,LockA, LockB。 在LockA 的opt 方法中调用LockB 方法,在LockB 的opt 方法中调用LockA 的opt 方法/** * A锁 */public class LockA { Lock lock = new ReentrantLock(); public void opt(LockB b...

2018-06-11 17:08:06 534

原创 jvm---6.1、dump 文件分析工具 IBM HeapAnalyzer

IBM HeapAnalyzer 工具   官网:https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544bafe-c7a2-455f-9d43-eb866ea60091 官网翻译如下; HeapAnalyzer允许通过启发式搜索引擎查找可能的Java™堆泄漏区...

2018-06-11 15:52:30 5316

原创 jvm---7、Metaspace

jdk1.8 取消了PermGen,取而代之的是Metaspace (元空间)Metaspace使用的是本地内存不是堆内存,也就是说在默认情况下Metaspace的大小只与本地内存大小有关。可以通过以下参数来指定元空间的大小:-XX:MetaspaceSize 初始空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的...

2018-06-11 13:03:09 496

原创 jvm---6、JVM 分析及监控工具

jdk 自带分析及监控工具jps JVM Process Status Tool 显示所有的HotSpot 虚拟机进程jstat JVM Statistics Monitoring Tool 收集HotSpot 虚拟机各方面的运行数据jinfo Configuration Info for Java 显示虚...

2018-06-11 12:56:55 347

原创 jvm---5、GC 日志及分析

GC 日志及分析实例:Roctetmq jvm 配置JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPer...

2018-06-08 15:04:36 807

原创 Rocketmq 入门--2_控制台安装

RocketMQ有一个对其扩展的开源项目incubator-rocketmq-externals(github点击打开链接),rocketmq-console项目就是管理控制台项目。下载:$ wget https://github.com/apache/rocketmq-externals/archive/master.zip如果安装了git 可以直接git clone解压$ u...

2018-06-06 16:48:43 3148

原创 jvm---4、内存分配及回收策略

内存分配:对象的内存分配就是在堆上分配的(也可以经过JIT 编译后被拆散为标量型并间接地栈上分配) ,对象主要分配在Eden 区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB 上分配,少数情况(如对象较大)会直接分配到老年代。具体的到看使用哪一种垃圾收集器组合和内存相关配置。回收过程:如果一个对象不可达,也不会立刻被回收,要先宣告一个对象死亡,至少要通过两次标记:对象进行可达性分析后...

2018-06-06 11:37:40 209

原创 jvm---3、GC收集分类及配置参数

Serial 是一个单线程收集器,单线程是指进行GC时,必须要暂停所有的工作线程,直到GC 结束。优点:1、简单高效(对于其它GC收集器单线程相比),2、适用于单个CPU 的环境,不会有线程交互的开销。一般Client 模式下的虚拟机使用的是这个GC收集器。缺点:Stop the world新生代采用“复制算法”,老年代采用“标记--整理算法”控制参数:ParNew就是Seri...

2018-06-05 19:08:32 267

原创 jvm---2、GC收集算法

GC收集器算法:1、标记--清除算法2、复制算法3、标记--整理4、分代收集算法写在前面:对象存活算法:GC 收集器对不再使用(死亡)的对象进行内存回收,那么就要判定一个对象是否存活。对象存活算法通过对象可达性分析来判定对象是是否存活的。基本思路是:通过一系列称为“GC Roots”对象作为起点,当一个对象到GC Roots 不可达时,证明对象是不可用的(没有外部对象的引用了,如...

2018-06-05 13:50:18 199

原创 jvm---1、内存区域划分及配置

JVM的内存区域划分jvm 内存可分为方法区、堆 ---------------------- 线程共享的,也就是说在这里面的变量线程不安全。虚拟机栈、本地方法栈、程序计数器 --- 线程独享直接内存 ----- 图中没有画出,记得UnSafe 有方法好像用的是直接内存, 如果 DirectBufferCache 就是使用的直接内存做缓存的其中堆又分为年轻代,老年代。年经代...

2018-06-04 15:38:00 282

原创 Rocketmq 入门--1_部属

入门文章:看了那么多,讲的比较好的: https://m.aliyun.com/yunqi/articles/66110比较全面的:https://blog.csdn.net/column/details/learningrocketmq.html rocketmq中的节点NameServerNameServer是一个几乎无状态节点,所有人信息都一致,可集群部署,节点之间无任...

2018-05-30 15:37:20 618

原创 java设计模式--代理模式

代理模式定义: 为一个对象提供一种代理,用来控制对这个对象的访问。角色分类:1、Subject 抽象主题角色 抽象主题类可以是抽象类也可以是接口, 是一个最普通的业务类型定义, 无特殊要求。2、RealSubject 具体主题角色,被委托角色、 被代理角色。 实现Subject接口,是业务逻辑的具体执行者。3、Proxy  代理主题角色。是委托类、 代理类。 它负责对真实角色的应用, 把所有抽象主...

2018-05-08 15:07:16 178

原创 JDK 动态代理源码分析

JDK动态代理,通过实现被代理类的所有接口,生成一个字节码文件后构造一个代理对象,通过持有反射构造被代理类的一个实例,再通过invoke反射调用被代理类实例的方法,来实现代理。代码入口Proxy.newProxyInstance():public static Object newProxyInstance(ClassLoader loader, Class<?>[] in...

2018-05-08 15:06:14 333

原创 Spring Boot 启动源码分析

spring boot 项目都有个启动类,如下:@SpringBootApplicationpublic class DemoApplication{ public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}写在前面:...

2018-04-24 18:05:45 767

原创 java 线程池总结

线程池1、分类1)、固定线程池ExecutorService executorService = Executors.newFixedThreadPool(10);2)、一个线程池ExecutorService executorService = Executors.newSingleThreadExecutor();3)、根据需要创建线程的线程池,没有核心线程池。每次Executo...

2018-03-30 13:27:43 273

原创 mysql-group by 优化

group bygroup by 操作过程是扫描全表(没有索引的情况),每一个分组都在内存表中创建一行记录,扫描表时会更新临时表中的记录,如果内存表占用完那么就把临时表刷到磁盘中。测试表:CREATE TABLE tb_a(`id` INT(11) NOT NULL AUTO_INCREMENT,`user_id` INT(11) NOT NULL)1、取消group by 的...

2018-03-21 14:19:09 1149

原创 java设计模式--模板方法

模板方法  Template整体算法的设计是一个抽象类, 它有一系列抽象方法, 代表算法中可被定制的步骤, 同时这个类中包含了一些通用代码。 算法的每一个变种由具体的类实现, 它们重写了抽象方法, 提供了相应的实现。模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码。子类实现算法的某些细节,有助于算法的扩展。通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开放-封闭原则...

2018-02-08 11:50:02 433

原创 java设计模式--迭代器模式 Iterator,备忘录模式 Memento,中介者模式 Mediator

迭代器模式 Iterator    JDK 中集合类都有 iterator() 方法,此方法返回一个Iterator 接口的子类,不同的集合对Iterator实现不同。这样对于不同集合就统一定义了访问集合的方法。可以看看源码。备忘录模式 Memento    备忘录(Memento)模式又称标记(Token)模式。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后...

2018-02-08 11:02:36 368

原创 java设计模式-装饰器

装饰器模式: 动态地给一个对象添加一些额外的职责,装饰模式相比生成子类更为灵活。 Component:抽象构件ConcreteComponent 具体构件,要被装饰的类Decorator:装饰角色,具体装饰器的父类ConcreteDecorator: 具体装饰器角色示例: 对一个字符串打印前,进行两个处理:1、转大写,2、删除所有的 aa 字符串。这两步顺序要求不一样就会产生不一样的结果。 伪...

2018-01-30 17:07:54 226

Java加密与解密的艺术

Java加密与解密的艺术

2017-04-05

java AES,DES,3DES,RAS,DSA 加密算法实现

java AES,DES,3DES,RAS,DSA 加密算法实现

2017-03-14

Python编程 从入门到实践

Python编程:从入门到实践 完整版

2016-12-25

cas源码修改-登录页面

cas源码修改-登录页面

2016-10-21

cas源码改造

cas源码改造,添加验证码

2016-10-18

CAS入门测试

CAS入门测试工程

2016-10-14

maven打包dubbo服务接口(maven-assembly-plugin)

maven打包dubbo服务接口(maven-assembly-plugin)

2016-10-10

maven 占位符打包

工程运行环境有研发,测试和生产,不同的运行环境配置不同,使用maven 占位符,不同环境使用不同的配置

2016-09-24

maven 过滤文件夹打包

工程运行环境有研发,测试和生产,不同的运行环境配置不同,maven 打包时指定文件目录,使用指定的文件夹下的配置文件。

2016-09-24

spring 集成quartz 用数据库实现quartz的集群

spring 集成quartz定时任务 用数据库实现quartz的集群

2016-09-09

spring amqp rabbit 消息确认及外部事物

spring rabbitmq 消息确认 外部事物

2016-09-08

spring amqp 配置实现rabbitmq 路由

spring amqp 配置实现rabbitmq 路由

2016-09-02

spring amqp rabbit 标签使用

spring amqp rabbit 标签使用

2016-08-31

rabbitmq 路由spring-amqp实现

rabbitmq 路由spring-amqp 配置实现

2016-08-29

rabbitmq RPC java 实现

rabbitmq RPC java 实现

2016-08-26

rabbitmq 主题java 实现

rabbitmq 主题java 实现

2016-08-25

rabbitmq 路由 java 实现

rabbitmq 路由 java实现

2016-08-25

rabbitmq 发布/订阅 java 实现

rabbitmq 发布/订阅 java 实现

2016-08-24

rabbitmq 工作队列 java 实现

rabbitmq 工作队列 java 实现,消息确认,消息持久化,公平调度

2016-08-23

rabbitmq HelloWorld java 代码

rabbitmq HelloWorld java 工程

2016-08-23

solr-solrj 5.0.0 demo

solr-solrj 5.0.0 和自己搭建的solr服务交互

2015-05-05

ubuntu wps安装文件

ubuntu14.04 wps安装文件 alpha 版

2015-04-11

symbol-fonts_1.2_all.deb

ubuntu 14.04_x64 安装wps 缺少的symbol 字体

2015-04-11

spring in action 中文版

spring in action 中文手册

2012-08-30

play文档-PlayCheatSheet.pdf

play framework的学习应用文档

2011-03-15

空空如也

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

TA关注的人

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