自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 问答 (6)
  • 收藏
  • 关注

原创 cas原理以及Atomic原子类分析

一、什么是CASCAS:Compare and Swap,即比较再交换。CAS 的思想很简单:三个参数,一个当前内存值 V、旧的预期值 A、即将更新的值 B,当且仅当预期值 A 和内存值 V 相同时,将内存值修改为 B 并返回 true,否则什么都不做,并返回 false。上面那段话来源于官方解析Atomic原子类底层核心就是CAS,无锁化,乐观锁,每次尝试修改的时候,就对比一下,有没有人修改过这个值,没有人修改,自己就修改,如果有人修改过,就重新查出来最新的值,再次重复那个过程二、

2021-08-29 22:04:27 367 5

原创 nexus私服搭建

nexus私服搭建1、下载nexus下载链接https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.18.1-01-unix.tar.gz 但是特别慢,原因相信都知道的。官网最新版是:nexus-3.18.1-01网盘下载链接:https://pan.baidu.com/s/1Afxszbbt0BSg9ckaVMc_dg提取码:wzma复制这段内容后打开百度网盘手机App,操作

2021-08-15 23:17:16 880

原创 lru链表以及buffer pool运行机制

lru链表以及buffer pool运行机制一、lru链表lru链表来判断淘汰哪些缓存页,比如说内存不够用了,没有空闲缓存页了,mysql并不能凭空就知道该淘汰哪些缓存页,所以引入了lru链表,将最新更新的缓存页加入到头部,一致没有被访问的缓存页则会慢慢的在最尾部,所以单缓存页不够了,则找最尾部的缓存页释放。二、buffer pool 预读机制预读机制就是但是mysql发现,用户访问了很多数据页,回把相邻旁边的数据页也加载的缓存页中。①、有一个参数innodb_read_ahead_thres

2021-08-08 23:07:17 207 1

原创 Buffer Pool数据结构

Buffer Pool数据结构一、缓存页缓存页所对应的就是磁盘数据页,同样的数据结构缓存到内存中二、free链表free链表是一个双向链表,头节点指向第一个节点和最后一个节点,存储的数据意义主要是空闲的缓存页。节点指针存放在描述数据的数据结构中,也就是说出了头节点的内存占用不额外占用内存,有空闲页则链起来,空闲页清除,则去掉改节点。三、数据页缓存hash表是由表空间号+数据页号为key,缓存页地址指针为值。当上游系统查询一条数据的时候,找到对应的数据页前会到此hash表看看是否有缓存页

2021-08-01 22:53:14 237 1

原创 redis过期key事件处理

redis过期key事件处理一、需求设置过期时间key,在过期时能不能有所提示如果能对过期Key有个监听,如何对过期Key进行一个回调处理?如何使用 Redis 来实现定时任务?二、实现创建监听类@Componentpublic class RedisKeyExpirationListener extends KeyExpirationEventMessageListener { public RedisKeyExpirationListener(RedisMessageLis

2021-07-25 20:01:18 427

原创 InnoDB存储引擎

InnoDB存储引擎一、buff缓冲池是数据库的一个内存组件,缓存了磁盘上的真实数据,上游系统调用curd主要就是对内存里面buffer pool操作二、undo日志写入更新前的旧值,用于回滚。记录的是每个修改操作的逆操作和一致性非锁定读(undo log 回滚行记录到某种特定的版本---MVCC 多版本并发控制)。三、redo日志以及刷盘策略redo log 和 undo log 都是存储引擎层面上生成的日志,并且都记录了数据的修改:只不过 redo log记录的是"物理级别"上的页修改操

2021-07-11 23:29:32 59

原创 DNS寻址

DNS寻址前言:当我们对浏览器输入 www.baidu.com时,实际上最终还是访问到对应的web服务器。虽然我们每次访问网页,都是使用域名的方式(例如:www.baidu.com)。但对于计算机来说,它最终访问的是域名对应的IP(例如:10.102.201.253)。所以今天我们要讲的这一切,其实就为了说清楚一件事情:DNS是如何为域名找到对应的 IP 地址的。一、什么是DNSDNS就是域名系统,是因特网中的一个核心服务,是用于实现域名和IP地址相互映射的一个分布式数据库,使用户更方便的访问网站,

2021-07-03 12:29:23 368

原创 Centos搭建单机es

Centos搭建单机es一、安装包1、官网下载安装包https://www.elastic.co/cn/downloads/elasticsearch下载上传到服务器上如果不知道mac如何上传文件到服务器,移步此博客https://note.youdao.com/s/AQ8jFCWp2、通过链接下载# 下载, 获取不成功可直接从官网下载curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticse

2021-07-03 12:27:10 151 2

原创 Centos自建mongoDB

Centos自建mongoDB一、下载安装包#创建文件夹并到相应的目录mkdir /usr/local/mongoDBcurl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz二、解压安装包tar -zxvf mongodb-linux-x86_64-4.0.6.tgz三、配置系统文件profilevi /etc/profile注:vi为输入命令,看到下面页面时,按下键盘”i”箭进入输入模式,然后复

2021-06-01 16:01:55 165

原创 线上GC日志如何查看

线上GC日志如何查看附上案例的jvm参数-server -Xms2048M -Xmx2048M -Xss256k -XX:NewSize=512M -XX:MaxNewSize=512M -XX:SurvivorRatio=8 -XX:CMSInitiatingOccupancyFraction=50 -XX:+AggressiveOpts

2021-04-01 22:00:12 1529

原创 Centos自建单机RocketMQ

Centos自建单机RocketMQ标签(空格分隔): 消息队列1、jdk1.8及以上且保证环境变量配好了首先保证环境正常java -version、javac等命令都可以使用2、官网下载RocketMQ包直接从官网上面下载rockmq源码(下载地址:http://rocketmq.apache.org/release_notes/release-notes-4.4.0/)3、部署将rocketmq-all-4.4.0-bin-release.zip上传到linux服务器上面/u

2021-03-30 23:06:17 125 2

原创 JVM垃圾回收算法

JVM垃圾回收算法一、复制算法上一篇文章说到,jvm通过可达性算法,标记堆中的实例对象是否直接或者间接的被GC Roots引用,而没有引用的则是垃圾对象,等待回收的,那么什么时候会回收这些对象呢?新生代存储满了,存不了下一个新生成的实例对象,那么就是触发一次youngGc,回收掉垃圾对象。1、触发youngGc条件以及回收机制堆内存新生代中分为三个区域,eden区、survivor1区、survivor2区,默认内存大小比例是 8:1:1。新对象进入的区域是eden区,而survivor区其

2021-03-16 21:41:11 109

原创 JVM 可达性算法以及java引用类型

JVM 可达性算法以及java引用类型一、可达性算法1、什么是对象可达对象可达指的就是:双方存在间接或者直接的引用关系。根可达或者GC Roots可达就是指:对象到GC Roots存在间接或者直接的引用关系。如下代码public class MyObject { private String objectName;//对象名 private MyObject refrence;//依赖对象 public MyObject(String objectName) { this.obj

2021-03-16 21:40:44 390

原创 JVM第一章类加载机制以及双亲委派模型

JVM石衫学习小计一、java代码运行机制​ 首先对于我们开发者而言,编码文件都是java后缀的编码文件,那这个java后缀文件是怎么运行在我们计算机系统的呢?​ 通过编译成class文件然后交给jvm执行,如下列流程图:graph LRA[java后缀文件: user.java] --打包编译--> B[class后缀文件:user] B--->jvm[jvm实例]subgraph JVM jvm--类加载器-->id3[类加载器] id3-->id4[

2021-03-16 21:40:15 95

原创 JVM内存区域

JVM内存区域在说明完类加载机制之后再说收jvm内部各个区域是如何工作的。一、各个区域作用1、mateSpace方法区在jdk1.7之前(包含1.7)这块区域叫做永久代,在jdk1.8之后就没有永久代了,只有mateSpace(元数据区域),这个区域是存储初始加载类的描述信息。2、程序计数器首先需要明白我们写好的Java代码会被翻译成字节码,对应各种字节码指令,而当JVM初始化类信息之后就会执行字节码执行引擎,去执行编译出来的代码指令,那么在执行字节码指令的时候,JVM就需要一个特殊的

2021-03-16 21:39:20 143

原创 引入MQ消息队列的作用及其优缺点

一、系统中为什么需要用到消息队列,使用消息队列有什么优点? 使用消息队列的优点很多,这里就说比较重要的三个优点:解耦、异步、削峰填谷。 ①、解耦: 首先引入一个场景:系统A作位一个接口请求方,现在需要向B、C、D三个系统发送请求,这个时候呢A系统不需要发送请求给D系统了,而需要发送请求给E系统,那么在A系统里面就需要修改代码,每一次发送的请求方改变的话,都...

2020-04-06 17:45:21 834

原创 Windows Server 2012远程连接断开后自动注销导致web项目停掉的坑

Windows Server2012 默认是不会注销,所以远程链接次数过多,会导致远程登陆的链接占用导致不能登陆。但是配置了自动注销时间的话,会导致启动的web项目停掉,然后导致很严重的后果。。。所以我们要把远程登陆链接断开自动注销关掉一、win + R 输入gpedit.msc ,然后计算机配置=》管理模块=》Windows组件=》远程桌面服务=》远程桌面回话主机=》回话时间限...

2020-03-31 10:23:22 4552 7

原创 常用线程池的工作原理和使用场景

1.1 为何需要使用线程池 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。说白了就是为了避免频繁创建和销毁线程带来的巨大开销。 比如说,线程池里面比如说固定就是100个线程,后面的人过来了就是从线程池里获取线程来工作,线程干完活儿了,别销毁,直接还到线程池里去,避免频繁的创建和销毁线程,会导致系统的运行效率很...

2020-02-12 16:01:39 883

原创 Java内存模型以及Volatile关键字深度剖析

Java内存模型Java内存模型应该说成Java线程内存模型,同CPU缓存模型类似,是基于CPU缓存模型来建立的,Java线程内存模型是标准化的屏蔽掉了底层计算机的区别。如上图所示每一个线程对应一个工作内存,相当于cpu的高速缓存,从主内存中获取共享变量,并存贮一份共享变量副本,而每个线程的共享变量副本都是相对独立的,那么当我们写多线程程序的时候,当不了解Java线程内存模型的时候,并...

2020-01-28 20:31:54 137 1

原创 CPU多级缓存-多核并发缓存架构解析

CPU多级缓存主内存(RAM):也就是所谓的内存条,一般当数据写入电脑磁盘的时候需要先写入主内存,然后再写入磁盘。系统主线:连接系统cpu和主内存的系统主线,就比如台式电脑连接主板上连接cpu和内存条的主线。如下图所示最简单的高速缓存的配置,数据的读取和存储都经过高速缓存,CPU核心与高速缓存有一条特殊的快速通道;主存和高速缓存都连在系统总线上,这条总线还用于其他组件的通信。高速缓...

2020-01-27 21:27:27 1269 1

原创 理解红黑树之JDK源码应用

一、红黑树的介绍算法导论对红黑树的介绍:红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的二、红黑树的性质每个结点要么是红的,要么是黑的。 根结点是黑的 定义NULL为黑色 如果某个子结点是红色的,那么它的两个儿子都...

2019-11-07 15:31:02 273 1

原创 将java对象转化成Map

附上代码:public Map<String, Object> object2Map(Object obj) { Map<String, Object> map = new HashMap<>(); if (obj == null) { return map; } Cl...

2019-10-18 10:52:16 768

原创 java8 枚举List匹配添加另一个list的值

直接附上代码: List<Map<String, Object>> list = ProtocolTypeEnum.getAllRentTemplate();//枚举List List<Map<String, Object>> protocolList = this.findProtocolByContId(contractId...

2019-10-18 10:50:27 1342 2

转载 @Column注解

[@Column]用于指定列的相关属性 name - 可选,表示数据库表中列的名称。 默认为属性或字段名称。 nullable - 可选,表示该字段是否允许为 null,默认为 true(null) 若设置为false 则该列不可为null值 unique - 可选,表示该字段是否是唯一标识,默认为 false(不唯一)...

2019-08-02 09:51:11 10006

原创 java8 新特性函数式编程lambda和stream详解

一、初识lambda表达式 lambda表达式是一个匿名函数,我们可以把lamdba表达式理解为是一段可以传递的代码。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,是java的语言表达能力得到了提升。 先不说语法,我们先来做一个需求: 获取当前公司中员工年龄大于35的员工信息List<Person> emps = ...

2019-08-01 09:27:04 306 1

原创 Redis基础知识

一、redis介绍: redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)、Hash(哈希类型的映射表)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。二、特性:速度快...

2019-07-21 15:01:16 143 1

转载 浅谈HashMap中的hash算法

浅谈HashMap中的hash算法HashMap是我们常见的一种数据结构,实现Map接口,用来存储键值对,允许null键/值、非同步、不保证有序(比如插入的顺序)。那HashMap中最核心的部分就是哈希函数,又称散列函数。也就是说,哈希函数是通过把key的hash值映射到数组中的一个位置来进行访问。比如:存在一组哈希值 10,13,7,5,4,20存在一个长度为10的数组 arrays...

2019-06-04 22:55:05 581

转载 Java中 >>> 符号有什么实际作用?

java中有三种移位运算符<< : 左移运算符,num << 1,相当于num乘以2>> : 右移运算符,num >> 1,相当于num除以2>>> : 无符号右移,忽略符号位,空位都以0补齐A >>> B -- B 指定要移位值A 移动的位数。无符号右移的规则只记住一点:忽略了符号位扩展...

2019-06-04 22:13:32 1550

转载 异或“∧”运算的作用

异或:相同为0,不同为1异或运算符∧也称XOR运算符。它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即0∧0=0,0∧1=1,1∧1=0。如: 即071∧052,结果为023(八进制数)。“异或”的意思是判断两个相应的位值是否为“异”,为“异”(值不同)就取真(1),否则为(0)。  下面举例说明∧运算符的应用:  (1)与1相∧,使特定位翻转...

2019-06-04 21:40:15 8703

原创 Hibernate5.0配置C3P0连接池步骤详解

Hibernate5.0拥有自己的数据库连接池,但是无论性能和功能都不如C3P0(本人新手,查取资料得知),由于之前苦搜资源都不得愿,所以写下此篇文章以供像我一样苦于搜索的新手,以供参考。    Hibernate5.0整合C3P0实现连接池的步骤如下:    首先第一步    1).到https://sourceforge.net/projects/hibernate/ 到该网站

2017-10-15 12:00:38 7224

空空如也

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

TA关注的人

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