- 博客(23)
- 收藏
- 关注
原创 Redis高可用的原因(三) -- 哨兵机制
在Redis主从模式中 , 如果没有哨兵机制 , 当主节点挂了之后 , 需要程序猿手工去重新选取主节点 , 通知其他从节点归属于新的主节点 , 将旧的主节点设置为从节点归属于新的主节点 … 在手工维护期间 , 就无法提供服务 , 大大降低了程序的可用性 , 因此 , Redis提供了哨兵(sentinel)机制来自动实现上述步骤。
2024-03-25 23:31:29
490
原创 Redis高可用的原因(二) -- 主从模式
在分布式系统中 , 涉及一个很关键的问题 “单点问题” – 如果某个服务器只有一个节点 , 那么这个服务器挂了之后 , 后续就无法继续提供服务了 . 因此 , 在分布式系统中 , 一般会部署多个节点 , 来提供更稳定 , 更高效的服务 .
2024-03-25 23:22:58
2021
原创 多线程(一)
在没有多线程的时候,计算机的工作是依靠进程之间并发执行的,但是由于进程之间创建销毁或者是切换的开销较大,所以延伸出"多线程"的概念.线程可以理解为"轻量级的进程"除此之外,由于,但是对于同一个进程的多个线程,彼此共享同一份资源,线程之间的通信也较为简单.
2024-03-24 23:34:23
804
原创 线程池快速使用(二)
调用shutdown后 , 线程池不会立即终止 . 在关闭线程池之后 , 只有将没有完成的任务完成后 , 再对线程池申请的资源进行回收之后 , 线程池才会终结 (terminated)原理 : 在底层创建一个计数器 , 计数器的初始值就是传入的任务数量 , 每次调用CountDown就让计数器减少1 , 当计数器的值为0之后就唤醒等待的线程。STOP:阻断状态 . 调用shutdownNow方法后处于STOP状态 , 不能接收新任务 , 不会完成未完成任务 , 同时会将正在进行的任务终止。
2024-03-24 23:32:14
1671
1
原创 Lambda表达式
当一个接口只有一个必须重写的抽象方法时 , 该接口称为函数式接口 , 使用注解@FunctionalInterface 来对函数式接口作为规范和限制 , 比如当有两个必须重写的抽象方法时 , 添加该注解会自动报错提示 .Lambda表达式是对匿名内部类的简化 , 只有函数式接口的匿名内部类 , 才可以使用Lambda表达式及进行简化 , 对于普通接口或者类的匿名内部类 , 无法使用Lambda表达式 .在了解Lambda表达式之前 , 要先了解什么是函数式接口 .( 参数 ) -> { 代码块 }
2024-03-21 22:07:51
159
1
原创 写时复制COW
当有多个线程执行读操作时 , 那么 , 多个线程同时读取共享数据 , 但是 , 此时如果有线程需要执行写操作 , 那么就会拷贝一份数据 , 线程修改的是拷贝的数据 , 其他线程读取的是原数据 , 当线程修改完毕后 , 就会将拷贝的数据赋值给共享数据 , 后续其他线程就可以读取新数据了。● cow保证了最终一致性 , 因为在写的过程中 , 原有读的数据是不会发生更新的 , 只有写完才可以得到新数据。● cow适用于读多写少的情况 , 可以最大效率的提高读的效率 (不用频繁加锁解锁)
2024-03-20 21:41:59
242
1
原创 线程池快速使用
使用Executors.newFixedThreadPool(3)底层调用的是ThreadPoolExecutor的构造方法 , 因此我们可以通过创建该类从而对线程池的参数进行自定义ThreadPoolExecutor构造方法。
2024-03-14 17:58:31
416
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人