摘要:
synchronized的使用 synchronized关键字是Java中解决并发问题的一种常用方法,也是最简单的一种方法,其作用有三个:(1)互斥性:确保线程互斥的访问同步代码(2)可见性:保证共享变量的修改能够及时可见(3)有序性:有效解决重排序问题,其用法也有三个: 修饰实例方法 修饰静态方法 阅读全文
摘要:
写在前面 写了什么:Kakfa作为一个分布式消息系统设计过程中考虑的点,碎片知识体系化,细节不展开以后填坑 推荐阅读:有Kafka使用基础,帮助形成完整知识体系 kafka架构 start bin/zookeeper-server-start.sh config/zookeeper.properti 阅读全文
摘要:
happens-before原则 我们编写的程序都要经过优化后(编译器和处理器会对我们的程序进行优化以提高运行效率)才会被运行,优化分为很多种,其中有一种优化叫做重排序,重排序需要遵守happens-before规则,换句话说只要满足happens-before原则就可以进行重排序。 定义:在JMM 阅读全文
摘要:
jvm参数总结 通用参数: -Xms1024m 初始化堆大小(此处的堆泛指jvm内存区域) -Xmx1024m 最大堆大小 -Xmn512m 新生代大小 -Xss256K 每个线程的堆栈大小 -XX:SurvivorRatio=8 新生代中Eden和Survivor的比值 -XX:PermSize= 阅读全文
摘要:
原码 :二进制带有符号位,最高位0表示正,最高位位1表示位负 反码 :正数的反码等于原码,负数的反码等于原码符号为不变其他位取反加1 补码 :正数的补码等于原码,负数的补码等于反码+1 举例 : 5(byte类型)的原码,反码,补码 原码:00000101 反码:00000101 补码:000001 阅读全文
摘要:
synchronized关键字类似于java中的悲观锁机制,接下来介绍一种java的乐观锁机制Unsafe类 CAS CAS简介 CAS全称是Compare And Swap,即比较交换,它是在并发执行时的一种无锁思想,其主要包含三个参数: /** *V主内存中的值 *E表示线程中旧的预期值 *N表 阅读全文
摘要:
创建型 单例模式 饿汉式 评价:在类加载的时候就实例化了对象,而不是当使用它的时候才实例化,会预先占用内存空间,但这在一定的场景下也说不上是缺点,例如:实例化这个单例有磁盘io的操作,如果当使用它的时候才实例化的话就非常影响性能,同时多线程获取单例非常快,不存在竞争的问题, 懒汉式 评价:不需要预先 阅读全文
摘要:
参考http://blog.csdn.net/longgeaisisi/article/details/78637179 阅读全文
摘要:
数组 删除有序数组的重复元素 合并两个有序数组(nums1的空间足够大) 将0移到数组末尾 数组中出现次数超过一半的数字 最长连续1的个数 第一个只出现一次的字符位置 字符串括号匹配 链表 反转链表:输入一个链表,反转链表后,输出链表的所有元素。 合并链表:输入两个单调递增的链表,输出两个链表合成后 阅读全文
摘要:
线程的创建 java提供了三种创建线程的方法: 通过继承 Thread 类本身; 通过实现 Runnable 接口; 通过 Callable 和 Future 创建线程。 继承Thread类 步骤: 继承Thread类 重写run方法 实例化该类,调用start方法 演示: public class 阅读全文
摘要:
类的属性 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable { private static final long serialVersio 阅读全文
摘要:
Boxy 1. package control : install package 2. 选择Boxy theme 3. preferences settings配置: { "color_scheme": "Packages/Boxy Theme/schemes/Boxy Yesterday.tmT 阅读全文
摘要:
类的属性 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { // 版本序列号 static final long serialVersionUID = 阅读全文
摘要:
BST(右)和AVL(左) 比较:AVL树每个结点的左右子树的深度差的绝对值不大于1 B tree 特点:所有结点都包含数据信息,不同查询的效率不同,特殊的:二阶B树就是AVL,三阶B树就是2 3树 B+ tree 特点:B tree的变种,只有叶子结点才包含数据信息,所有的叶子结点有指针连接起来, 阅读全文
摘要:
类的属性 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable { // 实际元素个数 transient 阅读全文
摘要:
类的属性 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { // 版本号 private static final 阅读全文
摘要:
概述 java中的参数传递问题可以根据参数的类型大致可以分为三类:传递基本类型,传递String类型,传递引用类型,至于最终是否可以归纳为值传递和引用传递,根据每个人的理解不同,答案不同,此处不做强调。 传递基本类型 public class Test1 { public static void m 阅读全文
摘要:
<!--done--> 通过反编译深入理解Java String及intern 原文传送门:http://www.cnblogs.com/paddix/p/5326863.html 一、字符串问题 字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究。倒 阅读全文
摘要:
<!--done--> Java8内存模型—永久代(PermGen)和元空间(Metaspace) 查看原文点击传送门:http://www.cnblogs.com/paddix/p/5309550.html 提示:本文做了一些修改 一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机 阅读全文
摘要:
写在前面 本篇博客是基于对动态代理,java的重写,多态特性了解的基础上对于源码的阅读,先提出几个问题 1.从静态代理变成动态代理需要解决两个问题,如何动态实现被代理类的接口并摘取接口中的方法,如果动态的为被代理方法添加附加逻辑 2.给出一个例子: interface a { String get( 阅读全文