- 博客(17)
- 资源 (2)
- 收藏
- 关注
原创 jvm内存结构总结笔记
jvm组成结构 先来一张图总体看看jvm的组成部分。 jvm主要由运行时数据区和类加载子系统和执行引擎等组成。 我们重点来总结一下运行时数据区: 1.栈 栈为线程私有,每个线程都有自己的独立栈区域空间,主要用于存储局部变量。 在线程运行时,线程的每个方法,虚拟机都会在栈内单独分配一个独立的空间来用于局部变量的作用域表示,这部分独立的空间被称为栈帧。栈帧是基于线程的私有栈内存来进行分配的,例如:线程main中调用了类Class.met
2020-10-12 13:19:16
268
1
原创 jvm,juc,多线程,java基础面试题-1
1.单例模式的实现 饿汉模式:没有线程安全问题 public class Singleton1 { //饿汉模式--提前创建 public static Singleton1 instance = new Singleton1(); public static Singleton1 getInstance(){ return instance; } private Singleton1() { } public static v
2021-05-26 18:19:37
281
原创 idea中配置类注释生成和方法注释生成
idea配置类注释模板和方法注释模板 类注释 1)打开idea->setting->editor->File and Code Templates 2)选择Class,在里面添加模板代码: /** * @program: ${PROJECT_NAME} * * @description: ${description} * * @author: hlcen * * @create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} **/ 点击应用保存即可
2020-11-03 15:38:59
410
原创 并发编程重点笔记
记录一些并发编程当中的注意点 悲观锁和乐观锁 悲观锁: 当一个线程必须拿到资源的锁,才进行进行相关操作,否则进入阻塞,直到其他线程释放资源锁; 乐观锁: 当一个线程进行操作时,不对资源进行加锁,它认为该对象在当前操作时,应该不会有其他线程来影响,所以多个线程都可以对该资源进行操作,对操作进行提交之前,会进行一次比较,把该资源和初始资源进行对比,如果资源内容一致,那么认为这个资源当前只有我操作了,那么就直接提交资源修改;否则进行重试或报错等; 并发三大特性 1)原子性:在cpu执行时间单位内,一个操作要么全部
2020-10-21 17:53:20
241
原创 Jdk1.8新特性常用操作-列举一部分
JDK8集合操作 因为太多了,这里列举几种比较常用的: 1)遍历list 2)遍历list得到map 3)遍历list,根据某个key进行分组 4)遍历多个对象,合并多个对象中的明细行 首先引入guaua包和fastjson包,方便打印: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId>
2020-10-20 10:57:15
226
原创 五:(精华)线程池源码深度解析
线程池源码深度解析 这篇文章我会带你一起阅读线程池的源码,看清楚了,不要眨眼哈。 快12点了,睡了睡了,狗命要紧。。。。
2020-10-15 23:45:27
386
原创 三:线程池类关系和参数解析
上一个章节,我们介绍了线程的状态,这一次我们进入到线程池的学习,线程池我们分为3篇文章来介绍他,当前为第1篇,后续还有四:创建线程池的方式篇,还有五:线程池的源码深度解析篇。 当前篇我们分为2个两点来说明: 什么是线程池? 线程池类关系? 线程池定义的参数解析 1.什么是线程池? 网上你可以搜索到很多答案,我这里用通俗
2020-10-15 17:23:58
513
原创 二:线程状态流程解析
线程一共有哪些状态 线程的状态一共有以下几种: 1)NEW 2)RUNNABLE 3)BLOCKED 4)WAITING 5)TIMED_WAITING 6)TERMINATED 我怎么知道的呢?来来,看一下源码: Thread.class里面: public static enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATE
2020-10-14 17:48:29
312
原创 一:线程的定义,start和run的使用,main和thread的执行顺序
线程的定义 什么是线程,有很多种说法,我们简单的理解一下:线程就是在一个进程当中独立运行的一个子任务。
2020-10-14 11:31:42
1690
1
原创 jvm垃圾回收笔记
讲JVM垃圾回收,我们从以下4个部分来总结一下: 什么是垃圾回收,为什么要回收 垃圾怎么定义 定义垃圾的2种算法 垃圾收集的4种算法 垃圾收集器种类和选择 full gc时堆空间不足,一定会OOM吗 有了垃圾回收,java会不会内存泄露 1.什么是垃圾回收 垃圾回收是为了防止java内存泄露,主要是防止堆内存的内存泄露。 ----------------------------------------------
2020-10-13 16:25:14
522
原创 java特殊要点
关键字篇 java中存在的所有关键字: abstract 表明类或者成员方法具有抽象属性 assert 断言,用来进行程序调试 boolean 基本数据类型之一,声明布尔类型的关键字 break 提前跳出一个块 byte 基本数据类型之一,字节类型 case 用在switch语句之中,表示其中的一个分支 catch 用在异常处理中,用来捕捉异常 char 基本数据类型之一,字符类型 class 声明一个类 const 保留关键字,没有具体含义 continue 回到一个块的开始处 default 默认,例如
2020-10-12 21:42:49
191
1
原创 如何理解String类的不可变?
String类的解析 1:String类被final修饰符锁修饰,代表String类一旦声明,就不可被改变;这里的不可变是引用地址不可变,而非指向的内容不可变,下面一张图来理解一下: 再来看一下String类的源码: public final class String implements Serializable, Comparable<String>, CharSequence { private final char[] value; private int hash;
2020-10-12 21:23:46
933
原创 JVM参数使用笔记
JVM提供了大量的可配置参数,这些参数根据功能可以划分为几个大类: 内存相关参数 Xms 含义:堆内存最小值 使用方式:-xms2g 或者 -XX:InitialHeadSize=2048m Xmx 含义:堆内存最大值 使用方式:-xmx2g 或者 -XX:MaxHeapSize=2048m Xmn 含义:新生代最大值 使用方式:-Xmn1024m 或者 -XX:MaxNewSize=1024m PermSize 含义:永久代最小值(1.7) 使用方式:-XX:PermSize=2g MaxPermSize
2020-10-12 20:28:09
1466
1
原创 free -m 解读笔记
free -m 这个命令大家都很熟悉了,但是结果的解读多多少少有点迷惑性,自己记录总结一下,以后免得忘记了。 先来看一张图,截图的我的一个服务器的内存使用情况。 1:先来看-/+ buffers/cache这一行,这个是要这么看的,最左边的-和+是对应后面的2列数字 其中,-buffers/cache这个是代表当前服务器的程序实际已经使用的内存。 +buffers/cache这个是代表当前服务器的程序还未使用的内存。 2:记住二个公式: 总的物理内存 = +buffers/cache 加上 -buffer
2020-10-11 16:30:16
2975
3
原创 线上服务器问题排查手段总结笔记
线上服务器CPU100%了,OOM了,内存泄露了,怎么办? 这里稍微记录一下,平常自己的一些排查步骤和思路(虽然网上有线程的排错框架,但是我不喜欢用呀)。 好了,一般情况下,可以根据以下几个步骤来: 1.查找出当前占用CPU最高或者OOMS的进程ID,一般使用jps -l或者top命令。 也可以使用 jmap -heap 进程号 查看jvm使用情况 2.找到进程pid之后,根据top -Hp pid 找出占用CPU最高的线程号 3.将线程号用程序员计算器,转化为16进制编码 4.使用命令jstack pi
2020-10-11 16:18:47
469
原创 java对象和xml的转换工具类
package com.lppz.wms.bir.util; import java.io.StringReader; import java.io.StringWriter; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Mars
2017-09-19 09:53:59
608
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅