
面试经典
文章平均质量分 93
不会写代码的coder
这个作者很懒,什么都没留下…
展开
-
redis分布式锁实现方案和原理解析
分布式锁的在分布式集群环境中有着至关重要的作用,为了保证高并发场景下数据的一致性,确保业务能够安全的运行,为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。首先我们看一段很普通的代码: @Autowired StringRedisTemplate stringRedisTemplate; protected final static String product = "123456789原创 2021-03-13 15:41:47 · 423 阅读 · 0 评论 -
一致性哈希和哈希槽(redis)
1、集群分片模式如果 redis 只用复制功能做主从,那么当数据量巨大的情况下,单机情况下可能已经承受不下一份数据,更不用说是主从都要各自保存一份完整的数据。在这种情况下,数据分片是一个非常好的解决办法。redis 的 custer 正是用于解决该问题。它主要提供两个功能:1、自动对数据分片,落到各个节点上2、即使集群部分节点失效或者连接不上,依然可以继续处理命令对于第二点,它的功能有点类似于 sentienl 的故障转移,在这里不细说。下面详细了解下 redis 的槽位分片原理,在此之前,先了解原创 2020-09-29 22:11:23 · 1596 阅读 · 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 · 213 阅读 · 0 评论 -
MVCC 机制的原理及实现
什么是 MVCCMVCC (Multiversion Concurrency Control) 中文全程叫多版本并发控制,是现代数据库(包括 MySQL、Oracle、PostgreSQL 等)引擎实现中常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的吞吐性能。如此一来不同的事务在并发过程中,SELECT 操作可以不加锁而是通过 MVCC 机制读取指定的版本历史记录,并通过一些手段保证保证读取的记录值符合事务所处的隔离级别,从而解决并发场景下的读写冲突。下面举一个多版本读的例子,例如两个事务原创 2020-09-11 17:33:40 · 47634 阅读 · 14 评论 -
多线程之深入学习并发编程
谈到多线程我们就应该知道,在多线程的并发情况下,安全问题和性能问题是我们额外关注的焦点,需要我们不断的选型,技术没有好与不好,只有适不适合,同样在各大公司面试题库中也是必问的,即将走向工作岗位的技术人员应该好好复习和深入理解这方面知识。1.多线程的基础1.何为线程安全?线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。2.创建线程的四种常见方式2.1 重写 Thr原创 2020-08-24 17:50:04 · 727 阅读 · 1 评论 -
红黑树的从浅到深
在了解红黑树之前,需要有二叉查找树的基础,这样更好理解,如果直接上手,可能会有点难以接受。首先红黑树的几个重点性质先摆出来,后续对着这些性质进行自平衡,同时如果有讲的不对的地方,还请多多谅解,多多指教,我定会虚心学习。性质1:每个节点要么是黑色,要么是红色。性质2:根节点是黑色。性质3:每个叶子节点(NIL)是黑色。性质4:每个红色节点的两个子节点一定都是黑色。 不能有两个红色节点相连。性质5:任意一节点到每个叶子节点的路径都包含数量相同的黑结点。俗称:黑高!从性质5又可以推出: 性质5.1:原创 2020-07-10 15:55:55 · 290 阅读 · 0 评论