xyh的博客

我是慧慧,这是我的学习笔记

HashMap由并发引起的链表死循环

关于HashMap的结构介绍参考这篇文章 在java1.8之前的HashMap是基于数组+链表的形式实现,所以在并发时出现死循环的情况还是比较常见的。 重现死循环的情况 假设现在有两个线程Thread1和Thread2,Thread1执行在执行HashMap的扩容过程时,当扩容没有完成就被C...

2018-12-03 18:41:12

阅读数 146

评论数 0

Java并发偏向锁、轻量级锁、重量级锁、synchronized和volatile的实现原理

读Java并发编程的艺术学习整理。 1. 上下文切换 CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几十毫秒(ms)。 CPU通过时间片分配算法来循环执行...

2018-11-28 11:47:03

阅读数 141

评论数 1

深入理解Java虚拟机(四)Eden、Survivor、老年代、GC日志

指发生在新生代的垃圾收集动作,Minor GC非常频繁,<b>新生代采用复制算法</b>,一般回收速度也比较快。因为采用复制算法,所以年轻代分为三部分:**1个Eden区和2个Survivor区(分别叫From和To)**,默认比例为8:1。...

2018-11-23 16:58:29

阅读数 225

评论数 0

OpenGL中涉及到的矩阵变换

文章目录1、局部坐标系2、世界坐标系2.1 为什么要用矩阵?2.2 模型矩阵(Model Matrix)3、视图坐标系3.1 视图坐标系的定义3.2 视图矩阵4、投影坐标系5、屏幕坐标系 先看两个问题: 我们有什么?答:模型的初始位置坐标(三维坐标)。 我们要得到什么?答:我想要把模型展...

2018-11-04 20:56:33

阅读数 1110

评论数 0

OpenGL开发关于VAO和VBO的理解

先创建窗口: public class Demo01_open_window { public static void main(String[] args){ glfwInit();//初始化 glfwWindowHint(...

2018-10-24 23:14:42

阅读数 153

评论数 0

正则表达式(一)彻底理解正则表达式的元字符

正则表达式分为元字符和文字。正则表达式的元字符拥有非常强大的描述能力。 行的起始和结束 脱字符号^(代表一行的开始) 美元符号$(代表一行的结束) ^cat //匹配以cat开头的行 cat$ //匹配以cat结尾的行...

2018-08-25 14:06:27

阅读数 437

评论数 3

深入理解Java虚拟机(三)HotSpot算法和垃圾收集器

前面介绍了对象存活判定算法和垃圾收集算法,在HotSpot虚拟机上实现这些算法时,必须对算法的执行效率有严格的考量,才能保证虚拟机高效运行。 枚举根节点(可达性分析算法的实现) GC Roots根节点的选择:可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执...

2018-07-30 10:59:59

阅读数 100

评论数 0

深入理解Java虚拟机(二)垃圾收集算法

JVM讨论的需要垃圾回收的区域主要是指堆内存和方法区。 因为:程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知。因此这几个区域的内存分配和回收都具备...

2018-07-28 13:53:21

阅读数 82

评论数 0

深入理解Java虚拟机(一)内存区域分布

Java虚拟机的内存分布

2018-07-07 23:48:01

阅读数 98

评论数 0

Java NIO(一)从操作系统角度对比IO与NIO的对比

传统IO 先来看一下FileInputStream调用read()方法后,底层都做了什么操作。 FileInputStream in = new FileInputStream(file); byte bytes[] = new byte[1024]; in.read(contentByte)...

2018-07-03 16:11:38

阅读数 556

评论数 0

Spring源码解析笔记1——整体架构+配置文件读取

Spring整体架构 1.Core Container核心容器,包含Core,Beans,Context,Expression Language.Core和Beans提供最基本的IOC(控制反转)和依赖注入。 Core模块主要包含Spring基本框架的核心工具类。 Beans模块包含访问配置...

2018-01-09 15:18:49

阅读数 487

评论数 0

Java中的hashCode方法以及对HashMap的影响

1.Map是否能用自定义对象来做key,如果能,有什么要求? 答:只要能保证key的唯一性就可以做key,首先看一下HashMap和TreeMap在添加元素时是如何保证key的唯一性的? HashMap HashMap底层的数据结构,是数组加单链表.jdk源码: ...

2017-07-07 16:57:53

阅读数 280

评论数 0

elasticsearch笔记_多字段搜索(六)

多字符串对应多字段 多字符串是最简单的一种,例如,搜索标题是 War and Peace ,作者是Leo Tolstoy ,直接用bool连接两个match查询即可.(这里面War and Peace和Leo Tolstoy就是多字符串,title和author是多字段) GET /_sear...

2017-05-15 17:20:48

阅读数 4350

评论数 0

Ibatis相关配置

举例:候选人,候选人包含若干个教育经历,候选人表和教育经历表示外键关联的关系。 候选人javaBean: public class EXCandidate { //邮箱 public String email; ///教育经历 public List&...

2019-03-28 16:51:37

阅读数 12

评论数 0

idea配置tomcat控制台输出日志乱码

idea配置tomcat控制台输出日志乱码 检查tomcat配置: 第一步:在ideai右上角找到Edit Configuration 第二步:在VM options后面加上-Dfile.encoding=UTF-8 tomcat目录下的conf目录下的server.xml中是否写了...

2019-03-28 16:35:48

阅读数 42

评论数 0

web开发中小错误整理

一、http请求返回错误码415 如果请求参数使用的是json对象参,就检查一下在请求头header中是否加了Content-Type=application/json 二、sql随机查询指定条数的记录 例如:在符合条件的查询结果中随机抽取两条记录。 SELECT * FROM stu w...

2019-03-27 22:31:34

阅读数 14

评论数 0

Java递归获取文件夹下全部文件

public static void getFiles(String path,ArrayList<File> list) throws Exception { //目标集合fileList File file = new...

2019-03-18 15:04:18

阅读数 49

评论数 0

Js创建对象

文章目录1、Js创建对象常用的两种方式1.1 new + 构造函数1.2 字面量2、Js创建对象的其他方式 1、Js创建对象常用的两种方式 1.1 new + 构造函数 构造函数和普通函数的区别, var person = new Object(); person.name =...

2019-01-17 11:30:19

阅读数 25

评论数 0

Js对象原型链prototype

1.什么是原型链? 无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个 prototype属性,这个属性指向函数的原型对象。在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向 prototype 属性所在函数的指针。 ...

2019-01-17 10:44:02

阅读数 29

评论数 0

Js函数Function类型以及apply()和call()

文章内容是读“JavaScript高级程序设计”的笔记。 函数其实也是一个对象,每个函数都是Function类型的一个实例,与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名称实际上是一个指向函数的指针。 一、定义函数的几种方式:例如我们以返回两个数值的和为例。 函数声明:这种...

2019-01-15 16:26:49

阅读数 56

评论数 0

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