摘要: Record Lock:记录锁,单个行记录上的锁。Gap Lock:间隙锁,锁定一个范围,但不包括记录本身。Next-Key Lock:临键锁,锁定一个范围,并且锁定记录本身。对于行的查询,都是采用该方法,可以解决幻读的问题。 什么是幻读? 事务A读取与搜索条件相匹配的若干行。事务B以插入或删除行等 阅读全文
posted @ 2020-07-06 10:53 Zyh_S 阅读(2791) 评论(0) 推荐(0) 编辑
摘要: 首先Condition维护了一个AQS单向链表,当调用await()时将当前线程加入到链表中,然后调用signal()会从链表头部拿出一个节点放到ReenTranLock维护的双向链表中,去抢锁, 如果抢锁成功就执行,如果调用signalAll就是把所有的Condition链表节点都加入到ReenT 阅读全文
posted @ 2020-07-06 10:52 Zyh_S 阅读(292) 评论(0) 推荐(0) 编辑
摘要: binlog 恢复使能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新。 在主复制服务器上记录所有将发送给从服务器的语句。redolog 记录的是新数据的备份。在事务提交前,只要将redolog持久化即可,不需要将数据持久化。当系统崩溃时,虽然数据没有持久化, 但是redolog已经持 阅读全文
posted @ 2020-07-06 10:51 Zyh_S 阅读(123) 评论(0) 推荐(0) 编辑
摘要: MySql InnoDB 的事务隔离级别 未提交读(Read uncommitted)A事务修改了数据,但尚未提交,B事务中的select会读到这些未被提交的数据(脏读)。幻读,不可重复读和脏读均允许。 已提交读(Read committed) 本事务读取到的是其他事务提交后的的数据。允许幻读和不可 阅读全文
posted @ 2020-07-06 10:49 Zyh_S 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 先删缓存再删数据库:在高并发的情况下会导致缓存击穿(缓存没有线程全部访问数据库造成压力过大)。当第一个线程进来删除缓存,第二个线程进来缓存没有查询数据库然后更新缓存,第一个线程更新数据库,造成脏读。先删数据库再删缓存:当一个线程进来更新数据库,另一个线程进来读取缓存,然后第一个线程更新缓存,造成脏读 阅读全文
posted @ 2020-07-06 10:48 Zyh_S 阅读(629) 评论(0) 推荐(0) 编辑
摘要: B-树与B+树相同点: 都是多路非二叉树 B-树与B+树都是平衡树B-树与B+树不同点: B-树每个节点即保存索引也保存数据B+树只有叶子节点保存数据 B+树增加了相邻接点的指向指针,可以大大增加区间访问性可使用在范围查询等 B-树每个节点索引和数据 在一起,区间查找代价大。原因: 平衡树层数少相对 阅读全文
posted @ 2020-07-06 10:47 Zyh_S 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。 阅读全文
posted @ 2020-07-06 10:46 Zyh_S 阅读(1555) 评论(0) 推荐(0) 编辑
摘要: 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包; 阅读全文
posted @ 2020-07-06 10:45 Zyh_S 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 工作原理剖析 Spring Boot关于自动配置的源码在spring-boot-autoconfigure-x.x.x.x.jar中: 当然,自动配置原理的相关描述,官方文档貌似是没有提及。不过我们不难猜出,Spring Boot的启动类上有一个@SpringBootApplication注解,这个 阅读全文
posted @ 2020-07-06 10:44 Zyh_S 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 首先需要java环境,安装java环境后 1.docker pull jenkins/jenkins 2.修改默认插件源地址 vi ~/jenkins/hudson.model.UpdateCenter.xml 1 http://mirror.xmission.com/jenkins/updates 阅读全文
posted @ 2020-07-06 10:43 Zyh_S 阅读(966) 评论(0) 推荐(0) 编辑
摘要: import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.ut 阅读全文
posted @ 2020-07-06 10:40 Zyh_S 阅读(363) 评论(0) 推荐(0) 编辑
摘要: @Transactional注解事务管理的底层实现脉络,就是使用拦截器。它就是TransactionInterceptor。 TransactionInterceptor是继承于TransactionAspectSupport的拦截器,拦截器的原理在这里就不细说了。被@Transactional注解 阅读全文
posted @ 2020-07-06 10:39 Zyh_S 阅读(619) 评论(0) 推荐(0) 编辑
摘要: docker 安装 1: 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm22: 添加软件源信息sudo yum-config-manager --add-repo http://mirrors.al 阅读全文
posted @ 2020-07-06 10:37 Zyh_S 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 解决方法: #yml添加 zuul: sensitive-headers: 原因: zuul 进行转发时RibbonRoutingFilter对请求参数和header重新过滤排列 可以看到ZuulFilter实现了IZuulFilter RibbonRoutingFilter继承了ZuulFilte 阅读全文
posted @ 2020-07-06 10:36 Zyh_S 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 本文主要记录Nginx怎么配置SSL证书,前提是Nginx安装成功和SSL证书已经获取。 在我们下载的证书文件中有一个Nginx的文件夹,这里面的两个文件都是需要的。我们需要把这个两个文件上传到 linux 服务器中,推荐放到/etc/ssl/目录下 然后我们需要去找到nginx的配置文件。 ps 阅读全文
posted @ 2020-07-06 10:33 Zyh_S 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 代码是自己实际使用中整理出来可直接启动运行,各种方式实现都有,每个类里面都有注释方便理解。token地址:http://localhost:8082/oauth/token?username=user&password=Aa123456&grant_type=password&client_secr 阅读全文
posted @ 2020-07-06 10:28 Zyh_S 阅读(591) 评论(0) 推荐(0) 编辑
摘要: pom.xml <!-- Spring Boot Mybatis 依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> < 阅读全文
posted @ 2020-07-06 10:26 Zyh_S 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 首先先进入.sort源码 进入list.sort 进入Arrays.sort 如果没有指定Comparator 进入Arrays.sort LegacyMergeSort.userRequested为true 没有设置进入ComparableTimSort.sort看TimSort的代码与Compa 阅读全文
posted @ 2020-07-06 10:24 Zyh_S 阅读(2167) 评论(0) 推荐(0) 编辑
摘要: 介绍: Message:消息,应用程序和服务器之间传送的数据,消息可以非常简单,也可以很复杂。有Properties和Body组成。Properties为外包装,可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body就是消息体内容。 Virtual Host:虚拟主机,用于逻辑隔离。一个虚拟 阅读全文
posted @ 2020-07-06 10:20 Zyh_S 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 在数组的数量小于47的情况下使用插入排序,在大于或等于47或少于286会进入快速排序(双轴快排) 大于286采用归并排序 在判断少于286之前还有一个操作 这里主要作用是看他数组具不具备结构:实际逻辑是分组排序,每降序为一个组,像1,9,8,7,6,8。9到6是降序,为一个组,然后把降序的一组排成升 阅读全文
posted @ 2020-07-06 10:13 Zyh_S 阅读(2169) 评论(0) 推荐(0) 编辑