- 博客(20)
- 资源 (12)
- 收藏
- 关注
原创 LinkedList源码(1)
在使用List的 时候经常是ArrayList和LinkedList他们两个各有千秋,根据自己的业务使用情况来使用,现在咱们看看LinkedList的底层是如何实现各种操作的。 首先咱先看看他的继承和实现类:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E
2017-07-20 14:48:58
314
原创 ArrayList源码(3)
前两篇写了add和remove相关的源码,现在剩下的是零散的一些和Itr、SubList、ListItr几个相关的代码,这些应用次数也多但是其中相似的代码较多。 先说零散的几个: trimToSize()是减少存储使用的字符序列 ,如果缓冲区大于必要保持其当前的字符序列,那么它可能会调整大小,以成为更加节省空间.public void trimToSize() { modCount++;
2017-07-19 14:19:21
255
原创 ArrayList源码(2)
现在接着说ArrayList的另外一个常用方法remove(). remove同样也是存在两个方法 1.public E remove(int index) { rangeCheck(index); modCount++; E oldValue = elementData(index); int numMoved = size - index - 1; if
2017-07-18 18:49:12
308
原创 ArrayList源码(1)
ArrayList继承了AbstractList并实现了List接口。 三种初始化的方法:第一种:规定List长度的参数public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("I
2017-07-18 16:40:45
230
原创 java volatile
volatile是共享变量“可见性”关键字,当该变量在一处更改后,在其他线程里读到的是这个修改后的值。它是轻量级的synchronized,Volatile变量修饰符如果使用恰当的话,它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度,执行开销更小。 我记着在一次面试里让我写一个并发的程序,我使用volatile来进行计数操作,面试官问我为什么用这个?解释
2017-07-18 14:39:26
225
转载 java transient关键字
transient的作用和使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方
2017-07-17 13:55:34
277
原创 java的final关键字
Java中的final关键字非常重要,它可以应用于类、方法以及变量。将变量,方法和类声明为final代表了什么?使用final的好处是什么?final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。 final关键字的含义 final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了
2017-07-17 13:10:26
226
转载 static特殊用法--Java包静态导入
静态导包就是Java包的静态导入,用import static代替import静态导入包是JDK1.5中的新特性。 一般我们导入一个类都用 import com…..ClassName;而静态导入是这样:import static com…..ClassName.;这里的多了个static,还有就是类名ClassName后面多了个. ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方
2017-07-12 14:21:52
232
原创 static{}静态块
static{}静态块会在类被加载的时候执行一次,一般用来初始化静态变量和调用静态方法。 1、static{}语句块执行的时机,类被加载的准确含义 用Class.forName()显示加载的时候;实例化一个类的时候,如将main()函数的内容改为:Test t=new Test();//这种形式其实和1相比,原理是相同的,都是显示的加载这个类,读者可以验证Test t=new Test(
2017-07-12 14:18:06
343
原创 static用法详解
如果一个类成员被声明为static,它就能够在类的任何对象创建之前被访问,而不必引用任何对象。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。 声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量,例如:声明一个static的变量
2017-07-12 13:53:00
1171
转载 GitHub git clone时,提示warning: remote HEAD refers to nonexistent ref, unable to checkout.
问题描述:最近做Android开发,采用的是Git管理代码,从git服务器上获取Contacts模块的代码:git clone your-git-server提示:warning: remote HEAD refers to nonexistent ref, unable to checkout.并且Contacts模块的代码并没有下载到工作区。解决方法:原因是.git目录下.git/refs/he
2017-06-28 13:25:15
1144
原创 Zookeeper
Zookeeper概述 Zookeeper是一个工具,可以实现集群中的分布式协调服务。 所谓的分布式协调服务,就是在集群的节点中进行可靠的消息传递,来协调集群的工作。 Zookeeper之所以能够实现分布式协调服务,靠的就是它能够保证分布式数据一致性。 所谓的分布式数据一致性,指的就是可以在集群中保证数据传递的一致性。 Zookeeper能够提供的分布式协调服务包括:数据发
2017-06-27 10:35:07
254
转载 HashMap、HashTable和ConcurrentHashMap的区别
#HashMap HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable
2017-05-12 16:48:02
439
转载 HashMap的实现原理
转载的文章原地址HashMap概述:HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap
2017-05-12 13:38:39
152
原创 MySQL主从复制读写分离
原理 mysql主(称master)从(称slave)复制的原理: 1、 master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events) 2、 slave将master的binary log events拷贝到它的中继日志(relay log) 3、 slave重做中继日志中
2017-05-11 21:45:46
212
原创 Redis的哨兵模式(Sentinel)
Redis Sentinel是一个分布式系统,你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个从服务器作为新的主服务器。 Sentinel系统用于管理多个Redis服务器(instan
2017-05-11 15:15:09
399
转载 zookeeper通信模式
Zookeeper的通信架构 在Zookeeper整个系统中,有3中角色的服务,client、Follower、leader。其中client负责发起应用的请求,Follower接受client发起的请求,参与事务的确认过程,在leader crash后的leader选择。而leader主要承担事务的协调,当然leader也可以承担接收客户请求的功能,为了方便描述,后面的描述都是client与Fo
2017-05-11 14:05:03
1581
原创 HBase简单配置学习
一、HBASE概述HBase是一个分布式的、面向列的开源数据库。HBase不同于一般关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase是基于列而不是基于行的模式。HBase利用hadoopHDFS作为其文件存储系统,利用Hadoop的MapReduce中的海量数据,利用zookeeper作为协调工具。提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它介于no
2017-02-15 21:48:13
247
原创 Hadoop 特点 和缺点
一、 Hadoop 特点 1、支持超大文件 一般来说,HDFS存储的文件可以支持TB和PB级别的数据。 2、检测和快速应对硬件故障 在集群环境中,硬件故障是常见性问题。因为有上千台服务器连在一起,故障率高,因此故障检测和自动恢复hdfs文件系统的一个设计目标。假设某一个datanode节点挂掉之后,因为数据备份,还可以从其他节点里找到。namenode通
2017-02-14 22:22:13
17159
原创 hadoop基本介绍及简单安装配置
1、hadoop简单介绍 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)PO
2017-02-14 21:22:22
677
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人