- 博客(355)
- 问答 (2)
- 收藏
- 关注
原创 【MySQL实战45讲笔记】基础篇——行锁
MySQL 的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如 MyISAM 引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。InnoDB 是支持行锁的,这也是 MyISAM 被 InnoDB 替代的重要原因之一。
2024-11-25 11:56:50
952
原创 【MySQL实战45讲笔记】基础篇—— 全局锁和表锁
顾名思义,全局锁就是对整个数据库实例加锁。一般当我们需要让整个库处于只读状态的时候需要全局锁的帮助来阻塞其他线程的DML、DDL语句。全局锁的典型使用场景是,做**全库逻辑备份**。也就是把整库每个表都 select 出来存成文本。
2024-11-25 09:51:14
1009
原创 【MySQL实战45讲笔记】基础篇——深入浅出索引(下)
5. 深入浅出索引(下)5.1 覆盖索引5.2 最左前缀原则5.3 联合索引内字段顺序5.4 索引下推
2024-11-22 08:00:00
763
原创 【MySQL实战45讲笔记】基础篇——深入浅出索引(上)
索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。我们从小就用的汉语字典里面的声母查询方式就是聚簇索引, 偏旁部首就是二级索引,偏旁部首+笔画就是联合索引。同样,对于数据库的表而言,索引其实就是它的“目录”。
2024-11-21 09:19:29
1093
原创 【MySQL实战45讲笔记】基础篇——事务隔离
简单来说,**事务就是要保证一组数据库操作,要么全部成功,要么全部失败**。在 MySQL 中,事务支持是在**引擎层**实现的。但并不是所有的存储引擎都支持事务,比如MySQL 原生的 MyISAM 引擎就不支持事务(这也是 MyISAM 被 InnoDB 取代的重要原因之一)。
2024-11-20 08:00:00
2077
原创 【MySQL实战45讲笔记】基础篇——redo log 和 binlog
前面系统的了解了一个查询语句的执行流程,一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。对于一条更新语句,还是会同样经历一遍这个过程,与查询流程不一样的是,更新流程还涉及两个重要的日志模块:**redo log**(重做日志)和 **binlog**(归档日志)。
2024-11-19 12:34:11
1039
原创 【MySQL】VARCHAR和CHAR的区别?
在MySQL中,和是两种常用的字符串数据类型,它们各自有不同的特点和适用场景。下面我将和大家一起了解这两种数据类型的区别及使用场景。
2024-10-15 10:19:13
568
原创 【NAT】NAT:实现网络地址转换
NAT是一种在IP数据包传输过程中,将源IP地址或目标IP地址在私有网络和公有网络之间进行转换的技术。通过NAT,私有网络中的设备可以使用私有IP地址进行内部通信,同时能够借助公有IP地址与互联网上的设备进行通信。这种方式不仅解决了IP地址不足的问题,还增强了网络的安全性。
2024-09-04 16:09:08
1738
原创 【awk 】找到文件中数值最大的那一行,并输出该行的行号和内容
cat test.txt | awk 'BEGIN{max=0;line=0;} {if(max
2024-09-02 09:33:37
441
原创 【awk 】如何将一个文件按照同名字段进行合并?
使用awk文本处理工具将一个名为c的文件按照同名字段进行合并,c的内容如下所示:```192.168.1.1: httpd192.168.1.1: tomcat192.168.1.2: httpd192.168.1.2: postfix192.168.1.3: mysqld192.168.1.4: httpd```
2024-09-01 22:38:14
453
原创 【Shell】在 Linux 中,如何查看服务器上僵尸进程的数量
在 Linux 中,如何查看服务器上僵尸进程的数量()A. ps -ef stat,ppid,pid,cmd | awk '$1 ~ /R/ {print}' | wc -lB. ps -ef stat,ppid,pid,cmd | awk '$1 !~ /S/ {print}' | wc -lC. ps -eo stat,ppid,pid,cmd | awk '$1 ~ /Z/ {print}' | wc -lD. ps -eo stat,ppid,pid,cmd | awk '$1 ~ /D/
2024-08-30 21:44:03
1895
原创 【操作系统】有A、B和C三个作业同时到达,执行时间分别为4,3,6,且在系统中以单道方式运行,则可以获得最短的平均周转时间的执行顺序为()。
有A、B和C三个作业同时到达,执行时间分别为4,3,6,且在系统中以单道方式运行,则可以获得最短的平均周转时间的执行顺序为()。那么当我们知道具体的运行时间时,为了获得最短的平均周转时间,就应该先让执行时间短的作业执行,这样后面作业的等待时间就短。假设3个作业运行时间分别为T1、T2和T3,并且假设按照顺序来执行,那么,,(T1+T2)是等待的时间,故而,总的平均周转时间是三者之和除以三。所以这类题就是给作业时间排序,然后采用短作业优先调度。(T1是等待的时间),
2024-08-30 17:13:14
1344
原创 【golang学习之旅】复杂数据类型——切片(slice)
我们先看看切片的结构定义,切片在内存中的组织方式实际上是一个有 3 个域的结构体:指向相关数组的指针,切片长度以及切片容量。Data uintptr // 指向底层数组的指针Len int // 切片的长度(即元素的数量)Cap int // 切片的容量(即底层数组可以容纳的元素数量)x切片的内存结构Data:指向一个包含至少5个int类型元素的数组的指针。具体地,这个数组包含元素[2, 3, 5, 7, 11]。Len:5,因为x包含5个元素。Cap。
2024-08-25 21:28:26
1322
3
原创 【golang学习之旅】复杂数据类型——数组
一个数组变量即表示整个数组,它并不是隐式的指向第一个元素的指针(比如 C 语言的数组),而是一个完整的值。为了避免复制数组带来的开销,可以传递一个指向数组的指针,但是数组指针并不是数组。其中,arrayName是数组的名称,length是数组的长度,elementType是数组元素的类型。,切片是可以动态增长和收缩的序列,切片的功能也更加灵活,但是要理解切片的工作原理还是要先理解数组。与许多其他编程语言中的数组类似,Go语言中的数组也通过。这里要区分一下Go语言中的数组和C语言中的数组的区别。
2024-08-25 13:24:39
946
原创 四层负载均衡和七层负载均衡的区别?
的负载均衡:在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
2024-08-16 15:07:00
932
原创 什么是负载均衡?负载均衡器如何运作?
负载均衡是一种网络技术,旨在通过在多个服务器之间均匀地分散用户请求或工作负载,从而提高应用程序的响应速度和服务质量。在互联网上,负载平衡经常被用来在几个服务器之间分配网络流量。这能够减少每台服务器的压力,使服务器更有效率,加快性能,减少延迟。简单来说,负载均衡器就像是交通堵塞时的交警,确保每辆车都能快速找到最通畅的道路通过。总之,它的目的就通过调度集群,达到最佳化资源使用,最大化吞吐率,最小化响应时间,避免单点过载的问题。
2024-08-16 15:04:11
1339
原创 为什么说数据链路层和物理层通常不涉及端口的概念?
端口号是在网络层和传输层及以上层次中使用的概念,用于在同一台计算机上区分不同的服务或应用程序。当数据包(或数据帧)到达目标计算机时,网络层会根据目标IP地址将其传递给正确的网络接口,然后传输层就会根据目标端口号将数据包传递给相应的应用程序或服务。由于数据链路层和物理层不涉及数据的最终接收者(即应用程序或服务),因此它们不需要端口号来区分不同的服务或应用程序。相反,它们关注的是如何可靠地在物理介质上传输数据帧或比特流。
2024-08-15 21:27:15
538
原创 关于docker的几个概念(三)
目录1. Dockerfile构建镜像出现异常,如何排查?2. Dockerfile的基本指令有哪些?3. 如何进入容器?使用哪个命令
2024-08-13 11:33:43
462
原创 关于docker的几个概念(二)
目录1. 为何Docker CentOS镜像比传统CentOS镜像小得多?2. 镜像的分层结构及其优势3. 讲一下容器的copy-on-write特性,修改容器里面的内容会修改镜像吗?4. 简单描述一下Dockerfile的整个构建镜像过程
2024-08-13 10:15:39
1076
原创 关于docker的几个概念(一)
目录1. docker与传统虚拟机的区别什么?2. Docker 工作原理简介3. docker技术的三大核心概念是什么?
2024-08-12 17:44:46
725
原创 负载均衡器:LVS、Nginx、HAproxy如何选择?
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做。在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大,选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器配置简单,所以中小型企业推荐使用HAproxy。
2024-08-12 10:48:27
1118
原创 DNS查询过程与原理
注意事项:- **缓存**:DNS 查询的结果会被本地 DNS 服务器和其他中间服务器缓存一段时间,以减少未来的查询次数。- **递归查询**:本地 DNS 服务器通常执行递归查询,这意味着它会负责完成整个查询过程并返回结果给客户端。- **迭代查询**:在查询过程中,DNS 服务器之间的查询通常是迭代的,即每次查询只返回下一步的地址,直到找到权威 DNS 服务器为止。
2024-08-12 09:31:26
1823
原创 【Ansible 学习之旅】Roles介绍
对于范围和变量更复杂的自动化任务,并且涉及重复使用的情况下,将自动化内容组织成可重用的 Ansible角色,并在 playbook 中进行调用可能是更合适的选择。以便 playbook 更好的调用。这样创建的目录是全目录,但是我们可能只需要部分目录,因此实际应用中大多数都由我们自己创建目录,而不是用命令创建目录。roles 目录下的二级目录中,有些目录必须包含一个 main.yml 文件,以便 ansible 使用。可以根据自身需要创建 roles 下的二级目录,不需要的目录可以不创建,没需要全目录创建。
2024-08-11 22:36:59
1023
原创 【Ansible 学习之旅】Playbook 中的 Include 语句
Include 语句也可用来将一个 playbook 文件导入另一个 playbook 文件。这种方式允许你定义一个 顶层的 playbook,这个顶层 playbook 由其他 playbook 所组成。举个例子,如果我们要部署多个 wordpress 实例,我们可将所有的 wordpress task 写在一个。文件中, 然后再playbook中include该 wordpress.yml 文件并给参数赋值。要在 Playbook 中包含这个文件,你可以使用。
2024-08-11 21:48:26
1046
原创 【Ansible 学习之旅】Ansible 中的变量
可以在 Playbook 的 Play 层次中定义变量,使用vars---hosts: allvars:tasks:debug:在这个例子中,我们在 Play 层次定义了两个变量 app_name 和 app_port,并在任务中使用它们。通过调用变量,且变量名前后建议加空格这里,我们在 Inventory 文件中为 web01 主机定义了 app_name 和 app_port 变量。
2024-08-11 17:13:55
1012
原创 【Ansible 学习之旅】Playbook 的使用实例
playbook 命令格式playbook 简单示例创建 MySQL 用户和组安装 nginx安装和卸载 httpd安装 MySQL 5.6.46tags
2024-08-11 16:17:14
1026
原创 【Ansible 学习之旅】Playbook 的基本概念
playbook 剧本是由一个或多个“play”组成的列表。Playbook 文件是采用YAML语言编写的。在play之中,一组机器被映射为定义好的角色。在 ansible 中,play 的内容被称为tasks,即任务。在基本层次的应用中,一个任务是一个对 ansiblemodule的调用。‘plays’ 好似音符,playbook 好似由 ‘plays’ 构成的曲谱,通过 playbook,可以编排步骤进行多机器的部署。
2024-08-11 11:54:26
786
原创 【Ansible 学习之旅】Ansible常用模块介绍与演示
概念:模块是Ansible的核心组件之一,它们是独立的小型程序或脚本,用于执行特定的任务。这些任务可以是在远程主机上执行命令、管理文件或目录、配置服务、安装软件包等。Ansible通过运行这些模块来实现自动化任务。作用:通过组合不同的模块,我们可以构建出复杂的自动化流程。这些模块可以被直接在命令行中调用,也可以被包含在Playbook中,后者是一种更高级的自动化脚本。发展:随着Ansible的发展,模块被组织成集合(collections),这使得管理和分发这些模块变得更加容易。
2024-08-11 10:16:41
746
原创 【Ansible 学习之旅】Ansible核心工具介绍
类似于在命令行敲入shell命令和 写shell scripts两者之间的关系。用途: 执行预定义的剧本文件,用于执行一系列的自动化任务。用途: 用于安装、卸载和管理 Ansible 角色。用途: 提供交互式的命令行界面,用于执行任务。用途:此工具可以用于加密解密yml文件。用途: 显示模块的帮助文档和用法。
2024-08-10 22:18:16
1321
原创 【Ansible 学习之旅】Inventory文件介绍
Ansible inventory file是 Ansible 用来了解要操作哪些主机及其相关信息的一个文件。库存文件通常位于,但也可以通过或环境变量指定其他位置。组:使用方括号[ ]来定义组名。主机:每行一个主机名或 IP 地址或域名,直接写在组定义下方。在主机名后面添加空格或制表符,然后列出变量名和值。使用[组名:vars]来定义组的变量。在 [组名:vars] 下定义的变量适用于该组内的所有主机。[atlanta]host1host2复合组由其他组构成,使用。
2024-08-10 21:08:47
1319
原创 【Ansible 学习之旅】配置控制机器和受控机器
主机清单文件的目的是让 Ansible 知道它需要管理哪些主机,以及如何分组这些主机。例如,我们可以创建一个名为 “webservers” 的组,然后将所有 Web 服务器添加到这个组中。要测试控制节点(Ansible 主机)与被管理节点(目标主机)之间的连通性,我们可以使用 ping 模块。ansible 是基于 ssh 协议实现的,所以其配置公私钥的方式与 ssh 协议的方式相同。命令查看.ssh目录下生成的密钥文件:id_rsa 和 id_rsa.pub。
2024-08-10 16:01:08
1224
原创 【Ansible 学习之旅】Ansible 介绍和架构
Ansible 可自动管理远程系统并控制其所需状态。Ansible 使用简单、人类可读的脚本(称为playbook)来自动执行任务。你可以在playbook中声明本地或远程系统所需的状态。Ansible 可确保系统保持该状态。无代理架构:Ansible 不需要在被管理的服务器上安装任何额外的软件或代理。这种设计减少了部署和维护成本,因为我们不必担心在每个服务器上都要安装和更新代理程序。简单性:Ansible 使用直观的 YAML 格式来编写自动化脚本(playbook)。
2024-08-09 17:31:21
1596
原创 【移动应用开发期末复习】第五/六章例题
是一个容器控件,用于容纳多个RadioButton,并确保在同一时间只有一个RadioButton能被选中,即实现互斥的选择效果。在Android中,有四种常用的布局方式,分别是:FrameLayout(框架布局)、LinearLayout(线性布局)、RelativeLayout(相对布局)和TableLayout(表格布局)。它并不限制文件的写入行为,也就是说,写入文件时不会覆盖原有内容,而是按照所选的写入模式(如MODE_APPEND或MODE_PRIVATE)进行操作。方法来提交你的更改。
2024-06-27 16:17:53
1116
1
原创 【移动应用开发期末复习】第五/六章
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。即内容提供者,是 Android 四大组件之一。
2024-06-26 22:10:03
468
原创 【移动应用开发期末复习】第四章
使用XML布局文件定义视图组件Android平台为大多数视图组件以及其子类提供了XML标记,可通过XML布局文件中的标记来定义视图组件。XML中的每个元素代表了一个组件,即元素名称对应相应的Java类。
2024-06-26 20:55:32
1211
原创 【移动应用开发期末复习】第三章例题
C. System.exit(0):虽然这个方法可以强制终止整个Java虚拟机(包括你的Android应用),但它并不是Android官方推荐的方法。当调用此方法时,当前的Activity会经过其生命周期的onDestroy()方法,并从Activity栈中移除。B. 抛异常强制退出:虽然这种方法确实可以使Activity或整个应用退出,但用户体验极差,因为它会触发一个“Force Close”的对话框,给用户一种应用崩溃的错觉。此外,这种方法并不符合Android的设计理念和最佳实践。
2024-06-26 20:12:13
1147
原创 【移动应用开发期末复习】第三章
Activity是Android应用程序四大组件中最基础、最重要的组件,它为用户提供了一个用于任务交互的用户界面,其作用类似于使用浏览器软件时的网页(二者都可以包含控件,都占据一个窗口),是用户与应用程序交互的基本单元每一个Activity可以启动另外一个Activity。每当一个新的Activity被启动,那么之前的Activity将被停止,但是Android系统并不是直接销毁之前的Activity,而是会把它压入到一个栈中(back stack,返回栈)。
2024-06-26 19:27:31
951
Linux下 su 和 su- 命令对环境变量造成的影响
2023-08-05
我想问下,这个程序中的if后的大括号里为什么是空语句就代表继续?
2021-09-25
s(s-a)(s-b)(s-c)是合法的C语言表达式吗
2021-09-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人