自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 图文详解HashMap和ConcurrentHashMap

HashMap底层数据结构为:数组+链表链表长度>7的时候,采用红黑树支持查找、插入等操作,时间复杂度为O(log(n))hashmap初始容量为16当put的时候,才真正地初始化数组,分配了内存(16)。为什么hashmap的大小为2的N次幂首先我们要明白hashmap的hash计算是如何进行的。我们拿到一个key值,假设他的hash值为87992,那么在hashmap进行定位处理的时候,为了使其更散列化,会进行一系列的异或运算,最终再与16进行一个与运算,获得的值必定在00

2020-07-04 14:51:46 122

原创 线程池在springboot中的使用

线程池的概念线程池是线程的一个缓存,可以提供线程重用,避免了线程重复地进行创建销毁,更加科学地管理线程,对线程进行统一地优化,调度和监控。适用于任务时间短、任务量大。如果一个线程任务时间非常 长,可以忽略到线程的创建和销毁时间,那么使用线程池反而不合适阻塞队列概念阻塞队列在任意时刻,不管并发有多高,只有一个一个线程能够进行队列的入队或者出队操作。线程安全。队列满,只能进行出队,入队被阻塞。队列空,只能进行入队,出队被阻塞。线程池的几个重要参数corePoolSize:核心线程数核心

2020-07-04 14:42:32 923

原创 Java对象锁升级过程详解

Java对象的锁升级过程在JDK1.7版本之后,对Sunchronized关键字进行了优化,如果对对象进行Synchronized进行加锁,那么针对资源的竞争情况不同,锁会有一个升级的过程,以保证资源是最佳的利用状况。过程可以概括为:无锁(new对象)-偏向锁-轻量级锁(无锁,自旋锁如CAS,自适应锁)-重量级锁刚new对象,是无锁状态,加锁编程偏向锁,有人征用,升级为轻量锁,竞争频繁,升级为重量级锁。上一篇我们介绍了对象的内存布局,结合它我们来进一步分析。刚new时,25位没用;identi

2020-06-27 11:09:42 792

原创 Java对象在内存中的布局详解

Java普通对象在内存中的布局markword(对象头)markword一共8个字节。共64位。里面存储的内容包括hash值,分代年龄,锁的相关信息等。classpoint(类型指针)对象指向类元数据的指针(32位操作系统–>4字节,64位操作系统–>8字节(未开启压缩指针),4字节(开启压缩指针))JVM通过这个指针来确定这个对象是哪个类的实例(根据对象确定其Class的指针)instancedata(实例数据)实例的成员变量、方法等数据。大小跟类对象里面数据大小有关。padd

2020-06-27 11:03:01 177

原创 Mysql数据库--索引解析以及sql优化

索引的本质索引—是帮助MYSQL高效获取数据的排好序的数据结构每次在节点上的的查找都是一次磁盘I/O,很费时间,索引在本质上帮助mysql减少了I/O的次数。索引的数据结构选择史二叉树最多只能提高50%的性能不适用场景,当作为一个主键递增的值的索引的时候,会退化成链表形式。红黑树可以自动改变根节点,平衡二叉树。比二叉树更优秀一点但是当数据量非常庞大的时候,会导致树太高,层级太多。试想一下,假如我们拥有几百万条数据,每次插入,可能都要进行一次平衡,每次查找都需要Log(N)的时间复杂

2020-06-22 16:53:34 97

原创 JVM的详细介绍,以及调优实例

JVM虚拟机介绍JVM虚拟机从大体上来说,可以分为5大模块。1、栈(虚拟机栈、也可称为线程栈)2、堆 (对象存放的内存)3、方法区 (静态变量、静态方法、运行时常量)4、程序计数器(在线程启动时,会给每个线程分配)5、本地方法栈(本地方法)栈每当一个线程开始的时候,jvm就会给该线程分配一个栈内存。(因此也可称为线程栈)每个栈内存都会有一个程序计数器,用来表示程序运行到第几行(这个第几行指的是在java字节码里的行数),例如CPU被抢占的时候,这个线程会挂起,那重新获得cpu的时候,需

2020-06-22 16:43:04 135

原创 Druid数据库连接池

Jdbc-java-connector需换成低版本引用手动初始化druid在yml里面配置druid#数据库类型为mysqlspring.datasource.dbType=mysql#启动时初始化5个连接spring.datasource.initialSize=5#最小空闲连接5个spring.datasource.minIdle=5#最大连接数量20spring.d...

2019-12-10 11:22:28 146

原创 springboot三大特性

spring核心思想分三大类:控制反转(IOC),依赖注入(DI)和面向切面(AOP)。IOC和DI控制反转通俗讲,控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。也就是说,正常我们都是新建对象,才可以调用对象。现在不需要了,交给容器来管理,我们只需要通过一些配置来完成把实体类交给容器这么个过程。这样可以减少代码量,简化开发的复杂度和耦合度。—统统交给Spring管理这里,我要...

2019-12-10 11:18:06 1567

原创 ognl对象导航图语言

功能:解决复杂map对象下数据获取处理的问题。依赖:用旧版的话不多说 直接上代码,对于不同类型的值的获取:public class OgnlUtils {/** * @return java.lang.Boolean * @throws * @author zhengwentao * @Description 获取String类型 * @date 2019/11/8 10:3...

2019-12-10 11:12:36 81

原创 HTTPS证书制作手册

话不多说,直接上干货。运行环境Linux系统(须安装openssl)Https证书制作CA与自签名进入Linux系统以后,建立一个存在证书的文件夹(任意路径)。#mkdir key#cd key制作CA私钥openssl genrsa -out ca.key 2048制作CA公钥/根证书openssl req -new -x509 -days 3650 -key ca.key...

2019-12-10 11:08:23 102

原创 nacos安装

nacos的安装下载:官网地址https://nacos.io/zh-cn/安装将下载好的文件解压后,上传至服务器。启动在服务器有对应版本JDK的情况下,无需更改任何配置,运行文件中bin/startup.shcd到…/nacos/bin/目录下,命令为sh startup.sh稍等一会,此时不要shutdown,可能会引起nacos服务崩溃。如果一切顺利,访问#ip:8848...

2019-12-09 16:29:52 205

原创 Linux修改时间时区

查看当前系统时间:date[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s7TIhXjV-1575879866344)(/uploads/nbnbpluse/images/m_0d63c4083b85211376e442fd67c13dba_r.png)]设置系统时区:export TZ=‘Asia/Shanghai’再次查看当前时间:date修改硬...

2019-12-09 16:25:39 55

空空如也

空空如也

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

TA关注的人

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