- 博客(75)
- 收藏
- 关注
原创 Kubernetes 简介和集群环境搭建
在部署应用程序的方式上,主要经历了三个阶段:传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境 优点:程序环境不会相互产生影响,提供了一定程度的安全性 缺点:增加了操作系统,浪费了部分资源容器化部署:与虚拟化类似,但是共享了操作系统为了解决这些容器编排问题,就产生了一些容器编排的软件: Swarm:Do
2025-10-20 19:25:27
828
原创 redis集群(去中心化)
添加节点的时候是先添加node节点到集群,然后分配槽位,删除节点的操作与添加节点的操作正好相反,是先将被删除的Redis node上的槽位迁移到集群中的其他Redis node节点上,然后再将其删除,如果一个Redis node节点上的槽位没有被完全迁移,删除该node的时候会提示有数据且无法删除。在讲Redis集群架构之前,我们先简单讲下Redis单实例的架构,从最开始的一主N从,读写分离,再到Sentinel哨兵机制,单实例的Redis缓存足以应对大多数的使用场景,也能实现主从故障迁移。
2025-09-09 21:31:06
624
原创 redis集群之哨兵
每个哨兵(Sentinel)进程会向其它哨兵(Sentinel)、 Master、 Slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定配置时间(此项可配置)内未得到回应,则暂时认为对方已离线,也就是所谓的”主观认为宕机” (主观:是每个成员都具有的独自的而且可能相同也可能不同的意识),英文名称: Subjective Down,简称SDOWN。其基本模式是一个主节点(Master)负责处理写操作,一个或多个从节点(Slave)负责处理读操作,从而实现读写分离,有效提升系统的整体读吞吐量。
2025-09-09 20:32:03
992
原创 MySQL集群高可用架构之组复制 (MGR)
首先我们将多个节点共同组成一个复制组,在执行读写(RW)事务的时候,需要通过一致性协议层(Consensus 层)的同意,也就是读写事务想要进行提交,必须要经过组里“大多数人”(对应 Node 节点)的同意,大多数指的是同意的节点数量需要大于 (N/2+1),这样才可以进行提交,而不是原发起方一个说了算。MGR提供单主和多主两种模式,不仅实现了数据同步,更通过组协调机制保证事务一致性:所有成员必须对事务的全局顺序达成共识,每个节点独立但一致地决定提交或回滚。当主服务器失败时,会自动选择新的主服务器。
2025-09-06 22:22:42
368
原创 主从复制进阶——延时同步、GTID复制、半同步复制
主库在应答客户端提交的事务前需要保证至少一个从库接收并将事务写到relay log中,即master将写入binlog的事务传递到slave,主库提交事务,master等待slave回复ACK确认已将数据写入relay log,此时master才会将commit OK结果反馈给客户端,如果出现异常没有收到ACK,那么将自动降级为普通的复制,直到异常修复后又会变为半同步复制。半同步复制必须是在主库和从库两端都开启时才行,从库会在连接到主库时告诉主库它是不是配置了半同步。
2025-09-06 21:07:31
452
原创 MySQL 8.0.36 主从复制完整实验
主从库均已完成 MySQL 8.0.36 源码安装,且能通过/etc/init.d/mysqld start正常启动(源码安装需提前配置好服务脚本)。**2.1 配置 MySQL 主配置文件 **(/etc/my.cnf.d/mysql-server.cnf或/etc/my.cnf):主库与从库之间能 ping 通,且主库已开放 3306 端口(MySQL 默认端口),关闭安全组件,或者开放3306端口。主库的核心作用是记录二进制日志(binlog),并允许从库通过复制账号读取 binlog。
2025-09-05 19:34:35
660
原创 MySQL 索引
日常生活中,经常会在电话号码簿中查阅“某人”的电话号码,按姓查询或者按字母排序查询;在字典中查阅“某个词”的读音和含义等等,以快速的找到特定记录。在这里,“姓”和“字母”都可看作是索引, 而按“姓”或者“字母”查询则是按索引查询a索引(index)是帮助Mysql高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查询算法,这是数据结构就是索引。MySQL中,所有的数据类型都可以被索引。
2025-08-28 21:33:06
1056
原创 Shell 编程之awk
awk允许用户自定义自己的变量以便在程序代码中使用变量名命名规则与大多数编程语言相同,只能使用字母、数字和下划线,且不能以数字开头awk变量名称区分字符大小写例。
2025-08-28 21:14:02
926
原创 Python Matplotlib模块
Matplotlib 是 Python 中最流行的数据可视化库之一,提供了一套完整的数据可视化工具,能够创建静态、动态或交互式的图表。它被广泛应用于科学计算、数据分析、机器学习等领域。
2025-08-20 22:13:54
542
原创 MySQL日志管理
由于日志的记录不是直接写入日志文件中而是使用日志缓存的方式,当频繁执行多条修改的sql语句时,为了避免对磁盘频繁I/O,会将日志记录写入到内存的特殊空间即日志缓存中,之后每隔一个固定时间间隔将缓存的日志写入到磁盘文件中。这对于调试应用程序与数据库的交互问题非常有用,管理员可以查看具体执行了哪些 SQL 语句,以及执行的顺序和时间。作用:通过刷新日志进行更新日志,对缓存数据进行磁盘I/O,并强制 mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志)不小心删库后应该跑路吗?
2025-08-19 22:27:59
1027
原创 MySQL系统变量 及MySQL备份
1)全局变量概念:变量由用户自定义的,而不是系统提供的。作用域:针对当前会话(连接)有效,作用域同会话变量。
2025-08-19 22:25:56
784
原创 MySQL 函数 及 一条SQL语句从诞生至结束
到此,执行SQL前的准备工作完成了,已打通了执行SQL的通道,之后是准备执行SQL语句,工作线程会等待客户端将SQL传递过来。该条SQL大致描述的意思就是:根据用户请求的「作者名」,在知乎数据库的文章表中,查询该作者的所有文章信息。
2025-08-18 23:24:27
855
原创 MySQL 多表关联查询
多对多:拿学生表和科目表举例,一个学生可以选择多门课程,一个课程也可以被很多学生选择;中间表至少包含两个字段,将多对多的关系,拆成一对多的关系。一对一:一张表中的一条数据对应另外一张表中的一列数据,比如一个人只有一张身份证,一张身份证对应一个人。 3.where 或having 后面:支持标量子查询(重要)\列子查询(一列多行)\行子查询(一行多列)一对多:一张表中的一列可以和另外一张表中多条数据关联,拿学生表和成绩表举例,一个学生有多个成绩, 1.select 后面:仅仅支持标量子查询(一行一列)
2025-08-18 22:58:43
1058
原创 数据库 DML与DQL
regexp . 任意单个字符 [] 该集合内的任意单个字符 * 匹配前一个字符任意次 {3} 匹配前一个字符指定次数?匹配前一个字符最多一次 ^词首 \b < \>注: math is null – (√) math=null – (x) math<=>null --(√)如果需要插入其他特殊字符,应该采用\转义字符做前缀。插入数据时,指定的字段顺序必须与值的顺序一致。字符串和日期型数据必须使用单引号或双引号定界。
2025-08-17 23:40:36
915
原创 Shell 变量和引用
变量是在程序中保存用户数据的一段内存存储空间,变量名是内存空间的首地址原则:直接使用,不需要变量声明格式:变量名=变量的值例:/bin/bash # 定义变量a a = 1 # 定义变量b b = "hello" # 定义变量c c = "hello world" # 定义路径 bak_dir = /data/backup= 前后不能收空格字符串类型建议使用双引好作为定界符引起,尤其是字符串中有空格概念:上述以赋值形态形成的变量定义形式称为自定义变量引用变量的值:$变量名。
2025-08-17 23:19:37
859
原创 Python Pandas模块
是 Python 中用于数据处理和分析的强大库,它提供了高效且灵活的数据结构,如。能够沿着指定轴(行或列)将多个 DataFrame 或 Series 进行拼接。支持多种文件格式的读写操作,如 CSV、Excel、SQL 数据库等。方法可以对 DataFrame 或 Series 按索引进行排序。主要用于按索引合并两个 DataFrame,默认是左连接。方法可以对 DataFrame 按指定列的值进行排序。可以同时指定多个列进行排序,每个列可以有不同的排序顺序。是一维带标签的数组,可包含不同类型的数据。
2025-08-16 22:42:41
796
原创 Python NumPy模块
假设你是一位投资者,想要分析某几只股票在一段时间内的收益率情况。通过计算股票的日收益率、平均收益率和收益率的标准差,你可以评估这些股票的表现和风险程度。标准差越大,说明股票的收益率波动越大,风险也就越高。(Numerical Python)是 Python 中用于科学计算的基础库,它提供了。提供了线性代数相关的函数,如矩阵的转置、求逆等。可以通过数组的属性来获取数组的相关信息。可以对数组进行形状的改变和拼接操作。可以使用布尔数组来筛选数组中的元素。提供了丰富的数学和统计函数。数组进行索引和切片操作。
2025-08-16 22:39:48
456
原创 数据库 库表设计:范式
经过一系列的阐述后,其实不难发现,越到后面的范式,越难令人理解,同时为了让表满足更高级别的范式,越往后付出代价也越大,而且拆分出的表数量也会越多一般项目中仅需满足到第三范式或BC范式即可,因为这个度刚刚好,再往后就会因为过于精细化设计,导致整体性能反而下降。控制到第三范式的级别,一方面数据不会有太多冗余,第二方面也不会对性能影响过大。同时,如若打破范式的设定能对业务更有利,那也可以违背范式原则去设计。
2025-08-15 21:48:52
999
原创 数据库 表的约束
create table 表名(列名 列类型 [auto_increment] [default 默认值][列约束]...[表约束]) [engine=表类型] [default] charset=字符集;列类型: 该列的数据的存储类型auto_increment: 自动增尙只能是数值类型的列defaul 默认值: 设置该列的默认值约束: 对列的一些限制engine: 表类型, 也叫表的存储引擎charset: 设置表的字符篥。
2025-08-15 21:46:28
988
原创 Linux的防火墙
netfilter 是一个工作在 Linux 内核的网络数据包处理框架,用于分析进入主机的网络数据包,将数据包的头部数据(硬件地址,软件地址,TCP、UDP、ICMP等)提取出来进行分析,以决定该连接为放行或拒绝的机制,主要用于分析OSI七层协议的2、3、4层。Netfilter分析内容:拒绝让Internet的数据包进入主机的某些端口拒绝某些来源IP的数据包进入拒绝让带有某些特殊标志(flag)的数据包进入,如:带有SYN的主动连接标志分析MAC地址决定是否连接防火墙无法完成的任务。
2025-08-15 21:35:55
892
原创 数据库 DML与DQL 练习
(1)创建数据库mydb11_stu并使用数据库。(2)创建student表,并插入数据。(3)创建score表,并插入数据。
2025-08-14 22:03:07
370
原创 Linux的SELinux
SELinux(Security-Enhanced Linux)是美国国家安全局在 Linux 开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统,用于各个服务进程都受到约束,使其仅获取到本应获取的资源例如,电脑上下载了一个美图软件,当您全神贯注地使用它给照片进行美颜的时候,它却在后台默默监听着浏览器中输入的密码信息,而这显然不应该是它应做的事情作用:SELinux 域限制:对服务程序的功能进行限制,以确保服务程序做不了出格的事情。
2025-08-14 21:33:54
1021
原创 Python 内置模块:日期和时间处理
time模块提供了与时间相关的函数,可用于获取当前时间、延迟程序执行、进行时间格式转换等操作。secs时间戳是一个浮点数,表示从 1970 年 1 月 1 日午夜(UTC)开始到当前时刻所经过的秒数。使用函数可以获取当前的时间戳。函数可以让程序暂停执行指定的秒数,常用于模拟耗时操作或设置定时任务。函数可以将时间戳转换为本地时间的结构化时间对象。如果不提供时间戳参数,则默认使用当前时间戳。函数可以将结构化时间对象转换为指定格式的字符串。format参数是一个字符串,用于指定输出的时间格式;t。
2025-08-14 21:27:59
1057
原创 Linux的DNS域名解析服务器
将主服务器上的所有信息复制到辅助服务器上来实现完全区域传送,即复制整个区域文件。将一个区域文件复制到多个服务器上的过程叫做区域传送。
2025-08-11 21:10:49
864
原创 Python 自定义模块与包
什么是包包是一种管理Python模块的方式,它实际上就是一个包含多个模块的目录。包目录下必须有一个的文件,该文件就是用来标记当前目录是一个普通文件夹还是一个包。在大型项目开发中,代码功能其实可以分为这么几类:model、view、controller、DB创建包创建一个名为my_packagemy_package导入包中的模块(1)相对导入在包内,模块之间进行相互导入。【导包时,严禁相关导入,否则出现递归异常】(2)绝对导入在包外,其他的模块中进行导入# main.py__init__的作用。
2025-08-11 21:04:37
333
原创 Python 常用内置函数
用于将多个可迭代对象中对应位置的元素打包成一个个元组,然后返回这些元组组成的迭代器。如果不传入过滤函数时(传入None参数),则自动默认将可迭代对象中的假值进行过滤。:主要用于查看对象的所有属性和方法,能够帮助使用者多加了解对象的功能。:用于可迭代对象中的每一个元素应用指定的函数,并返回一个迭代器。额外的,对于处理结尾为5的数字时,采用的是“银行家舍入法”,:必填,可迭代对象(列表、字符串、元组、集合、字典):用于过滤可迭代对象中的元素,返回的是一个迭代器。:用于判断可迭代对象中的所有元素是否都为真。
2025-08-10 20:31:58
530
原创 数据库理论及MySQL库表操作
数据是描述事物的符号记录,可以是数字、文字、图形、图像、声音、语言等各种形式。数据库是存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据的特点(为什么要使用数据库?数据直接存入计算机不好吗?数据结构化 excel表 行 一条数据 一列一个属性(数据类型)数据的共享性高,冗余度低,易扩充数据独立性高数据由 DBMS 统一管理和控制(安全性、完整性、并发控制、故障恢复)
2025-08-09 21:16:40
779
原创 自动化备份全网服务器数据平台
backup服务端针对客户端备份时的md5指纹数据,利用MD5命令进行验证,完成数据传输过程完整性验证。定时任务服务的配置文件(/var/spool/cron/root) (适合Web和NFS服务器)。web1、nfs1服务器编辑定时任务,实现每天00:00定时备份本地数据,并推送到Rsync服务器上。开机自启动的配置文件(/etc/rc.local) (适合Web和NFS服务器)。backup服务器编写脚本,实现删除180天前的所有备份数据,但保存每周一的。编写备份web1服务器的脚本。
2025-08-09 17:59:06
948
原创 Python 集合与字典编程练习题
在设计密码强度检测系统时,需要检查密码是否包含不同类型的字符,如大写字母、小写字母、数字和特殊字符。给定一个密码字符串password,编写一个函数,使用集合来检查密码中是否同时包含大写字母、小写字母、数字和特殊字符(假设特殊字符为!@#$%^&*如果包含所有类型的字符,返回True,否则返回False。
2025-08-07 22:53:26
304
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅