自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(10)
  • 收藏
  • 关注

原创 MySQL之innodb的原理

我们要把id=1的这条数据的name="张三"的值改成name="李四",那么此时我们得先把要更新的原来的值“张三”和“id=1”这些信息,写入到undo日志文件中去。问题似乎并没有解决,Redo Log也在内存中,那么mysql宕机,不是也和缓冲池数据一样都丢失了么,这个问题得分两种情况,第一种事务没有提交,更新数据丢失了,其实是不要紧的,因为你一条更新语句,没提交事务,就代表他没执行成功,此时mysql宕机虽然导致内存里的数据都丢失了,但是你会发现,磁盘上的数据依然还停留在原样子。

2023-01-27 20:10:05 121

原创 Spring Cloud之Hystrix框架详解

比如A->B服务,B挂了,A一直在等待,直到超时,这时候我们肯定会设置超时时间,但是超时时间不能太长,在访问高峰期,太长了会导致A服务线程池被打满了,hang住了,如果被hang住了怎么办呢

2023-01-27 19:51:33 176

原创 数据库事务隔离级别

就是可重复读级别,这个级别下,不会发生脏写、脏读和不可重复读的问题,因为你一个事务多次查询一个数据的值,哪怕别的事务修改了这个值还提交了,你不会读到人家提交事务修改过的值,你事务一旦开始,多次查询一个值,会一直读到同一个值。read uncommitted(读未提交),他是解决脏写的问题的,也就是说,不可能两个事务在没提交的情况下去更新同一行数据的值,但在这种隔离级别下,可能发生脏读,不可重复读,幻读。第三个是repeatable read(可重复读),不同的隔离级别是可以解决不同的事务并发问题的。

2023-01-26 21:01:31 156

原创 MySQL之脏写、脏读、不可重复读、幻读

比如现在有事务1和事务2同时对一行数据进行修改,事务1将值改成1,而事务2将值改成了2,这时的值应该是2,但是就在这时,事务1发生了回滚,通过undo log,事务1将值回滚到原来的值0,而此时事务2一看我更新的2怎么突然变成0了,这就是。脏读和脏写差不多,比如现在有两个事务1和事务2,事务1修改值为1,就在这时事务2来读取到1这个值,然后做一推业务处理,但是事务1此时发生回滚了将值回滚成0,这个是事务2又来读取这个值,发现变成了0,和之前读的1完全不同,这就是所谓的。

2023-01-26 16:32:42 524

原创 Spring Cloud参数调优

然后我们加班加点终于开发完了,经测试同学通过,这时就开始上线了,刚开始好好的,系统反应还是很快的,但是用了一段时间,发现某些服务很慢,经常发生timeout,那现在怎么办呢?我认为首先要优化服务A,不能简单粗暴的调大超时时间,要检查下代码,是不是使用了线程不安全的类比如hashmap、arraylist等,这个要根据实际情况来判断,除了检查代码,还要看下sql,能不能优化,如果使用第三方组件还得结合组件来优化。如果是一笔支付那就完了。这样看来,虽然慢了点,好歹不报错,数据能够刷出来,老板那也有了交代了。

2023-01-26 16:28:55 127

原创 BIO、NIO、AIO区别

NIO-同步非阻塞,Selector在底层监听多个SocketChannel的时采用的时非阻塞方式,但是对于Selector的线程而言,需要进行同步等待,也就是说必须要等到某个SocketChannel有事件处理。同步是对于代码而言,阻塞是对于底层IO而言。AIO或者NIO2-异步非阻塞,意思就是说我发一个请求,去看某个连接是否有请求或者相应,接着就不管了,提供一个回调接口,后续如果某个连接有请求或响应,会调用这个回调接口作相关的业务处理。因为阻塞了,必然是同步的,所以每个连接必须要一个独立的线程来维护。

2023-01-25 20:46:18 39

原创 SpringCloud Netflix的核心组件

所以一般微服务架构中都必然会设计一个网关在里面,像android、ios、pc前端、微信小程序、H5等等,不用去关心后端有几百个服务,就知道有一个网关,所有请求都往网关走,网关会根据请求中的一些特征,将请求转发给后端的各个服务。举个例子,一个系统有3个服务,A、B、C,那么如果A想调用B的接口,问题来了,A服务压根儿就不知道人家B服务在哪台机器上啊!现在假设A服务自己最多只有100个线程可以处理请求,然后呢,B服务不幸的挂了,每次A服务调用B服务的时候,都会卡住几秒钟,然后抛出—个超时异常。

2023-01-25 20:24:50 460

原创 Java集合Map之Hashtable原理

上回我们在学习HashMap原理的时候遗留了一个问题,即HashMap是非线程安全的,那么如何来解决HashMap的线程安全问题呢,此时Hashtable就诞生了,今天我就来看下Hashtable是如何解决HashMap的线程安全的,请看源码:public synchronized V put(K key, V value) { //插入value值不能为null if (value == null) { throw new NullPointerExcep

2020-05-22 10:01:38 145 2

原创 Java集合Map之HashMap原理(jdk1.8版)

大家好,还记得上一篇文章我给大家留的问题么?如果没有印象请看《Java集合Map之HashMap原理(jdk1.7版)》.简单来说jdk1.7班的HashMap,当 Hash 冲突严重时,在桶上形成的链表会变的越来越长,这样在查询时的效率就会越来越低;时间复杂度为 O ( N ) 。今天我们就看下jdk1.8是如何进行优化的,其实啊jdk1.8正对这个问题做了两方面的优化:分别是Hash值算法优化和红黑树的加入,好的接下来我们具体看下。1.hash值优化话不多说先看源码/*** J...

2020-05-20 15:16:00 222 1

原创 Java集合Map之HashMap原理(jdk1.7版)

Map是java开发中最常见的一种数据结构,最常用的Map类型有HashMap、TreeMap、SortedMap等,今天就和大家分享下HashMap的底层原理,以及注意事项。HashMap 底层是基于 数组 + 链表 组成的,但是在具体实现方面jdk1.7和jdk1.8稍微有些不同,今天我们先来学习下jdk1.7的HashMap,请看下图根据上图我们知道HashMap其实是由一个数组组成,每个数组里面包含一个链表,每个链表是由多个K,V的数据结构组成,OK我们先对其结构有个大概的了解...

2020-05-19 18:25:43 325 1

空空如也

空空如也

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

TA关注的人

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