- 博客(120)
- 收藏
- 关注
原创 【hello git】git rebase、git merge、git stash、git cherry-pick
将 一个分支的提交 合并到 到另一个上分支上去。
2025-03-07 19:10:42
411
原创 【hello git】git 扫盲(add、commit、push、reset、status、log、checkout)
【代码】【hello git】git 扫盲(add、commit、push、reset、status、log、checkout)
2025-03-06 20:29:27
277
原创 【redis进阶】redis 总结
参考⽂档前⾯的章节 "第七章 哨兵"参考⽂档前⾯章节 "第⼋章 集群 - 8.2 数据分⽚算法"参考⽂档上⽅章节某些 key 的访问频率⾮常⾼. 称为 "热 key".有些热 key 可能达到⾮常热的情况, 以⼀⼰之⼒就能把 redis 打挂.💡虽然 Redis 通过集群部署的方式,能够分散请求的压力.但是由于热 key 是同一个 key, 对应访问的机器也是同一组机器. 这就会导致其他组的机器虽然硬件资源富裕,但是也无法帮上忙.
2025-01-30 15:30:00
1019
原创 【redis进阶】分布式锁
slave节点升级成了新的 master 节点. 但是由于刚才写入的这个 key 尚未来得及同步给 slave 呢,此时就相当于 服务器1 的加锁操作形同虚设了,服务器2 仍然可以进行加锁 (即给新的 master 写入 key. 因为新的 master 不包含刚才的 key).🎁 Lua 也是一个编程语言. 读作 "撸啊". 是葡萄牙语中的 "月亮" 的意思. (出自于 Lua 官方文档https://www.lua.org/about.html)
2025-01-29 10:30:00
1078
2
原创 【redis进阶】缓存 (cache)
当然,实践中究竟是 "二八",还是 "一九",还是 "三七", 这个情况可能会根据业务场景的不同,存在差异. 但是至少绝大多数情况下,使用缓存都能够大大提升整体的访问效率,降低数据库的压力.一个服务器的硬件资源本身是有限的. 一个请求消耗一份资源,请求多了,自然把资源就耗尽了. 后续的请求没有资源可用,自然就无法正确处理. 更严重的还会导致服务器程序的代码出现崩溃.正常来说,我的身份证是放在皮箱里的(皮箱的存储空间大,足够能装). 但是每次刷身份证都需要开一次皮箱找身份证,就非常不方便.
2025-01-28 10:30:00
741
原创 【redis进阶】集群 (Cluster)
• 节点之间通过心跳包通信,心跳包中包含了该节点持有哪些 slots,这个是使用位图这样的数据结构表示的,表示 16384(16k)个 slots,需要的位图大小是 2KB.如果给定的slots 数更多了,比如65536 个了,此时就需要消耗更多的空间,8KB位图表示了.8 KB,对于内存来说不算什么,但是在频繁的网络心跳包中,还是一个不小的开销的.不要忘了硬盘只是存储多了,但是访问速度是比内存慢很多的. 但是事实上,还是存在很多的应用场景,既希望存储较多的数据,又希望有非常高的读写速度.
2025-01-27 10:30:00
608
原创 【redis进阶】哨兵 (Sentinel)
Redis 的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工进行主从切换,同时大量的客户端需要被通知切换到新的主节点上,对于上了一定规模的应用来说,这种方案是无法接受的,于是Redis 从 2.8 开始提供了 Redis Sentinel(哨兵)来解决这个问题。Redis Sentinel 的概念Redis Sentinel 的部署Redis Sentinel 命令Redis Sentinel 客户端Redis Sentinel 实现原理一、基本概念。
2025-01-26 09:15:00
1673
原创 【redis进阶】主从复制
单点问题:如果某个服务器程序,只有一个节点(只搞一个物理服务器,来部署这个服务器程序)1. 可用性问题,如果这个机器挂了,意味着服务就中断了;2. 性能/支持的并发量也是比较有限的;在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满足故障恢复和负载均衡等需求。Redis 也是如此,它为我们提供了复制的功能,实现了相同数据的多个 Redis 副本。复制功能是高可用 Redis 的基础,哨兵和集群都是在复制的基础上构建的。
2025-01-25 15:30:00
1023
原创 【redis进阶】Redis 事务
watch 必须搭配事务使用,并且必须在 mutli 之前使用,当执行 watch key 的时候就会给这个 key 安排一个 版本号,版本号可以理解成一个 "整数" 每次在修改的时候,版本号都会 "变大",watch 本质上是给 exec 加了个判定条件,在执行 事务 中命令的时候,此处就会做出判定,判定当前这个 key 的版本号,和最初 watch 的时候记录的版本号 是否 一致!在执行事务的时候,如果某个事务中修改的值,被别的客户端修改了,此时就容易出现数据不一致的问题。
2025-01-24 15:30:00
886
原创 【redis进阶】持久化
redis 是一个基于内存的数据库,将数据存储在内存中,是不持久的,重启进程 / 主机之后,数据就不存在了,要想数据可以持久,就要将数据存储在磁盘上,redis 采取的机制是内存存储数据,磁盘来备份,当查询某个数据的时候直接从内存读取,磁盘中的数据只是在 redis 重启的时候用来恢复内存中的数据的;Redis 支持 RDB 和 AOF 两种持久化机制,持久化功能有效地避免因进程退出造成数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。
2025-01-23 10:30:00
753
原创 【redis初阶】redis客户端
在前面的学习中主要是学习 redis 的各种基本操作/命令,都是在 redis 命令行客户端中手动执行 redis各种命令,但这种操作方式不是我们日常开发中的主要形式;更多的时候,我们是使用 redis 的 api 来实现定制化的 redis 客户端程序,进一步操作 redis 服务器;不管是 redis 提供的命令行客户端,还是第三方的图形化客户端,他们本质上都属于是“通用的客户端程序”。但相比之下,我们在工作中更希望使用到的是“专用的”“定制化”的客户端程序;
2025-01-22 09:30:00
1146
原创 【redis初阶】数据库管理
🥳Redis 提供了几个面向 Redis 数据库的操作,分别是 dbsize、select、flushdb、flushall 命令,本机将通过具体的使用常见介绍这些命令。许多关系型数据库,例如 MySQL 支持在一个实例下有多个数据库存在的,但是与关系型数据库用字符来区分不同数据库名不同,Redis 只是用数字作为多个数据库的实现。Redis 默认配置中是有 16 个数据库。select 0 操作会切换到第一个数据库,select 15 会切换到最后一个数据库。0 号数据库和 15号。
2025-01-21 13:30:00
414
原创 【redis初阶】渐进式遍历
keys 一次性的把整个 redis 中所有的 key 都获取到,keys * 这个操作比较危险,可能会一下子得到太多的 key,阻塞 redis 服务器!通过渐进式遍历,就可以做到,既能够获取到所有的 key,同时又不会卡死服务器,渐进式遍历不是一个命令,把所有的 key 都拿到,而是每执行一次命令,只获取到其中的一小部分,这样的话保证当前这一次操作不会太卡,化整为零,要想得到所有的 key 就需要多次遍历,多次执行渐进式遍历命令;
2025-01-20 10:30:00
496
原创 【redis初阶】Zset 有序集合类型
有序集合相对于字符串、列表、哈希、集合来说会有一些陌生。它保留了集合不能有重复成员的特点,但与集合不同的是,有序集合中的每个元素都有一个唯一的浮点类型的分数(score)与之关联,使得有序集合中的元素是可以维护有序性的,但这个有序不是用下标作为排序依据而是用这个分数。如图 2-26 所示,该有序集合显示了三国中的武将的武力。图 2-26 有序集合有序集合提供了获取指定分数和元素范围查找、计算成员排名等功能,合理地利用有序集合,可以帮助我们在实际开发中解决很多问题。
2025-01-18 15:30:00
854
原创 【redis初阶】Set 集合类型
集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中1)元素之间是无序的;2)元素不允许重复;如图 2-24 所示。一个集合中最多可以存储 2^32 - 1 个元素。Redis 除了支持集合内的增删查改操作,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际开发中解决很多问题。图 2-24 集合类型二、基本命令2.1 SADD将一个或者多个元素添加到 set 中。注意,重复的元素无法添加到 set 中。1.0.0 之后O(1)本次添加成功的元素个数。
2025-01-17 15:15:00
866
原创 【redis初阶】Hash 哈希类型
几乎所有的主流编程语言都提供了哈希(hash)类型,它们的叫法可能是哈希、字典、关联数组、映射。在 Redis 中,哈希类型是指值本身又是一个键值对结构,形如 key = "key",value = { {field1,value1 }, ..., {fieldN, valueN } },Redis 键值对和哈希类型二者的关系可以用图 2-15 来表示。图 2-15 字符串和哈希类型对比哈希类型中的映射关系通常称为 field-value,用于区分 Redis 整体的键值对(key-value),
2025-01-15 11:15:00
1235
原创 【redis初阶】string 类型
string 类型是 Redis 最基础的数据类型,关于字符串需要特别注意:1)首先 Redis 中所有的键的类型都是字符串类型,而且其他几种数据结构也都是在字符串类似基础上构建的,例如列表和集合的元素类型是字符串类型,所以字符串类型能为其他 4 种数据结构的学习奠定基础。2)其次,如图 2-7所示,字符串类型的值实际可以是字符串,包含一般格式的字符串或者类似JSON、XML 格式的字符串;数字,可以是整型或者浮点型;甚至是二进制流数据,例如图片、音频、视频等。
2025-01-14 15:15:00
2543
原创 【redis初阶】redis的单线程架构
redis 每个基本操作,都是短平快的,就是简单操作一下内存数据,不是什么特别消耗 cpu 的操作,就算搞多个线程,也提升不大;阻塞,对于 Redis 这种高性能的服务来说是非常严重的,所以 Redis 是面向快速执行场景的数据库。但是如果有 50 辆车,只要安排合理,只需要依次就可以完成任务。信也没有那么频繁,此时这么多 socket 大部分时间都是静默的,上面是没有数据需要传输的,同一时。Redis 去执行命令的,但微观角度,这些命令还是采用线性方式去执行的,只是原则上命令的执行顺序。
2025-01-13 12:30:00
2179
原创 【redis初阶】通用命令
Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维非常重要,同时掌握每种数据结构的常见命令,会在使用 Redis 的时候做到游刃有余。redis 是基于键值对的数据结构,其中 key 是固定的字符串,value 实际上会有多种数据类型(字符串、哈希、列表、集合、有序集合等),操作不同的数据结构就会有不同的命令,但也有些命令可以搭配任意一个数据结构来使用——>全局命令,如下;
2025-01-11 12:30:00
619
原创 【redis初阶】环境搭建
自带的命令行客户端redis-cliredis-cli -h IP地址 -p 端口号2. 图形化界面的客户端(桌面程序、web程序),不建议使用基于redis的api自行开发客户端(工作中最主要的形态)非常类似于mysql的c语言api和jdbcredis学习打卡🥳。
2025-01-10 20:14:16
966
原创 【redis初阶】浅谈分布式系统
redis学习🥳在正式引入架构演进之前,为避免读者对架构中的概念完全不了解导致低效沟通,优先对其中一些比为了完成一整套服务的一个程序或者一组相互配合的程序群。生活例子类比:为了完成一项任务,而搭建的由一个人或者一群相互配的人组成的团队。当应用较复杂时,为了分离职责,将其中具有清晰职责的、内聚性强的部分,抽象出概念,便于理解。生活例子类比:军队中为了进行某据点的攻克,将人员分为突击小组、爆破小组、掩护小组、通信小组等。系统中的多个模块被部署于不同服务器之上,即可以将该系统称为分布式系统。
2025-01-09 12:10:55
992
原创 【docker】docker的常用命令
说明:我们有了镜像才可以创建容器,linux,下载一个 centos 镜像来测试学习。分层下载的好处:再次下载的时候是增量更新,只下载没有的那部分。docker images 查看所有本地的主机上的镜像。docker search 搜索镜像。docker pull 下载镜像。docker rmi 删除镜像。exit 从容器中退回主机。从容器内拷贝文件到主机上。进入当前正在运行的容器。测试,启动并进入容器。启动和停止容器的操作。
2024-12-31 09:00:00
354
原创 【docker】docker概述+docker的下载与安装
docker安装docker命令镜像命令容器命令操作命令。。。docker镜像容器数据卷dockerfiledocker网络原理IDEA整合dockerdocker swarm 【相当于简化版的k8s】一款产品的发布需要经历:开发——>测试——>运维等各个环节,为了避免在开发阶段代码可以运行,而在其他环节因为环境配置有误导致代码不可运行的情况;环境配置本身就麻烦,对于集群(redis、hadoop等)来说,每个机器都要部署环境,工作量大。
2024-12-27 09:00:00
2732
原创 【MySQL】数据类型
数据类型分类、数值类型、tinyint类型、bit类型、小数类型、float、decimal、字符串类型、char、varchar、char和varchar比较、日期和时间类型、enum和set
2023-06-16 11:54:10
759
原创 【MySQL】数据库的基本操作
创建数据库、字符集和校验规则、查看系统默认字符集以及校验规则、查看数据库支持的字符集、查看数据库支持的字符集校验规则、校验规则对数据库的影响、操纵数据库、查看数据库、显示创建语句、修改数据库、数据库删除、Linux中创建数据库和数据表的本质
2023-06-09 17:19:25
967
原创 【Hello MySQL】数据库基础
什么是数据库、MySQL安装、连接 MySQL 服务器、退出 MySQL服务器、服务器,数据库,表关系、MySQL的配置、 MySQL架构、SQL分类、查看存储引擎、存储引擎对比
2023-06-08 11:48:06
776
原创 【hello C++】类和对象(下)
构造函数体赋值、初始化列表、explicit关键字、static成员、友元函数、友元类、内部类、匿名对象、拷贝对象时的一些编译器优化、再次理解类和对象
2023-06-03 20:06:43
528
1
原创 【hello C++】类和对象(中)
详解类的6个默认成员函数、构造函数、拷贝构造函数、运算符重载、赋值运算符重载、析构函数、取地址及const取地址操作符重载
2023-05-31 16:00:00
850
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人