- 博客(14)
- 资源 (6)
- 收藏
- 关注
原创 Kafka-producer端-network层消息发送的源码探究
前面我们对应用层的一些原理进行了特别的源码跟踪分析,今天我们就深入到网络层,看下producer端的sender线程是如何把一个消息发送到server端的。 Sender实现了Runnable接口,最后被一个IOThread启动,核心的逻辑是在一个void run(long now)方法中去实现的,具体的代码解释之前的博客中有,这里就不一一介绍了,这里种点介绍发送的最后两个流程,即s...
2016-08-24 17:41:49 233
原创 Kafka producer client 源码包核心api学习
上一篇博客,对producer的设计中的我所关注的点,比如如何进行partition,如何保证可靠发送(ack),消息在producer端的内存数据结构等,根据消息发送的流程,对代码进行了一个稍微的梳理和学习,但是还有一些疑问,暂时不打算关注,比如如何确保有序,协议层和网络层等。 看完了之前的流程,头脑有点晕晕的,今天打开client的源码包,挑出上次梳理流程中出现过的api和之前没有...
2016-08-23 20:58:21 248
原创 kafka-producer端-系统设计关注点的源码探究
目前我对kafka producer的关注点大概有这三个:1.producer如何去支持分区(分布式);2. 如何保证消息的可靠发送(ACK);3. 如何保证可用性(异步之后,如何对内存进行管理(缓存消息在内存中的存储结构),以及OOM后发送线程的状态,以及IO线程的实现)。所以今天着重这三个点去了解源码的实现,其余的点如producer端对有序的保证,协议层,网络层的实现等后期有时间...
2016-08-22 16:08:00 239
原创 mysql 引擎学习札记
[size=medium]1. ISAM : 擅长读取,读取速度快,且不占用大量的内存和存储,缺点:不支持事务,不能容错(说法有待商榷)2. MYISAM: ISAM的扩展格式和缺省的数据库引擎;提供了ISAM没有的索引支持和大量的字段管理功能,而且提供了一种称为表格锁定的机制,来优化并发的读写,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MYIS...
2015-11-09 21:05:15 151
原创 Mongodb 关心问题札记
[size=medium]1.Mongodb目前尚未找到比较优雅的事务实现方案,一般的方案请参考http://www.tuicool.com/articles/f6ZBjm2.Mongodb的隔离级别是默认的uncommited read,因为mongo'并不是实时的刷盘的,mongo启动默认会把数据文件同步到称为shared view内存中,如果开启了journal,系统会再开辟一块内存区域...
2015-11-09 17:59:02 138
项目中单元测试容易出现的普遍问题归纳(Junit/Spring/Spring-test/Dubbo/RocketMQ/JAVA)
最近公司要求项目在使用maven构建的时候不能跳过test的生命周期,也就是通过mvn test命令需要将整个项目运行起来。因为之前项目组的成员都是在eclipse中去执行的unit test,在maven对所有模块构建的都是直接-Dmaven.test.skip=true的方式直接跳过UT的。 这次刚好借这个机会把项目所有模块中的UT整理下,在整理的过程中遇到了很多的问题,这边...
2015-08-14 20:16:43 630
原创 数据库完整性约束和三大范式
完整性约束主要表现在参照完整性和实体完整性 ; 实体完整性是用来约束表内数据完整性的,主要体现在对主键的约束上,即主键的唯一性约束并且不能为空,即每个主键只能引用唯一一条数据。 参照完整性是用来约束有关系的表之间数据的完整性的,简单可以描述为一个实体不能引用另外一个不存在的实体。 三大范式,简单来说: 第一范式,列的原子性。即列属性不可以再拆分为其他的属...
2014-03-14 14:57:36 864
原创 关于cookie的"跨域"(一级域)
第三方cookie和第一方的cookie并不是技术上的区分,而是业务上的区别,我很赞同这句话,因为我觉得第三方和第一方都是一个相对的概念,其实我们操作的都是自己域下的cookie,只是在某种情景下的操作,我们称之为第三方域下cookie的操作 ...
2013-09-09 10:45:48 554
原创 关于cookie的"跨域"(一级域)
注:此处讲的是跨一级域操作cookie,如果只是跨二级域的话,很简单,只需要设置cookie的domian为一级域名,并辅以path属性的设置即可;关于跨域,首先我们要明确一个概念,根据安全策略,我们永远不可能操作第三域的cookie,比如在A域的页面试图去读取一个domian为B域的cookie;或者在域A的页面试图通过域A页面的JS或者来自域A的http请求返回让浏览器去写入一个domai
2013-09-06 22:52:57 9227
原创 spring aop的使用
[b]1.基于@AspectJ[/b](1)导入相应的包:aspectjweaver-1.6.10.jar 和使用Pointcut和Advice接口描述切点和增强不同,@AspectJ采用注解的方式来描述切点和增强 首先定义一个javabean[code="java"]@Aspect //定义切面public class LogginInterceptor {...
2012-11-16 14:33:10 95
原创 Ext和springMVC结合实现json数据传输
第一种方式,使用springMVC内置的json支持1.首先导入jackson的两个包jackson-core-lgpl-1.2.1.jar和jackson-mapper-lgpl-1.2.1.jar,后面附上了这两个包,可以下载。2.配置springMVC的配置文件[code="java"] ...
2012-11-12 16:12:27 190
原创 关于静态代理和动态代理
首先用代码演示一个简单的静态代理实现,程序猿认为代码是最有说服力的。本例都是基于JDK的动态代理,有关cglib的代理,这里没有介绍,不过大同小异。一.静态代理1.首先创建一个实体类:User[code="java"]public class User { private String username; private String email; pu...
2012-11-09 14:48:40 111
原创 spring事务管理
spring事务管理一般有三种方式:编程式,声明式,配置式编程式事务使用的不多,所以在这里就先不总结了。1.配置式 (1) 配置事务管理器 这里以hibernate事务管理器为例 首先需要配置HibernateTransactionManager: [code="java"] [/code...
2012-11-08 15:44:01 158
原创 spring 配置数据源的方式
就我个人目前的实践而言,用到的数据源配置方式大概有这么几种,现总结如下: 1.使用spring本身的数据源实现类 Spring本身也提供了一个简单的数据源实现类DriverManagerDataSource ,它位于org.springframework.jdbc.datasource包中。这个类实现了javax.sql.DataSource接口,但 它并没有提供池化连接的机制...
2012-11-08 13:07:28 105
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人