Redis(2)搭建集群
Redis主从复制首先需要设置一个master节点,两个slave节点,然后修改各自的redis.conf,让两个slave节点指向主master节点:
(1)设置master节点的port=7000,bind=0.0.0.0
(2)分别设置两个slave节点的port为7001和7002,同时bind=0.0.0.0
(3)在slave节点上开启主从复制——修改Replicof选项:
1replicaof 192.168.193.129 7000
(4)定位到redis-server安装目录(ubuntu使用apt install默认安装在/usr/bin位置),然后使用以下命令:
123./redis-server /home/cat/master/redis.conf #启动主master节点./redis-server /home/cat/slave1/redis.conf #启动slave1节点./redis-server /home/cat/slave2/redis.conf #启动slave2节点
结果如下:
也可以在客户端redis-cli ...
Redis持久化
2022年的最后一篇文章😁😋😎
Redis持久化Redis虽然是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。
快照持久化(RDB)BGSAVE客户端可以使用BGSAVE命令来创建一个快照,当接收到客户端的BGSAVE命令时,redis会调用fork创建一个子进程,然后子进程负责将快照写入磁盘中,而父进程则继续处理命令请求(在刚开始时,父进程与子进程共享内存,直到父进程或子进程对内存进行写操作后,结束共享服务)
SAVE客户端还可以使用SAVE命令来创建一个快照,接收到SAVE命令的redis服务器在快照创建完毕之前将不再响应其他命令
当redis通过SHUTDOWN指令接收到关闭服务器的请求时,会执行一个save命令,阻塞所有客户端,并在save命令执行完毕后关闭服务器
服务器自动触发在redis.conf中设置save选项,redis会在save条件满足后自动触发一次BGSAVE命令,若设置多个save配置选项,当任意save选项满足时redis也会触发一次BGSA ...
vscode远程连接Ubuntu
前言最近在学习mit6.824的lab,官方建议最好在linux下进行实验,笔者手里目前只有一台win笔记本,因此要先在windows上安装vmware,再安装linux虚拟机,实验采用的版本为ubuntu-22.04 LTS,安装完成后再来搭建Vscode远程开发环境
操作步骤1. 检查SSH由于我们是使用 SSH 连接远程服务器,因此 Windows 需要支持 SSH 。
可以通过安装 Git 来获取 SSH 功能,如何验证?使用 Win + R ,输入 cmd 打开控制窗口,直接输入 ssh ,如下提示,则代表 SSH 已经安装成功
2. 安装Remote SSH插件打开vscode,点击左侧扩展,搜索Remote -SSH ,安装此插件即可
并在Remote-SSH Settingsz中勾上Show Login Terminal:
3. 配置config使用命令ctrl + shift + p调出对话框, 键入remote-ssh:open, 打开设置,如果文件为空,则需要自己在目录下新建一个config
点击第一个选项后,找到自己的ssh路径,在文件夹下新建一个con ...
java核心技术-集合
集合ListArrayListLinkedListVectorSetHashSetTreeSetMAPHashMapTreeMap
java核心技术-多线程
Java线程线程状态Thread类里的枚举State描述了线程的六个状态,分别是:
新生(New):刚刚创建的线程,尚未启动
执行(Runnable):正在JVM中执行的线程处于这种状态,实际又可分为就绪态(Ready)与运行态(Running)
阻塞(Blocked):jdk官方解释如下:
Thread state for a thread blocked waiting for a monitor lock. A thread in the blocked state is waiting for a monitor lock to enter a synchronized block/method or reenter a synchronized block/method after calling
处于阻塞态的线程等待monitor lock ,即在线程处于可运行状态的时候会尝试获取锁,如果他没有获取到锁,那么这个进程就处于阻塞态。如果获取到了锁,就转成了可运行态。
无限等待(Waiting):当我们调用 wait() 时会强 ...
java核心技术-基础篇
Static关键字用法 认识static,首先要了解final:
带有final修饰符的变量被用作全局常量,例如java.lang.Math中的变量PI:
1public static final double PI = 3.14159265358979323846
同时可以将final修饰符用于函数声明,final修饰的方法无法被重写(override),如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能直接继承到此方法
可以将final修饰符应用于类声明。 标有final的类不能再被继承-这是其最终实现,final类的示例之一是java.lang.String类 。它是final类,因此没有人可以继承它,故可以访问其成员变量
对于static:在《Java编程思想》P86页有这样一段话:
“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”
这段话虽然只是说明了 ...
mit6.824-lab1
前言由于自己英语水平有限,最后还是在b站上找了中文字幕的资源来学习,首先要安装wsl(windows下的linux子系统),可参考这篇文章进行环境配置:Install Linux on Windows with WSL.并推荐使用go进行实验,
Leetcode-递归
递归这里帮助大家确定下来递归算法的三个要素。每次写递归,都按照这三要素来写,可以保证大家写出正确的递归算法!
确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。
确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。
确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。
How to install Android 12(GSI) on android-phone
前言 🥰
去年还没换手机的时候,偶然一天在淘宝上看到有卖OnePlus Nord(海外版)的,虽然价格不贵,配置也毫无亮点,本地化又少,但我我却瞬间就被它的启动器界面和图标风格所吸引,当然那时候还是Android11。相比各大国产厂商的ui风格,我更喜欢Google的设计理念:尤其是在Android12引入了Material You后,整个系统支持统一调色Monet、增加了众多Widget小部件、同时QS磁贴一改以往小图标堆积的样式,这里贴张图来简单展示一下:
不过也有人会说Android12的控制中心是专为老年人设计的,因为单独每个磁贴都设计的比较大。对于这个的话仁者见仁智者见智,至少市面上找不出第二家这样设计的了,就算丑也丑的很有特点🤣,不像国内厂家千篇一律的设计审美。谷歌的设计还是在线的,从最早的nexus系列到随后的pixel,一直到现在的6Pro,可以看出谷歌在特立独行这条路上至少从未迷过路(这一点和Sony很类似)。
准备工作
解锁🤨
oem解锁后会清除所有内置数据!!!
这里的解锁并不是平时所说的解锁手机锁屏的意思,而是解锁启动引导Bootloader,厂家默 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment