自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 并发条件队列之Condition 精讲

1. 条件队列的意义Condition将Object监控器方法( wait , notify和notifyAll )分解为不同的对象,从而通过与任意Lock实现结合使用,从而使每个对象具有多个等待集。 Lock替换了synchronized方法和语句的使用,而Condition替换了Object监视器方法的使用。条件(也称为条件队列或条件变量)为一个线程暂停执行(...

2021-01-27 10:38:00 34

原创 AQS之ReentrantReadWriteLock写锁

1. 用法1.1 定义一个安全的list集合public class LockDemo {ArrayList<Integer> arrayList = new ArrayList<>();//定义一个集合// 定义读锁ReentrantReadWriteLock.ReadLock readLock = new ReentrantReadWriteLock...

2021-01-22 16:35:00 27

原创 AQS之ReentrantReadWriteLock精讲分析上篇

1.用法1.1 定义一个安全的list集合public class LockDemo { ArrayList<Integer> arrayList = new ArrayList<>();//定义一个集合 // 定义读锁 ReentrantReadWriteLock.ReadLock readLock = new ReentrantRe...

2021-01-20 14:10:00 27

原创 一文带你学会AQS和并发工具类的关系2

1.创建公平锁1.使用方式Lock reentrantLock = new ReentrantLock(true);reentrantLock.lock(); //加锁try{ // todo} finally{ reentrantLock.unlock(); // 释放锁}2.创建公平锁在new ReentrantLock(true)的时候加入关键字truepubli...

2021-01-18 17:52:00 21

原创 一文带你学会AQS和并发工具类的关系

1. 存在的意义  AQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻量级和高效地获取锁。  提供一个框架,用于实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关的同步器(semaphore等)。 此类旨在为大多数依赖单个原子int值表示状态的同步器提供有用的...

2021-01-15 16:40:00 16

原创 Lock锁 精讲

1.为什么需要Lock为什么synchronized不够用,还需要LockLock和synchronized这两个最常见的锁都可以达到线程安全的目的,但是功能上有很大不同。Lock并不是用来代替synchronized的而是当使用synchronized不满足情况或者不合适的时候来提供高级功能的为什么synchronized不够用效率低:锁的释放情...

2021-01-12 20:30:00 32

原创 Synchronized 精讲

1.简介1.1 作用在并发场景中,保证同一时刻只有一个线程对有并发隐患的代码进行操作1.2 错误案例需求:两个线程对 count 变量进行200000次循环增加,预期结果是400000次public class SynchronizedDemo implements Runnable { private static int count = 0; static Syn...

2021-01-11 21:24:00 21

原创 volatile 关键字精讲

1.错误案例通过一个案例引出volatile关键字,例如以下代码示例 : 此时没有加volatile关键字两个线程间的通讯就会有问题public class ThreadsShare { private static boolean runFlag = false; // 此处没有加 volatile public static void main(String[] ...

2021-01-08 10:02:00 22

原创 Java内存模型精讲

1.JAVA 的并发模型共享内存模型在共享内存的并发模型里面,线程之间共享程序的公共状态,线程之间通过读写内存中公共状态来进行隐式通信该内存指的是主内存,实际上是物理内存的一小部分2.JAVA 内存模型的抽象2.1 java内存中哪些数据是线程安全的,哪些是非安全的非线程安全 : 在 java 中所有的实例域、静态域、和数组元素都存放在堆内存中,并且这些...

2021-01-06 15:55:00 22

原创 JVM 真的很难学么?不、只是你“不敢学”而已

JVM 真的很难学么?不、只是你“不敢学”而已许多招聘的信息上面都说,要了解jvm、多线程什么的对于 java 程序员来说,这是工作好多年的程序员都不一定能掌握的东西,但是面试就会问啊,你不掌握咋整你说?为什么面试会问呢?因为面试时间就那么一个小时半个小时的,问不出什么东西,所以许多面试官都会问什么是类加载、jvm的结构、垃圾回收算法啊什么的,网上有很多的理论...

2020-04-29 09:21:00 19

原创 Redis-Cluster集群搭建

   本教程是利用redis5.0版本进行搭建的集群方式,因为redis发布了5.0之后推出了很多新的特性,其中一点就是放弃Ruby的集群方式,改用的C语言编写的redis-cli,使redis集群构建方式复杂度大大降低Redis官网搭建集群教程链接:https://redis.io/topics/cluster-tutorialredis-cluster架构图(三主三从6个节点的配置)...

2019-10-29 16:16:00 18

原创 Redis 文章一 之持久化机制的介绍

我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的企业级redis集群架构:海量数据、高并发、高可用持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面去,比如你redis整个挂了,然后redis就不可用了,你要做的事情是让redis变得可用,尽快变得可用。此时你需要重启redis,尽快让它对外提供服务,但是如果你没做数据备份,这个时候redis启动了,里面也是...

2019-10-29 15:24:00 14

原创 Redis 哨兵机制以及灾难演练

#### 哨兵都采用这个配置即可##### 1、修改sentinel.conf配置文件![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191022165743993-90469300.png)##### 2、禁止保护模式 protected-mode no   protected-mode参数是为了禁止...

2019-10-22 16:58:00 17

原创 经典的Redis的主从复制搭建

##### 配置服务器  1)、打开redis.conf文件修改 bind 指定的ip地址:![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191021210331234-1293911314.png)######   注意:将其IP改成 0.0.0.0 之后能跨域访问  2)、修改链接所必须的密码:...

2019-10-21 21:04:00 14

原创 Redis的几个核心机制底层原理

#### 1、S_DOWN和O_DOWN######   S_DOWN和O_DOWN两种宕机状态 (1)、S_DOWN是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机sdown达成的条件很简单,如果一个哨兵ping一个master,超过了is-master-down-after-milliseconds指定的毫秒数之后,就主观认为master宕机```# ...

2019-10-18 20:12:00 15

原创 从零开始装CentOS以及配置Redis,前端都可以!!!

##### 从零开始装CentOS以及配置Redis1、新建虚拟机---![image](https://img2018.cnblogs.com/blog/1334966/201910/1334966-20191016105938198-388095002.png)2、稍后再选择你要安装得系统镜像---![image](https://img2018.cnblogs.com/...

2019-10-16 11:00:00 13

原创 在项目中部署redis的读写分离架构(包含节点间认证口令)

#### 在项目中部署redis的读写分离架构(包含节点间认证口令)##### 1、配置过程--- 1、此前就是已经将redis在系统中已经安装好了,redis utils目录下,有个redis_init_script脚本,将redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我...

2019-10-13 20:28:00 21

原创 读懂MySQL执行计划

原文:https://mp.weixin.qq.com/s/-BlLvBKcF-yalELY7XkqaQ前言在之前的面试过程中,问到执行计划,有很多童鞋不知道是什么?甚至将执行计划与执行时间认为是同一个概念。今天我们就一起来了解一下执行计划到底是什么?有什么用途?执行计划是什么?执行计划,简单的来说,是SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景。在My...

2018-12-25 17:15:00 17

原创 将博客搬至CSDN

将博客搬至CSDN

2018-10-13 16:19:38 64

原创 SpringBoot之自动配置原理

我在前面的Helloworld的程序中已经分析过一次,配置原理了:1)、SpringBoot启动的时候加载主配置类,开启了自动配置功能 @EnableAutoConfiguration2)、@EnableAutoConfiguration 作用:将 类路径下 META-INF/spring.factories 里面配置的所有   EnableAutoConfiguration的值加...

2018-10-12 06:59:00 145

原创 SpingBoot之多Profile文件

1、我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml默认使用application.properties的配置;  在我们的项目开发、测试、上线过程中,不可避免的需要反复地修改配置文件。例如,开发环境连接的数据库ip和测试、生产环境的不同;开发环境开发的app版本和测试、生产线上的app版本信息也不同,等等.....我们发...

2018-10-11 22:45:00 141

原创 SpingBoot之配置文件的值注入问题

我们在这里研究的是以yml配置文件值注入的问题:Person: lastName: 张三 age: 23 boss: false birth: 2018-10-11 maps: {k1: v1,k2: v2} lists: - pig - dog dog: name: 半半 age: 1...

2018-10-11 22:04:00 14

原创 SpringBoot之YAML

SpringBoot的配置文件有两种,一种是properties结尾的,一种是以yaml或yml文件结尾的我们讨论一下yml文件结尾的文件:基本语法:  其实yml文件就是键值对的形式,不过就是键(key)与值(value)之间有一个空格。  形式:key: value(这个空格必须有)  yml是由空格进行控制层级关系的,只要是左对齐的一列数据,都是同一层级。例子:se...

2018-10-11 19:56:00 329

原创 SpringBoot之HelloWorld仔细分析

程序中的pom.xml文件:一、父级标签<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE<...

2018-10-11 07:35:00 14

原创 Spring Boot 入门

一、Spring Boot 入门环境约束–jdk1.8:Spring Boot 推荐jdk1.7及以上;java version "1.8.0_112"–maven4.x:maven 3.3以上版本;Apache Maven 3.3.9–IntelliJIDEA2017:IntelliJ IDEA 2017.2.2 x64、STS统一环境;编写第一HelloWorld程序 ...

2018-10-10 21:15:00 85

原创 vue入门之vue-cli安装项目

第一步先安装nmp  在node.js的官网下载即可。第二步 直接安装刚下载好的node.js即可,(这里建议不要修改node.js的安装路径),傻瓜式直接下一步即可检测是否安装成功:  在cmd的控制台直接输入node -v如果出现这样的界面恭喜你node.js安装成功(利用 win + r 键打开服务,之后输入cmd即可打开终端)这样一来你就可以检测一下是否安装好了...

2018-09-16 21:27:00 105

原创 Vue入门之v-if的使用

在vue中一些常用的指令都是v-这样的,v-if是vue的一个内部指令,常用于html中代码&lt;!DOCTYPE html&gt;html lang="en"&gt;&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta name="viewport" content="width=device-wid

2018-08-31 23:55:00 595

原创 Vue入门之HelloWorld

对于新学习一门技术,一门语言比如JAVA、Python等都是从编写Hello World开始的,这样一来有益于初学者的人门,并给予初学者一定的信心,所以我也从HelloWorld开始讲起。干货:  对于学习新的一门技术最好都是重从它的官网开始(如果是中文的官网最好,嘿嘿,因为本人的英文水平也是有限的),Vue的官网就是非常好它的官网可以支持翻译成多种语言的,所以对于英文不好的...

2018-08-30 23:37:00 14

原创 算法之枚举

算法枚举算法:(enum) 枚举名简介:枚举算法简单粗暴,他暴力的枚举所有可能,尽可能地尝试所有的方法。虽然枚举算法非常暴力,而且速度可能很慢,但确实我们最应该优先考虑的!因为枚举法变成实现最简单,并且得到的结果总是正确的。在实际问题中, 有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月, 一个班每周有六门课程等等。如果把这些量说明为整型, 字符型...

2018-03-01 12:50:00 144

空空如也

空空如也

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

TA关注的人

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