- 博客(30)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
原创 quartz2.3任务管理的源码分析
概述quartz在任务管理中,先把任务存在某个地方(QuartzSchedulerResources),等到时机到了(触发trigger),再由调度线程(QuartzSchedulerThread)把该任务取出来放到线程池中运行。因为主线程的QuartzScheduler会操作QuartzSchedulerResources,把任务存入quartz;调度线程也会操作QuartzSchedu...
2015-12-30 16:41:38 577
原创 quartz线程管理的源码分析
概述quartz启动后有多个线程同时在跑。启动时会启动主线程、集群线程、检漏线程、工作线程。主线程负责查询到需要触发的线程,并放入到线程队列。一、主线程QuartzScheduleThread关于QuartzScheduleThread是quartz启动时开始启动,用于trigger的获取、触发,并放入到线程池中执行。二、线程池SimpleThreadPool线程池的初使化:new...
2015-12-23 12:51:42 750
转载 Jackson 框架
Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。Jackson 社 区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson 是最流行的 json 解析器之一 。 Spring MVC 的默认 json 解析器便是 Jackson。 Jackson 优点很多。 Jackson 所依赖的 jar 包较少 ,简单易用。与其他 J...
2015-12-23 12:09:50 3026
转载 使用PropertyPlaceholderConfigurer指定配置文件和@Value 注解获取properties值
为了简化读取properties文件中的配置值,spring支持@value注解的方式来获取,这种方式大大简化了项目配置,提高业务中的灵活性。一、两种使用方法1、@Value("#{configProperties['key']}")2、@Value("${key}")二、配置2.1 @Value("#{configProperties['key']}")使用2.1.1配置文件:[html] vi...
2015-12-23 00:26:47 4500
转载 java反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但
2015-12-23 00:15:30 321
转载 Spring事件驱动模型
1、在spring的配置文件中导入命名空间 xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/context http://www.springframework.org/schema/context...
2015-12-22 23:51:04 1153
转载 ThreadLocal的内存泄露的原因分析+避免方法
前言在分析ThreadLocal导致的内存泄露前,需要普及了解一下内存泄露、强引用与弱引用以及GC回收机制,这样才能更好的分析为什么ThreadLocal会导致内存泄露呢?更重要的是知道该如何避免这样情况发生,增强系统的健壮性。内存泄露内存泄露为程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光,广义并通俗的说,就是:不再会被使用的对象或者变量占用的内存不能被回收,就是内存泄露。强引用与弱引用强引用,使用最普遍的
2015-12-22 23:36:42 457
转载 HttpClient连接池原理
一、背景HTTP协议是无状态的协议,即每一次请求都是互相独立的。因此它的最初实现是,每一个http请求都会打开一个tcp socket连接,当交互完毕后会关闭这个连接。HTTP协议是全双工的协议,所以建立连接与断开连接是要经过三次握手与四次挥手的。显然在这种设计中,每次发送Http请求都会消耗很多的额外资源,即连接的建立与销毁。于是,HTTP协议的也进行了发展,通过持久连接的方法来进行socket连接复用。从图中可以看到:在串行连接中,每次交互都要打开关闭连接 在持久连接中,第一次
2015-12-20 12:13:07 8565
转载 NIO中存在的bug—epoll空轮询
IO&NIO介绍IO读取NIO读取NIO中epoll空轮询表现public static void main(String[] args) { Selector selector = Selector.open(); System.out.println(selector.isOpen()); Server...
2015-12-20 10:44:30 1109
转载 html5 canvas事件处理(用event.layerX和layerY属性表示Canvas内部坐标系中的坐标)
DOM是Web前端领域非常重要的组成部分,不仅在处理HTML元素时会用到DOM,图形编程也同样会用到。比如SVG绘图,各种图形都是以DOM节点的形式插入到页面中,这就意味着可以使用DOM方法对图形进行操作。比如有一个元素,可以直接用jquery增加click事件$(‘#p1’).click(function(){…})”。然而这种DOM处理方法在HTML5的Canvas里不再适用,Canvas使用
2015-12-18 16:19:21 2537
原创 canvas translate
平移变换,故名思议,就是一般的图形位移。比如这里我想将位于(100,100)的矩形平移至(200,200)点。那么我只要在绘制矩形之前加上context.translate(100,100)即可。这里的translate()只传入两个参数,其实就是新画布坐标系原点的坐标。下面结合代码来看看效果 平移变换 body { back
2015-12-18 16:13:51 695
原创 文件下载接口的优化实践
文件下载接口的需求:接口可以正常下载时, 响应的content-type为application/octet-stream;charset=UTF-8. 返回的是一个文件; 接口出现异常时,响应的content-type为application/json, 返回的是包含错误码、错误信息的json格式;过程一: 文件写入response.outputStream, 方法返回值为void@RequestMapping("/downloadFile") public void downlo.
2015-12-18 16:01:01 1076
转载 DOCTYPE声明作用
网页中用了 <!DOCTYPE html... 就表示该页面采用了W3C标准,这样做可以增强页面的兼容性,降低对浏览器的依赖性。不加这一行,就表示页面采用浏览器本身的解析标准,这样会造成页面在不同的浏览器(IE、火狐等)可能出现不同的显示效果。
2015-12-18 15:47:48 518
转载 用wireshark抓包分析tcp
Wireshark 窗口介绍 WireShark 主要分为这几个界面1. Display Filter(显示过滤器), 用于过滤2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表3. Packet Details Pane(封包详细信息), 显示封包中的字段4. Disse
2015-12-15 10:12:06 8380
转载 spring boot应用启动原理分析
spring boot应用打包之后,生成一个fat jar,里面包含了应用依赖的jar包,还有Spring boot loader相关的类Fat jar的启动Main函数是JarLauncher,它负责创建一个LaunchedURLClassLoader来加载/lib下面的jar,并以一个新线程启动应用的Main函数。
2015-12-10 22:55:12 2827
转载 BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor
一、InitializingBean接口说明InitializingBean接口为bean提供了属性初始化后的处理方法,它只包括afterPropertiesSet方法,凡是继承该接口的类,在bean的属性初始化后都会执行该方法。package org.springframework.beans.factory;/** * Interface to be implemented by...
2015-12-09 21:23:39 495
原创 提高程序鲁棒性笔记
1、fastJson的JSON.parseObject(String text)方法在传入text为""时,返回的JsonObject为null。
2015-12-09 20:15:51 514
原创 httpcomponents学习笔记
EntityUtils.toString(HttpEntity httpEntity, String contentType)方法根据指定编码,解析HttpEntity的body内容。
2015-12-09 19:24:12 378
转载 setImageResource和setImageDrawable区别
ImageView设置图片的方式有很多钟,可以在xml里面写android:src=”@drawable/xxx”,也可以在java代码里面设置。在java里面的设置方式也有多种,方法包括:setImageResource,setImageDrawable,setImageBitmap。在xml里面设置实际上和在java里面调用setImageResource是一样的,当然xml多了一个解
2015-12-09 17:52:38 568
原创 kafka2.2源码分析之幂等设计实现(exactly once语义实现)
概述幂等性生产者能实现单个producer对同一个<topic ,partition>的exactly once语义。producer端Producer 后台发送线程 Sender,在 run() 方法中,会先根据 TransactionManager 的 shouldResetProducerStateAfterResolvingSequences() 方法判断当前的 P...
2015-12-09 17:04:05 634
转载 kafka中partition和消费者对应关系
1个partition只能被同组的一个consumer消费,同组的consumer则起到均衡效果消费者多于partitiontopic: test 只有一个partition创建一个topic——test,bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test在g2组中启动两个consumer,1. bin/kafk
2015-12-08 17:20:12 974
原创 kafka2.2源码分析之AddPartitionsToTxnRequest
kafkaProducer调用send()方法发送数据判断是否启用事务,如果启用事务,添加包含消息的parition到事务缓冲队列中。if (transactionManager != null && transactionManager.isTransactional()) transactionManager.maybeAddPart...
2015-12-08 16:56:03 752
转载 Java IO流之装饰模式与适配器模式讲解
转载自:Java IO流之装饰模式与适配器模式讲解 在Java IO流中,我们经常使用的是字节流与字符流,下面附上几张图可以很清楚的了解他们之间的继承关系,图片来源于网络,在此感谢图片的制作者。1、字节流各个类的继承关系:2、字符流各个类个继承关系:一、装饰模式解读:什么是装饰模式呢?就比如有一个瓶子,我为了让它好看点,给它插上些花,这就起到了装饰作用。 在我们的日常使用开发中,经常看到这各...
2015-12-06 22:55:40 474
转载 装饰模式
装饰模式的角色 抽象构件角色(Component):给出一个抽象接口,以规范准备接收附加责任的对象。 具体构件角色(Concrete Component):定义将要接收附加责任的类。 装饰角色(Decorator):持有一个构件(Component)对象的引用,并定义一个与抽象构件接口一致的接口。 具体装饰角色(Concrete Decorator):负责给构件对象
2015-12-06 22:25:45 229
原创 装饰器模式之java IO流(FilterOutputStream对用户透明及它的作用)
例如现在有这样一个需求:读取一个文件里面的内容,将文件里的内容所有的小写字母都转换成大写的。这个时候我们就可以通过去扩展IO流去做。package com.unis.io; 2. 3.import java.io.BufferedReader; 4.import java.io.File; 5.import java.io.FileReader; 6.import java.i...
2015-12-06 22:05:45 723
原创 kafka2.2源码分析之服务端处理初始化ProducerId请求
概述control message:因为事务存在commit和abort两种操作,而客户端又有read committed和read uncommitted两种隔离级别,所以消息队列必须能标识事务状态,这个被称作Control Message。为了区分写入Partition的消息被Commit还是Abort,Kafka引入了一种特殊类型的消息,即Control Message。该类消...
2015-12-04 15:35:21 1368
原创 kafka2.2源码分析之服务端处理 findCoordinator 请求
概述分布式事务:producer可能会给多个topic,多个partition发消息,这些消息也需要能放在一个事务里面,这就形成了一个典型的分布式事务。事务协调者:因为producer发送消息可能是分布式事务,所以引入了常用的2PC,所以有事务协调者(Transaction Coordinator)。Transaction Coordinator和之前为了解决脑裂和惊群问题引入的Group...
2015-12-04 15:33:47 1130
原创 kafka2.2源码分析之handleEndTxnRequest
producer epochTransactionalId能关联producer,也需要避免两个使用相同TransactionalId的producer同时存在,所以引入了producer epoch来保证对应一个TransactionalId只有一个活跃的producer epoch。TransactionStateManagerTransactionStateManger是Tran...
2015-12-04 14:48:54 737
翻译 Transactions in Apache Kafka
在上一篇博客中,我们介绍了kafka的一次性语义。这篇博客将涵盖多个消息投递语义,介绍幂等生产者、事务生产者以及kafka stream的一次性语义。Transactional Semanticsatomic multi-partition writesTransaction实现了写入多个topic和partition的原子写入。例如,如果消费者在topic partition tp0...
2015-12-04 11:48:06 462
原创 kafka2.2源码分析之leader epoch
概述Kafka使用HW值来决定副本备份的进度,而HW值的更新通常需要额外一轮FETCH RPC才能完成,故而这种设计是有问题的。它们可能引起的问题包括:备份数据丢失 备份数据不一致Kafka 0.11版本之后引入了leader epoch来取代HW值。Leader端多开辟一段内存区域专门保存leader的epoch信息,这样即使出现上面的两个场景也能很好地规避这些问题。Epoch...
2015-12-03 21:31:01 1383
viewpager实现页面导航之三
2015-07-22
viewpager与预编译的点布局实现页面导航效果
2015-07-20
导入第三方类库却出现the importXXX can not be resolved
2015-06-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人