Fork me on GitHub

随笔分类 -  备战阿里

摘要:简介 Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法。 不同的是,Object中的wait() 阅读全文
posted @ 2017-02-20 19:15 郑斌blog 阅读(7562) 评论(0) 推荐(1) 编辑
摘要:简述 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 定义模型的目标 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储 阅读全文
posted @ 2017-02-17 12:04 郑斌blog 阅读(15735) 评论(2) 推荐(8) 编辑
摘要:内存溢出 内存溢出(out of memory),是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给他存了long才能存下的数,就会发生内存溢出。 内存泄露 内存泄露(memory leak),是指程序在申请内存后,无法释放已申请的内 阅读全文
posted @ 2017-02-17 11:13 郑斌blog 阅读(986) 评论(0) 推荐(1) 编辑
摘要:红黑树的本质就是一个二叉查找(排序树)。 红黑树的五条性质: 每个节点非红即黑 根节点为黑 红节点的两个子节点都为黑 每个叶子节点都为黑 对于任一节点而言,其到叶子节点的每一条路径都包含相同数目的黑节点 详细:https://github.com/julycoding/The-Art-Of-Prog 阅读全文
posted @ 2017-02-16 17:28 郑斌blog 阅读(470) 评论(0) 推荐(0) 编辑
摘要:二叉排序树又称二叉查找树(Binary Search Tree,简称BST),它可以是一棵空树,若非空时具有以下性质: 若根结点的左子树非空,则左子树上的所有结点的关键字均小于等于根节点的关键字值; 若根结点的右子树非空,则右子树上所有的结点的关键字均大于等于根节点的关键字值; 根结点的左、右子树也 阅读全文
posted @ 2017-02-12 19:54 郑斌blog 阅读(482) 评论(0) 推荐(0) 编辑
摘要:摘要 JDK1.8相较于1.7对HashMap做了很大的优化,比如加入了新数据结构红黑树、Hash算法的优化和扩容的优化。 本篇结合这些区别,探索HashMap的结构实现和功能原理。 存储结构-字段 从数据结构来看,HashMap是数组+链表+红黑树实现的,如图所示: HashMap中重要的几个属性 阅读全文
posted @ 2017-02-10 22:03 郑斌blog 阅读(895) 评论(0) 推荐(0) 编辑
摘要:简述: ArrayList可以理解为动态数组,与Java中的数组相比,它的容量能动态增长。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组中,因此最好能给出数组大小的预估值; 容量大小也可以在程序中通过ensureCapacity(int minCapacity)方法 阅读全文
posted @ 2017-02-08 17:02 郑斌blog 阅读(668) 评论(0) 推荐(0) 编辑
摘要:数据结构 LinkedList是基于链表结构实现,所以在LinkedList类中包含了first和last两个指针(类型为Node)。Node中包含了对prev节点、next节点的引用,这样就构成了双向的链表。 存储 1.add(E e)方法 该方法首先声明一个新Node l,将链表的最后一个Nod 阅读全文
posted @ 2017-02-08 14:20 郑斌blog 阅读(4456) 评论(0) 推荐(0) 编辑
摘要:简述 Java中Socket分为普通Socket和NioSocket两种,这里介绍Socket。 我们可以把Socket比作两个城市间的交通工具,有了它可以在两城之间来回穿梭,交通工具有很多种,每种交通工具也有相应的交通规则。Socket也一样,也有多种。大多情况下使用的是TCP/IP的流套接字,它 阅读全文
posted @ 2017-02-05 16:17 郑斌blog 阅读(533) 评论(0) 推荐(0) 编辑
摘要:了解注解 在编写代码时,除了源程序以外,我们还会使用Javadoc标签对类、方法或成员变量进行注解,以便使用Javadoc工具生成和源代码配套的Javadoc文档。 /** * 重写toString * @param id * @param name * @return */ public Stri 阅读全文
posted @ 2016-10-16 12:17 郑斌blog 阅读(672) 评论(1) 推荐(0) 编辑
摘要:Web Server 常见的Web Server有Apache Server与Nginx。 Apache Http Server是Apache软件基金会下的一个项目,是一款开源的HTTP服务器软件(它也可以作为邮件代理服务器、通用的TCP代理服务器)。 Nginx之前有配置它的博文,大多数用它来做负 阅读全文
posted @ 2016-09-25 22:23 郑斌blog 阅读(2737) 评论(0) 推荐(1) 编辑
摘要:JVM常用参数 并行收集器相关参数 选择垃圾收集器为并行收集器.此配置仅对年轻代有效.即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集.(此项待验证) CMS相关参数 辅助信息 输出形式: [GC 118250K->113543K(130112K), 0.0094143 secs][Ful 阅读全文
posted @ 2016-09-17 22:56 郑斌blog 阅读(1263) 评论(0) 推荐(0) 编辑
摘要:Timer 使用java.util.Timer是最简单的一种实现任务调度的方法,直接上栗子🌰: 使用 Timer 实现任务调度的核心类是 Timer 和 TimerTask。其中 Timer 负责设定 TimerTask 的起始与间隔执行时间。使用者只需要创建一个 TimerTask 的继承类,实 阅读全文
posted @ 2016-09-11 16:13 郑斌blog 阅读(903) 评论(1) 推荐(0) 编辑
摘要:Receiving 译:这就是我们的消息发送者。我们的消息接收者是通过RabbitMQ的消息推送接收到消息,所以不同于消息发送者那样只是简单的发送一条消息,我们需要保持它一直运行,就像一个监听器一样,用来不停的接收消息,并把消息输出出来。 译:特别注意这个DefaultConsume,这个类是Con 阅读全文
posted @ 2016-09-11 15:58 郑斌blog 阅读(468) 评论(0) 推荐(0) 编辑
摘要:文章主要翻译自RabbitMQ官方文档,主要是为了练习英语翻译,顺便学习一下RabbitMQ😶 其中也记录了一些爬过的坑 Introduction RabbitMQ is a message broker. The principal idea is pretty simple: it accep 阅读全文
posted @ 2016-09-11 14:32 郑斌blog 阅读(1557) 评论(2) 推荐(2) 编辑
摘要:第一次听说感觉高大上,其实也就是一个名词,没有固定的解决方案,不同的业务场景用不同方法实现。 什么是幂等? 软件开发中的幂等通常是系统接口对外的一种承诺,承诺只要调用接口成功,外部多次调用对系统的影响是一致的。 为什么要做幂等? 比如说一个提现接口: 这个接口存在一个典型的调用环境:分布式系统的网络 阅读全文
posted @ 2016-09-03 20:09 郑斌blog 阅读(1201) 评论(1) 推荐(0) 编辑
摘要:同 它们都是Java的一个接口,都是用来实现集合中元素的比较、排序。 异 Comparator位于java.util下; Comparable位于java.lang下; Comparable(可比较的)是在集合内部定义的方法实现的排序。对象的本身已经拥有比较大小的能力; Comparator(比较器 阅读全文
posted @ 2016-08-21 15:07 郑斌blog 阅读(468) 评论(4) 推荐(1) 编辑
摘要:三种不同的用法 注意项: 1.在switch中使用枚举能使代码的可读性更强。 2.如果要自定义方法,那么必须在enum实例序列的最后添加分号。而且Java要求必须先定义enum实例。 3.所有的枚举都继承自java.lang.Enum类,由于Java不支持多继承,所以枚举对象不能再继承其他类。 4. 阅读全文
posted @ 2016-08-01 23:00 郑斌blog 阅读(537) 评论(0) 推荐(0) 编辑
摘要:概述 关键字synchronized的作用是实现线程间的同步。它的工作是对同步的代码加锁,使得每一次,只能有一个线程进入同步块,从而保证线程间的安全性。 直接作用于实例方法(普通同步方法):对当前实例加锁,进入同步代码前要获得当前实例的锁。 直接作用于静态方法(静态同步方法):对当前类加锁(当前类的 阅读全文
posted @ 2016-07-22 22:24 郑斌blog 阅读(1131) 评论(0) 推荐(1) 编辑
摘要:锁分段概述 在某些情况下,可以将锁分解技术进一步扩展为对一组独立对象上的锁进行分解,这种情况被称为锁分段。例如:ConcurrentHashMap。 锁分段的缺点 与采用单个锁来实现独占访问相比,要获取多个锁来实现独占访问将更加困难并且开销更高。通常,在执行一个操作时最多只需获取一个锁,但在某些情况 阅读全文
posted @ 2016-07-19 17:36 郑斌blog 阅读(1629) 评论(0) 推荐(0) 编辑