自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 jdk动态代理和cglib动态代理小记

1.代理相关代理是什么有一种设计模式就叫做代理模式,说的大概意思是当访问某个对象的时候通过其他一个对象来间接的调用,而直接访问的那个对象就是所谓的代理。代理就像我们去干一件事情经过的中间人那个角色。为什么要使用代理比如我们要访问的对象在远程网络的另一台机器上,那么这个过程可能涉及到网络编程等其他复杂操作,如果有一个代理专门来干这件事情,调用者只需要调用本地的代理就可以了。代

2015-09-15 14:48:37 351

原创 悲观锁与乐观锁

悲观锁和乐观锁都是为了防止同时修改数据导致的一系列问题,但是悲观锁是依赖于数据库的锁机制,对每次请求上锁,可能导致并发性降低的问题。而乐观锁利用一些技巧实现了锁的效果,并迅速失败,避免了上锁时间过长带来的并发问题。 悲观锁select column ... from table tablename where [condition] for update;该sql语句对查询的结果上锁,

2015-09-10 14:15:47 369

原创 zookeeper选举算法之FastLeaderElection

一、算法选择zookeeper的选举算法主要有三种,由createElectionAlgorithm确定,而electionAlgorithm不配置的情况下默认为3,选用了FastLeaderElection。protected Election createElectionAlgorithm(int electionAlgorithm){ Election le=null

2015-09-07 17:47:57 904

原创 分布式锁实现

最近项目上需要用到分布式锁,研究了以下两种方案。一、zoomkeeper实现zookeeper 实现分布式锁,主要是通过在一个节点下为每个服务器建立一个子结点,然后通过排序来实现锁的获得与解锁。假设有三个服务器,序号分别为1,2,3,具体步骤如下:1.建立root节点/root。2.在root节点下建立三个子结点/root+{1,2,3}。3.服务器i获取/root节点下的

2015-07-23 17:28:35 519

转载 c3p0 配置(转载)

c3p0详细配置官方文档 : http://www.mchange.com/projects/c3p0/index.html3301000false属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。Default: null-->Test保留,

2015-06-17 18:35:58 439

原创 Trove 集合类学习

trove把java原生的集合类范型去掉,而用具体的类型集合来取代。这造成了类型比较多,但是同时针对具体类型优化后的效果比java原生集合类还是效果上要好些。对HashMap和TIntIntHashMap做了一个对比, public static void main(String args[]) throws JSONException { long start = Sy

2015-06-05 10:48:40 620

转载 linux 下find、locate、whereis、which以及type命令使用

1.find用法 find 例如: find /opt -name "*.log" -exec rm -rf {}2.locatelocate 相当于find -name,只不过是利用了一个数据库中的内容来快速定位,该数据库每天更新一次。也可以用updatedb来更新例如:locate ./m 查找当前目录下m开头的文件3.whereis用于搜索程序名,包括

2015-05-21 14:15:30 456

原创 lucene 的两种join 方式

使用lucene进行筛选的场景往往不是简单的一个一个document的写入,document之间会有层级关系,比如美团筛选中的商家信息和deal信息,一个商家下面挂有多个deal的信息。进行筛选和排序的时候需要考虑商家的条件和deal的条件,比如通过价格排序就需要从deal纬度去考虑。lucene提供了两种方式完成这种场景的筛选。Index-time joinsThe index-

2015-05-20 16:58:09 941

原创 false sharing

最近看到关于false sharing的内容,记录一下,防止以后忘记。false sharing是多核平台上不同线程去读写不同数据容易造成的一个问题。core 读取数据不是直接从内存中读取,而是将数据从内存中载入到L2 cache,再从L2载入到L1cache,L1是各个core独享的,L2是共享的。一般载入的数据是以64byte为一个cache line载入。当执行于两个core的两个线程A

2015-05-20 10:59:05 452

原创 c++重<<操作符

因为作为一个类的成员函数,ostream& operator如果要重载friend ostream& operator

2013-12-08 20:59:10 496

原创 Java反射机制初了解

开始接触spring,但是发现好多东西都不会,需要很多基础知识才能学好spring。今天看到java的反射机制,简单总结,以记之,供后面学习。先上一个代码import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.

2013-11-17 15:36:26 482

原创 编译期确定类型关系

假设两个类型T和U,怎样能够在编译器知道他们是否能够转换?这样可以避免使用dynamic_cast之类的运行期函数,提高运行效率。sizeof是解决问题的关键,不管表达式有多复杂,sizeof会直接传回大小,不需托到执行期才评估。通过定义两个重载函数,参数分别是U类型和任意类型,用T对象来调用这个函数,如果调用的是U类型参数的版本,则说明T类型可以自动转换成U类型。为了在编译期就能发现

2013-11-06 23:18:00 531

转载 C++类型转换总结

C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类

2013-11-06 22:25:05 364

原创 两层嵌套for循环的效率比较

情况一:两层for循环,外层循环次数为1000000,内层循环次数为10。情况二:两层for循环,内层循环次数为1000000,外层循环次数为10。正常情况下,次数多的循环放在内层,会减少cache更新数据的次数,当离开内层循环的时候会恢复外层的计数器,外层循环次数越少,恢复计数器的次数越少,效率较高,由此看来情况二更加高效。从cpu指令执行机制上来分析,因为基本所有cpu都有

2013-11-05 23:41:21 15743 2

原创 模板函数的重载

由于template不支持函数的偏特化,所以我们需要利用重载来处理。假如有一个函数create定义如下templateT* Create(const U & arg){ return new T(arg);}我们需要对这个函数偏特化处理,如果模板支持函数的偏特化,则应该是这样定义//非法的定义templatewidget* Create(const U

2013-11-05 11:03:45 659

原创 java webservice 结构

最近开始了解webserviece相关的东西,记录以供未来参考。    访问一个Web Service实际上可以看作调用一个函数,唯一不同的就是这个函数是远程的,这么一说,它和RMI就没有什么本质的区别了。既然是一个函数,当然要有函数的声明了,完成这个工作的就是WSDL,它详细的定义函数的原型,包括函数名、入口参数、出口参数,这就是WSDL中opertion完成的工作。一个远程的函数,还要涉及

2013-11-05 00:17:39 442

转载 C++模版使用技巧--Int2Type

一 Int2Type平常我们所看到的int是一个类型,例如1,2,3...等属于int。 但是这里说的是通过模版使每一个int类型变量都当成是不同的类型。二 C++模版的迟绑定这个名字是我起的,因为不知道正式的称呼是什么,意思是说在使用C++的模版的时候,只有在你的代码里面调用了某个模版方法,在编译的时候才会产生对应的方法,也即编译后的代码中不包含我们没有使用的模版方法。看下面的实例是

2013-11-03 22:41:15 710

空空如也

空空如也

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

TA关注的人

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