自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AQS源码级别深入剖析(一)

首先在此声明,以下所有的内容都是自己阅读源码的一些见解,关于其中源码也是看了很多遍才多少有所领会,关于AQS设计其实是非常有难度的,所以要想透彻还原作者Doug Lea的设计思想需要非常严谨的剖析每一行代码,本人能力有限,但是会尽可能的还原,其中有不对的地方还望各位大佬多多指点,科学需要严谨,多思考一步,离成功更进一步。public class AOSTest { public static void main(String[] args) { MyThread thread1 =

2021-04-08 01:40:33 305

原创 redis分布式锁实现方案和原理解析

分布式锁的在分布式集群环境中有着至关重要的作用,为了保证高并发场景下数据的一致性,确保业务能够安全的运行,为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。首先我们看一段很普通的代码: @Autowired StringRedisTemplate stringRedisTemplate; protected final static String product = "123456789

2021-03-13 15:41:47 382

原创 一致性哈希和哈希槽(redis)

1、集群分片模式如果 redis 只用复制功能做主从,那么当数据量巨大的情况下,单机情况下可能已经承受不下一份数据,更不用说是主从都要各自保存一份完整的数据。在这种情况下,数据分片是一个非常好的解决办法。redis 的 custer 正是用于解决该问题。它主要提供两个功能:1、自动对数据分片,落到各个节点上2、即使集群部分节点失效或者连接不上,依然可以继续处理命令对于第二点,它的功能有点类似于 sentienl 的故障转移,在这里不细说。下面详细了解下 redis 的槽位分片原理,在此之前,先了解

2020-09-29 22:11:23 1515 1

原创 零拷贝机制

传统的数据传输方法在互联网时代,从某台机器将一份数据(比如一个文件)通过网络传输到另外一台机器,是再平常不过的事情了。如果按照一般的思路,用Java语言来描述发送端的逻辑,大致如下。Socket socket = new Socket(HOST, PORT);InputStream inputStream = new FileInputStream(FILE_PATH);OutputStream outputStream = new DataOutputStream(socket.getOutput

2020-09-27 20:40:31 182

原创 MVCC 机制的原理及实现

什么是 MVCCMVCC (Multiversion Concurrency Control) 中文全程叫多版本并发控制,是现代数据库(包括 MySQL、Oracle、PostgreSQL 等)引擎实现中常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的吞吐性能。如此一来不同的事务在并发过程中,SELECT 操作可以不加锁而是通过 MVCC 机制读取指定的版本历史记录,并通过一些手段保证保证读取的记录值符合事务所处的隔离级别,从而解决并发场景下的读写冲突。下面举一个多版本读的例子,例如两个事务

2020-09-11 17:33:40 41435 13

原创 springboot自动配置以及集成redis使用

对于springboot的使用起来非常的轻便简单,但是如果能够理清原理会对你的学习帮助很多,对于面试也肯定不会只让我们去讲如何使用它,面试官更喜欢听的还是你对底层原理的了解程度,因为底层很多的思路都是贯通的,话不多说,直接开干。首先我们来实现一个小小需求,按条件去加载一个类进入ioc容器,比如当我们导入了jedis的jar包的时候,加载实体类User,如果不导入的话,加载失败,可以想一想?之所以摆出这个问题,是因为官方底层也是这么加载的。创建一个实体类Userpublic class User {

2020-09-08 10:48:54 695

原创 多线程之深入学习并发编程

谈到多线程我们就应该知道,在多线程的并发情况下,安全问题和性能问题是我们额外关注的焦点,需要我们不断的选型,技术没有好与不好,只有适不适合,同样在各大公司面试题库中也是必问的,即将走向工作岗位的技术人员应该好好复习和深入理解这方面知识。1.多线程的基础1.何为线程安全?线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。2.创建线程的四种常见方式2.1 重写 Thr

2020-08-24 17:50:04 684 1

原创 vue中的组件通信结合数据双向绑定

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>组件通信案例</title></head><body> <div id="app

2020-08-12 11:29:31 221

原创 红黑树的从浅到深

在了解红黑树之前,需要有二叉查找树的基础,这样更好理解,如果直接上手,可能会有点难以接受。首先红黑树的几个重点性质先摆出来,后续对着这些性质进行自平衡,同时如果有讲的不对的地方,还请多多谅解,多多指教,我定会虚心学习。性质1:每个节点要么是黑色,要么是红色。性质2:根节点是黑色。性质3:每个叶子节点(NIL)是黑色。性质4:每个红色节点的两个子节点一定都是黑色。 不能有两个红色节点相连。性质5:任意一节点到每个叶子节点的路径都包含数量相同的黑结点。俗称:黑高!从性质5又可以推出: 性质5.1:

2020-07-10 15:55:55 267

空空如也

空空如也

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

TA关注的人

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