自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (5)
  • 收藏
  • 关注

原创 深入理解Java虚拟机(4)——对象的内存分配

对象基本上是在堆上分配(除了JIT即时编译器优化),分配规则如下: 主要分配在新生代的Eden区上; 若开启了本地线程分配缓冲TLAB,按线程优先在TLAB上分配; 少数情况直接分配在老年代  1、对象优先在Eden上分配 目前主流的GC都采用了分代回收算法,因此将内存分为了新生代和老年代。新生代一般采取“复制”算法,考虑效率和避免内存碎片的问题。 ...

2018-08-15 20:43:56 228

原创 深入理解java虚拟机(2)——HotSpot虚拟机对象探秘

1、对象的创建 本小节讨论普通对象,不包括数组和Class对象。 当遇到一条new指令时,有如下操作: 检查常量池中是否有这个对象所属类的符号引用; 若常量池中没有这个类的符号引用,说明类没有被定义!抛出ClassNotException; 若常量池中有这个类的符号引用,则进行下一步工作;   进而检查这个符号引用代表的类是否被JVM...

2018-08-15 20:42:44 212

原创 深入理解Java虚拟机(3)——垃圾回收策略

JVM的内存模型有5个部分:虚拟机栈、程序计数器、本地方法栈、堆、方法区。 程序计数器、虚拟机栈、本地方法栈都是线程私有的,会随着线程的创建而创建,线程的结束而销毁。因此,垃圾回收器在何时回收这三块区域的问题就解决了。 此外,虚拟机栈、本地方法栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作,并且每个栈帧的本地变量表都是在类加载时就确定的。因此以上三个区域内存分配和回...

2018-07-26 15:34:10 440

原创 深入理解Java虚拟机(1)——JVM的内存划分

如下图,jvm的内存分为5块,其中,  线程私有:虚拟机栈、本地方法栈、程序计数器线程共享:堆、方法区 1、程序计数器1.1 什么是程序计数器?       程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器,即记录的是正在执行的虚拟机字节码指令的地址。注意: 当线程执行的是一个Naive方法,这个计数器值则为空。  ...

2018-07-26 15:30:16 152

原创 深入理解Java虚拟机(0)——JVM基本介绍

1、什么是JVM?     我们知道Java代码可以一次编写,到处执行(Write once,run anywhere),而这一特性正是JVM提供的。JVM帮工程师屏蔽了不同平台的差异性,提供了一致的编写接口。     我们编写的代码首先被编译器 编译成 符合JVM规范的class文件,然后JVM就是负责加载这个class文件,分配内存空间然后执行字节码。     注意:J...

2018-07-26 15:29:12 243

转载 在Intellij IDEA中使用Debug

转载:https://www.cnblogs.com/chiangchou/archive/2017/09/05/idea-debug.html Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。  所以学习下如何在Intellij ID...

2018-05-28 21:24:11 156 3

转载 UML类图几种关系的总结

转载:https://blog.csdn.net/tianhai110/article/details/6339565在UML类图中,常见的有以下几种关系:泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1.泛化(Generalization)【泛化...

2018-05-16 15:21:00 131

原创 补充知识(一)——Comparable && Comparator浅析

    在看Java容器框架的时候,看见了这两个接口,有些不明白,这两个接口的区别是什么,Java为什么会存在这两个类似的接口?从网上整理笔记如下。    Comparable && Comparator接口都是用来比较大小的。1、基本定义和使用场景    Comparable的接口定义:package java.lang;import java.util.*;public int...

2018-05-15 19:28:50 303

原创 【容器框架】Java容器框架综述

问:什么是容器?它与数组的区别是?数组是保存一组对象的最有效的方式,但是数组具有固定大小,如果不知道对象的数量有多少个,那么应该使用容器。问:Java容器类类库的基本概念?Collection。一个独立元素的序列,包括:List、Set和Queue。List必须按照插入的顺序保存元素,而Set不允许有重复的元素。Queue按照排队的规则来确定对象产生的顺序。Map,一组成对的“键值对”对象,允许你...

2018-05-15 19:26:59 849

原创 【容器框架】JDK1.8源码分析之HashMap(一)

一、前言            JDK1.8的HashMap相对之前做了较大的优化,其中最重要的一个优化就是桶中元素不在唯一按照链表组合,在一定条件下可以转换成红黑树进行存储。总之目标就是在功能和安全完备的情况下,让HashMap的速度更快,提升性能。问:为什么选择用红黑树?与AVL树的性能差异在?红黑树的查询性能略逊色于AVL树,因为它不是严格的平衡二叉树;红黑树在插入和删除上优于AVL树,AV...

2018-05-15 19:17:08 127

原创 动态规划问题——完全背包(Java实现)

1、问题描述已知:有N种物品和一个容量为V 的背包,每种物品都有无限件可用。放入第i种物品的耗费的空间是C[i],得到的价值是W[i]。求解:将哪些物品装入背包,可使这些物品的耗费的空间总和不超过背包容量,且价值总和最大?2、基本思路这个问题与01背包问题非常类似,不同的是每件物品有无限件。从每件物品的角度来看,它相关的策略并非取或者不取,而是有取0件、取1件、取2件... 直至取 V/C[i] ...

2018-05-09 17:42:53 5834

原创 动态规划问题——0/1背包问题(Java实现)

1、问题描述0-1背包问题:        给定N件物品和一个容量为V的背包。放入第i件物品耗费的空间为C[i] ,得到的价值是 W[i] 。        问:哪些物品装入背包可使价值总和最大?最大是多少?2、基本思路2.1  基本思路        这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。分析:面对每个物品,我们只有选择拿与不拿两种选择,不能够选择装入物品的一部分,也...

2018-05-09 11:13:12 39566 9

原创 剑指offer(Java实现)——快速排序

1、基本原理1.1 快排基本思想:Step 1: 对输入的数组进行shuffle,防止对输入产生依赖性,以保证随机性Step 2:对数组进行切分,对于某个j,a[j]已经排定;a[lo]到a[j-1]中的所有元素都  不大于 a[j];a[j+1]到a[hi]中的所有元素都 不小于 a[j]。Step 3:然后再分别对左子数组和右子数组分别递归排序1.2 切分算法伪代码:private stati...

2018-05-08 16:20:46 656

转载 Maven的pom.xml 标签详解

转载:https://blog.csdn.net/sunzhenhua0608/article/details/32938533pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。<project xmlns="http...

2018-03-27 09:08:03 150

转载 ZooKeeper一致性原理

转载:http://www.cnblogs.com/sunddenly/p/4138580.html一、ZooKeeper 的实现1.1 ZooKeeper处理单点故障我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示。图 1.1 ZooKeeper解决单点故障那么我们继续分析一下,ZooKeeper通过Master选举来帮助分布式系统解决单点...

2018-03-22 14:57:08 165

原创 从Paxos到Zookeeper 读书笔记(2)-分布式的CAP理论

1 分布式环境的各种问题1.1 通信异常消息丢失分布式系统需要各个节点之间进行网络通信,因此每次网络通信都会伴随网络不可用的风险,如路由器、光纤等硬件设备或者是系统不可用,都会导致网络不可用。消息延迟即使分布式系统各节点网络的通信能正常进行,但网络通信的延迟是不可忽略的因素。1.2 网络分区当网络发生异常时,导致部分节点网络延迟不断增大,最终导致只有分布式系统的少数节点能正常通信-----这种现象...

2018-03-22 11:03:58 292

原创 从Paxos到Zookeeper 读书笔记(1)-事务的ACID

首先,要注意的是C In CAP ≠ C in ACID,这两个C是不同含义的,不要搞错。事务的四大特征ACID分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),一个支持事务的数据库必须要具有这四种特征,否则在事务过程(Transaction processing)当中无法保证数据的正确性。原子性是指事务中包含的各项...

2018-03-21 22:54:52 142

原创 二叉查找树BST

定义定义:一个BST就是一棵二叉树,其中每个节点都含有一个Comparable的键(以及相关联的值value)且每个节点的键都大于其左子树的任意节点的键而小于右子树的任意节点的键。数据结构树由Node对象组成,每个对象有一对键值、两条链接和一个节点计数器N。每个Node对象都是一棵含有N个节点的子树的根节点,它的左链接指向一棵由小于该节点的所有键组成的二叉查找树,右链接指向一棵由大于该节点的所有键...

2018-03-19 11:46:23 197

原创 union-find算法

问题描述动态连通性问题:给定n个顶点,仅支持输入一对整数,一对整数p和q可以被理解为“p和q是相连的”。给定任何一对顶点,判断其是否连通。Union-find数据模型目标:为union和find操作设计一个高效的数据结构先设计一份API来封装所需的基本操作:初始化、连接两个连通分量、判断包含顶点的连通分量、判断两个顶点是否在同一连通分量以及所有连通分量的个数Union-find算法1)Quick-...

2018-03-16 22:58:12 869

技术之瞳 阿里巴巴面试笔试 高清pdf

技术之瞳 阿里巴巴技术笔试心得-2016.11-p260,高清资源

2018-05-11

算法九讲2.0

经典的动态规划入门,包括01背包、完全背包、多重背包的详解

2018-05-09

Hadoop权威指南第四版(英文源码)

Hadoop权威指南英文版,第四版,看英文原版防止造成一些中文上翻译的一些差异

2018-05-06

javaWeb传智播客网上书城项目源码设计以及实现论文

javaWeb传智播客网上书城项目源码设计以及实现论文+方立勋《30天轻松掌握JavaWeb视频》笔记

2018-03-20

深入理解Java虚拟机——JVM高级特性与最佳实践(第2版).pdf,完

深入理解Java虚拟机——JVM高级特性与最佳实践(第2版).pdf,完整,带书签, 完整版

2018-03-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除