Fork me on GitHub

置顶随笔

[置顶]从jvm源码看synchronized

摘要: synchronized的使用 synchronized关键字是Java中解决并发问题的一种常用方法,也是最简单的一种方法,其作用有三个:(1)互斥性:确保线程互斥的访问同步代码(2)可见性:保证共享变量的修改能够及时可见(3)有序性:有效解决重排序问题,其用法也有三个: 1. 修饰实例方法 2. 阅读全文

posted @ 2018-02-06 16:23 unbelievableme 阅读(418) 评论(0) 编辑

[置顶]jdk源码->集合->HashMap

摘要: 一、hash算法 1.1 hash简介 hash,一般翻译为散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出值就是散列值,这种转换是一种压缩映射,也就是散列的空间小于输入的空间,不同的输入可能会形成相同的输出,因此不可以通过散列值来唯一的确定输入值,简单的说就是把任意长度的消息阅读全文

posted @ 2017-11-12 23:40 unbelievableme 阅读(452) 评论(1) 编辑

[置顶]struts2教程&实例

摘要: 1.第一个struts2项目 参考官方配置 http://struts.apache.org/getting-started/ github地址:https://github.com/unbelievableme/maven_hibernate-struts-spring/tree/master/s阅读全文

posted @ 2017-07-21 11:58 unbelievableme 阅读(671) 评论(1) 编辑

[置顶]进程&线程(&java.lang.Thread)详解

摘要: 一.进程与线程 进程 我们在进行操作电脑的时候,通常会打开浏览器,通讯工具等应用程序,这个时候CPU通过作业调度在内存中就会分配一些空间让它们处于宏观上的运行状态(处于可以被CPU执行的状态),而这部分空间资源就可以说是相应的进程占据的,很显然运行不同的程序需要不同的进程,在内存中也为它们分配独立,阅读全文

posted @ 2017-03-16 17:48 unbelievableme 阅读(1435) 评论(4) 编辑

2018年3月12日

volatile关键值

摘要: happens before原则 我们编写的程序都要经过优化后(编译器和处理器会对我们的程序进行优化以提高运行效率)才会被运行,优化分为很多种,其中有一种优化叫做重排序,重排序需要遵守happens before规则,换句话说只要满足happens before原则就可以进行重排序。 定义 :在JM阅读全文

posted @ 2018-03-12 21:38 unbelievableme 阅读(43) 评论(0) 编辑

jvm垃圾收集器

摘要: jvm参数总结 通用参数: Xms1024m 初始化堆大小(此处的堆泛指jvm内存区域) Xmx1024m 最大堆大小 Xmn512m 新生代大小 Xss256K 每个线程的堆栈大小 XX:SurvivorRatio=8 新生代中Eden和Survivor的比值 XX:PermSize=256M 永阅读全文

posted @ 2018-03-12 16:17 unbelievableme 阅读(12) 评论(0) 编辑

2018年3月11日

int的取值范围

摘要: 原码 :一个整数,按照绝对值大小转换成的二进制数,称为原码 反码 :将二进制数按位取反,所得的新二进制数称为原二进制数的反码 补码 :反码加1称为补码 举例 :5(int类型)的原码,反码,补码 原码:00000000 00000000 00000000 00000101 反码:11111111 1阅读全文

posted @ 2018-03-11 16:21 unbelievableme 阅读(43) 评论(0) 编辑

2018年3月9日

jdk源码->并发->Unsafe&Atomic

摘要: synchronized关键字类似于java中的悲观锁机制,接下来介绍一种java的乐观锁机制Unsafe类 CAS CAS简介 CAS全称是Compare And Swap,即比较交换,它是在并发执行时的一种无锁思想,其主要包含三个参数: 操作过程可以描述为:将主内存中的值与当前线程中变量副本值进阅读全文

posted @ 2018-03-09 19:55 unbelievableme 阅读(37) 评论(0) 编辑

mini设计模式

摘要: 创建型 单例模式 饿汉式 评价:在类加载的时候就实例化了对象,而不是当使用它的时候才实例化,会预先占用内存空间,但这在一定的场景下也说不上是缺点,例如:实例化这个单例有磁盘io的操作,如果当使用它的时候才实例化的话就非常影响性能,同时多线程获取单例非常快,不存在竞争的问题, 懒汉式 评价:不需要预先阅读全文

posted @ 2018-03-09 19:44 unbelievableme 阅读(28) 评论(0) 编辑

2018年3月6日

linux常用软件安装,常用命令

摘要: jdk [root@localhost] tar zxvf jdk 8u144 linux x64.tar.gz [root@localhost] vi /etc/profile 在profile文件中添加下述内容 [root@localhost] source /etc/profile [root阅读全文

posted @ 2018-03-06 15:57 unbelievableme 阅读(115) 评论(0) 编辑

2018年3月5日

xshell提示采购解决方法

摘要: 参考http://blog.csdn.net/longgeaisisi/article/details/78637179阅读全文

posted @ 2018-03-05 16:04 unbelievableme 阅读(30) 评论(0) 编辑

2018年3月3日

应试必备算法

摘要: 数组 删除有序数组的重复元素 合并两个有序数组(nums1的空间足够大) 将0移到数组末尾 数组中出现次数超过一半的数字 最长连续1的个数 第一个只出现一次的字符位置 字符串括号匹配 链表 反转链表:输入一个链表,反转链表后,输出链表的所有元素。 合并链表:输入两个单调递增的链表,输出两个链表合成后阅读全文

posted @ 2018-03-03 12:59 unbelievableme 阅读(103) 评论(0) 编辑

2018年2月6日

从jvm源码看synchronized

摘要: synchronized的使用 synchronized关键字是Java中解决并发问题的一种常用方法,也是最简单的一种方法,其作用有三个:(1)互斥性:确保线程互斥的访问同步代码(2)可见性:保证共享变量的修改能够及时可见(3)有序性:有效解决重排序问题,其用法也有三个: 1. 修饰实例方法 2. 阅读全文

posted @ 2018-02-06 16:23 unbelievableme 阅读(418) 评论(0) 编辑

2018年2月3日

jdk源码->多线程->Thread

摘要: 线程的创建 java提供了三种创建线程的方法: 通过继承 Thread 类本身; 通过实现 Runnable 接口; 通过 Callable 和 Future 创建线程。 继承Thread类 步骤: 1. 继承Thread类 2. 重写run方法 3. 实例化该类,调用start方法 演示: pub阅读全文

posted @ 2018-02-03 14:21 unbelievableme 阅读(202) 评论(0) 编辑

2018年2月2日

jdk源码->集合->ConcurrentHashMap

摘要: 类的属性 内部结点类 Node结点 ForwardingNode结点 TreeNode结点 构造函数 ConcurrentHashMap() ConcurrentHashMap(int) ConcurrentHashMap(int, float, int)型构造函数 核心函数分析 putVal(K 阅读全文

posted @ 2018-02-02 14:36 unbelievableme 阅读(139) 评论(0) 编辑

2018年2月1日

sublime markdown编辑配色

摘要: Boxy 1. package control : install package 2. 选择Boxy theme 3. preferences settings配置: { "color_scheme": "Packages/Boxy Theme/schemes/Boxy Yesterday.tmT阅读全文

posted @ 2018-02-01 20:27 unbelievableme 阅读(34) 评论(0) 编辑

2018年1月31日

jdk源码->集合->HashSet

摘要: 类的属性 构造函数 HashSet() HashSet() 其他构造函数与HashMap基本相同,不再累述 常用方法 contains(Object o) add(E e) remove(Object o)阅读全文

posted @ 2018-01-31 17:05 unbelievableme 阅读(13) 评论(0) 编辑

BST,AVL,B,B+,B*,红黑树

摘要: BST(右)和AVL(左) 比较:AVL树每个结点的左右子树的深度差的绝对值不大于1 B tree 特点:所有结点都包含数据信息,不同查询的效率不同,特殊的:二阶B树就是AVL,三阶B树就是2 3树 B+ tree 特点:B tree的变种,只有叶子结点才包含数据信息,所有的叶子结点有指针连接起来,阅读全文

posted @ 2018-01-31 16:01 unbelievableme 阅读(19) 评论(0) 编辑

2018年1月30日

jdk源码->集合->LinkedList

摘要: 类的属性 构造函数 LinkedList()型构造函数 LinkedList(Collection)型构造函数 核心函数分析 add(E e)函数 linklast(E e)函数分析 addLast函数的实际调用 linkFirst(E e)函数 addFirst函数的实际调用 add(int in阅读全文

posted @ 2018-01-30 19:45 unbelievableme 阅读(50) 评论(0) 编辑

jdk源码->集合->ArrayList

摘要: 类的属性 构造函数 ArrayList(int)型构造函数 ArrayList()型构造函数 ArrayList(Collection)型构造函数 curd add(E e)函数 ensureCapacityInternal函数 ensureExplicitCapacity函数如下: grow函数如阅读全文

posted @ 2018-01-30 16:13 unbelievableme 阅读(62) 评论(0) 编辑

2017年12月16日

深入分析java传参

摘要: 概述      java中的参数传递问题可以根据参数的类型大致可以分为三类:传递基本类型,传递String类型,传递引用类型,至于最终是否可以归纳为值传递和引用传递,根据每个人的理解不同,答案不同,此处不做强调。 传递基本类型 结果 :Before 阅读全文

posted @ 2017-12-16 20:55 unbelievableme 阅读(57) 评论(0) 编辑

通过反编译深入理解Java String及intern(转)

摘要: <!--done--> 通过反编译深入理解Java String及intern 原文传送门:http://www.cnblogs.com/paddix/p/5326863.html 一、字符串问题 字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究。倒阅读全文

posted @ 2017-12-16 16:30 unbelievableme 阅读(29) 评论(0) 编辑

Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)

摘要: <!--done--> Java8内存模型—永久代(PermGen)和元空间(Metaspace) 查看原文点击传送门:http://www.cnblogs.com/paddix/p/5309550.html 提示:本文做了一些修改 一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机阅读全文

posted @ 2017-12-16 13:56 unbelievableme 阅读(55) 评论(0) 编辑

2017年12月2日

从Proxy.newInstance出发

摘要: 写在前面 本篇博客是基于对动态代理,java的重写,多态特性了解的基础上对于源码的阅读,先提出几个问题 1.从静态代理变成动态代理需要解决两个问题,如何动态实现被代理类的接口并摘取接口中的方法,如果动态的为被代理方法添加附加逻辑 2.给出一个例子: 如果我要代理即实现了a又实现了b的类的get方法,阅读全文

posted @ 2017-12-02 17:00 unbelievableme 阅读(236) 评论(0) 编辑

导航

公告