1
0

项目:格式化文档

This commit is contained in:
周中平 2024-04-26 22:10:54 +08:00
parent fbd3cc7b22
commit a4d966e619
Signed by: zhouzhongping
GPG Key ID: 6666822800008000
36 changed files with 245 additions and 247 deletions

View File

@ -15,21 +15,21 @@ date: 2024-02-18
前段时间,好友让我在招聘软件上帮他找几个财务方面的人员,主要涉及财务助理和财务经理两个岗位。虽然从没有担任过面试官,但我恰巧阅读了一些与人力资源相关的书籍,遂想尝试尝试体验一下。
一开始我借助 ChatGPT 快速学习了解面试的基本流程,并且一起制定了精简的招聘方案。主要是涉及岗位职责,面试题目,薪资待遇。然后我在网上下载了一些常见的招聘软件,就开始 GoGoGo了。
一开始我借助 ChatGPT 快速学习了解面试的基本流程,并且一起制定了精简的招聘方案。主要是涉及岗位职责,面试题目,薪资待遇。然后我在网上下载了一些常见的招聘软件,就开始 GoGoGo 了。
开始前两天,我尝试有针对性地邀请一些面试者进行沟通交流,如院校背景、从业经验、薪资期望过滤。但整体效果不佳,没有获得任何面试机会。不禁感叹,大家都说找工作难,实际应聘一名合格的员工更是难上加难。后来我想着三个臭皮还顶一个诸葛亮呢,转而采取了海投的方式,除了设置一些基本的过滤选项,然后向所有符合要求的人发出招呼。
然后求职者就哗哗哗,纷至沓来。前后我沟通了 500+ 求职者,深入沟通了解 50 个左右确定面试的有10+。果然还是基数上来了,比例就不是问题。
然后求职者就哗哗哗,纷至沓来。前后我沟通了 500+ 求职者,深入沟通了解 50 个左右,确定面试的有 10+。果然还是基数上来了,比例就不是问题。
## 分享我遇到的一些问题
### 关于招聘软件的筛选
我只能说**比你上大学报考志愿筛选的都细致**什么985,211双一流都能筛指定学校都可以就不说工作年限薪资待遇了。前两天我筛选得很细致但是效果不佳。后来我就设置了基础的过滤并且点进去看看然后打招呼。社会化招聘敲门砖真的很重要。
我只能说**比你上大学报考志愿筛选的都细致**,什么 985,211双一流都能筛指定学校都可以就不说工作年限薪资待遇了。前两天我筛选得很细致但是效果不佳。后来我就设置了基础的过滤并且点进去看看然后打招呼。社会化招聘敲门砖真的很重要。
### 关于求职者的学历
因为我是在郑州招聘所以遇到最好的就是省内的郑大河大财大等这些。但就我感觉来说这些求职者无论是大专也好本科也罢。特别是刚毕业的一两年工作经验的求职者并不存在天上地下的差距。这个观点也许有些片面毕竟没有遇到清华北大985的。
因为我是在郑州招聘所以遇到最好的就是省内的郑大河大财大等这些。但就我感觉来说这些求职者无论是大专也好本科也罢。特别是刚毕业的一两年工作经验的求职者并不存在天上地下的差距。这个观点也许有些片面毕竟没有遇到清华北大985 的。
我认为的是**大部分刚毕业的年轻人不存在质的差距,但是教育资源倾斜的体现尤其明显**。毕竟有时候顶着一个好的头衔,也有可能迎来一句:名校毕业的就这水平么?
@ -57,7 +57,7 @@ date: 2024-02-18
### 关于求职者的沟通
其中还有一个很蛋疼的问题就是有些求职者可能是海投吧。但是开场白就是双休么缴五险一金么工作时间我倒是觉得有点不认同毕竟现在会有哪家企业会把刀架在脖子上逼着你每天工作16小时么并且还不给你发工资
其中还有一个很蛋疼的问题就是,有些求职者可能是海投吧。但是开场白就是双休么?缴五险一金么?工作时间?我倒是觉得有点不认同,毕竟现在会有哪家企业会把刀架在脖子上逼着你每天工作 16 小时么?并且还不给你发工资?
而且薪资待遇的博弈,需要的是双方平等的地位才有可能谈妥。一开始求职者甚至连乙方都不算,你需要做的是加大自身筹码,直至坐上谈判桌,甚至成为甲方再开始讨论薪资待遇。开始只需要简单的开场白,并且礼貌介绍一下自己,并发送个人详细简历就好了,其他的无须多言。
@ -65,12 +65,8 @@ date: 2024-02-18
## 面试流程
![work](https://static.7wate.com/2024/02/21/47f77e6afafef55f9ccb223f756688b3-work.png)
我利用 ChatGPT 制定了针对财务经理、财务助理面试题目,旨在全面考察求职者的综合素质、理论知识、行业经验以及项目管理能力。
线上初试环节,我会重点核查简历中的从业经验和项目经历,并评估其职业发展规划的明确性。此外,我还会提出一些实际操作问题,例如对现代财务管理软件的熟悉程度,以此来考察应聘者的实际操作能力。并通过深入探讨其项目经验和处理特定场景的方法,进而评估求职者的逻辑思维和问题解决能力。

View File

@ -34,4 +34,3 @@ date: 2022-11-30
不忘初心,方得始终;初心易得,始终难守。我也见过很多很多很多博友在折腾工具的路上一去不复返了,似乎忘了最初的本意,完全沉浸在折腾的乐趣里了。并不是要论个谁对谁错,我其实也非常喜欢折腾,真的嘎嘎快乐 ~
因为我对于「数字文具盒」的定义就是为了提高学习、工作效率,并以结果为导向,以实现需求为目标的。所以如果你打造「数字文具盒」是为了提高效率,那么就切勿折腾;如果是为了快乐,那就好好折腾 ~

View File

@ -88,25 +88,25 @@ OSI 模型是一个参考模型,用于描述和理解复杂的网络通信过
#### 地址池管理
- **子网划分**根据网络规模和需求合理划分子网。小型网络可能只需要一个子网而大型或分布广泛的网络可能需要多个子网。通过子网划分可以更有效地管理IP地址。
- **子网划分**:根据网络规模和需求,合理划分子网。小型网络可能只需要一个子网,而大型或分布广泛的网络可能需要多个子网。通过子网划分,可以更有效地管理 IP 地址。
- **地址池规模**:评估网络内部设备的数量,包括不仅限于工作站、服务器、打印机和无线设备等,预测未来扩展需要,确保地址池有足够的地址可以分配。
- **留白地址**在地址池中预留一定数量的IP地址用于未来扩展或临时需要。
- **留白地址**:在地址池中预留一定数量的 IP 地址,用于未来扩展或临时需要。
#### 租期设置
- **动态地址分配租期**针对普通客户端设备可以设置较短的租期例如24小时以保证IP地址能够有效循环利用。租期过短可能会增加网络流量而过长则可能导致IP地址浪费。
- **动态地址分配租期**:针对普通客户端设备,可以设置较短的租期(例如 24 小时),以保证 IP 地址能够有效循环利用。租期过短可能会增加网络流量,而过长则可能导致 IP 地址浪费。
- **租期续订策略**:设定合理的续订策略,例如当租期过半时尝试续订,以减少因租期到期而导致的网络中断。
#### 保留地址
- **静态地址分配**对于服务器、网络打印机、路由器等关键设备分配静态IP地址。这样做可以确保这些设备的网络路径稳定可靠。
- **DHCP保留**在DHCP服务器上为特定的MAC地址保留IP地址。即使是在使用动态地址分配的环境中也可以确保某些特定设备总是获得相同的IP地址。
- **静态地址分配**:对于服务器、网络打印机、路由器等关键设备,分配静态 IP 地址。这样做可以确保这些设备的网络路径稳定可靠。
- **DHCP 保留**:在 DHCP 服务器上为特定的 MAC 地址保留 IP 地址。即使是在使用动态地址分配的环境中,也可以确保某些特定设备总是获得相同的 IP 地址。
## 子网划分和超网
子网划分目的在于将大型网络划分成更小、更易管理的网络段。可以通过更改子网掩码将一个大型网络的 IP 地址空间划分成多个小网络。每个子网有自己的网络地址和广播地址,以及一系列可用于分配给设备的 IP 地址。
#### CIDR无类别域间路由选择
### CIDR无类别域间路由选择
CIDR 是一种用于创建更灵活的网络地址分配方法的 IP 地址分配和路由选择方法。它允许更细粒度的子网划分,优化 IP 地址的使用。
@ -182,7 +182,7 @@ CIDR 是一种用于创建更灵活的网络地址分配方法的 IP 地址分
tracert google.com
```
- **IPConfig** 用于查看和刷新IP配置如获取当前的 IP 地址、子网掩码、默认网关等。
- **IPConfig** 用于查看和刷新 IP 配置,如获取当前的 IP 地址、子网掩码、默认网关等。
```cmd
ipconfig /all
@ -235,9 +235,9 @@ CIDR 是一种用于创建更灵活的网络地址分配方法的 IP 地址分
IPv6 的推出主要是为了解决 IPv4 地址耗尽的问题,但它带来的好处远不止于此。
- **更大的地址空间**: IPv6 使用128位地址理论上可以提供21282128个独立的网络地址远远超过IPv4的232232个地址。这对于物联网(IoT)设备快速增长的时代尤为重要,每个设备都需要独立的网络地址。
- **改进的路由和自动配置特性**: IPv6 提高了路由的效率和灵活性。它支持直接自动配置减少了网络设置的复杂性使设备能够自动获得IP地址简化了网络管理。
- **安全性增强**: IPv6 在设计之初就考虑到了安全问题它原生支持IPsec为数据传输提供加密和身份验证而在IPv4中这是一个可选项。
- **更大的地址空间**: IPv6 使用 128 位地址,理论上可以提供 21282128 个独立的网络地址,远远超过 IPv4 232232 个地址。这对于物联网 (IoT) 设备快速增长的时代尤为重要,每个设备都需要独立的网络地址。
- **改进的路由和自动配置特性**: IPv6 提高了路由的效率和灵活性。它支持直接自动配置,减少了网络设置的复杂性,使设备能够自动获得 IP 地址,简化了网络管理。
- **安全性增强**: IPv6 在设计之初就考虑到了安全问题,它原生支持 IPsec为数据传输提供加密和身份验证而在 IPv4 中,这是一个可选项。
### SDN软件定义网络
@ -251,11 +251,5 @@ SDN 是近年来网络技术领域的一大创新,它改变了传统网络架
了解最新的行业动态对于网络工程师至关重要,以下是一些值得关注的领域:
- **5G**: 作为下一代移动通信标准5G 不仅提高了数据传输速度,还大大减少了延迟,这对于实时应用如在线游戏、自动驾驶汽车和远程手术等领域将产生深远影响。
- **边缘计算**: 随着IoT设备的增多数据产生的地点越来越靠近用户边缘计算通过在数据产生地点附近进行数据处理可以减少延迟提高处理速度。
- **边缘计算**: 随着 IoT 设备的增多,数据产生的地点越来越靠近用户,边缘计算通过在数据产生地点附近进行数据处理,可以减少延迟,提高处理速度。
- **网络安全趋势**: 网络安全是一个持续演进的领域。了解最新的安全趋势,如使用机器学习和人工智能来预测和防御网络攻击,对于保护网络安全至关重要。

View File

@ -58,7 +58,7 @@ graph TD;
end
```
OSI开放式系统互联模型是一个概念性的框架用于理解和设计网络协议的架构。这个模型由国际标准化组织ISO在1984年发布将网络通信分为七个抽象层每层负责不同的网络功能。下面是对OSI七层协议的系统性解释
OSI开放式系统互联模型是一个概念性的框架用于理解和设计网络协议的架构。这个模型由国际标准化组织ISO 1984 年发布,将网络通信分为七个抽象层,每层负责不同的网络功能。下面是对 OSI 七层协议的系统性解释:
### 1. 物理层Physical Layer
@ -73,27 +73,27 @@ OSI开放式系统互联模型是一个概念性的框架用于理解
### 3. 网络层Network Layer
- **功能**:负责在多个网络之间建立、维护和终止连接。它处理数据包的路由选择和转发。
- **协议**例如IPInternet Protocol、ICMPInternet Control Message Protocol等。
- **协议**:例如 IPInternet Protocol、ICMPInternet Control Message Protocol等。
### 4. 传输层Transport Layer
- **功能**:为端到端的通信提供服务。它负责数据的分割、传输、错误检测和恢复。
- **协议**例如TCPTransmission Control Protocol、UDPUser Datagram Protocol等。
- **协议**:例如 TCPTransmission Control Protocol、UDPUser Datagram Protocol等。
### 5. 会话层Session Layer
- **功能**:管理和控制两个网络节点之间的会话连接,负责建立、管理和断开会话。
- **应用**例如API、Socket编程等。
- **应用**:例如 API、Socket 编程等。
### 6. 表示层Presentation Layer
- **功能**:确保从一个节点发送的数据可以被另一个节点的应用层读取和理解。它负责数据格式转换、数据加密和解密、数据压缩等。
- **例子**ASCII、JPEG、MPEG等数据格式。
- **例子**ASCII、JPEG、MPEG 等数据格式。
### 7. 应用层Application Layer
- **功能**:提供网络服务给最终用户的应用程序。它定义了用于与网络服务交互的各种协议。
- **协议和服务**例如HTTPHyperText Transfer Protocol、FTPFile Transfer Protocol、电子邮件、远程登录等。
- **协议和服务**:例如 HTTPHyperText Transfer Protocol、FTPFile Transfer Protocol、电子邮件、远程登录等。
## 网络协议

View File

@ -11,6 +11,7 @@ tags:
author: 7Wate
date: 2022-08-31
---
## JWTJSON Web Token鉴权
通过第三节,我们知道了 Token 的使用方式以及组成,我们不难发现,服务端验证客户端发送过来的 Token 时,还需要查询数据库获取用户基本信息,然后验证 Token 是否有效;这样每次请求验证都要查询数据库,增加了查库带来的延迟等性能消耗。
@ -47,7 +48,7 @@ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4
#### Payload 负载
它包含一些声明 Claim实体的描述通常是一个 User 信息还包括一些其他的元数据用来存放实际需要传递的数据JWT 规定了7个官方字段
它包含一些声明 Claim实体的描述通常是一个 User 信息还包括一些其他的元数据用来存放实际需要传递的数据JWT 规定了 7 个官方字段:
- ississuer签发人
- expexpiration time过期时间

View File

@ -102,7 +102,7 @@ Git 允许多个远程仓库存在,使得这样一种工作流成为可能:
1. John 与 Jessica 在一个特性分支featureA上工作。
2. Jessica 同时与第三个开发者 Josie 在第二个特性分支featureB上工作。
3. 公司使用了一种整合-管理者工作流程,独立小组的工作只能被特定的工程师整合, 主仓库的 master 分支只能被那些工程师更新。
3. 公司使用了一种整合 - 管理者工作流程,独立小组的工作只能被特定的工程师整合, 主仓库的 master 分支只能被那些工程师更新。
4. 在这种情况下,所有的工作都是在基于团队的分支上完成的,并且稍后会被整合者拉到一起。
…………
@ -198,7 +198,7 @@ git send-email <file-name>.patch
### 应用来自邮件的补丁
#### 使用 apply 命令应用补丁
#### 使用 Apply 命令应用补丁
如果你收到了一个使用 git diff 或 Unix diff 命令的变体(不推荐使用这种方式,具体见下一小节) 创建的补丁,可以使用 git apply 命令来应用。 假设你将补丁保存在了 /tmp/patch-ruby-client.patch 中,可以这样应用补丁:
@ -206,7 +206,7 @@ git send-email <file-name>.patch
git apply /tmp/patch-ruby-client.patch
```
#### 使用 am 命令应用补丁
#### 使用 Am 命令应用补丁
如果补丁的贡献者也是一个 Git 用户,并且其能熟练使用 format-patch 命令来生成补丁,这样的话你的工作会变得更加轻松,因为这种补丁中包含了作者信息和提交信息供你参考。
@ -224,7 +224,7 @@ git am <file-name>.patch
#### 合并工作流
一种基本的工作流就是将所有的工作直接合并到 master 分支。 在这种情况下master 分支包含的代码是基本稳定的。 当你完成某个主题分支的工作,或审核通过了其他人所贡献的工作时,你会将其合并进入 master分支之后将主题分支删除如此反复。
一种基本的工作流就是将所有的工作直接合并到 master 分支。 在这种情况下master 分支包含的代码是基本稳定的。 当你完成某个主题分支的工作,或审核通过了其他人所贡献的工作时,你会将其合并进入 master 分支,之后将主题分支删除,如此反复。
#### 大项目合并工作流
@ -250,6 +250,7 @@ v1.6.2-rc1-20-g8c5b85c
#### 准备一次发布
现在你可以发布一个构建了。 其中一件事情就是为那些不使用 Git 的可怜包们创建一个最新的快照归档。 使用
git archive 命令完成此工作:
```shell

View File

@ -11,6 +11,7 @@ tags:
author: 7Wate
date: 2022-09-13
---
## 钩子定义
钩子是 Git 在特定的重要动作发生时触发自定义脚本,你可以随心所欲地运用这些钩子。主要分以下两种类型:

View File

@ -11,7 +11,7 @@ author: 7Wate
date: 2022-12-04
---
## tab 补全
## Tab 补全
在 Shell 中可以使用 tab 键盘实现快速补全,双击 tab 可以显示补全列表。
@ -24,9 +24,10 @@ date: 2022-12-04
.cache/ .sudo_as_admin_successful demo/
```
## history 历史
## History 历史
history 命令可以显示执行过的命令历史。
``` shell
@:~$ history
1 pwd
@ -91,7 +92,7 @@ Linux 终端执行命令的很多情况下需要经常的更换目录cd 命
@:~/demo/a$
```
## alias 别名
## Alias 别名
一些常用的命令可以使用 alais 定义别名,方便快速操作。移除别名使用 unalias 命令。

View File

@ -28,31 +28,31 @@ Shell壳层在计算机科学中指**为用户提供用户界面**的软
- DOS Shell
- Macintosh Finder
- Microsoft Windows 环境Aston shell、BB4Win、Emerge Desktop、Geoshell、Litestep、程序管理器、Secure Desktop、SharpE、Windows Explorer、UserShell。
- X Window System 环境或 Wayland 环境主要用于类Unix操作系统
- 独立的X窗口管理器例如 Blackbox 与Fluxbox。
- 依靠窗口管理器的完整桌面环境例如CDE、GNOME、Unity以GNOME作内核、KDE、XFCE。
- X Window System 环境或 Wayland 环境(主要用于类 Unix 操作系统)
- 独立的 X 窗口管理器,例如 Blackbox 与 Fluxbox。
- 依靠窗口管理器的完整桌面环境例如CDE、GNOME、Unity GNOME 作内核、KDE、XFCE。
## 命令行界面CLI
### Unix
#### Bourne shell 兼容
#### Bourne Shell 兼容
- **Bourne shellsh**史蒂夫·伯恩在贝尔实验室时编写。1978 年随 Version 7 Unix 首次发布。
- Almquist shellash由肯尼斯·艾昆斯特Kenneth Almquist在 SVR4 上建立了这个分支。
- **Bourne-Again shellbash**由布莱恩·福克斯在 1987 年为了GNU计划而编写。
- Debian Almquist shelldash由赫伯特·许Herbert Xu1997 年移植到Linux上后改名为 dash。
- Korn shellkshDavid Korn在贝尔实验室时编写。
- Z shellzsh是 macOS2019年起 一款可用作交互式登录的shell及脚本编写的命令解释器。
- **Bourne-Again shellbash**由布莱恩·福克斯在 1987 年为了 GNU 计划而编写。
- Debian Almquist shelldash由赫伯特·许Herbert Xu1997 年移植到 Linux 上后改名为 dash。
- Korn shellkshDavid Korn 在贝尔实验室时编写。
- Z shellzsh是 macOS2019 年起) 一款可用作交互式登录的 shell 及脚本编写的命令解释器。
#### C shell 兼容
#### C Shell 兼容
- C shellcsh比尔·乔伊在加州大学伯克利分校时编写。1979年随BSD首次发布。
- TENEX C shelltcsh 一个向下兼容c shell的Unix shell目前作为FreeBSD和其延伸发行版的默认shell。
- C shellcsh比尔·乔伊在加州大学伯克利分校时编写。1979 年随 BSD 首次发布。
- TENEX C shelltcsh 一个向下兼容 c shell Unix shell目前作为 FreeBSD 和其延伸发行版的默认 shell。
### 非Unix
### 非 Unix
- 4DOS, 4OS2, 4NT JP Software 公司可在在 DOS, OS/2及 Windows NT 下使用的壳层。Take Command程序则是 GUI 方式的兼容程序。
- 4DOS, 4OS2, 4NT JP Software 公司可在在 DOS, OS/2及 Windows NT 下使用的壳层。Take Command 程序则是 GUI 方式的兼容程序。
- Amiga CLI/Amiga 壳层是称为 Workbench 的 AmigaOS 图形界面的另一选择。
- BASIC-PLUS RSTS/E
- BeemosBEEMos在 Windows XP 上执行的一个小型项目,提供设置、应用程序等功能,感觉起来像是在另一个操作系统下。
@ -69,8 +69,8 @@ Shell壳层在计算机科学中指**为用户提供用户界面**的软
- iSeries QSHELL IBM OS/400 上的 Unix 风格壳层
- Macintosh Programmer's Workshop –古典 Mac OS 软件开发用的老式指令行环境
- Microsoft BASIC –一些古老 8 位电脑上的主要作业环境
- Rexx IBM的脚本语言scripting language
- Rexx IBM 的脚本语言scripting language
- Singularity shell Singularity 的标准壳层
- **Windows PowerShell** –命令提示字符的新一代面向对象后继者(旧称 Monad 或 Microsoft Shell (MSH)
- Windows 修复主控台– Windows 2000、Windows XP、Windows 2003 操作系统的一项功能
- YouShell 用于YouOS基于JavaScript的指令处理器
- YouShell –用于 YouOS基于 JavaScript 的指令处理器

View File

@ -64,7 +64,7 @@ G gg H M L k j ▶ print("to")
| `<C-u>` */* `<C-d>` | 上/下半页 |
| `<C-b>` */* `<C-f>` | 向上/向下翻页 |
#### 字(词)
#### 字 (词)
| 快捷方式 | 说明 |
| ------------ | ----------------- |
@ -82,9 +82,9 @@ G gg H M L k j ▶ print("to")
| 快捷方式 | 说明 |
| ------------- | ------------------------------- |
| `Fe` */* `fe` | 移动到上一个/下一个`e` |
| `To` */* `to` | 在上一个/下一个`o`之前/之后移动 |
| `|` */* `n|` | 转到第一个/`n`列 |
| `Fe` */* `fe` | 移动到上一个/下一个 `e` |
| `To` */* `to` | 在上一个/下一个 `o` 之前/之后移动 |
| `|` */* `n|` | 转到第一个/`n` 列 |
#### 文档
@ -124,8 +124,8 @@ G gg H M L k j ▶ print("to")
| `:q!` | `ZQ` | 强制退出 |
| `:qa` | 关闭所有文件 |
| `:qa!` | 强制退出所有文件 |
| `:w` new.txt | 写入`new.txt` |
| `:sav` new.txt | 保存并编辑`new.txt` |
| `:w` new.txt | 写入 `new.txt` |
| `:sav` new.txt | 保存并编辑 `new.txt` |
| `:w` !sudo tee % | 写入只读文件 |
### 正常模式
@ -134,10 +134,10 @@ G gg H M L k j ▶ print("to")
| --------------------- | ----------------- |
| `r` | 替换一个字符 |
| `R` | 进入替换模式 |
| `u` */* `3u` | 撤消更改`1`/`3`次 |
| `u` */* `3u` | 撤消更改 `1`/`3` 次 |
| `U` | 在一行上撤消更改 |
| `J` | 加入下一行 |
| `<C-r>` */* 5 `<C-r>` | 重做更改`1`/`5`次 |
| `<C-r>` */* 5 `<C-r>` | 重做更改 `1`/`5` 次 |
### 剪切和粘贴
@ -168,8 +168,8 @@ G gg H M L k j ▶ print("to")
| -------- | -------------------------------- |
| `.` | 重复上一个命令 |
| `;` | 重复最新的 `f`、`t`、`F` 或 `T` |
| `,` | 重复最新的`f`、`t`、`F`或`T`颠倒 |
| `&` | 重复最后一个`:s` |
| `,` | 重复最新的 `f`、`t`、`F` `T` 颠倒 |
| `&` | 重复最后一个 `:s` |
| `@:` | 重复命令行命令 |
### 可视化模式
@ -188,7 +188,7 @@ G gg H M L k j ▶ print("to")
| ----- | --------------- |
| `qi` | 录制宏 `i` |
| `q` | 停止录制宏 |
| `@i` | 运行宏`i` |
| `@i` | 运行宏 `i` |
| `7@i` | 运行宏 `i` 7 次 |
| `@@` | 重复上一个宏 |
@ -298,9 +298,9 @@ G gg H M L k j ▶ print("to")
| 快捷方式 | 说明 |
| -------- | ------------------------------ |
| `v`i" | 选择内引号“`...`{.underline}” |
| `v`a" | 选择引号`"..."`{.underline} |
| `v`a" | 选择引号 `"..."`{.underline} |
| `v`i[ | 选择内括号 [`...`{.underline}] |
| `v`a[ | 选择括号`[...]`{.underline} |
| `v`a[ | 选择括号 `[...]`{.underline} |
| `v`iw | 选择内词 |
| `v`ip | 选择内部段落 |
| `v`ipip | 选择更多段落 |
@ -356,23 +356,23 @@ G gg H M L k j ▶ print("to")
| 快捷方式 | 说明 |
| -------------- | -------------------------- |
| `:tabe [file]` | E在新选项卡中编辑文件 |
| `:tabe [file]` | E 在新选项卡中编辑文件 |
| `:tabf [file]` | 如果在新选项卡中存在则打开 |
| `:tabc` | C失去当前选项卡 |
| `:tabo` | 关闭o其他选项卡 |
| `:tabc` | C 失去当前选项卡 |
| `:tabo` | 关闭 o 其他选项卡 |
| `:tabs` | 列出所有标签 |
| `:tabr` | 转到第一个r标签 |
| `:tabr` | 转到第一个 r 标签 |
| `:tabl` | 转到 last 选项卡 |
| `:tabm 0` | 我转到位置 `0` |
| `:tabn` | 转到 next 选项卡 |
| `:tabp` | 转到p上一个标签 |
| `:tabp` | 转到 p 上一个标签 |
#### 正常模式
| 快捷方式 | 说明 |
| -------- | ---------------- |
| `gt` | 转到 next 选项卡 |
| `gT` | 转到p上一个标签 |
| `gT` | 转到 p 上一个标签 |
| `2gt` | 转到标签编号 `2` |
## Vim 搜索和替换
@ -403,7 +403,7 @@ G gg H M L k j ▶ print("to")
| `:s/old/new` | 先更换 |
| `:s/old/new/g` | 全部替换 |
| `:s/\vold/new/g` | 全部替换为 [regex](https://github.com/jaywcjlove/reference/blob/main/docs/regex.md) |
| `:s/old/new/gc` | 全部替换_(确认)_ |
| `:s/old/new/gc` | 全部替换 *(确认)* |
| `:s/old/new/i` | 先忽略大小写替换 |
| `:2,6s/old/new/g` | 在 `2`-`6` 行之间替换 |
@ -465,7 +465,7 @@ G gg H M L k j ▶ print("to")
| :- | - |
| ---------- | --------------------------------------- |
| `:v/foo/d` | 删除不包含`foo`的行 *(还有`:g!/foo/d`)* |
| `:v/foo/d` | 删除不包含 `foo` 的行 *(还有 `:g!/foo/d`)* |
### Flags(标志)
@ -586,7 +586,7 @@ vim -d file1 file2 [file3]
| `<C-o>` | 返回上一个 |
| `<C-i>` | 向前 |
| `gf` | 转到光标中的文件 |
| `ga` | 显示十六进制、ASCII值 |
| `ga` | 显示十六进制、ASCII 值 |
### 其他命令行
@ -606,9 +606,9 @@ vim -d file1 file2 [file3]
| 快捷方式 | 说明 |
| ------------- | ------------------- |
| `%` | 最近/匹配的`{[()]}` |
| `%` | 最近/匹配的 `{[()]}` |
| `[(` *|* `[{` | 上一个 `(``{` |
| `])` *|* `]{` | 下一个`)`或`}` |
| `])` *|* `]{` | 下一个 `)` `}` |
| `[m` | 上一个方法开始 |
| `[M` | 上一个方法结束 |
@ -656,16 +656,16 @@ vim -d file1 file2 [file3]
| ``<` | 到最后一个可视化选择的开始 |
| ``>` | 到最后一个可视化选择的结尾 |
| `ma` | 将此光标位置标记为`a` |
| ``a` | 跳转到光标位置`a` |
| ``a` | 跳转到光标位置 `a` |
| `'a` | 跳转到位置为 `a` 的行首 |
| `d'a` | 从当前行删除到标记 `a` 的行 |
| `d`a` | 从当前位置删除到标记 `a` 的位置 |
| `c'a` | 将文本从当前行更改为 `a` 行 |
| `y`a` | 将文本从当前位置拉到 `a` 的位置 |
| `:marks` | 列出所有当前标记 |
| `:delm a` | 删除标记`a` |
| `:delm a-d` | 删除标记`a`、`b`、`c`、`d` |
| `:delm abc` | 删除标记`a`、`b`、`c` |
| `:delm a` | 删除标记 `a` |
| `:delm a-d` | 删除标记 `a`、`b`、`c`、`d` |
| `:delm abc` | 删除标记 `a`、`b`、`c` |
### 计算器
@ -681,7 +681,7 @@ vim -d file1 file2 [file3]
| :- | - |
| ------------ | ---------------- |
| `:!<shell>` | 解释 Shell 命令 |
| `:r!<shell>` | 读入shell的输出 |
| `:r!<shell>` | 读入 shell 的输出 |
| `:r!date` | 插入日期 |
| `:!!date` | 用日期替换当前行 |

View File

@ -153,7 +153,7 @@ U - 将选中文本转换为大写
## 寄存器
寄存器被存储在 ~/.viminfo 中, 在下次重启vim时仍会加载
寄存器被存储在 ~/.viminfo 中, 在下次重启 vim 时仍会加载
```vim
:reg[isters] - 显示寄存器内容
@ -200,7 +200,7 @@ g; - 跳转至修改历史中较早修改的位置
Ctrl + ] - 跳转到当前光标位置对应的 tag
```
**Tip** 可以使用反引号(`)或单引号(')跳转至标记位置。使用单引号会跳转至该标记所在行行首(首个非空白字符)。
**Tip** 可以使用反引号 (`) 或单引号 (') 跳转至标记位置。使用单引号会跳转至该标记所在行行首 (首个非空白字符)。
## 宏
@ -347,6 +347,6 @@ dp or :diffpu[t] - 将当前缓冲区中的差异推送至另一缓冲区
:diffo[ff] - 令当前窗口退出 diff 模式
```
折叠命令(e.g. za)只作用于当前级别。使用大写字母(e.g. zA)令命令作用于全部级别。
折叠命令 (e.g. za) 只作用于当前级别。使用大写字母 (e.g. zA) 令命令作用于全部级别。
可以直接在终端运行 vimdiff 查看文件间的不同。也可以将该程序设为 git difftool 的选项之一。

View File

@ -31,13 +31,13 @@ GNU/Linux 也是自由软件和开放源代码软件发展中最著名的例子
1974 年,汤普逊和里奇合作在 ACM 通信上发表了一篇关于 UNIX 的文章,这是 UNIX 第一次出现在贝尔实验室以外。此后 UNIX 被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。
在此后的10年Unix 在学术机构和大型企业中得到了广泛的应用,当时的 UNIX 拥有者 **AT&T 公司以低廉甚至免费的许可将 Unix 源码授权给学术机构做研究或教学之用**许多机构在此源码基础上加以扩展和改进形成了所谓的“Unix变种”这些变种反过来也促进了 Unix 的发展,其中最著名的变种之一是由**加州大学柏克莱分校开发的伯克利软件套件BSD产品**。
在此后的 10 Unix 在学术机构和大型企业中得到了广泛的应用,当时的 UNIX 拥有者 **AT&T 公司以低廉甚至免费的许可将 Unix 源码授权给学术机构做研究或教学之用**许多机构在此源码基础上加以扩展和改进形成了所谓的“Unix 变种”,这些变种反过来也促进了 Unix 的发展,其中最著名的变种之一是由**加州大学柏克莱分校开发的伯克利软件套件BSD产品**。
后来 AT&T 意识到了 **Unix 的商业价值**,于 1983 年发布 Unix 第一个商业版本 System V。便**不再将 Unix 源码授权给学术机构**,并对之前的 Unix 及其变种声明了著作权权利。故开始了一场持久的著作权官司,直至 AT&T 将自己的 Unix 系统实验室卖掉。
新接手的 Novell 采取了一种比较开明的做法,允许柏克莱分校自由发布自己的 Unix 变种,但是前提是必须将来自于 AT&T 的代码完全删除于是诞生了4.4 BSD Lite版由于这个版本不存在法律问题**4.4 BSD Lite成为了现代柏克莱软件包的基础版本。**所以从这个角度上4.4 BSD 又是所有自由版本 Unix 的基础,
新接手的 Novell 采取了一种比较开明的做法,允许柏克莱分校自由发布自己的 Unix 变种,但是前提是必须将来自于 AT&T 的代码完全删除,于是诞生了 4.4 BSD Lite 版,由于这个版本不存在法律问题,**4.4 BSD Lite 成为了现代柏克莱软件包的基础版本。**所以从这个角度上4.4 BSD 又是所有自由版本 Unix 的基础,
后续 BSD 在发展中也逐渐派生出 3 个主要的分支:[FreeBSD](https://zh.wikipedia.org/wiki/FreeBSD)、[OpenBSD](https://zh.wikipedia.org/wiki/OpenBSD)和[NetBSD](https://zh.wikipedia.org/wiki/NetBSD)。
后续 BSD 在发展中也逐渐派生出 3 个主要的分支:[FreeBSD](https://zh.wikipedia.org/wiki/FreeBSD)、[OpenBSD](https://zh.wikipedia.org/wiki/OpenBSD) [NetBSD](https://zh.wikipedia.org/wiki/NetBSD)。
外部链接:[UNIX的完整历史](http://www.levenez.com/unix/)
@ -47,9 +47,9 @@ GNU/Linux 也是自由软件和开放源代码软件发展中最著名的例子
1983 年AT&T 发布了 Unix 最新版 system V这是一个商业化版本付费才能使用并且不得传播源码。正是因为看到了 Unix 被商业化,所以 **1983 年 9 月 27 日由理查德·斯托曼在麻省理工学院公开发起 GNU 计划。**
[GNU 计划](https://www.gnu.org/)的基本目标和一贯目标是提供一个和 Unix 兼容的 100% 自由软件的操作系统。不是 95%、也不是 99.5%、而是 100% 自由。这个系统的名字叫 **GNU是 GNU's Not Unix 的首字母递归缩写**——这是对 Unix 的技术思想致敬的一种方法,同时表达 GNU 有所不同。从技术上说GNU 很像 Unix。但是它不同于 UnixGNU 给予其用户自由。
[GNU 计划](https://www.gnu.org/) 的基本目标和一贯目标是提供一个和 Unix 兼容的 100% 自由软件的操作系统。不是 95%、也不是 99.5%、而是 100% 自由。这个系统的名字叫 **GNU是 GNU's Not Unix 的首字母递归缩写**——这是对 Unix 的技术思想致敬的一种方法,同时表达 GNU 有所不同。从技术上说GNU 很像 Unix。但是它不同于 UnixGNU 给予其用户自由。
1985 年,理查德·斯托曼创立了自由软件基金会来为 GNU 计划提供技术、法律以及财政支持。到了 1990 年GNU 计划已经开发出的软件包括了一个功能强大的文字编辑器 Emacs、C 语言编译器 GCC 以及大部分 UNIX 系统的程序库和工具。**唯一依然没有完成的重要组件就是操作系统的内核称为HURD。**
1985 年,理查德·斯托曼创立了自由软件基金会来为 GNU 计划提供技术、法律以及财政支持。到了 1990 年GNU 计划已经开发出的软件包括了一个功能强大的文字编辑器 Emacs、C 语言编译器 GCC 以及大部分 UNIX 系统的程序库和工具。**唯一依然没有完成的重要组件,就是操作系统的内核(称为 HURD。**
**1991 年Linus Torvalds 编写出了与 UNIX 兼容的 Linux 操作系统内核并在 GPL 下发布。**GNU/Linux 之后在网上广泛流传。1992 年Linux 与其他 GNU 软件结合,完全自由的操作系统正式诞生。许多程序员参与了 Linux 的开发与修改,也经常将 Linux 当成开发 GNU 计划软件的平台。该操作系统往往被称为“GNU/Linux”或简称 Linux。
@ -65,7 +65,7 @@ GNU/Linux 也是自由软件和开放源代码软件发展中最著名的例子
1994 年 3 月Linux1.0 版正式发布Marc Ewing 成立 **Red Hat 软件公司**,成为最著名的 Linux 经销商之一。
今天由 Linus Torvalds 带领下,众多开发人员共同参与开发和维护 Linux 内核。理查德·斯托曼领导的自由软件基金会,继续提供大量支持 Linux 内核的 GNU 组件。一些个人和企业开发的第三方的非 GNU 组件也提供对 Linux内核的支持这些第三方组件包括大量的作品有内核模块和用户应用程序和库等内容。
今天由 Linus Torvalds 带领下,众多开发人员共同参与开发和维护 Linux 内核。理查德·斯托曼领导的自由软件基金会,继续提供大量支持 Linux 内核的 GNU 组件。一些个人和企业开发的第三方的非 GNU 组件也提供对 Linux 内核的支持,这些第三方组件包括大量的作品,有内核模块和用户应用程序和库等内容。
Linux 发行版指的就是通常所说的 **Linux 操作系统**,它一般是由一些组织、团体、公司或者个人制作并发行的。

View File

@ -12,7 +12,7 @@ author: 7Wate
date: 2023-03-15
---
开源软件的发展始于上世纪80年代起初是由一些计算机爱好者和学术研究人员开发的。随着互联网的发展越来越多的人开始加入到开源软件开发的行列中。
开源软件的发展始于上世纪 80 年代,起初是由一些计算机爱好者和学术研究人员开发的。随着互联网的发展,越来越多的人开始加入到开源软件开发的行列中。
开源软件是指能够公开查看、使用、复制、修改和分发源代码的软件。**源代码开放的软件并不一定是开源软件开源软件有着严格统一的的定义封闭软件Closed Software、自由软件Free software和开源软件Open source software有着显著地区别。**
@ -87,7 +87,7 @@ date: 2023-03-15
## 开源软件的风险
开源软件主要风险在于`管理维护`和`技术支持`以及`许可证法律纠纷`,由于开源软件采用的协作方式,你可能无法追究某一处代码的作者(部分协议要求作者著名)。以及如果出现问题,你可能无法寻找官方的技术支持,更多的支持可能来自于社区,可这种支持不是每次都有好人跳出来帮忙。还有如果你不了解许可证可能会带来的法律风险(部分国家法律不同,如果源代码无许可证,默认著作权属于作者)。
开源软件主要风险在于 `管理维护` `技术支持` 以及 `许可证法律纠纷`,由于开源软件采用的协作方式,你可能无法追究某一处代码的作者(部分协议要求作者著名)。以及如果出现问题,你可能无法寻找官方的技术支持,更多的支持可能来自于社区,可这种支持不是每次都有好人跳出来帮忙。还有如果你不了解许可证可能会带来的法律风险(部分国家法律不同,如果源代码无许可证,默认著作权属于作者)。
## 开源许可证简介
@ -111,7 +111,7 @@ date: 2023-03-15
## 许可证的兼容性
目前经过 ISO 认证的许可证多达 70 多种,被自由软件基金会认可的自由软件许可证也有数十种,而它们的条款又各不相同,有些甚至互相矛盾。这种兼容性问题被称为`许可证增值问题License proliferation`。
目前经过 ISO 认证的许可证多达 70 多种,被自由软件基金会认可的自由软件许可证也有数十种,而它们的条款又各不相同,有些甚至互相矛盾。这种兼容性问题被称为 `许可证增值问题License proliferation`
怎么样才算兼容呢?如果使用许可证 A 的代码和使用许可证 B 的代码能在一个广域作品中结合在一起,那么 A 和 B 就是兼容的,否则就是不兼容的。更近一步,如果结合后的广义作品可以用许可证 A 发布,那么许可证 B 就是许可证 A 兼容的A-compatible。反之亦然但需要注意的是兼容性并**不可逆**。

View File

@ -97,8 +97,8 @@ $ popd
| **Ctrl+W** | 删除光标前的一个单词 |
| **Ctrl+Y** | 粘贴由 Ctrl+U、Ctrl+K 或 Ctrl+W 删除的文本 |
| **Ctrl+T** | 交换光标处字符与之前的字符 |
| **Alt+B** | 向后移动一个单词(或 Ctrl+左箭头) |
| **Alt+F** | 向前移动一个单词(或 Ctrl+右箭头) |
| **Alt+B** | 向后移动一个单词(或 Ctrl+ 左箭头) |
| **Alt+F** | 向前移动一个单词(或 Ctrl+ 右箭头) |
| **Ctrl+Shift+C** | 复制(部分图形终端) |
| **Ctrl+Shift+V** | 粘贴(部分图形终端) |

View File

@ -72,53 +72,53 @@ DNS 配置对于确保域名能够正确解析至关重要。以下是配置 DNS
为了确保系统的安全性和稳定性,定期更新操作系统和应用程序是非常重要的。这不仅可以修复已知的安全漏洞,还可以带来新功能和性能改进。
- **软件源管理**首先需要确保软件源repositories是最新和最可靠的
- 对于基于Debian的系统编辑`/etc/apt/sources.list`文件。
- 对于基于RedHat的系统编辑`/etc/yum.repos.d/`目录下的文件。
- 对于基于 Debian 的系统,编辑 `/etc/apt/sources.list` 文件。
- 对于基于 RedHat 的系统,编辑 `/etc/yum.repos.d/` 目录下的文件。
- **更新软件包列表**:使用包管理器更新本地软件包数据库。
- 对于APT可以使用`sudo apt-get update`命令;
- 对于YUM可以使用`sudo yum makecache`或者`sudo dnf makecache`如果你的系统使用DNF作为包管理器
- 对于 APT可以使用 `sudo apt-get update` 命令;
- 对于 YUM可以使用 `sudo yum makecache` 或者 `sudo dnf makecache`(如果你的系统使用 DNF 作为包管理器)。
- **更新升级系统**:在更新了软件包列表之后,可以进行系统更新。
- 对于APT使用`sudo apt-get upgrade`命令;
- 对于YUM或DNF使用`sudo yum update`或`sudo dnf upgrade`。这些命令会下载并安装所有可用的更新。
- 对于 APT使用 `sudo apt-get upgrade` 命令;
- 对于 YUM DNF使用 `sudo yum update` `sudo dnf upgrade`。这些命令会下载并安装所有可用的更新。
## 4. 安装基本软件和工具
- **安装文本编辑器**选择适合的文本编辑器如vim、nano以便于配置文件编辑。
- **安装网络工具**安装基础网络诊断工具如curl、wget、net-tools、traceroute
- **安装文本编辑器**:选择适合的文本编辑器(如 vim、nano以便于配置文件编辑。
- **安装网络工具**:安装基础网络诊断工具(如 curl、wget、net-tools、traceroute
## 5. 安全设置
安全性是系统管理中的一个关键方面。以下是一些基本的安全设置步骤。
- **设置防火墙**`ufw`和`firewalld`是两个流行的防火墙管理工具。它们可以轻松配置入站和出站规则,限制未授权访问。例如,使用`sudo ufw allow 22`来允许SSH连接。
- **安装和配置安全增强工具**SELinux和AppArmor提供了强制访问控制可以增强系统安全。安装后需要根据需要配置相应的策略。
- **定期扫描漏洞**使用安全扫描工具定期检查系统漏洞。ClamAV是一个开源的杀毒工具可以扫描恶意软件。Lynis是一个安全审计工具可以帮助检查系统配置和潜在的安全风险。
- **设置防火墙**`ufw` `firewalld` 是两个流行的防火墙管理工具。它们可以轻松配置入站和出站规则,限制未授权访问。例如,使用 `sudo ufw allow 22` 来允许 SSH 连接。
- **安装和配置安全增强工具**SELinux AppArmor 提供了强制访问控制,可以增强系统安全。安装后,需要根据需要配置相应的策略。
- **定期扫描漏洞**使用安全扫描工具定期检查系统漏洞。ClamAV 是一个开源的杀毒工具可以扫描恶意软件。Lynis 是一个安全审计工具,可以帮助检查系统配置和潜在的安全风险。
## 6. OpenSSH 通讯
OpenSSH是Linux系统中用于远程管理的标准工具。以下是一些重要的SSH配置和安全措施。
OpenSSH Linux 系统中用于远程管理的标准工具。以下是一些重要的 SSH 配置和安全措施。
- **配置SSH**安装OpenSSH服务后编辑`/etc/ssh/sshd_config`文件进行配置。可以更改默认端口配置密钥认证禁用root登录等。
- **定期更新密码**定期更新用户和root账户的密码遵循强密码策略以增加账户安全性。
- **配置SSH密钥认证**:密钥认证比密码认证更安全。生成密钥对,并将其添加到服务器的`~/.ssh/authorized_keys`文件中。
- **禁用SSH空密码登录**确保SSH配置文件中的`PermitEmptyPasswords`选项设置为`no`以防止空密码账户通过SSH登录。
- **配置 SSH**:安装 OpenSSH 服务后,编辑 `/etc/ssh/sshd_config` 文件进行配置。可以更改默认端口,配置密钥认证,禁用 root 登录等。
- **定期更新密码**:定期更新用户和 root 账户的密码,遵循强密码策略,以增加账户安全性。
- **配置 SSH 密钥认证**:密钥认证比密码认证更安全。生成密钥对,并将其添加到服务器的 `~/.ssh/authorized_keys` 文件中。
- **禁用 SSH 空密码登录**:确保 SSH 配置文件中的 `PermitEmptyPasswords` 选项设置为 `no`,以防止空密码账户通过 SSH 登录。
## 7. 用户账户角色管理
用户账户管理是系统安全的关键部分。合理的用户和权限管理可以防止未授权的访问和潜在的安全风险。
- **添加用户**:使用`sudo adduser`或`sudo useradd`命令创建新用户。为每个任务创建专用的用户账户避免使用root账户进行日常工作。
- **用户组管理**:合理地使用用户组来分配权限和管理用户权限。使用`sudo groupadd`创建新组,使用`sudo usermod -aG`将用户添加到组中。
- **root用户管理**限制root账户的远程访问只通过sudo提升权限。确保root账户有一个强密码并定期更新。
- **用户权限管理**:通过配置`/etc/sudoers`文件或使用`visudo`命令为特定用户分配sudo权限。确保遵循最小权限原则只授予必要的权限。
- **重置root密码**如果忘记root密码可以使用系统救援模式或Live CD/USB来重置密码。这通常涉及到挂载系统分区并修改`/etc/shadow`文件。
- **添加用户**:使用 `sudo adduser` `sudo useradd` 命令创建新用户。为每个任务创建专用的用户账户,避免使用 root 账户进行日常工作。
- **用户组管理**:合理地使用用户组来分配权限和管理用户权限。使用 `sudo groupadd` 创建新组,使用 `sudo usermod -aG` 将用户添加到组中。
- **root 用户管理**:限制 root 账户的远程访问,只通过 sudo 提升权限。确保 root 账户有一个强密码,并定期更新。
- **用户权限管理**:通过配置 `/etc/sudoers` 文件或使用 `visudo` 命令,为特定用户分配 sudo 权限。确保遵循最小权限原则,只授予必要的权限。
- **重置 root 密码**:如果忘记 root 密码,可以使用系统救援模式或 Live CD/USB 来重置密码。这通常涉及到挂载系统分区并修改 `/etc/shadow` 文件。
## 8. 配置服务和程序
服务和程序的配置对于系统的稳定运行和性能至关重要。
- **管理systemd系统服务**:使用`systemctl`命令管理服务。了解不同`systemd`单元文件的存放位置和优先级,以便正确管理服务。
- **服务自启动管理**:使用`systemctl enable`或`disable`命令来管理服务是否在系统启动时自动运行。这有助于控制系统启动时的资源消耗。
- **管理 systemd 系统服务**:使用 `systemctl` 命令管理服务。了解不同 `systemd` 单元文件的存放位置和优先级,以便正确管理服务。
- **服务自启动管理**:使用 `systemctl enable` `disable` 命令来管理服务是否在系统启动时自动运行。这有助于控制系统启动时的资源消耗。
- **不必要服务的移除**:定期审查系统服务,卸载或禁用不必要的服务和程序,以减少系统的潜在攻击面和提高系统性能。
- **引导至救援模式**:了解如何使用系统引导菜单或添加启动参数进入救援模式。这对于系统修复和故障排除非常有用。
@ -126,32 +126,32 @@ OpenSSH是Linux系统中用于远程管理的标准工具。以下是一些重
日志管理和监控对于维护系统安全和稳定运行至关重要。
- **配置系统日志**:使用`rsyslog`或`syslog-ng`配置日志记录规则。确保重要信息,如安全警告和系统错误,被妥善记录。
- **安装监控工具**:安装`htop`和`iftop`等工具来监控系统资源使用情况。还可以考虑安装`nmon`、`glances`等综合系统监控工具,以获得更全面的系统状态视图。
- **日志分析工具**安装日志分析工具如Logwatch或GoAccess这些工具可以帮助更容易地分析和理解日志文件及时发现潜在的安全威胁或系统问题。
- **配置系统日志**:使用 `rsyslog` `syslog-ng` 配置日志记录规则。确保重要信息,如安全警告和系统错误,被妥善记录。
- **安装监控工具**:安装 `htop` `iftop` 等工具来监控系统资源使用情况。还可以考虑安装 `nmon`、`glances` 等综合系统监控工具,以获得更全面的系统状态视图。
- **日志分析工具**:安装日志分析工具如 Logwatch GoAccess这些工具可以帮助更容易地分析和理解日志文件及时发现潜在的安全威胁或系统问题。
## 10. 备份和恢复计划
备份和恢复计划是防止数据丢失和系统故障的关键。
- **配置定期备份**:使用`rsync`、`tar`或定制脚本实现重要数据和配置的定期备份。考虑使用定时任务cron jobs来自动执行备份。
- **远程备份**:使用远程备份解决方案,如`rsync`配合SSH将备份数据同步到远程服务器提高数据安全性。
- **配置定期备份**:使用 `rsync`、`tar` 或定制脚本实现重要数据和配置的定期备份。考虑使用定时任务cron jobs来自动执行备份。
- **远程备份**:使用远程备份解决方案,如 `rsync` 配合 SSH 将备份数据同步到远程服务器,提高数据安全性。
- **灾难恢复计划**:制定并测试灾难恢复计划,确保在数据丢失或系统崩溃时能够迅速恢复。这可能包括系统镜像备份、关键数据的恢复流程等。
## 11. 自定义用户环境
为了提高用户的工作效率和满意度,可以对用户环境进行一些自定义设置。
- **磁盘配额**:使用`quota`工具为用户和用户组设置磁盘配额,防止单个用户占用过多磁盘空间。
- **使用`ulimit`设置资源限制**:使用`ulimit`命令为用户和进程设置资源使用限制,如打开文件的数量,以避免单个进程耗尽系统资源。
- **Shell环境定制**根据个人偏好定制Shell环境配置别名、环境变量和命令提示符。这可以通过编辑用户的`.bashrc`、`.bash_profile`或`.zshrc`文件来实现。
- **安装和配置图形界面**可选如果系统需要图形界面安装桌面环境如GNOME、KDE并进行相应配置。确保图形界面的安全性例如通过配置`.xinitrc`文件来启动图形会话。
- **磁盘配额**:使用 `quota` 工具为用户和用户组设置磁盘配额,防止单个用户占用过多磁盘空间。
- **使用 `ulimit` 设置资源限制**:使用 `ulimit` 命令为用户和进程设置资源使用限制,如打开文件的数量,以避免单个进程耗尽系统资源。
- **Shell 环境定制**:根据个人偏好定制 Shell 环境,配置别名、环境变量和命令提示符。这可以通过编辑用户的 `.bashrc`、`.bash_profile` `.zshrc` 文件来实现。
- **安装和配置图形界面**(可选):如果系统需要图形界面,安装桌面环境(如 GNOME、KDE并进行相应配置。确保图形界面的安全性例如通过配置 `.xinitrc` 文件来启动图形会话。
## 12. 系统性能优化
系统性能优化可以提高系统响应速度和处理能力,特别是在资源受限的环境中。
- **内核参数调整**:根据系统用途调整`/etc/sysctl.conf`中的内核参数。例如,可以增加`net.core.somaxconn`来提高网络性能,或者调整`fs.file-max`来增加文件系统的最大句柄数。
- **内核参数调整**:根据系统用途调整 `/etc/sysctl.conf` 中的内核参数。例如,可以增加 `net.core.somaxconn` 来提高网络性能,或者调整 `fs.file-max` 来增加文件系统的最大句柄数。
## 13. 故障转移

View File

@ -343,4 +343,3 @@ class Dog(AbstractAnimal, AnimalBehaviour):
def sleep(self):
return "The dog is sleeping."
```

View File

@ -19,14 +19,14 @@ date: 2023-06-26
- 文件名应简明地概述文档内容。
- 文件名长度应适中,避免过长。
- 当文件名由多个英文单词组成时,用短划线「-」连接。
- 在文件名中避免使用下划线「_」它在URL中可能影响搜索引擎优化并可能被某些 Markdown 实现当作修饰字符。
- 多个单词组成的文件名,全小写或全大写均可,但**避免大小写混用**,如`faq.md`或`FAQ.md`。
- 在文件名中避免使用下划线「_」它在 URL 中可能影响搜索引擎优化,并可能被某些 Markdown 实现当作修饰字符。
- 多个单词组成的文件名,全小写或全大写均可,但**避免大小写混用**,如 `faq.md` `FAQ.md`
- 文件扩展名应为小写。
- Markdown文件应使用「.md」后缀虽然「.markdown」也可以接受但应保证整体文件风格的统一。
- Markdown 文件应使用「.md」后缀虽然「.markdown」也可以接受但应保证整体文件风格的统一。
| 文件名 | 内容描述 |
| ------------------------------ | -------------------------------------- |
| `introduction-to-python.md` | 此文件可能包含有关Python语言的基础知识 |
| `introduction-to-python.md` | 此文件可能包含有关 Python 语言的基础知识 |
| `database-connection-guide.md` | 这是一个指南,说明如何连接到数据库 |
| `faq.md` | 这是一个常见问题解答文件 |
| `README.md` | 这是一个项目介绍文件 |

View File

@ -66,7 +66,7 @@ date: 2023-06-26
连接号用于连接两个有直接关联的词语。
> 中美-贸易
> 中美 - 贸易
### 破折号「——」
@ -90,7 +90,7 @@ date: 2023-06-26
在 Markdown 中,斜杠被用作转义字符,表示接下来的字符应被解析为文字,而非 Markdown 语法。
> 我\*喜欢\*你。
> 我\* 喜欢\* 你。
>
> 输出为:我*喜欢*你。
@ -133,7 +133,7 @@ date: 2023-06-26
> 她对我们说:“
> 这书太赞了。”❌
>
> Copy code她对我们说
> Copy code 她对我们说:
> “这书太赞了。”
## 中英文混用时的标点符号用法
@ -175,7 +175,7 @@ date: 2023-06-26
- 括号里全为英文时建议使用半角括号,并在括号前后各空一个半角空格,括号和括号内的英文之间不需要空格。
> 数据定义语言DDL是一种……使用了全角括号
> 数据定义语言(DDL)是一种……(半角括号前后未空格)❌
> 数据定义语言 (DDL) 是一种……(半角括号前后未空格)❌
> 数据定义语言□(□DDL□)□是一种……(半角括号和半角括号内的英文之间空了一格)❌
>
> 正确示例:数据定义语言□(DDL)□是一种……

View File

@ -10,16 +10,23 @@ tags:
author: 7Wate
date: 2022-08-25
---
## 概述
数据结构是相互之间存在**一种或多种特定关系**的数据元素的集合。
## 数据
数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
**数据项 > 数据元素 >> 数据对象:数据项构成了数据元素,数据元素组合成了数据对象。**
## 结构
结构是不同数据元素之间不是独立的,而是存在特定的关系。
### 逻辑结构
逻辑结构是指**数据对象 中 数据元素**之间的相互关系。
- 集合:集合结构中的数据元素除了属于一个集合外,它们之间**没有其他关系**。
@ -71,4 +78,3 @@ Operation
…………
endADT
```