![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
张岩松本人
小白一个
展开
-
@Valid笔记
嵌套必须加上@Valid注解,不加的话里面的@NotNull等注解无法生效原创 2021-12-29 12:10:32 · 179 阅读 · 0 评论 -
java object对象大小
对象头又包括三部分:MarkWord、元数据指针、数组长度。MarkWord: 用于存储对象运行时的数据,好比 HashCode、锁状态标志、GC分代年龄等。这部分在 64 位操作系统下占 8 字节,32 位操作系统下占 4 字节。指针: 对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪一个类的实例。这部分就涉及到指针压缩的概念,在开启指针压缩的状况下占 4 字节,未开启状况下占 8 字节。数组长度: 这部分只有是数组对象才有,若是是非数组对象就没这部分。这部分占 4 字节。.原创 2021-11-02 11:23:02 · 766 阅读 · 0 评论 -
jvm指令与工具jstat/jstack/jmap/jconsole/jps/visualVM
一、jps 打印java进程基本信息二、*jconsole java性能分析器可以执行gc查看线程类jvm概要三、jstat 轻量级小工具jstat -gcutil 8208 1000 该命令为打印gc情况,显示百分比8208为进程号,1000为每隔1000毫秒打印一次jstat -gc 8208jstat -gcnew 8208 1000jstat -gcold 8208 1000查看young和old区四、jstack 查看线程情况jstack 8原创 2021-10-25 15:18:34 · 162 阅读 · 0 评论 -
JVM线上排查问题常用办法
一、CPU100%问题查找进程当发现CPU过高之后,首先我们要找出哪个进程占用了CPU。我们可以使用top命令top -c在显示模式下,然后我们可以通过切换到大写,不断的按大写P就能进行排序,找到最大的CPU看看上哪个进程。查找线程我们已经找到了哪个进程最消耗CPU了,接下来,我们当然要找到该进程下,哪个线程CPU消耗最高咯。这里的进程PID是7,使用命令top -Hp 7到此我们已经定位到线程了,接下来我们就该用上jvm的命令工具了。然后我们使用jstack命令,拉到7进程快照原创 2021-10-20 11:21:16 · 359 阅读 · 0 评论 -
jvm参数设置
一、堆参数设置-XX:+PrintGC 使用这个参数,虚拟机启动后,只要遇到GC就会打印日志-XX:+UseSerialGC 配置串行回收器-XX:+PrintGCDetails 可以查看详细信息,包括各个区的情况-Xms:设置Java程序启动时初始化堆大小-Xmx:设置Java程序能获得最大的堆大小-Xmx20m -Xms5m -XX:+PrintCommandLineFlags:可以将隐式或者显示传给虚拟机的参数输出二、新生代参数配置-Xmn:可以设置新生代的大小,设置一个比较大的新生代原创 2021-10-20 10:35:02 · 2879 阅读 · 0 评论 -
聚簇索引与非聚簇索引
1.对于非聚簇索引表来说(右图),表数据和索引是分成两部分存储的,主键索引和二级索引存储上没有任何区别。使用的是B+树作为索引的存储结构,所有的节点都是索引,叶子节点存储的是索引+索引对应的记录的数据。2.对于聚簇索引表来说(左图),表数据是和主键一起存储的,主键索引的叶结点存储行数据(包含了主键值),二级索引的叶结点存储行的主键值。使用的是B+树作为索引的存储结构,非叶子节点都是索引关键字,但非叶子节点中的关键字中不存储对应记录的具体内容或内容地址。叶子节点上的数据是主键与具体记录(数据内容)。...原创 2021-10-11 15:08:57 · 86 阅读 · 0 评论 -
数据库索引为什么不用二叉平衡树
逻辑上,二叉平衡树的查找次数和效率是最高的,但现实中,数据库索引是保存在磁盘中的,所以为了减少io的次数,从而放弃二叉平衡树,改用B+树,减少io次数。原创 2021-10-07 16:17:11 · 193 阅读 · 0 评论 -
B-树,B+树学习笔记
B-树(Balance Tree),一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m4.所有的叶子结点都位于同一层。5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。一个三叉B-树...原创 2021-10-07 16:16:01 · 90 阅读 · 0 评论 -
aqs学习笔记
一、加锁流程图释放锁流程图原创 2021-10-07 15:44:33 · 80 阅读 · 0 评论 -
synchronized的实现过程
java代码:加上synchronized字段class字节码:monitorenter与monitorexit指定加锁的代码的范围执行过程中,锁会升级(无锁-偏向锁-自旋锁-重量级锁)汇编语言:使用lock-cmpxchg实现原创 2021-10-05 17:00:22 · 85 阅读 · 0 评论 -
java锁升级的过程
锁的4中状态:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态(级别从低到高)一、锁升级为什么要引入偏向锁?因为经过HotSpot的作者大量的研究发现,大多数时候是不存在锁竞争的,常常是一个线程多次获得同一个锁,因此如果每次都要竞争锁会增大很多没有必要付出的代价,为了降低获取锁的代价,才引入的偏向锁。偏向锁的升级当线程1访问代码块并获取锁对象时,会在java对象头和栈帧中记录偏向的锁的threadID,因为偏向锁不会主动释放锁,因此以后线程1再次获取锁的时候,需要比较当前线程的thr原创 2021-10-05 16:45:12 · 2500 阅读 · 0 评论 -
分布式id生成的若干方案
1. UUID在Java的世界里,想要得到一个具有唯一性的ID,首先被想到可能就是UUID,毕竟它有着全球唯一的特性。那么UUID可以做分布式ID吗?答案是可以的,但是并不推荐!public static void main(String[] args) { String uuid = UUID.randomUUID().toString().replaceAll("-",""); System.out.println(uuid); }UUID的生成简单到只有一行代原创 2021-10-05 00:16:25 · 83 阅读 · 0 评论 -
rocketmq学习笔记
todo原创 2021-10-04 23:20:23 · 191 阅读 · 0 评论 -
HashMap与HashTable的区别
HashMap线程不安全允许有null的键和值效率高一点、方法不是Synchronize的要提供外同步有containsvalue和containsKey方法HashMap 是Java1.2 引进的Map interface 的一个实现HashMap是Hashtable的轻量级实现Hashtable线程安全不允许有null的键和值效率稍低、方法是是Synchronize的有contains方法方法Hashtable 继承于Dictionary 类Hashtabl...原创 2021-10-03 21:38:26 · 61 阅读 · 0 评论 -
gc学习笔记
ss原创 2021-10-03 17:48:37 · 123 阅读 · 0 评论 -
ThreadLocal学习笔记
画了图,就不再写一遍了我的processon链接原创 2021-10-03 16:36:26 · 58 阅读 · 0 评论 -
分布式事务seata学习笔记
0.学习目标了解分布式事务产生的原因知道几种分布式事务解决方案:XA、TCC、消息事务、TA、SAGA知道分布式事务各种解决方案的优缺点和使用场景学会使用Seata来解决分布式事务1.什么是分布式事务要了解分布式事务,必须先了解本地事务。1.1.本地事务本地事务,是指传统的单机数据库事务,必须具备ACID原则:原子性(A)所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态。对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执行过一原创 2021-09-28 10:58:58 · 577 阅读 · 0 评论 -
Tcp三次握手,四次挥手的形象比喻
在一篇博客的评论上看到的,觉得不错,再次记录下来3次握手就跟早期打电话时的情况一样:1、听得到吗?2、听得到,你呢?3、我也听到了。然后才开始真正对话 。。。。4次挥手是:1、老师,下课了。2、好,我知道了,我说完这点。3、好了,说完了,下课吧。4、谢谢老师,老师再见4次挥手是:1、客户端:你还有什么要说的吗?没什么就挂了2、服务器:好的,我知道了,我想一想还有什么要说的 …中间可能还会有其他数据通信,但只能是服务器发送,客户端接收了,客户端不能再“说”了3、服务器:哦转载 2021-09-26 14:21:37 · 344 阅读 · 0 评论 -
java类加载子系统学习笔记
类加载子系统类加载的过程 (加载,链接,初始化)加载阶段通过一个类的全限定名获取定义此类的二进制字节流 (例如: 类.class 获取二进制字节流)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 (看具体jvm的版本,所具体的方法区运行的数据结构不同)在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口(在内存中生成类的模板,可以被随时调用,也是反射的原理)加载class文件的方式从本地系统中直接加载通过网络获取,典型场原创 2021-08-16 17:22:51 · 71 阅读 · 0 评论 -
spring源码学习笔记(流程图)
spring源码学习笔记(流程图)https://www.processon.com/view/link/611a234fe401fd4e2704610b若有错误之处,望大神不吝赐教原创 2021-08-16 16:42:57 · 132 阅读 · 0 评论 -
java反射笔记
文章目录反射泛型构造方法反射泛型构造方法一个泛型类只有唯一的构造器,并且构造器带有泛型形参。反射该类的构造器时getConstructor(String.class,Object.class)方法中,泛型对应的应天Object.classpackage com.zys.aoptest.pojo;import java.lang.reflect.Constructor;import ...原创 2020-04-16 17:46:59 · 108 阅读 · 0 评论 -
java自定义注解及使用场景(并学习:拦截器+AOP)
文章目录一、什么是注解(Annotation)二、注解体系图三、常用元注解Java自定义注解一般使用场景为:自定义注解+拦截器或者AOP,使用自定义注解来自己设计框架,使得代码看起来非常优雅。本文将先从自定义注解的基础概念说起,然后开始实战,写小段代码实现自定义注解+拦截器,自定义注解+AOP。一、什么是注解(Annotation)Java注解是什么,以下是引用自维基百科的内容Ja...原创 2020-04-15 16:48:08 · 1230 阅读 · 0 评论 -
java枚举类型及枚举集合
文章目录一、枚举类型二、switch 操作三、自定义枚举类四、相关枚举类4.1 EnumMap 枚举型映射/字典一、枚举类型/** * @author zhangys * @description * @date 2020/4/15 */public class EnumTest { enum Day { SUNDAY, TUESDAY, WEDNESDAY...原创 2020-04-15 15:29:28 · 3283 阅读 · 0 评论 -
国土项目添加SpringBoot-Admin
一、设置服务端应用程序(Spring Boot Admin Server)首先,您需要设置您的服务器。 要做到这一点,只需设置一个简单的启动项目。1、将Spring Boot Admin Server启动器添加到您的依赖项:pom.xml<dependencies> <dependency> <groupId>de.codecen...原创 2020-04-02 16:45:16 · 131 阅读 · 0 评论 -
Dubbo学习笔记
目录一、基础知识1、分布式基础理论1.1 什么是分布式1.2 发展演变1.3 RPC2、Dubbo核心概念3、注册中心:zookeeper下载及安装4、监控中心一、基础知识1、分布式基础理论1.1 什么是分布式分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。分布式系统(distributed system)是建立在网络之上的软件系统。1.2 发展演变1.3...原创 2020-03-30 12:05:55 · 152 阅读 · 0 评论 -
java开发手册
目录一、编程规约1、命名风格1.1 领域模型命名规约1.2 中括号是数组类型的一部分,数组定义如下:String[] args; 反例:请勿使用 String args[]的方式来定义。1.3 枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。2、常量定义2.1 常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包 内共享常量、类内共享常量。2.2...原创 2020-03-26 17:39:14 · 613 阅读 · 0 评论