2017年5月3日

分布式锁与实现(二)——基于ZooKeeper实现

摘要: 引言 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 ZooKeeper的架构通过冗余服务实现高阅读全文

posted @ 2017-05-03 10:22 liuyang0 阅读(41) 评论(0) 编辑

2017年4月21日

分布式锁与实现(一)——基于Redis实现

摘要: 概述 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时阅读全文

posted @ 2017-04-21 16:12 liuyang0 阅读(619) 评论(0) 编辑

2017年4月19日

初识ElasticSearch

摘要: 概述 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理PB阅读全文

posted @ 2017-04-19 14:15 liuyang0 阅读(54) 评论(0) 编辑

2017年4月14日

Java解决TopK问题(使用集合和直接实现)

摘要: 在处理大量数据的时候,有时候往往需要找出Top前几的数据,这时候如果直接对数据进行排序,在处理海量数据的时候往往就是不可行的了,而且在排序最好的时间复杂度为nlogn,当n远大于需要获取到的数据的时候,时间复杂度就显得过高。 使用最小堆或者最大堆可以很好地解决Top大问题或者Top小问题。 Top大阅读全文

posted @ 2017-04-14 18:00 liuyang0 阅读(183) 评论(1) 编辑

2017年4月7日

浅析Java中synchronized与static synchronized

摘要: synchronized关键字 synchronized是进行同步处理而保证线程安全。在一个方法中,如果是方法内的私有变量,那个这个变量是线程安全的,但是类中的实例变量是可能会出现线程安全问题的,当多个线程对这个实例变量进行修改,就可能会出现结果并不是我们期望的结果。 线程安全问题 下面一段代码就出阅读全文

posted @ 2017-04-07 17:17 liuyang0 阅读(128) 评论(0) 编辑

2017年4月5日

浅析红黑树(一)——红黑树的插入

摘要: 概述 红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫•贝尔发明的,他称之为"对称二叉B树",它现代的名字是在Leo J. Guibas和Robert Sedgewick于1978年写的一篇论文阅读全文

posted @ 2017-04-05 15:28 liuyang0 阅读(288) 评论(0) 编辑

2017年4月4日

Java实现缓存(LRU,FIFO)

摘要: 现在软件或者网页的并发量越来越大了,大量请求直接操作数据库会对数据库造成很大的压力,处理大量连接和请求就会需要很长时间,但是实际中百分之80的数据是很少更改的,这样就可以引入缓存来进行读取,减少数据库的压力。 常用的缓存有Redis和memcached,但是有时候一些小场景就可以直接使用Java实现阅读全文

posted @ 2017-04-04 11:43 liuyang0 阅读(310) 评论(0) 编辑

2017年3月24日

Java单例模式的各种实现(饿汉、懒汉、静态内部类、static代码块、enum枚举类型)

摘要: 饿汉模式 饿汉模式就是立即加载,在方法调用前,实例就已经被创建了,所以是线程安全的。 懒汉模式 懒汉就是延迟化加载,当需要使用的时候才进行实例化。 线程不安全 线程安全 线程安全但是效率低下 使用DCL双检查锁,线程安全而且效率得到提高,只将进行实例化的代码进行加锁。 使用静态内部类 线程安全,也是阅读全文

posted @ 2017-03-24 20:00 liuyang0 阅读(48) 评论(0) 编辑

2017年3月23日

Java反射与动态代理

摘要: 1.Java反射 当通过反射与一个未知类型的对象打交道时,JVM只简单地检查这个对象,看它属于哪个特定的类。在用它做其他事情之前必须先加载那个类的Class对象。 当使用反射时,就可以在运行时获取类信息,对于反射机制来说,.class文件在编译时是不可获取的,所以是在运行时打开和检查.class文件阅读全文

posted @ 2017-03-23 17:23 liuyang0 阅读(35) 评论(0) 编辑

2017年3月16日

常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)

摘要: 本文使用Java实现这几种排序。 以下是对排序算法总体的介绍。 冒泡排序 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持阅读全文

posted @ 2017-03-16 17:47 liuyang0 阅读(33) 评论(0) 编辑

导航

公告