`
yznxing
  • 浏览: 369975 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
前面的简介: strongReference:强引用 softReference:软引用。 weakReference:弱引用 phtomReference:虚引用   一:strongReference String a = new String("hello world"); String b=a;  咯,这里b就是个强引用咯。反正就是会一直指向那个String的。也就是大家最常用的。   二:softReference String a = new String("hello world"); Refer ...

mapMaker使用后记

    博客分类:
  • java
在上一篇使用   google Collection的MapMaker 的时候,提到了一个demo。 接下来做了一个修改,记录下其中的现象。 import java.util.concurrent.ConcurrentMap; import java.util.concurrent.TimeUnit; import com.google.common.base.Function; import com.google.common.collect.MapMaker; /** * @author guoliang created GoogleColTestMain.ja ...
之前在使用google Collections的MapMaker的时候,比较正式的写的时候,map中存放的Key是我自己写一个CacheKey的Object,但是在存放过后,再通过cache的get却总是找不到缓存记录,心里纳闷了很久为啥。           无奈之下,debug进去了get的源码,发现了。。。            这里就放HashMap的get代码,其它类型的map都差不多类似: public V get(Object key) { if (key == null) return getForNullKey(); int hash = h ...
       前几天准备在写一个本地缓存的时候,有一个功能是设置超时时间,我当时用的是每次get的时候判断上次get的时间,跟当前时间对比看是否超过预期时间,来决定是否过期的。        RednaxelaFX提示我说,可以考虑使用googleCollection的MapMaker,除了可以设置超时功能外,还可以绑定key的未取到值的function,当通过get(key)取缓存为空的时候,可以通过这个绑定的function来将返回值put到缓存中,留着下一次get。        听完这些介绍,心动不已,找个时间,简单的test了下MapMaker,果然感觉很强大。         ...
     HttpClient在使用中有两个超时时间,是一直接触和使用的,由于上次工作中使用httpClient造成了系统悲剧的情况,特地对它的两个超时时间进行了小小的测试,在这里记录下。        测试版本为HttpClient——3.1        一:连接超时:connectionTimeout        1:指的是连接一个url的连接等待时间。        2:设置方法为:        public class TestHttpClientMain { /** * @param args */ public static void ...
全新的思路   我们在第三和第四章中讨论的压缩模型都是基于对信息中单个字符出现频率的统计而设计的,直到 70 年代末期,这种思路在数据压缩领域一直占据着统治地位。在我们今天看来,这种情形在某种程度上显得有些可笑,但事情就是这样,一旦某项技术在某一领域形成 了惯例,人们就很难创造出在思路上与其大相径庭的哪怕是更简单更实用的技术来。 我们敬佩那两个在数据压缩领域做出了杰出贡献的以色列人,因为正是他们打破了 Huffman 编码一统天下的格局,带给了我们既高效又简便的“字典模型”。至今,几乎我们日常使用的所有通用压缩工具,象 ARJ,PKZip,WinZip,L ...
       之前在看spring注解的时候,有看到再配置文件里面定义component scan package就能自动扫描对应包下面的class, 然后根据注解生成相应的bean。自己对这个功能很好奇,就搜了下,找到了实现的关键代码,记录下。后续再对这段代码深入学习。     /** * 从包package中获取所有的Class * * @param pack * @return */ public static Set<Class<?>> getClasses(String pack) { // 第一个class ...
1:在java的服务端代码:   public class SimpleServerSocket { public static void main(String[] args) { try { ServerSocket server = new ServerSocket(6789); Socket client; while (true) { try { client = server.accept(); ...
分布式领域CAP理论,Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容错性) 可靠性定理:任何分布式系统只可同时满足二点,没法三者兼顾。忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。关系数据库的ACID模型拥有 高一致性 + 可靠性 丧失可用性:Atomicity原子性:一个事务中所有操作都必须全部完成,要么全部不完成。Consistency一致性. 在事务开始或结束时,数据库应该在一致状态。Isolation隔离层. 事务将假定只有它自己在 ...
四色原型是诞生于90年代,现在被广泛使用的一种系统分析方法,如Borland的Together架构师版,准确地说,是由Peter Coad 和 Mark Mayfield首先提出[Coad92],然后由David North拓展[Coad95-97] moment-interval role catalog-entry-like description party, place or thing   前面已经说过,域建模是整个软件系统的龙头,在现代Java技术如JiveJdon3.0开始之前,我们都是需要领域建模,也就是在UML中画出类图,然后标记上类图四种关系(关联、依赖、继 ...
SOA的核心是:暴露然后处理 expose and handle,SOA使事件Event跨系统流动EDA是以事件为核心:什么时候触发 然后做什么。EDA是更加松散耦合,有极强的巨大事务处理能力ESP—Event Stream Processing:监视事件数据流,分析这些事件。CEP—Complex Event Processing:以更加动态方式监测。Esper是一个ESP/CEP容器或框架,实际就是一个JAR包,能整入大部分系统。Esper的特点就是:你可以对事件进行监测,比如你设定告诉Esper,发送的事件中某个参数不能低于某值,这样,当有各种事件通过Esper发送时,Esper就会帮助你 ...
各位观众朋友大家好,这里是InfoQ中文站的赖翥翔,现在在首届QCon北京大会的现场,坐在我旁边的是来自豆瓣网的洪强宁。强宁你好,向大家介绍一下自己以及自己和豆瓣的联系。 我是大概在06年的3月份加入豆瓣的。当时应该是豆瓣的02号程序员。01号是阿北。现在是任豆瓣的首席架构师。负责豆瓣技术开发的相关工作。 我记得在之前社区中有对豆瓣高并发能力的讨论,豆瓣现在的用户数量以及访问量如何?用了多长时间达到了现在的水平?
  最近想对项目中的所有bean进行一个代理。然后监控bean得方法的使用情况。         刚开始想的方法是:重写项目的beanFactory,然后再getBean的使用,对结果object进行一个代理,达到我的目的。但是发现重写getBean的方法,无法对bean中的依赖注入的bean(set进来的bean)进行代理。        正好看到了beanPostProcessor的使用方法。可以在spring的xml的配置一个BeanPostProcessor,然后对所有的bean进行一个代理处理,正好可以满足我的需求! BeanPostProcessor代码如下: ...
Consistent hashing算法      网站为了支撑更大的用户访问量,往往需要对用户访问的数据做cache,对于访问量特别大的门户网站,一般都提供专门的cache服务机群和负载均衡来专 门处理缓存,负载均衡的算法很多,轮循算法、哈希算法、最少连接算法、响应速度算法等,hash算法是比较常用的一种,它的常用思想是先计算出一个 hash值,然后使用 CRC余数算法将hash值和机器数mod后取余数,机器的编号可以是0到N-1(N是机器数),计算出的结果一一对应即可。     我们知道缓存最关键的就是命中率这个因素,如果命中率非常低,那么缓存也就失去了它的意义,因此实际生产 ...
一. 最常见的annotation @Override:用在方法之上,用来告诉别人这一个方法是改写父类的 @Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上. @SuppressWarnings:暂时把一些警告信息消息关闭 @Entity:表示该类是可持久化的类 二. 设计一个自己的Annotation      先看代码再讲话  
Global site tag (gtag.js) - Google Analytics