自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Netty】Netty入坑:一、全网最清晰图解、NIO简单介绍

一、什么是Java NIO 的非阻塞模式连接层(即Selector层,所谓的多路复用):一个线程,从某通道发送请求或者读取数据的时候,它仅能得到当前可用的数据。如果当前没有数据可用的话,就什么都不获取。并且它不会阻塞起来,他可以去轮训其他通道,直达当前通道有数据变动之前,它都可以去做其他事情,或者说它都可以去轮训其他通道。I/O层(即Buffer层):当某一个通道有数据传输过...

2021-04-07 16:35:00 42

原创 【JVM】【常用工具】【MAT】macbook安装MAT(独立版,非eclipse插件)

MAC版本MAT下载地址如下:https://www.eclipse.org/mat/downloads.php下载后解压,直接打开软件:提示报错查看该日志文件,提示该目录无法写入,可以使用-data参数java.lang.IllegalStateException: The platform metadata area could not be written...

2020-11-04 00:17:00 125

原创 【Canal】【MySQL】解密阿里Canal :(一)Canal工作原理

我们先回顾一下,传统MySQL主从复制工作原理:1、现在有一个客户端,往主库(Master)中写入一条数据;2、主库(Master)会记录一条数据变化,向BinLog中插入一条数据日志;3、I/O Thread会不停的调度(即过一会执行一下),向BinLog中发起一个请求,读取一下BinLog中的二进制日志4、BinLog接收到请求后,把数据发送到从库(Slave)中的;...

2020-10-25 16:03:00 63

原创 【Docker】docker mongo 持久化存储

先创建好mongo的持久化目录:mkdir -p ~/docker_data/mongo/{data,conf}拉取mongo镜像:docker pull mongo创建一个docker-mongo实例:docker run -idt --name mongo --privileged=true \-p 27017:27017 \-v ~/docker_d...

2020-10-08 18:00:00 50

原创 【常用工具】①②③④⑤⑥⑦⑧⑨⑩

①②③④⑤⑥⑦⑧⑨⑩⑪⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳

2020-09-28 21:58:00 26

原创 【ElasticSearch】【Docker】docker 容器添加ik分词插件

这里不建议进入容器下载插件,因为是在是太慢了!并且容器提供的指令是有限的!!!先去github下载ik分词器的插件:https://github.com/medcl/elasticsearch-analysis-ik/releases必须下载和当前es对应的版本,例如:我当前es是7.6.2,对应的ik分词插件也应该是7.6.2版本我这里已经下载好了,然后进行解压,然后拷贝到docker...

2020-09-22 14:23:00 27

原创 【Mysql】Linux mysql如何开启binlog?

先登录mysql,查看看binlog日志是否开启?[root@bogon etc]# mysql -u root -pmysql> show variables like '%log_bin%';开启binlog日志:退出当前sql指令:mysql> quit;在my.cnf文件中添加两行配置:server-id表示单节点的id,这里由于只...

2020-07-22 23:02:00 36

原创 【Spring】大白话聊聊代理模式 —— 动态代理

为什么要使用代理模式呢?打个比方,我虽然不会打篮球,但我很喜欢A锥,可是国内我又买不起,发现海淘的A锥,既经济又实惠(咱也不知道是不是真货,咱也不敢问),不过我发现我去访问海外电商极度费劲,此时我该怎么办?我突然想到了代购老黄,我们可以通过老黄啊,来帮我们获取到我们心仪的A锥。从静态代理的角度我们分析一下老黄代理如何运作:所以对于老黄,也就代理来说,其实就是一个搬运工。也...

2020-07-05 16:17:00 25

原创 【操作系统】在网络编程中,什么是C10K问题?

10K,顾名思义就是10000,C可以理解为【Client】,个人理解就是此时有10000个客户端,并发连接同一个服务器上,导致服务器过多,使得服务器崩溃的问题。...

2020-07-01 23:12:00 27

原创 【Redis】大白话聊聊Redis如何实现持久化

Redis两种持久化方式:1》RDB(snapshotting快照)是Redis的默认持久化方式(把数据做一个备份,将数据存放到磁盘中)这种方式是将内存中的数据,以快照的方式写入到二进制文件中,存放默认文件是【dump.rbd】。可以通过配置文件来配置这个持久的方式,说白了就是持久化频率,缓存数据我多久做一个持久化,每次持久化多少数据。主要就是通过遍历所有缓存数据,通过【save】...

2020-06-28 22:13:00 67

原创 【MySQL】究竟什么是MVCC呢?

一、MVCC是什么呢?MVCC其实就是一个多版本并发控制,即多个不同版本的数据实现并发控制的技术,其基本思想是为每次事务生成一个新版本的数据,在读数据时选择不同版本的数据即可以实现对事务结果的完整性读取。二、MVCC主要有什么作用呢?提高并发读写性能,操作时会生成事务id1》每条记录都会保存两个隐藏列:【trx_id】(事务id)和roll_pointer(回滚指针2》每次操作都会生...

2020-06-13 18:36:00 23

原创 【Redis】如何使用sort对hash进行排序

我们先插入几条hash数据:127.0.0.1:6379> hmset soft:1 id 1 title mobile download 123 created 122OK127.0.0.1:6379> hmset soft:2 id 2 title android download 456 created 77OK127.0.0.1:6379> hmset ...

2020-06-11 11:08:00 88

原创 【Java】Sychronized的作用范围和注意事项

一共分为三个范围:作用某对象上,例如synchronized (this)、synchronized (object)作用在某方法上,例如:public void test()作用在类上,例如:① public synchronized static void test()② synchronized(SynchronizeDemo.class) { ...

2020-06-10 19:26:00 48

原创 【Java】唠唠synchronized中的重量级锁

说到轻量级锁,我们必须先说一下轻量级锁是什么?synchronized在JDK1.6之后的优化锁后,一共有四种锁阶段:无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁而重量级锁,正处于是第四种阶段,即当某个线程长时间占有锁资源,而其他线程一直处于自旋状态并竞争激烈,锁将会升级为重量级锁。子曾经曰过,“Don't BB,Look at the pictu...

2020-06-10 16:31:00 27

原创 【Java】是时候了解一波如何排除堆内存溢出了?

在排查之前,我想小伙伴对JVM内存结构都应该是了解的吧,不了解的传送门走一波:《堆区域的一个详细了解并附带调优案例》《帧栈核心组成部分详解》排查之前,我脚的我们必须得了解一波啥是内存溢出?(传送门在这里:《你必须了解的内存溢出和内存泄漏》) 内存溢出:系统已经不能再分配出多余的空间给你所使用了。 内存泄漏:在你使用一块资源时,给他分配了一部分空间;当你不再使用了之后,并没有...

2020-06-08 21:42:00 17

原创 【Java】【JVM】你必须了解的内存溢出和内存泄漏

什么是内存溢出和内存泄漏呢?内存溢出(Out Of Memory —— 也就是常说的OOM)系统已经不能再分配出多余的空间给你所使用了。比如:你从数据库查询出了100M的数据,但是系统只有90M的数据了,boom!!!没那么多内存了,所以就炸了内存泄漏(Memory Leak)在你使用一块资源时,给他分配了一部分空间;当你不再使用了之后,并没有回收它,但是它确实没有用...

2020-06-08 20:09:00 19

原创 【Java】唠唠synchronized中的轻量级锁

说到轻量级锁,我们必须先说一下轻量级锁是什么?synchronized在JDK1.6之后的优化锁后,一共有四种锁阶段:无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁而轻量级锁,正处于是第三种阶段。那么如何才会触发偏向锁升级为轻量级锁?偏向锁又是如何升级为轻量级锁的呢?1》如何触发偏向锁升级为轻量级锁呢?①线程A此时已占有锁对象资源,锁对象【Ma...

2020-06-06 16:33:00 30

原创 【Redis】为什么通常说Redis是单线程的?并且Redis为什么这么快!

多线程有什么好处呢?使用多线程它不香么?对于单纯的网络IO来说,当请求量达到一定程度之后,多线程的确会有很大的优势,不过并不是单纯的多线程,而是每个线程都有自己的多路复用模型(如:select、poll、epoll)也就是多线程和多路复用模型混合。那Redis为什么是单线程的呢?(这里指Redis4.0版本之前)但是我们还要考虑Redis操作的对象,毕竟Redis是直...

2020-06-04 15:43:00 21

原创 【Java】【HashMap】JDK1.7中ConcurrentHashMap是如何解决调用size时的一致性问题呢?...

再调用【size()】时,会出现什么样的一致性问题呢?1》在没有put的情况下,调用concurrentHashMap的size()方法,可以直接获取到表的长度2》在线程A调用size()方法的同时,线程B试图PUT了一个数据,那么线程A如何保证size()结果一致性呢?当然,JDK设计人员一定也想到了这个问题,官方源码如下:public int size() { ...

2020-06-02 15:24:00 41

原创 【Java】手动模拟实现一个AQS

什么是AQS?synchronized(基于底层C++,语言实现的同步机制)Aqs同步器(Java实现)【Unsafe】魔法类绕过虚拟机,直接操作底层的内存话不多说,我们手动模拟一个AQS:1》锁对象:package com.example.demo.thread.current;import com.example.demo.util.UnsafeInstanc...

2020-05-29 22:52:00 24

原创 【Java】如何查看某一Java进程中,当前有多少线程正在执行?

我们先看一个最古老的多线程实现的服务端public class SocketThread { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(9889); while (true) {...

2020-05-28 14:47:00 19

原创 【常用工具】IDEA 使用SFTP上传代码至测试服务器上

话不多少,跟图操作就可以了然后将代码上传就可以了,右键项目:然后再服务器上看效果就可以了

2020-05-27 11:10:00 29

原创 【Java】【常用工具】centos yum安装jdk1.8

yum安装:搜索jdk安装包[root@bogon ~]# yum search java|grep jdk下载jdk1.8,下载之后默认的目录为:/usr/lib/jvm[root@bogon ~]# yum install java-1.8.0-openjdk看到如下这个就说明安装成功了安装后,环境变量已经自动配置好了[root@bogon jvm]...

2020-05-27 10:20:00 21

原创 【Java】从synchronized锁优化来了解自适应自旋锁、锁消除和锁粗化

背景在jdk1.6之前,【synchronized】是一直都被称为重量级锁;但是在jdk1.6之后,【synchronized】进行了各种优化,本文主要介绍一下以下三种锁:自适应自旋锁锁消除锁粗化自旋锁和自适应自旋锁自旋锁互斥同步进入阻塞状态的开销都很大,应该尽量避免。大多数情况下,共享数据的锁定状态持续时间很短,比如:一段逻辑运行完只需要0.0001秒,但是如果使...

2020-05-26 14:41:00 18

原创 【Java】【HashMap】图解Hashmap扩容原理与多线程扩容成环原因

此处我们先看一下jdk7中HashMap扩容源码?void transfer(Entry[] newTable, boolean rehash) { int newCapacity = newTable.length; for (Entry<K,V> e : table) { while(null != e) { Entry&l...

2020-05-24 20:25:00 16

原创 【Java】手把手理解CAS实现原理

《手把手模拟CAS,瞬间理解CAS的机制》中用案例模拟了CAS,感兴趣的同学课先看看这个先来看看概念,【CAS】 全称“CompareAndSwap”,中文翻译即“比较并替换”。定义:CAS操作包含三个操作数 —— 内存位置(V),期望值(A),和新值(B)。如果内存位置的值与期望值匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不作任何操作。无论哪种情况,它都会...

2020-05-23 15:24:00 21

原创 【Java】手把手模拟CAS,瞬间理解CAS的机制

话不多少,先看个案例,【模拟100个用户,每个用户访问10次网站】”:public class ThreadDemo1 { //总访问量 private static int count = 0; //模拟访问的方法 public static void request() throws InterruptedException { T...

2020-05-22 19:19:00 33

原创 【Java】【JVM】Sychronized底层加锁原理详解

我们首先先看看JMM模型,话不多说,上图:JMM对应的8大原子操作:read(读取):从主内存读取数据load(载入):将主内存读取到的数据写入工作内存use(使用):从工作内存读取数据来计算assign(赋值):将计算好的值重新赋值到工作内存中store(存储):将工作内存数据写入主内存write(写入):将store过去的变量赋值给主内存中的变量lock(锁定):...

2020-05-22 00:15:00 26

原创 【MySQL】MySQL删除数据的过程是什么样的?drop、truncate、delete什么区别?

参考文献:runcate(截断)与delete(删除)的区别drop table这里先介绍一下【InnoDB】存储表空间概念:Innodb存储引擎,可将所有的数据库数据存放于【ibdata1】的共享表空间;也可以将每张表存放于独立的.idb文件的独立表空间(共享表空间和独立表空间都是针对数据的存储方式而言的。)1》共享表空间:某一个数据库的所有表数据都存放在一个文件中,...

2020-05-21 17:16:00 21

原创 【JVM】GC 可达性分析中哪些算是GC ROOT?

至今为止,我基本上发现网上没有几个博客说的很明白的,今天我在这里斗胆总结一下,各位大佬,如有错误,还望指责 ^ _ ^首先那肯定还得是看看概念了,在JVM中,什么可以作为GC Root呢?虚拟机栈(栈帧中的本地变量表)中引用的对象。  方法区中类静态属性引用的对象。方法区中常量引用的对象。本地方法栈中JNI(即一般说的Native方法)引用的对象。如果光看概念,我**...

2020-05-20 18:04:00 21

原创 【数据结构】为什么要使用一致性哈希算法?

话不多说,先看个案例:我们有一个分布式缓存,此时我们有3万张图片要存入缓存中。通常我们都会想到,采用哈希算法,对每一个图片进行分片:余数可以对应到相应的缓存节点,但是这样有一个缺陷:如果我们新增一个节点【s4】,可以发现一个这样的问题,有一个图片对应ID为6:以前:6%3=0 --> s0现在:6%4=2 --> s2由于服务器数量的改变,导致大量缓存失...

2020-05-20 15:03:00 27

原创 【Redis】linux中 使用yum下载并安装redis

1、检查是否有redis yum 源yum install redis2、下载fedora的epel仓库yum install epel-release3、安装redis数据库yum install redis4、安装完毕后,使用下面的命令启动redis服务# 启动redisservice redis start# 停止redisservice redis st...

2020-05-19 09:56:00 22

原创 【JVM】堆区域的一个详细了解并附带调优案例

话不多说,直接撸图:1》Eden中通过可达性分析,存活下来的对象直接通过复制算法移动到From区域中,此时该对象的分代年龄加1:2》当下一次虚拟机进行【Minor GC】时,会同时对【Eden】和【From】进行垃圾回收,如果搞对象还在使用中,则被移动到另一个【From】区,对象分代年龄再次加1:3》当该对象年龄达到15时,此时它已经是一个老不死的对象了,所以可以移动到老年区:...

2020-05-17 11:44:00 20

原创 【MySQL】MyISAM和InnoDB存储引擎区别详解

MyISAM主键索引(引擎的索引文件和数据文件是分离的)(图片来自:https://blog.csdn.net/u010922732/article/details/82994253)非主键索引(索引结构跟上面的主键索引的结构是相同的。)(图片来自:https://blog.csdn.net/u010922732/article/details/82994253)Inno...

2020-05-16 17:02:00 41

原创 【MySQL】深入理解MySQL锁和事务隔离级别

先看个小案例:话不多说,上案例,先创建一个表mysql> CREATE TABLE IF NOT EXISTS `account`( `id` INT UNSIGNED AUTO_INCREMENT, `name` VARCHAR(60), `balance` INT(11) DEFAULT NULL, PRIMARY KEY (id))ENGINE=innodb charse...

2020-05-16 15:39:00 14

原创 【MySQL】【常用工具】Centos7 yum安装MySQL5.7.25

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。安装操作下载并安装MySQL官方的Yum Repository[root@bogon ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-1...

2020-05-15 19:38:00 14

原创 【MySQL】大白话讲讲主从架构的几种搭配方式详解

话不多,直接上图:主要来详细讲讲各个搭配1》一主一从(成本最低):并不是用来提高程序性能的,主要是用来做数据的热备(即如果master节点挂掉的话,slave节点能充当master节点),提高程序可用性,容灾性较好。不存在数据一致性问题,因为只从一个节点中读取。虽然可以做热备,但是无法做数据备份(非高可用),如果不小心在master节点执行了DROP,slave则马上同...

2020-05-14 17:15:00 21

原创 【MySQL】剖析MySQL读写分离技术

主从技术的一个基本流程图:如何实现主从复制的呢:MySQL Master(主节点)1》当一个请求来时,首先由【mysqld】写入到我们的主【data】中2》然后【mysqld】将所有的sql语句存储到【binlog】日志文件中MySQL Slave(从节点)1》首先将主节点中的【binlog】数据拷贝到从节点【relay binlog】中2》再由【SQL Threa...

2020-05-14 15:58:00 17

原创 【MySQL】如何解决分库分表遇到的自增主键的问题?

雪花算法Redis生成主键

2020-05-13 15:48:00 39

原创 【常用工具】【vagrant】vagrant的box哪里下?镜像在哪儿找?教你在vagrant官网下载各种最新.box资源...

进入vagrant官网 :https://www.vagrantup.com/点击findbox【寻找box】,进入有很多box的列表 :https://app.vagrantup.com/boxes/search点击上图进入版本详情页: https://app.vagrantup.com/centos/boxes/7但是下载没那么简单了,需要拼接下载URL:...

2020-05-13 14:50:00 23

空空如也

空空如也

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

TA关注的人

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