项目:格式化文档
This commit is contained in:
parent
fbd3cc7b22
commit
a4d966e619
@ -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)
|
![work](https://static.7wate.com/2024/02/21/47f77e6afafef55f9ccb223f756688b3-work.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
我利用 ChatGPT 制定了针对财务经理、财务助理面试题目,旨在全面考察求职者的综合素质、理论知识、行业经验以及项目管理能力。
|
我利用 ChatGPT 制定了针对财务经理、财务助理面试题目,旨在全面考察求职者的综合素质、理论知识、行业经验以及项目管理能力。
|
||||||
|
|
||||||
线上初试环节,我会重点核查简历中的从业经验和项目经历,并评估其职业发展规划的明确性。此外,我还会提出一些实际操作问题,例如对现代财务管理软件的熟悉程度,以此来考察应聘者的实际操作能力。并通过深入探讨其项目经验和处理特定场景的方法,进而评估求职者的逻辑思维和问题解决能力。
|
线上初试环节,我会重点核查简历中的从业经验和项目经历,并评估其职业发展规划的明确性。此外,我还会提出一些实际操作问题,例如对现代财务管理软件的熟悉程度,以此来考察应聘者的实际操作能力。并通过深入探讨其项目经验和处理特定场景的方法,进而评估求职者的逻辑思维和问题解决能力。
|
||||||
|
@ -34,4 +34,3 @@ date: 2022-11-30
|
|||||||
不忘初心,方得始终;初心易得,始终难守。我也见过很多很多很多博友在折腾工具的路上一去不复返了,似乎忘了最初的本意,完全沉浸在折腾的乐趣里了。并不是要论个谁对谁错,我其实也非常喜欢折腾,真的嘎嘎快乐 ~
|
不忘初心,方得始终;初心易得,始终难守。我也见过很多很多很多博友在折腾工具的路上一去不复返了,似乎忘了最初的本意,完全沉浸在折腾的乐趣里了。并不是要论个谁对谁错,我其实也非常喜欢折腾,真的嘎嘎快乐 ~
|
||||||
|
|
||||||
因为我对于「数字文具盒」的定义就是为了提高学习、工作效率,并以结果为导向,以实现需求为目标的。所以如果你打造「数字文具盒」是为了提高效率,那么就切勿折腾;如果是为了快乐,那就好好折腾 ~
|
因为我对于「数字文具盒」的定义就是为了提高学习、工作效率,并以结果为导向,以实现需求为目标的。所以如果你打造「数字文具盒」是为了提高效率,那么就切勿折腾;如果是为了快乐,那就好好折腾 ~
|
||||||
|
|
||||||
|
@ -88,25 +88,25 @@ OSI 模型是一个参考模型,用于描述和理解复杂的网络通信过
|
|||||||
|
|
||||||
#### 地址池管理
|
#### 地址池管理
|
||||||
|
|
||||||
- **子网划分**:根据网络规模和需求,合理划分子网。小型网络可能只需要一个子网,而大型或分布广泛的网络可能需要多个子网。通过子网划分,可以更有效地管理IP地址。
|
- **子网划分**:根据网络规模和需求,合理划分子网。小型网络可能只需要一个子网,而大型或分布广泛的网络可能需要多个子网。通过子网划分,可以更有效地管理 IP 地址。
|
||||||
- **地址池规模**:评估网络内部设备的数量,包括不仅限于工作站、服务器、打印机和无线设备等,预测未来扩展需要,确保地址池有足够的地址可以分配。
|
- **地址池规模**:评估网络内部设备的数量,包括不仅限于工作站、服务器、打印机和无线设备等,预测未来扩展需要,确保地址池有足够的地址可以分配。
|
||||||
- **留白地址**:在地址池中预留一定数量的IP地址,用于未来扩展或临时需要。
|
- **留白地址**:在地址池中预留一定数量的 IP 地址,用于未来扩展或临时需要。
|
||||||
|
|
||||||
#### 租期设置
|
#### 租期设置
|
||||||
|
|
||||||
- **动态地址分配租期**:针对普通客户端设备,可以设置较短的租期(例如24小时),以保证IP地址能够有效循环利用。租期过短可能会增加网络流量,而过长则可能导致IP地址浪费。
|
- **动态地址分配租期**:针对普通客户端设备,可以设置较短的租期(例如 24 小时),以保证 IP 地址能够有效循环利用。租期过短可能会增加网络流量,而过长则可能导致 IP 地址浪费。
|
||||||
- **租期续订策略**:设定合理的续订策略,例如当租期过半时尝试续订,以减少因租期到期而导致的网络中断。
|
- **租期续订策略**:设定合理的续订策略,例如当租期过半时尝试续订,以减少因租期到期而导致的网络中断。
|
||||||
|
|
||||||
#### 保留地址
|
#### 保留地址
|
||||||
|
|
||||||
- **静态地址分配**:对于服务器、网络打印机、路由器等关键设备,分配静态IP地址。这样做可以确保这些设备的网络路径稳定可靠。
|
- **静态地址分配**:对于服务器、网络打印机、路由器等关键设备,分配静态 IP 地址。这样做可以确保这些设备的网络路径稳定可靠。
|
||||||
- **DHCP保留**:在DHCP服务器上为特定的MAC地址保留IP地址。即使是在使用动态地址分配的环境中,也可以确保某些特定设备总是获得相同的IP地址。
|
- **DHCP 保留**:在 DHCP 服务器上为特定的 MAC 地址保留 IP 地址。即使是在使用动态地址分配的环境中,也可以确保某些特定设备总是获得相同的 IP 地址。
|
||||||
|
|
||||||
## 子网划分和超网
|
## 子网划分和超网
|
||||||
|
|
||||||
子网划分目的在于将大型网络划分成更小、更易管理的网络段。可以通过更改子网掩码将一个大型网络的 IP 地址空间划分成多个小网络。每个子网有自己的网络地址和广播地址,以及一系列可用于分配给设备的 IP 地址。
|
子网划分目的在于将大型网络划分成更小、更易管理的网络段。可以通过更改子网掩码将一个大型网络的 IP 地址空间划分成多个小网络。每个子网有自己的网络地址和广播地址,以及一系列可用于分配给设备的 IP 地址。
|
||||||
|
|
||||||
#### CIDR(无类别域间路由选择)
|
### CIDR(无类别域间路由选择)
|
||||||
|
|
||||||
CIDR 是一种用于创建更灵活的网络地址分配方法的 IP 地址分配和路由选择方法。它允许更细粒度的子网划分,优化 IP 地址的使用。
|
CIDR 是一种用于创建更灵活的网络地址分配方法的 IP 地址分配和路由选择方法。它允许更细粒度的子网划分,优化 IP 地址的使用。
|
||||||
|
|
||||||
@ -182,7 +182,7 @@ CIDR 是一种用于创建更灵活的网络地址分配方法的 IP 地址分
|
|||||||
tracert google.com
|
tracert google.com
|
||||||
```
|
```
|
||||||
|
|
||||||
- **IPConfig** 用于查看和刷新IP配置,如获取当前的 IP 地址、子网掩码、默认网关等。
|
- **IPConfig** 用于查看和刷新 IP 配置,如获取当前的 IP 地址、子网掩码、默认网关等。
|
||||||
|
|
||||||
```cmd
|
```cmd
|
||||||
ipconfig /all
|
ipconfig /all
|
||||||
@ -235,9 +235,9 @@ CIDR 是一种用于创建更灵活的网络地址分配方法的 IP 地址分
|
|||||||
|
|
||||||
IPv6 的推出主要是为了解决 IPv4 地址耗尽的问题,但它带来的好处远不止于此。
|
IPv6 的推出主要是为了解决 IPv4 地址耗尽的问题,但它带来的好处远不止于此。
|
||||||
|
|
||||||
- **更大的地址空间**: IPv6 使用128位地址,理论上可以提供21282128个独立的网络地址,远远超过IPv4的232232个地址。这对于物联网(IoT)设备快速增长的时代尤为重要,每个设备都需要独立的网络地址。
|
- **更大的地址空间**: IPv6 使用 128 位地址,理论上可以提供 21282128 个独立的网络地址,远远超过 IPv4 的 232232 个地址。这对于物联网 (IoT) 设备快速增长的时代尤为重要,每个设备都需要独立的网络地址。
|
||||||
- **改进的路由和自动配置特性**: IPv6 提高了路由的效率和灵活性。它支持直接自动配置,减少了网络设置的复杂性,使设备能够自动获得IP地址,简化了网络管理。
|
- **改进的路由和自动配置特性**: IPv6 提高了路由的效率和灵活性。它支持直接自动配置,减少了网络设置的复杂性,使设备能够自动获得 IP 地址,简化了网络管理。
|
||||||
- **安全性增强**: IPv6 在设计之初就考虑到了安全问题,它原生支持IPsec,为数据传输提供加密和身份验证,而在IPv4中,这是一个可选项。
|
- **安全性增强**: IPv6 在设计之初就考虑到了安全问题,它原生支持 IPsec,为数据传输提供加密和身份验证,而在 IPv4 中,这是一个可选项。
|
||||||
|
|
||||||
### SDN(软件定义网络)
|
### SDN(软件定义网络)
|
||||||
|
|
||||||
@ -251,11 +251,5 @@ SDN 是近年来网络技术领域的一大创新,它改变了传统网络架
|
|||||||
了解最新的行业动态对于网络工程师至关重要,以下是一些值得关注的领域:
|
了解最新的行业动态对于网络工程师至关重要,以下是一些值得关注的领域:
|
||||||
|
|
||||||
- **5G**: 作为下一代移动通信标准,5G 不仅提高了数据传输速度,还大大减少了延迟,这对于实时应用如在线游戏、自动驾驶汽车和远程手术等领域将产生深远影响。
|
- **5G**: 作为下一代移动通信标准,5G 不仅提高了数据传输速度,还大大减少了延迟,这对于实时应用如在线游戏、自动驾驶汽车和远程手术等领域将产生深远影响。
|
||||||
- **边缘计算**: 随着IoT设备的增多,数据产生的地点越来越靠近用户,边缘计算通过在数据产生地点附近进行数据处理,可以减少延迟,提高处理速度。
|
- **边缘计算**: 随着 IoT 设备的增多,数据产生的地点越来越靠近用户,边缘计算通过在数据产生地点附近进行数据处理,可以减少延迟,提高处理速度。
|
||||||
- **网络安全趋势**: 网络安全是一个持续演进的领域。了解最新的安全趋势,如使用机器学习和人工智能来预测和防御网络攻击,对于保护网络安全至关重要。
|
- **网络安全趋势**: 网络安全是一个持续演进的领域。了解最新的安全趋势,如使用机器学习和人工智能来预测和防御网络攻击,对于保护网络安全至关重要。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ graph TD;
|
|||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
OSI(开放式系统互联)模型是一个概念性的框架,用于理解和设计网络协议的架构。这个模型由国际标准化组织(ISO)在1984年发布,将网络通信分为七个抽象层,每层负责不同的网络功能。下面是对OSI七层协议的系统性解释:
|
OSI(开放式系统互联)模型是一个概念性的框架,用于理解和设计网络协议的架构。这个模型由国际标准化组织(ISO)在 1984 年发布,将网络通信分为七个抽象层,每层负责不同的网络功能。下面是对 OSI 七层协议的系统性解释:
|
||||||
|
|
||||||
### 1. 物理层(Physical Layer)
|
### 1. 物理层(Physical Layer)
|
||||||
|
|
||||||
@ -73,27 +73,27 @@ OSI(开放式系统互联)模型是一个概念性的框架,用于理解
|
|||||||
### 3. 网络层(Network Layer)
|
### 3. 网络层(Network Layer)
|
||||||
|
|
||||||
- **功能**:负责在多个网络之间建立、维护和终止连接。它处理数据包的路由选择和转发。
|
- **功能**:负责在多个网络之间建立、维护和终止连接。它处理数据包的路由选择和转发。
|
||||||
- **协议**:例如IP(Internet Protocol)、ICMP(Internet Control Message Protocol)等。
|
- **协议**:例如 IP(Internet Protocol)、ICMP(Internet Control Message Protocol)等。
|
||||||
|
|
||||||
### 4. 传输层(Transport Layer)
|
### 4. 传输层(Transport Layer)
|
||||||
|
|
||||||
- **功能**:为端到端的通信提供服务。它负责数据的分割、传输、错误检测和恢复。
|
- **功能**:为端到端的通信提供服务。它负责数据的分割、传输、错误检测和恢复。
|
||||||
- **协议**:例如TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等。
|
- **协议**:例如 TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等。
|
||||||
|
|
||||||
### 5. 会话层(Session Layer)
|
### 5. 会话层(Session Layer)
|
||||||
|
|
||||||
- **功能**:管理和控制两个网络节点之间的会话连接,负责建立、管理和断开会话。
|
- **功能**:管理和控制两个网络节点之间的会话连接,负责建立、管理和断开会话。
|
||||||
- **应用**:例如API、Socket编程等。
|
- **应用**:例如 API、Socket 编程等。
|
||||||
|
|
||||||
### 6. 表示层(Presentation Layer)
|
### 6. 表示层(Presentation Layer)
|
||||||
|
|
||||||
- **功能**:确保从一个节点发送的数据可以被另一个节点的应用层读取和理解。它负责数据格式转换、数据加密和解密、数据压缩等。
|
- **功能**:确保从一个节点发送的数据可以被另一个节点的应用层读取和理解。它负责数据格式转换、数据加密和解密、数据压缩等。
|
||||||
- **例子**:ASCII、JPEG、MPEG等数据格式。
|
- **例子**:ASCII、JPEG、MPEG 等数据格式。
|
||||||
|
|
||||||
### 7. 应用层(Application Layer)
|
### 7. 应用层(Application Layer)
|
||||||
|
|
||||||
- **功能**:提供网络服务给最终用户的应用程序。它定义了用于与网络服务交互的各种协议。
|
- **功能**:提供网络服务给最终用户的应用程序。它定义了用于与网络服务交互的各种协议。
|
||||||
- **协议和服务**:例如HTTP(HyperText Transfer Protocol)、FTP(File Transfer Protocol)、电子邮件、远程登录等。
|
- **协议和服务**:例如 HTTP(HyperText Transfer Protocol)、FTP(File Transfer Protocol)、电子邮件、远程登录等。
|
||||||
|
|
||||||
## 网络协议
|
## 网络协议
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ tags:
|
|||||||
author: 7Wate
|
author: 7Wate
|
||||||
date: 2022-08-31
|
date: 2022-08-31
|
||||||
---
|
---
|
||||||
|
|
||||||
## JWT(JSON Web Token)鉴权
|
## JWT(JSON Web Token)鉴权
|
||||||
|
|
||||||
通过第三节,我们知道了 Token 的使用方式以及组成,我们不难发现,服务端验证客户端发送过来的 Token 时,还需要查询数据库获取用户基本信息,然后验证 Token 是否有效;这样每次请求验证都要查询数据库,增加了查库带来的延迟等性能消耗。
|
通过第三节,我们知道了 Token 的使用方式以及组成,我们不难发现,服务端验证客户端发送过来的 Token 时,还需要查询数据库获取用户基本信息,然后验证 Token 是否有效;这样每次请求验证都要查询数据库,增加了查库带来的延迟等性能消耗。
|
||||||
@ -47,7 +48,7 @@ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4
|
|||||||
|
|
||||||
#### Payload 负载
|
#### Payload 负载
|
||||||
|
|
||||||
它包含一些声明 Claim(实体的描述,通常是一个 User 信息,还包括一些其他的元数据),用来存放实际需要传递的数据,JWT 规定了7个官方字段:
|
它包含一些声明 Claim(实体的描述,通常是一个 User 信息,还包括一些其他的元数据),用来存放实际需要传递的数据,JWT 规定了 7 个官方字段:
|
||||||
|
|
||||||
- iss(issuer):签发人
|
- iss(issuer):签发人
|
||||||
- exp(expiration time):过期时间
|
- exp(expiration time):过期时间
|
||||||
|
@ -102,7 +102,7 @@ Git 允许多个远程仓库存在,使得这样一种工作流成为可能:
|
|||||||
|
|
||||||
1. John 与 Jessica 在一个特性分支(featureA)上工作。
|
1. John 与 Jessica 在一个特性分支(featureA)上工作。
|
||||||
2. Jessica 同时与第三个开发者 Josie 在第二个特性分支(featureB)上工作。
|
2. Jessica 同时与第三个开发者 Josie 在第二个特性分支(featureB)上工作。
|
||||||
3. 公司使用了一种整合-管理者工作流程,独立小组的工作只能被特定的工程师整合, 主仓库的 master 分支只能被那些工程师更新。
|
3. 公司使用了一种整合 - 管理者工作流程,独立小组的工作只能被特定的工程师整合, 主仓库的 master 分支只能被那些工程师更新。
|
||||||
4. 在这种情况下,所有的工作都是在基于团队的分支上完成的,并且稍后会被整合者拉到一起。
|
4. 在这种情况下,所有的工作都是在基于团队的分支上完成的,并且稍后会被整合者拉到一起。
|
||||||
|
|
||||||
…………
|
…………
|
||||||
@ -198,7 +198,7 @@ git send-email <file-name>.patch
|
|||||||
|
|
||||||
### 应用来自邮件的补丁
|
### 应用来自邮件的补丁
|
||||||
|
|
||||||
#### 使用 apply 命令应用补丁
|
#### 使用 Apply 命令应用补丁
|
||||||
|
|
||||||
如果你收到了一个使用 git diff 或 Unix diff 命令的变体(不推荐使用这种方式,具体见下一小节) 创建的补丁,可以使用 git apply 命令来应用。 假设你将补丁保存在了 /tmp/patch-ruby-client.patch 中,可以这样应用补丁:
|
如果你收到了一个使用 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
|
git apply /tmp/patch-ruby-client.patch
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 使用 am 命令应用补丁
|
#### 使用 Am 命令应用补丁
|
||||||
|
|
||||||
如果补丁的贡献者也是一个 Git 用户,并且其能熟练使用 format-patch 命令来生成补丁,这样的话你的工作会变得更加轻松,因为这种补丁中包含了作者信息和提交信息供你参考。
|
如果补丁的贡献者也是一个 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 的可怜包们创建一个最新的快照归档。 使用
|
||||||
|
|
||||||
git archive 命令完成此工作:
|
git archive 命令完成此工作:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
@ -11,6 +11,7 @@ tags:
|
|||||||
author: 7Wate
|
author: 7Wate
|
||||||
date: 2022-09-13
|
date: 2022-09-13
|
||||||
---
|
---
|
||||||
|
|
||||||
## 钩子定义
|
## 钩子定义
|
||||||
|
|
||||||
钩子是 Git 在特定的重要动作发生时触发自定义脚本,你可以随心所欲地运用这些钩子。主要分以下两种类型:
|
钩子是 Git 在特定的重要动作发生时触发自定义脚本,你可以随心所欲地运用这些钩子。主要分以下两种类型:
|
||||||
|
@ -11,7 +11,7 @@ author: 7Wate
|
|||||||
date: 2022-12-04
|
date: 2022-12-04
|
||||||
---
|
---
|
||||||
|
|
||||||
## tab 补全
|
## Tab 补全
|
||||||
|
|
||||||
在 Shell 中可以使用 tab 键盘实现快速补全,双击 tab 可以显示补全列表。
|
在 Shell 中可以使用 tab 键盘实现快速补全,双击 tab 可以显示补全列表。
|
||||||
|
|
||||||
@ -24,9 +24,10 @@ date: 2022-12-04
|
|||||||
.cache/ .sudo_as_admin_successful demo/
|
.cache/ .sudo_as_admin_successful demo/
|
||||||
```
|
```
|
||||||
|
|
||||||
## history 历史
|
## History 历史
|
||||||
|
|
||||||
history 命令可以显示执行过的命令历史。
|
history 命令可以显示执行过的命令历史。
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
@:~$ history
|
@:~$ history
|
||||||
1 pwd
|
1 pwd
|
||||||
@ -91,7 +92,7 @@ Linux 终端执行命令的很多情况下需要经常的更换目录,cd 命
|
|||||||
@:~/demo/a$
|
@:~/demo/a$
|
||||||
```
|
```
|
||||||
|
|
||||||
## alias 别名
|
## Alias 别名
|
||||||
|
|
||||||
一些常用的命令可以使用 alais 定义别名,方便快速操作。移除别名使用 unalias 命令。
|
一些常用的命令可以使用 alais 定义别名,方便快速操作。移除别名使用 unalias 命令。
|
||||||
|
|
||||||
|
@ -28,31 +28,31 @@ Shell(壳层)在计算机科学中指**为用户提供用户界面**的软
|
|||||||
- DOS Shell
|
- DOS Shell
|
||||||
- Macintosh Finder
|
- Macintosh Finder
|
||||||
- Microsoft Windows 环境:Aston shell、BB4Win、Emerge Desktop、Geoshell、Litestep、程序管理器、Secure Desktop、SharpE、Windows Explorer、UserShell。
|
- Microsoft Windows 环境:Aston shell、BB4Win、Emerge Desktop、Geoshell、Litestep、程序管理器、Secure Desktop、SharpE、Windows Explorer、UserShell。
|
||||||
- X Window System 环境或 Wayland 环境(主要用于类Unix操作系统)
|
- X Window System 环境或 Wayland 环境(主要用于类 Unix 操作系统)
|
||||||
- 独立的X窗口管理器,例如 Blackbox 与Fluxbox。
|
- 独立的 X 窗口管理器,例如 Blackbox 与 Fluxbox。
|
||||||
- 依靠窗口管理器的完整桌面环境,例如:CDE、GNOME、Unity(以GNOME作内核)、KDE、XFCE。
|
- 依靠窗口管理器的完整桌面环境,例如:CDE、GNOME、Unity(以 GNOME 作内核)、KDE、XFCE。
|
||||||
|
|
||||||
## 命令行界面(CLI)
|
## 命令行界面(CLI)
|
||||||
|
|
||||||
### Unix
|
### Unix
|
||||||
|
|
||||||
#### Bourne shell 兼容
|
#### Bourne Shell 兼容
|
||||||
|
|
||||||
- **Bourne shell(sh)**史蒂夫·伯恩在贝尔实验室时编写。1978 年随 Version 7 Unix 首次发布。
|
- **Bourne shell(sh)**史蒂夫·伯恩在贝尔实验室时编写。1978 年随 Version 7 Unix 首次发布。
|
||||||
- Almquist shell(ash)由肯尼斯·艾昆斯特(Kenneth Almquist)在 SVR4 上建立了这个分支。
|
- Almquist shell(ash)由肯尼斯·艾昆斯特(Kenneth Almquist)在 SVR4 上建立了这个分支。
|
||||||
- **Bourne-Again shell(bash)**由布莱恩·福克斯在 1987 年为了GNU计划而编写。
|
- **Bourne-Again shell(bash)**由布莱恩·福克斯在 1987 年为了 GNU 计划而编写。
|
||||||
- Debian Almquist shell(dash)由赫伯特·许(Herbert Xu)1997 年移植到Linux上后改名为 dash。
|
- Debian Almquist shell(dash)由赫伯特·许(Herbert Xu)1997 年移植到 Linux 上后改名为 dash。
|
||||||
- Korn shell(ksh)David Korn在贝尔实验室时编写。
|
- Korn shell(ksh)David Korn 在贝尔实验室时编写。
|
||||||
- Z shell(zsh)是 macOS(2019年起) 一款可用作交互式登录的shell及脚本编写的命令解释器。
|
- Z shell(zsh)是 macOS(2019 年起) 一款可用作交互式登录的 shell 及脚本编写的命令解释器。
|
||||||
|
|
||||||
#### C shell 兼容
|
#### C Shell 兼容
|
||||||
|
|
||||||
- C shell(csh)比尔·乔伊在加州大学伯克利分校时编写。1979年随BSD首次发布。
|
- C shell(csh)比尔·乔伊在加州大学伯克利分校时编写。1979 年随 BSD 首次发布。
|
||||||
- TENEX C shell(tcsh) 一个向下兼容c shell的Unix shell,目前作为FreeBSD和其延伸发行版的默认shell。
|
- TENEX C shell(tcsh) 一个向下兼容 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 图形界面的另一选择。
|
- Amiga CLI/Amiga 壳层是称为 Workbench 的 AmigaOS 图形界面的另一选择。
|
||||||
- BASIC-PLUS – RSTS/E
|
- BASIC-PLUS – RSTS/E
|
||||||
- Beemos(BEEMos)–在 Windows XP 上执行的一个小型项目,提供设置、应用程序等功能,感觉起来像是在另一个操作系统下。
|
- Beemos(BEEMos)–在 Windows XP 上执行的一个小型项目,提供设置、应用程序等功能,感觉起来像是在另一个操作系统下。
|
||||||
@ -69,8 +69,8 @@ Shell(壳层)在计算机科学中指**为用户提供用户界面**的软
|
|||||||
- iSeries QSHELL – IBM OS/400 上的 Unix 风格壳层
|
- iSeries QSHELL – IBM OS/400 上的 Unix 风格壳层
|
||||||
- Macintosh Programmer's Workshop –古典 Mac OS 软件开发用的老式指令行环境
|
- Macintosh Programmer's Workshop –古典 Mac OS 软件开发用的老式指令行环境
|
||||||
- Microsoft BASIC –一些古老 8 位电脑上的主要作业环境
|
- Microsoft BASIC –一些古老 8 位电脑上的主要作业环境
|
||||||
- Rexx – IBM的脚本语言(scripting language)
|
- Rexx – IBM 的脚本语言(scripting language)
|
||||||
- Singularity shell – Singularity 的标准壳层
|
- Singularity shell – Singularity 的标准壳层
|
||||||
- **Windows PowerShell** –命令提示字符的新一代面向对象后继者(旧称 Monad 或 Microsoft Shell (MSH))
|
- **Windows PowerShell** –命令提示字符的新一代面向对象后继者(旧称 Monad 或 Microsoft Shell (MSH))
|
||||||
- Windows 修复主控台– Windows 2000、Windows XP、Windows 2003 操作系统的一项功能
|
- Windows 修复主控台– Windows 2000、Windows XP、Windows 2003 操作系统的一项功能
|
||||||
- YouShell –用于YouOS,基于JavaScript的指令处理器
|
- YouShell –用于 YouOS,基于 JavaScript 的指令处理器
|
||||||
|
@ -64,7 +64,7 @@ G gg H M L k j ▶ print("to")
|
|||||||
| `<C-u>` */* `<C-d>` | 上/下半页 |
|
| `<C-u>` */* `<C-d>` | 上/下半页 |
|
||||||
| `<C-b>` */* `<C-f>` | 向上/向下翻页 |
|
| `<C-b>` */* `<C-f>` | 向上/向下翻页 |
|
||||||
|
|
||||||
#### 字(词)
|
#### 字 (词)
|
||||||
|
|
||||||
| 快捷方式 | 说明 |
|
| 快捷方式 | 说明 |
|
||||||
| ------------ | ----------------- |
|
| ------------ | ----------------- |
|
||||||
@ -82,9 +82,9 @@ G gg H M L k j ▶ print("to")
|
|||||||
|
|
||||||
| 快捷方式 | 说明 |
|
| 快捷方式 | 说明 |
|
||||||
| ------------- | ------------------------------- |
|
| ------------- | ------------------------------- |
|
||||||
| `Fe` */* `fe` | 移动到上一个/下一个`e` |
|
| `Fe` */* `fe` | 移动到上一个/下一个 `e` |
|
||||||
| `To` */* `to` | 在上一个/下一个`o`之前/之后移动 |
|
| `To` */* `to` | 在上一个/下一个 `o` 之前/之后移动 |
|
||||||
| `|` */* `n|` | 转到第一个/`n`列 |
|
| `|` */* `n|` | 转到第一个/`n` 列 |
|
||||||
|
|
||||||
#### 文档
|
#### 文档
|
||||||
|
|
||||||
@ -124,8 +124,8 @@ G gg H M L k j ▶ print("to")
|
|||||||
| `:q!` | `ZQ` | 强制退出 |
|
| `:q!` | `ZQ` | 强制退出 |
|
||||||
| `:qa` | 关闭所有文件 |
|
| `:qa` | 关闭所有文件 |
|
||||||
| `:qa!` | 强制退出所有文件 |
|
| `:qa!` | 强制退出所有文件 |
|
||||||
| `:w` new.txt | 写入`new.txt` |
|
| `:w` new.txt | 写入 `new.txt` |
|
||||||
| `:sav` new.txt | 保存并编辑`new.txt` |
|
| `:sav` new.txt | 保存并编辑 `new.txt` |
|
||||||
| `:w` !sudo tee % | 写入只读文件 |
|
| `:w` !sudo tee % | 写入只读文件 |
|
||||||
|
|
||||||
### 正常模式
|
### 正常模式
|
||||||
@ -134,10 +134,10 @@ G gg H M L k j ▶ print("to")
|
|||||||
| --------------------- | ----------------- |
|
| --------------------- | ----------------- |
|
||||||
| `r` | 替换一个字符 |
|
| `r` | 替换一个字符 |
|
||||||
| `R` | 进入替换模式 |
|
| `R` | 进入替换模式 |
|
||||||
| `u` */* `3u` | 撤消更改`1`/`3`次 |
|
| `u` */* `3u` | 撤消更改 `1`/`3` 次 |
|
||||||
| `U` | 在一行上撤消更改 |
|
| `U` | 在一行上撤消更改 |
|
||||||
| `J` | 加入下一行 |
|
| `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` |
|
||||||
| `,` | 重复最新的`f`、`t`、`F`或`T`颠倒 |
|
| `,` | 重复最新的 `f`、`t`、`F` 或 `T` 颠倒 |
|
||||||
| `&` | 重复最后一个`:s` |
|
| `&` | 重复最后一个 `:s` |
|
||||||
| `@:` | 重复命令行命令 |
|
| `@:` | 重复命令行命令 |
|
||||||
|
|
||||||
### 可视化模式
|
### 可视化模式
|
||||||
@ -188,7 +188,7 @@ G gg H M L k j ▶ print("to")
|
|||||||
| ----- | --------------- |
|
| ----- | --------------- |
|
||||||
| `qi` | 录制宏 `i` |
|
| `qi` | 录制宏 `i` |
|
||||||
| `q` | 停止录制宏 |
|
| `q` | 停止录制宏 |
|
||||||
| `@i` | 运行宏`i` |
|
| `@i` | 运行宏 `i` |
|
||||||
| `7@i` | 运行宏 `i` 7 次 |
|
| `7@i` | 运行宏 `i` 7 次 |
|
||||||
| `@@` | 重复上一个宏 |
|
| `@@` | 重复上一个宏 |
|
||||||
|
|
||||||
@ -298,9 +298,9 @@ G gg H M L k j ▶ print("to")
|
|||||||
| 快捷方式 | 说明 |
|
| 快捷方式 | 说明 |
|
||||||
| -------- | ------------------------------ |
|
| -------- | ------------------------------ |
|
||||||
| `v`i" | 选择内引号“`...`{.underline}” |
|
| `v`i" | 选择内引号“`...`{.underline}” |
|
||||||
| `v`a" | 选择引号`"..."`{.underline} |
|
| `v`a" | 选择引号 `"..."`{.underline} |
|
||||||
| `v`i[ | 选择内括号 [`...`{.underline}] |
|
| `v`i[ | 选择内括号 [`...`{.underline}] |
|
||||||
| `v`a[ | 选择括号`[...]`{.underline} |
|
| `v`a[ | 选择括号 `[...]`{.underline} |
|
||||||
| `v`iw | 选择内词 |
|
| `v`iw | 选择内词 |
|
||||||
| `v`ip | 选择内部段落 |
|
| `v`ip | 选择内部段落 |
|
||||||
| `v`ipip | 选择更多段落 |
|
| `v`ipip | 选择更多段落 |
|
||||||
@ -356,23 +356,23 @@ G gg H M L k j ▶ print("to")
|
|||||||
|
|
||||||
| 快捷方式 | 说明 |
|
| 快捷方式 | 说明 |
|
||||||
| -------------- | -------------------------- |
|
| -------------- | -------------------------- |
|
||||||
| `:tabe [file]` | E在新选项卡中编辑文件 |
|
| `:tabe [file]` | E 在新选项卡中编辑文件 |
|
||||||
| `:tabf [file]` | 如果在新选项卡中存在则打开 |
|
| `:tabf [file]` | 如果在新选项卡中存在则打开 |
|
||||||
| `:tabc` | C失去当前选项卡 |
|
| `:tabc` | C 失去当前选项卡 |
|
||||||
| `:tabo` | 关闭o其他选项卡 |
|
| `:tabo` | 关闭 o 其他选项卡 |
|
||||||
| `:tabs` | 列出所有标签 |
|
| `:tabs` | 列出所有标签 |
|
||||||
| `:tabr` | 转到第一个r标签 |
|
| `:tabr` | 转到第一个 r 标签 |
|
||||||
| `:tabl` | 转到 last 选项卡 |
|
| `:tabl` | 转到 last 选项卡 |
|
||||||
| `:tabm 0` | 我转到位置 `0` |
|
| `:tabm 0` | 我转到位置 `0` |
|
||||||
| `:tabn` | 转到 next 选项卡 |
|
| `:tabn` | 转到 next 选项卡 |
|
||||||
| `:tabp` | 转到p上一个标签 |
|
| `:tabp` | 转到 p 上一个标签 |
|
||||||
|
|
||||||
#### 正常模式
|
#### 正常模式
|
||||||
|
|
||||||
| 快捷方式 | 说明 |
|
| 快捷方式 | 说明 |
|
||||||
| -------- | ---------------- |
|
| -------- | ---------------- |
|
||||||
| `gt` | 转到 next 选项卡 |
|
| `gt` | 转到 next 选项卡 |
|
||||||
| `gT` | 转到p上一个标签 |
|
| `gT` | 转到 p 上一个标签 |
|
||||||
| `2gt` | 转到标签编号 `2` |
|
| `2gt` | 转到标签编号 `2` |
|
||||||
|
|
||||||
## Vim 搜索和替换
|
## Vim 搜索和替换
|
||||||
@ -403,7 +403,7 @@ G gg H M L k j ▶ print("to")
|
|||||||
| `:s/old/new` | 先更换 |
|
| `:s/old/new` | 先更换 |
|
||||||
| `:s/old/new/g` | 全部替换 |
|
| `:s/old/new/g` | 全部替换 |
|
||||||
| `:s/\vold/new/g` | 全部替换为 [regex](https://github.com/jaywcjlove/reference/blob/main/docs/regex.md) |
|
| `: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` | 先忽略大小写替换 |
|
| `:s/old/new/i` | 先忽略大小写替换 |
|
||||||
| `:2,6s/old/new/g` | 在 `2`-`6` 行之间替换 |
|
| `: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(标志)
|
### Flags(标志)
|
||||||
|
|
||||||
@ -586,7 +586,7 @@ vim -d file1 file2 [file3]
|
|||||||
| `<C-o>` | 返回上一个 |
|
| `<C-o>` | 返回上一个 |
|
||||||
| `<C-i>` | 向前 |
|
| `<C-i>` | 向前 |
|
||||||
| `gf` | 转到光标中的文件 |
|
| `gf` | 转到光标中的文件 |
|
||||||
| `ga` | 显示十六进制、ASCII值 |
|
| `ga` | 显示十六进制、ASCII 值 |
|
||||||
|
|
||||||
### 其他命令行
|
### 其他命令行
|
||||||
|
|
||||||
@ -606,9 +606,9 @@ vim -d file1 file2 [file3]
|
|||||||
|
|
||||||
| 快捷方式 | 说明 |
|
| 快捷方式 | 说明 |
|
||||||
| ------------- | ------------------- |
|
| ------------- | ------------------- |
|
||||||
| `%` | 最近/匹配的`{[()]}` |
|
| `%` | 最近/匹配的 `{[()]}` |
|
||||||
| `[(` *|* `[{` | 上一个 `(` 或 `{` |
|
| `[(` *|* `[{` | 上一个 `(` 或 `{` |
|
||||||
| `])` *|* `]{` | 下一个`)`或`}` |
|
| `])` *|* `]{` | 下一个 `)` 或 `}` |
|
||||||
| `[m` | 上一个方法开始 |
|
| `[m` | 上一个方法开始 |
|
||||||
| `[M` | 上一个方法结束 |
|
| `[M` | 上一个方法结束 |
|
||||||
|
|
||||||
@ -656,16 +656,16 @@ vim -d file1 file2 [file3]
|
|||||||
| ``<` | 到最后一个可视化选择的开始 |
|
| ``<` | 到最后一个可视化选择的开始 |
|
||||||
| ``>` | 到最后一个可视化选择的结尾 |
|
| ``>` | 到最后一个可视化选择的结尾 |
|
||||||
| `ma` | 将此光标位置标记为`a` |
|
| `ma` | 将此光标位置标记为`a` |
|
||||||
| ``a` | 跳转到光标位置`a` |
|
| ``a` | 跳转到光标位置 `a` |
|
||||||
| `'a` | 跳转到位置为 `a` 的行首 |
|
| `'a` | 跳转到位置为 `a` 的行首 |
|
||||||
| `d'a` | 从当前行删除到标记 `a` 的行 |
|
| `d'a` | 从当前行删除到标记 `a` 的行 |
|
||||||
| `d`a` | 从当前位置删除到标记 `a` 的位置 |
|
| `d`a` | 从当前位置删除到标记 `a` 的位置 |
|
||||||
| `c'a` | 将文本从当前行更改为 `a` 行 |
|
| `c'a` | 将文本从当前行更改为 `a` 行 |
|
||||||
| `y`a` | 将文本从当前位置拉到 `a` 的位置 |
|
| `y`a` | 将文本从当前位置拉到 `a` 的位置 |
|
||||||
| `:marks` | 列出所有当前标记 |
|
| `:marks` | 列出所有当前标记 |
|
||||||
| `:delm a` | 删除标记`a` |
|
| `:delm a` | 删除标记 `a` |
|
||||||
| `:delm a-d` | 删除标记`a`、`b`、`c`、`d` |
|
| `:delm a-d` | 删除标记 `a`、`b`、`c`、`d` |
|
||||||
| `:delm abc` | 删除标记`a`、`b`、`c` |
|
| `:delm abc` | 删除标记 `a`、`b`、`c` |
|
||||||
|
|
||||||
### 计算器
|
### 计算器
|
||||||
|
|
||||||
@ -681,7 +681,7 @@ vim -d file1 file2 [file3]
|
|||||||
| :- | - |
|
| :- | - |
|
||||||
| ------------ | ---------------- |
|
| ------------ | ---------------- |
|
||||||
| `:!<shell>` | 解释 Shell 命令 |
|
| `:!<shell>` | 解释 Shell 命令 |
|
||||||
| `:r!<shell>` | 读入shell的输出 |
|
| `:r!<shell>` | 读入 shell 的输出 |
|
||||||
| `:r!date` | 插入日期 |
|
| `:r!date` | 插入日期 |
|
||||||
| `:!!date` | 用日期替换当前行 |
|
| `:!!date` | 用日期替换当前行 |
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ U - 将选中文本转换为大写
|
|||||||
|
|
||||||
## 寄存器
|
## 寄存器
|
||||||
|
|
||||||
寄存器被存储在 ~/.viminfo 中, 在下次重启vim时仍会加载
|
寄存器被存储在 ~/.viminfo 中, 在下次重启 vim 时仍会加载
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
:reg[isters] - 显示寄存器内容
|
:reg[isters] - 显示寄存器内容
|
||||||
@ -200,7 +200,7 @@ g; - 跳转至修改历史中较早修改的位置
|
|||||||
Ctrl + ] - 跳转到当前光标位置对应的 tag
|
Ctrl + ] - 跳转到当前光标位置对应的 tag
|
||||||
```
|
```
|
||||||
|
|
||||||
**Tip** 可以使用反引号(`)或单引号(')跳转至标记位置。使用单引号会跳转至该标记所在行行首(首个非空白字符)。
|
**Tip** 可以使用反引号 (`) 或单引号 (') 跳转至标记位置。使用单引号会跳转至该标记所在行行首 (首个非空白字符)。
|
||||||
|
|
||||||
## 宏
|
## 宏
|
||||||
|
|
||||||
@ -347,6 +347,6 @@ dp or :diffpu[t] - 将当前缓冲区中的差异推送至另一缓冲区
|
|||||||
:diffo[ff] - 令当前窗口退出 diff 模式
|
:diffo[ff] - 令当前窗口退出 diff 模式
|
||||||
```
|
```
|
||||||
|
|
||||||
折叠命令(e.g. za)只作用于当前级别。使用大写字母(e.g. zA)令命令作用于全部级别。
|
折叠命令 (e.g. za) 只作用于当前级别。使用大写字母 (e.g. zA) 令命令作用于全部级别。
|
||||||
|
|
||||||
可以直接在终端运行 vimdiff 查看文件间的不同。也可以将该程序设为 git difftool 的选项之一。
|
可以直接在终端运行 vimdiff 查看文件间的不同。也可以将该程序设为 git difftool 的选项之一。
|
||||||
|
@ -31,13 +31,13 @@ GNU/Linux 也是自由软件和开放源代码软件发展中最著名的例子
|
|||||||
|
|
||||||
1974 年,汤普逊和里奇合作在 ACM 通信上发表了一篇关于 UNIX 的文章,这是 UNIX 第一次出现在贝尔实验室以外。此后 UNIX 被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。
|
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 系统实验室卖掉。
|
后来 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/)
|
外部链接:[UNIX的完整历史](http://www.levenez.com/unix/)
|
||||||
|
|
||||||
@ -47,9 +47,9 @@ GNU/Linux 也是自由软件和开放源代码软件发展中最著名的例子
|
|||||||
|
|
||||||
1983 年,AT&T 发布了 Unix 最新版 system V,这是一个商业化版本,付费才能使用,并且不得传播源码。正是因为看到了 Unix 被商业化,所以 **1983 年 9 月 27 日由理查德·斯托曼在麻省理工学院公开发起 GNU 计划。**
|
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。但是它不同于 Unix,GNU 给予其用户自由。
|
[GNU 计划](https://www.gnu.org/) 的基本目标和一贯目标是提供一个和 Unix 兼容的 100% 自由软件的操作系统。不是 95%、也不是 99.5%、而是 100% 自由。这个系统的名字叫 **GNU,是 GNU's Not Unix 的首字母递归缩写**——这是对 Unix 的技术思想致敬的一种方法,同时表达 GNU 有所不同。从技术上说,GNU 很像 Unix。但是它不同于 Unix,GNU 给予其用户自由。
|
||||||
|
|
||||||
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。
|
**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 经销商之一。
|
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 操作系统**,它一般是由一些组织、团体、公司或者个人制作并发行的。
|
Linux 发行版指的就是通常所说的 **Linux 操作系统**,它一般是由一些组织、团体、公司或者个人制作并发行的。
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ author: 7Wate
|
|||||||
date: 2023-03-15
|
date: 2023-03-15
|
||||||
---
|
---
|
||||||
|
|
||||||
开源软件的发展始于上世纪80年代,起初是由一些计算机爱好者和学术研究人员开发的。随着互联网的发展,越来越多的人开始加入到开源软件开发的行列中。
|
开源软件的发展始于上世纪 80 年代,起初是由一些计算机爱好者和学术研究人员开发的。随着互联网的发展,越来越多的人开始加入到开源软件开发的行列中。
|
||||||
|
|
||||||
开源软件是指能够公开查看、使用、复制、修改和分发源代码的软件。**源代码开放的软件并不一定是开源软件,开源软件有着严格统一的的定义,封闭软件(Closed Software)、自由软件(Free software)和开源软件(Open source software)有着显著地区别。**
|
开源软件是指能够公开查看、使用、复制、修改和分发源代码的软件。**源代码开放的软件并不一定是开源软件,开源软件有着严格统一的的定义,封闭软件(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)。反之亦然,但需要注意的是兼容性并**不可逆**。
|
怎么样才算兼容呢?如果使用许可证 A 的代码和使用许可证 B 的代码能在一个广域作品中结合在一起,那么 A 和 B 就是兼容的,否则就是不兼容的。更近一步,如果结合后的广义作品可以用许可证 A 发布,那么许可证 B 就是许可证 A 兼容的(A-compatible)。反之亦然,但需要注意的是兼容性并**不可逆**。
|
||||||
|
|
||||||
|
@ -97,8 +97,8 @@ $ popd
|
|||||||
| **Ctrl+W** | 删除光标前的一个单词 |
|
| **Ctrl+W** | 删除光标前的一个单词 |
|
||||||
| **Ctrl+Y** | 粘贴由 Ctrl+U、Ctrl+K 或 Ctrl+W 删除的文本 |
|
| **Ctrl+Y** | 粘贴由 Ctrl+U、Ctrl+K 或 Ctrl+W 删除的文本 |
|
||||||
| **Ctrl+T** | 交换光标处字符与之前的字符 |
|
| **Ctrl+T** | 交换光标处字符与之前的字符 |
|
||||||
| **Alt+B** | 向后移动一个单词(或 Ctrl+左箭头) |
|
| **Alt+B** | 向后移动一个单词(或 Ctrl+ 左箭头) |
|
||||||
| **Alt+F** | 向前移动一个单词(或 Ctrl+右箭头) |
|
| **Alt+F** | 向前移动一个单词(或 Ctrl+ 右箭头) |
|
||||||
| **Ctrl+Shift+C** | 复制(部分图形终端) |
|
| **Ctrl+Shift+C** | 复制(部分图形终端) |
|
||||||
| **Ctrl+Shift+V** | 粘贴(部分图形终端) |
|
| **Ctrl+Shift+V** | 粘贴(部分图形终端) |
|
||||||
|
|
||||||
|
@ -72,53 +72,53 @@ DNS 配置对于确保域名能够正确解析至关重要。以下是配置 DNS
|
|||||||
为了确保系统的安全性和稳定性,定期更新操作系统和应用程序是非常重要的。这不仅可以修复已知的安全漏洞,还可以带来新功能和性能改进。
|
为了确保系统的安全性和稳定性,定期更新操作系统和应用程序是非常重要的。这不仅可以修复已知的安全漏洞,还可以带来新功能和性能改进。
|
||||||
|
|
||||||
- **软件源管理**:首先,需要确保软件源(repositories)是最新和最可靠的
|
- **软件源管理**:首先,需要确保软件源(repositories)是最新和最可靠的
|
||||||
- 对于基于Debian的系统,编辑`/etc/apt/sources.list`文件。
|
- 对于基于 Debian 的系统,编辑 `/etc/apt/sources.list` 文件。
|
||||||
- 对于基于RedHat的系统,编辑`/etc/yum.repos.d/`目录下的文件。
|
- 对于基于 RedHat 的系统,编辑 `/etc/yum.repos.d/` 目录下的文件。
|
||||||
- **更新软件包列表**:使用包管理器更新本地软件包数据库。
|
- **更新软件包列表**:使用包管理器更新本地软件包数据库。
|
||||||
- 对于APT,可以使用`sudo apt-get update`命令;
|
- 对于 APT,可以使用 `sudo apt-get update` 命令;
|
||||||
- 对于YUM,可以使用`sudo yum makecache`或者`sudo dnf makecache`(如果你的系统使用DNF作为包管理器)。
|
- 对于 YUM,可以使用 `sudo yum makecache` 或者 `sudo dnf makecache`(如果你的系统使用 DNF 作为包管理器)。
|
||||||
- **更新升级系统**:在更新了软件包列表之后,可以进行系统更新。
|
- **更新升级系统**:在更新了软件包列表之后,可以进行系统更新。
|
||||||
- 对于APT,使用`sudo apt-get upgrade`命令;
|
- 对于 APT,使用 `sudo apt-get upgrade` 命令;
|
||||||
- 对于YUM或DNF,使用`sudo yum update`或`sudo dnf upgrade`。这些命令会下载并安装所有可用的更新。
|
- 对于 YUM 或 DNF,使用 `sudo yum update` 或 `sudo dnf upgrade`。这些命令会下载并安装所有可用的更新。
|
||||||
|
|
||||||
## 4. 安装基本软件和工具
|
## 4. 安装基本软件和工具
|
||||||
|
|
||||||
- **安装文本编辑器**:选择适合的文本编辑器(如vim、nano)以便于配置文件编辑。
|
- **安装文本编辑器**:选择适合的文本编辑器(如 vim、nano)以便于配置文件编辑。
|
||||||
- **安装网络工具**:安装基础网络诊断工具(如curl、wget、net-tools、traceroute)。
|
- **安装网络工具**:安装基础网络诊断工具(如 curl、wget、net-tools、traceroute)。
|
||||||
|
|
||||||
## 5. 安全设置
|
## 5. 安全设置
|
||||||
|
|
||||||
安全性是系统管理中的一个关键方面。以下是一些基本的安全设置步骤。
|
安全性是系统管理中的一个关键方面。以下是一些基本的安全设置步骤。
|
||||||
|
|
||||||
- **设置防火墙**:`ufw`和`firewalld`是两个流行的防火墙管理工具。它们可以轻松配置入站和出站规则,限制未授权访问。例如,使用`sudo ufw allow 22`来允许SSH连接。
|
- **设置防火墙**:`ufw` 和 `firewalld` 是两个流行的防火墙管理工具。它们可以轻松配置入站和出站规则,限制未授权访问。例如,使用 `sudo ufw allow 22` 来允许 SSH 连接。
|
||||||
- **安装和配置安全增强工具**:SELinux和AppArmor提供了强制访问控制,可以增强系统安全。安装后,需要根据需要配置相应的策略。
|
- **安装和配置安全增强工具**:SELinux 和 AppArmor 提供了强制访问控制,可以增强系统安全。安装后,需要根据需要配置相应的策略。
|
||||||
- **定期扫描漏洞**:使用安全扫描工具定期检查系统漏洞。ClamAV是一个开源的杀毒工具,可以扫描恶意软件。Lynis是一个安全审计工具,可以帮助检查系统配置和潜在的安全风险。
|
- **定期扫描漏洞**:使用安全扫描工具定期检查系统漏洞。ClamAV 是一个开源的杀毒工具,可以扫描恶意软件。Lynis 是一个安全审计工具,可以帮助检查系统配置和潜在的安全风险。
|
||||||
|
|
||||||
## 6. OpenSSH 通讯
|
## 6. OpenSSH 通讯
|
||||||
|
|
||||||
OpenSSH是Linux系统中用于远程管理的标准工具。以下是一些重要的SSH配置和安全措施。
|
OpenSSH 是 Linux 系统中用于远程管理的标准工具。以下是一些重要的 SSH 配置和安全措施。
|
||||||
|
|
||||||
- **配置SSH**:安装OpenSSH服务后,编辑`/etc/ssh/sshd_config`文件进行配置。可以更改默认端口,配置密钥认证,禁用root登录等。
|
- **配置 SSH**:安装 OpenSSH 服务后,编辑 `/etc/ssh/sshd_config` 文件进行配置。可以更改默认端口,配置密钥认证,禁用 root 登录等。
|
||||||
- **定期更新密码**:定期更新用户和root账户的密码,遵循强密码策略,以增加账户安全性。
|
- **定期更新密码**:定期更新用户和 root 账户的密码,遵循强密码策略,以增加账户安全性。
|
||||||
- **配置SSH密钥认证**:密钥认证比密码认证更安全。生成密钥对,并将其添加到服务器的`~/.ssh/authorized_keys`文件中。
|
- **配置 SSH 密钥认证**:密钥认证比密码认证更安全。生成密钥对,并将其添加到服务器的 `~/.ssh/authorized_keys` 文件中。
|
||||||
- **禁用SSH空密码登录**:确保SSH配置文件中的`PermitEmptyPasswords`选项设置为`no`,以防止空密码账户通过SSH登录。
|
- **禁用 SSH 空密码登录**:确保 SSH 配置文件中的 `PermitEmptyPasswords` 选项设置为 `no`,以防止空密码账户通过 SSH 登录。
|
||||||
|
|
||||||
## 7. 用户账户角色管理
|
## 7. 用户账户角色管理
|
||||||
|
|
||||||
用户账户管理是系统安全的关键部分。合理的用户和权限管理可以防止未授权的访问和潜在的安全风险。
|
用户账户管理是系统安全的关键部分。合理的用户和权限管理可以防止未授权的访问和潜在的安全风险。
|
||||||
|
|
||||||
- **添加用户**:使用`sudo adduser`或`sudo useradd`命令创建新用户。为每个任务创建专用的用户账户,避免使用root账户进行日常工作。
|
- **添加用户**:使用 `sudo adduser` 或 `sudo useradd` 命令创建新用户。为每个任务创建专用的用户账户,避免使用 root 账户进行日常工作。
|
||||||
- **用户组管理**:合理地使用用户组来分配权限和管理用户权限。使用`sudo groupadd`创建新组,使用`sudo usermod -aG`将用户添加到组中。
|
- **用户组管理**:合理地使用用户组来分配权限和管理用户权限。使用 `sudo groupadd` 创建新组,使用 `sudo usermod -aG` 将用户添加到组中。
|
||||||
- **root用户管理**:限制root账户的远程访问,只通过sudo提升权限。确保root账户有一个强密码,并定期更新。
|
- **root 用户管理**:限制 root 账户的远程访问,只通过 sudo 提升权限。确保 root 账户有一个强密码,并定期更新。
|
||||||
- **用户权限管理**:通过配置`/etc/sudoers`文件或使用`visudo`命令,为特定用户分配sudo权限。确保遵循最小权限原则,只授予必要的权限。
|
- **用户权限管理**:通过配置 `/etc/sudoers` 文件或使用 `visudo` 命令,为特定用户分配 sudo 权限。确保遵循最小权限原则,只授予必要的权限。
|
||||||
- **重置root密码**:如果忘记root密码,可以使用系统救援模式或Live CD/USB来重置密码。这通常涉及到挂载系统分区并修改`/etc/shadow`文件。
|
- **重置 root 密码**:如果忘记 root 密码,可以使用系统救援模式或 Live CD/USB 来重置密码。这通常涉及到挂载系统分区并修改 `/etc/shadow` 文件。
|
||||||
|
|
||||||
## 8. 配置服务和程序
|
## 8. 配置服务和程序
|
||||||
|
|
||||||
服务和程序的配置对于系统的稳定运行和性能至关重要。
|
服务和程序的配置对于系统的稳定运行和性能至关重要。
|
||||||
|
|
||||||
- **管理systemd系统服务**:使用`systemctl`命令管理服务。了解不同`systemd`单元文件的存放位置和优先级,以便正确管理服务。
|
- **管理 systemd 系统服务**:使用 `systemctl` 命令管理服务。了解不同 `systemd` 单元文件的存放位置和优先级,以便正确管理服务。
|
||||||
- **服务自启动管理**:使用`systemctl enable`或`disable`命令来管理服务是否在系统启动时自动运行。这有助于控制系统启动时的资源消耗。
|
- **服务自启动管理**:使用 `systemctl enable` 或 `disable` 命令来管理服务是否在系统启动时自动运行。这有助于控制系统启动时的资源消耗。
|
||||||
- **不必要服务的移除**:定期审查系统服务,卸载或禁用不必要的服务和程序,以减少系统的潜在攻击面和提高系统性能。
|
- **不必要服务的移除**:定期审查系统服务,卸载或禁用不必要的服务和程序,以减少系统的潜在攻击面和提高系统性能。
|
||||||
- **引导至救援模式**:了解如何使用系统引导菜单或添加启动参数进入救援模式。这对于系统修复和故障排除非常有用。
|
- **引导至救援模式**:了解如何使用系统引导菜单或添加启动参数进入救援模式。这对于系统修复和故障排除非常有用。
|
||||||
|
|
||||||
@ -126,32 +126,32 @@ OpenSSH是Linux系统中用于远程管理的标准工具。以下是一些重
|
|||||||
|
|
||||||
日志管理和监控对于维护系统安全和稳定运行至关重要。
|
日志管理和监控对于维护系统安全和稳定运行至关重要。
|
||||||
|
|
||||||
- **配置系统日志**:使用`rsyslog`或`syslog-ng`配置日志记录规则。确保重要信息,如安全警告和系统错误,被妥善记录。
|
- **配置系统日志**:使用 `rsyslog` 或 `syslog-ng` 配置日志记录规则。确保重要信息,如安全警告和系统错误,被妥善记录。
|
||||||
- **安装监控工具**:安装`htop`和`iftop`等工具来监控系统资源使用情况。还可以考虑安装`nmon`、`glances`等综合系统监控工具,以获得更全面的系统状态视图。
|
- **安装监控工具**:安装 `htop` 和 `iftop` 等工具来监控系统资源使用情况。还可以考虑安装 `nmon`、`glances` 等综合系统监控工具,以获得更全面的系统状态视图。
|
||||||
- **日志分析工具**:安装日志分析工具如Logwatch或GoAccess,这些工具可以帮助更容易地分析和理解日志文件,及时发现潜在的安全威胁或系统问题。
|
- **日志分析工具**:安装日志分析工具如 Logwatch 或 GoAccess,这些工具可以帮助更容易地分析和理解日志文件,及时发现潜在的安全威胁或系统问题。
|
||||||
|
|
||||||
## 10. 备份和恢复计划
|
## 10. 备份和恢复计划
|
||||||
|
|
||||||
备份和恢复计划是防止数据丢失和系统故障的关键。
|
备份和恢复计划是防止数据丢失和系统故障的关键。
|
||||||
|
|
||||||
- **配置定期备份**:使用`rsync`、`tar`或定制脚本实现重要数据和配置的定期备份。考虑使用定时任务(cron jobs)来自动执行备份。
|
- **配置定期备份**:使用 `rsync`、`tar` 或定制脚本实现重要数据和配置的定期备份。考虑使用定时任务(cron jobs)来自动执行备份。
|
||||||
- **远程备份**:使用远程备份解决方案,如`rsync`配合SSH将备份数据同步到远程服务器,提高数据安全性。
|
- **远程备份**:使用远程备份解决方案,如 `rsync` 配合 SSH 将备份数据同步到远程服务器,提高数据安全性。
|
||||||
- **灾难恢复计划**:制定并测试灾难恢复计划,确保在数据丢失或系统崩溃时能够迅速恢复。这可能包括系统镜像备份、关键数据的恢复流程等。
|
- **灾难恢复计划**:制定并测试灾难恢复计划,确保在数据丢失或系统崩溃时能够迅速恢复。这可能包括系统镜像备份、关键数据的恢复流程等。
|
||||||
|
|
||||||
## 11. 自定义用户环境
|
## 11. 自定义用户环境
|
||||||
|
|
||||||
为了提高用户的工作效率和满意度,可以对用户环境进行一些自定义设置。
|
为了提高用户的工作效率和满意度,可以对用户环境进行一些自定义设置。
|
||||||
|
|
||||||
- **磁盘配额**:使用`quota`工具为用户和用户组设置磁盘配额,防止单个用户占用过多磁盘空间。
|
- **磁盘配额**:使用 `quota` 工具为用户和用户组设置磁盘配额,防止单个用户占用过多磁盘空间。
|
||||||
- **使用`ulimit`设置资源限制**:使用`ulimit`命令为用户和进程设置资源使用限制,如打开文件的数量,以避免单个进程耗尽系统资源。
|
- **使用 `ulimit` 设置资源限制**:使用 `ulimit` 命令为用户和进程设置资源使用限制,如打开文件的数量,以避免单个进程耗尽系统资源。
|
||||||
- **Shell环境定制**:根据个人偏好定制Shell环境,配置别名、环境变量和命令提示符。这可以通过编辑用户的`.bashrc`、`.bash_profile`或`.zshrc`文件来实现。
|
- **Shell 环境定制**:根据个人偏好定制 Shell 环境,配置别名、环境变量和命令提示符。这可以通过编辑用户的 `.bashrc`、`.bash_profile` 或 `.zshrc` 文件来实现。
|
||||||
- **安装和配置图形界面**(可选):如果系统需要图形界面,安装桌面环境(如GNOME、KDE)并进行相应配置。确保图形界面的安全性,例如通过配置`.xinitrc`文件来启动图形会话。
|
- **安装和配置图形界面**(可选):如果系统需要图形界面,安装桌面环境(如 GNOME、KDE)并进行相应配置。确保图形界面的安全性,例如通过配置 `.xinitrc` 文件来启动图形会话。
|
||||||
|
|
||||||
## 12. 系统性能优化
|
## 12. 系统性能优化
|
||||||
|
|
||||||
系统性能优化可以提高系统响应速度和处理能力,特别是在资源受限的环境中。
|
系统性能优化可以提高系统响应速度和处理能力,特别是在资源受限的环境中。
|
||||||
|
|
||||||
- **内核参数调整**:根据系统用途调整`/etc/sysctl.conf`中的内核参数。例如,可以增加`net.core.somaxconn`来提高网络性能,或者调整`fs.file-max`来增加文件系统的最大句柄数。
|
- **内核参数调整**:根据系统用途调整 `/etc/sysctl.conf` 中的内核参数。例如,可以增加 `net.core.somaxconn` 来提高网络性能,或者调整 `fs.file-max` 来增加文件系统的最大句柄数。
|
||||||
|
|
||||||
## 13. 故障转移
|
## 13. 故障转移
|
||||||
|
|
||||||
|
@ -343,4 +343,3 @@ class Dog(AbstractAnimal, AnimalBehaviour):
|
|||||||
def sleep(self):
|
def sleep(self):
|
||||||
return "The dog is sleeping."
|
return "The dog is sleeping."
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -19,14 +19,14 @@ date: 2023-06-26
|
|||||||
- 文件名应简明地概述文档内容。
|
- 文件名应简明地概述文档内容。
|
||||||
- 文件名长度应适中,避免过长。
|
- 文件名长度应适中,避免过长。
|
||||||
- 当文件名由多个英文单词组成时,用短划线「-」连接。
|
- 当文件名由多个英文单词组成时,用短划线「-」连接。
|
||||||
- 在文件名中避免使用下划线「_」,它在URL中可能影响搜索引擎优化,并可能被某些 Markdown 实现当作修饰字符。
|
- 在文件名中避免使用下划线「_」,它在 URL 中可能影响搜索引擎优化,并可能被某些 Markdown 实现当作修饰字符。
|
||||||
- 多个单词组成的文件名,全小写或全大写均可,但**避免大小写混用**,如`faq.md`或`FAQ.md`。
|
- 多个单词组成的文件名,全小写或全大写均可,但**避免大小写混用**,如 `faq.md` 或 `FAQ.md`。
|
||||||
- 文件扩展名应为小写。
|
- 文件扩展名应为小写。
|
||||||
- Markdown文件应使用「.md」后缀,虽然「.markdown」也可以接受,但应保证整体文件风格的统一。
|
- Markdown 文件应使用「.md」后缀,虽然「.markdown」也可以接受,但应保证整体文件风格的统一。
|
||||||
|
|
||||||
| 文件名 | 内容描述 |
|
| 文件名 | 内容描述 |
|
||||||
| ------------------------------ | -------------------------------------- |
|
| ------------------------------ | -------------------------------------- |
|
||||||
| `introduction-to-python.md` | 此文件可能包含有关Python语言的基础知识 |
|
| `introduction-to-python.md` | 此文件可能包含有关 Python 语言的基础知识 |
|
||||||
| `database-connection-guide.md` | 这是一个指南,说明如何连接到数据库 |
|
| `database-connection-guide.md` | 这是一个指南,说明如何连接到数据库 |
|
||||||
| `faq.md` | 这是一个常见问题解答文件 |
|
| `faq.md` | 这是一个常见问题解答文件 |
|
||||||
| `README.md` | 这是一个项目介绍文件 |
|
| `README.md` | 这是一个项目介绍文件 |
|
||||||
|
@ -66,7 +66,7 @@ date: 2023-06-26
|
|||||||
|
|
||||||
连接号用于连接两个有直接关联的词语。
|
连接号用于连接两个有直接关联的词语。
|
||||||
|
|
||||||
> 中美-贸易
|
> 中美 - 贸易
|
||||||
|
|
||||||
### 破折号「——」
|
### 破折号「——」
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ date: 2023-06-26
|
|||||||
|
|
||||||
在 Markdown 中,斜杠被用作转义字符,表示接下来的字符应被解析为文字,而非 Markdown 语法。
|
在 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□)□是一种……(半角括号和半角括号内的英文之间空了一格)❌
|
> 数据定义语言□(□DDL□)□是一种……(半角括号和半角括号内的英文之间空了一格)❌
|
||||||
>
|
>
|
||||||
> 正确示例:数据定义语言□(DDL)□是一种……
|
> 正确示例:数据定义语言□(DDL)□是一种……
|
||||||
|
@ -10,16 +10,23 @@ tags:
|
|||||||
author: 7Wate
|
author: 7Wate
|
||||||
date: 2022-08-25
|
date: 2022-08-25
|
||||||
---
|
---
|
||||||
|
|
||||||
## 概述
|
## 概述
|
||||||
|
|
||||||
数据结构是相互之间存在**一种或多种特定关系**的数据元素的集合。
|
数据结构是相互之间存在**一种或多种特定关系**的数据元素的集合。
|
||||||
|
|
||||||
## 数据
|
## 数据
|
||||||
|
|
||||||
数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
|
数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
|
||||||
|
|
||||||
**数据项 > 数据元素 >> 数据对象:数据项构成了数据元素,数据元素组合成了数据对象。**
|
**数据项 > 数据元素 >> 数据对象:数据项构成了数据元素,数据元素组合成了数据对象。**
|
||||||
|
|
||||||
## 结构
|
## 结构
|
||||||
|
|
||||||
结构是不同数据元素之间不是独立的,而是存在特定的关系。
|
结构是不同数据元素之间不是独立的,而是存在特定的关系。
|
||||||
|
|
||||||
### 逻辑结构
|
### 逻辑结构
|
||||||
|
|
||||||
逻辑结构是指**数据对象 中 数据元素**之间的相互关系。
|
逻辑结构是指**数据对象 中 数据元素**之间的相互关系。
|
||||||
|
|
||||||
- 集合:集合结构中的数据元素除了属于一个集合外,它们之间**没有其他关系**。
|
- 集合:集合结构中的数据元素除了属于一个集合外,它们之间**没有其他关系**。
|
||||||
@ -71,4 +78,3 @@ Operation
|
|||||||
…………
|
…………
|
||||||
endADT
|
endADT
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user