计算机常识——开篇文
❓ Why在日常开发中,我们可能会遇到一些看似简单但又十分重要的常识性问题。这些问题往往不会占据太多时间,但在长期的开发过程中却会影响到整个项目的进程和效率。与此同时,这些问题又非常的零散,难以进行统一分类。为了更好地解决这些问题,我创建了一个名为“计算机常识”的分类,记录我平时遇到的问题。虽然这些问题很难进行分类,但透过这些普遍问题的深刻了解,我们可以逐渐加深对计算机常识的理解,增强我们的开发能力。我希望这一系列的博客文章可以为大家提供帮助,解答一些常见问题,让我们更加得心应手地完成工作。
🔎 Tags这一系列的文章虽然都在“计算机常识”的分类下,但是我会添加上不同的tags来对文章的类型做出一些区分,方便大家查阅
📚 学习参考好的学习参考可以帮助我们更加高效地掌握与实践知识。在这里,我分享一些自己常用的学习资源,希望能对大家有所帮助。
官方文档和规范
📜 POSIX 操作系统规范:https://pubs.opengroup.org/onlinepubs/9699919799/
📘 MDN Web 文档:https://developer.mozilla.org/zh-C ...
Kafka3 入门指南
Kafka简介定义Kafka 是一个分布式流式处理平台。
流平台具有三个关键功能:
消息队列:发布和订阅消息流,这个功能类似于消息队列,这也是 Kafka 也被归类为消息队列的原因。
容错的持久方式存储记录消息流: Kafka 会把消息持久化到磁盘,有效避免了消息丢失的风险。
流式处理平台: 在消息发布的时候进行处理,Kafka 提供了一个完整的流式处理类库。
应用场景Kafka 主要有两大应用场景:
消息队列 :建立实时流数据管道,以可靠地在系统或应用程序之间获取数据。
数据处理: 构建实时的流数据处理程序来转换或处理数据流。
Kafka3.x版本的区别Kafka 3.x 版本与之前的版本最大的区别是,Kafka 3.0 版本开始支持了 KIP-500(Kafka Improvement Proposal #500),这是一项重大的协议变更,允许 Kafka3.x 版本在不依赖 ZooKeeper 的情况下独立运行。
在 Kafka 3.0 之前,Kafka 使用 ZooKeeper 来进行元数据存储和管理。但是,随着 Kafka 的使用场景越来越广泛,单独使用 ZooKee ...
英语单词表
123456graph TD; A-->B; A-->E; B-->F; F-->B; C-->F;
word
mean
count
omit
省略
1
brackets
括弧[],(),{}
1
backtick
反引号`
1
quote
引号", '
1
underlying
底层
1
hitch
故障
1
compatibility
兼容性
2
parameter
参数
1
argument
参数
1
duplication
重复
2
syntax
语法
2
identify
识别
1
identifier
标识符
1
placeholder
占位符
1
prompt
指示符$,>;指示
1
boundary
分界符,分界线,边界
1
underscore
下划线_
1
expose
暴露
1
exposure
接触,暴露,风险
1
conventions
公约
1
valid
合 ...
Go语言之旅练习题目与答案
练习:等价二叉查找树Go 语言之旅 (go-zh.org)
题目1. 实现 Walk 函数。
2. 测试 Walk 函数。
函数 tree.New(k) 用于构造一个随机结构的已排序二叉查找树,它保存了值 k, 2k, 3k, …, 10k。
创建一个新的信道 ch 并且对其进行步进:
1go Walk(tree.New(1), ch)
然后从信道中读取并打印 10 个值。应当是数字 1, 2, 3, ..., 10。
3. 用 Walk 实现 Same 函数来检测 t1 和 t2 是否存储了相同的值。
4. 测试 Same 函数。
Same(tree.New(1), tree.New(1)) 应当返回 true,而 Same(tree.New(1), tree.New(2)) 应当返回 false。
Tree 的文档可在这里找到。
答案1234567891011121314151617181920212223242526272829303132333435363738394041424344454647package mainimport ( "fmt" &quo ...
Conventional Commits
定义当多人参与开发时,对于提交的代码需要有一个标准的格式和规范,这就是Conventional Commits(约定式提交)。
Conventional Commits规范是一个定义提交消息格式的规范,其目的是使提交消息能够清晰、简洁、易于阅读,并且能够自动化生成变更日志。其主要包括两个部分:提交消息的结构与提交消息的类型
提交消息的结构提交消息包括两个主要部分:头部和主体。头部由三个部分组成:类型<type>、作用域scope和主题description。类型<type>表示此次提交的目的和意图,作用域scope表示此次提交影响的范围,主题description则简要描述此次提交的内容。主体是可选的,可以用于详细描述此次提交的修改内容。
提交消息的结构应如下所示:
12345<type>[optional scope]: <description>[optional body][optional footer]
例如,下面是一个符合“Conventional Commits”规范的提交消息:
12345sqlCopy codefeat( ...
虚拟机网络配置中的网络模式
定义虚拟机网络配置中的网络模式是指虚拟机在虚拟化环境中使用的网络配置模式。虚拟机通常需要和主机或其他网络设备进行通信,以实现数据交换和资源共享。网络模式决定了虚拟机的网络适配器如何与主机或其他网络设备进行连接,以及如何获取IP地址等网络配置信息。
以下是几种虚拟机网络配置中常见的网络模式
桥接模式(Bridged)虚拟机的网络适配器直接连接到主机上的物理网络适配器上,虚拟机相当于在物理网络中成为了一个独立的网络设备,可以直接获得网络中的IP地址,可以和其他计算机进行通信。
NAT模式(Network Address Translation)虚拟机的网络适配器连接到虚拟机监控器创建的虚拟网络中,虚拟机会获得虚拟网络中的IP地址,而不会直接获得物理网络中的IP地址。虚拟机监控器会自动将虚拟机中的网络请求转换为主机的网络请求,并将主机的响应返回给虚拟机,实现虚拟机和物理网络之间的通信。
主机模式(Host-Only)虚拟机的网络适配器只能和主机进行通信,无法和物理网络中的其他计算机进行通信。虚拟机会获得一个虚拟网络中的IP地址,但这个IP地址只能被主机和其他使用主机模式的虚拟机访问。
内部网 ...
Linux预备知识
Linux与Unix的区别Linux和Unix之间有着密切的关系,Linux实际上是受Unix启发而开发出来的操作系统。Unix是一个历史悠久的操作系统,最初是由AT&T的贝尔实验室在20世纪60年代末期开发的。Unix拥有稳定、高效、安全等特点,并广泛应用于服务器、工作站、超级计算机等领域。
Linux最初是由芬兰大学生Linus Torvalds在1991年开发的,当时他是为了学习操作系统而开始开发了一个类Unix的操作系统。Linux最初使用了Unix的很多设计思想和技术,如文件系统、进程管理、内存管理等,因此Linux和Unix非常相似,有许多共同点。(GNU计划)
虽然Linux和Unix有很多相似之处,但也有一些不同。Linux是自由和开放源代码的操作系统,而Unix则是商业软件,需要支付许可费用。此外,Linux具有更好的兼容性和可定制性,可以在不同的硬件平台上运行,并且可以根据需要选择不同的发行版。而Unix则只能运行在少数特定的硬件平台上,并且缺乏灵活性和可定制性。
Linux的分区Linux的分区是操作系统中一个非常重要的概念,它可以让用户将硬盘空间划分成不 ...
正则表达式
简介正则表达式 (regular expressions) 是一个非常有用的工具,可以从诸如代码、日志文件、电子表格或文档等文本中提取信息。虽然规范的语言背后有许多理论,但后续的课程和例子将探索正则表达式的更实际的用法,以便您能够尽快使用这个工具。
在使用正则表达式时要认识到的第一件事是:所有东西本质上都是字符,我们正在编写模式 (pattern) 来匹配特定的字符序列(也称为字符串)。大多数模式使用普通的 ASCII 字符,包括字母、数字、标点符号和键盘上的其他符号,如 %#$@!,但是也可以使用 unicode 字符来匹配任何类型的国际文本。
基础语法
举例
说明
abc
匹配拥有abc的字符串
\d
匹配从 0 到 9 的任意数字
\w
字母数字 (alphanumeric) 元字符,匹配英文文本中的字符,相当于字符范围 [A-Za-z0-9_]
\s
可以匹配空格 (␣)、制表符 (\t)、换行 (\n) 和回车 (\r)等任意空白符(利用\s+可以匹配连续空格)
\b
匹配单词和非单词字符之间的边界。在捕获整个单词时最有用,例如模式 \w+\b
...
Java的字符串操作方法
String常用方法String的方法很多,重载方法也很多,这里只是列出方法名和返回值类型和大概功能,给自己遗忘时查看,具体使用时可以Ctrl+点方法名查看源码(如果使用IEDA的话)。
方法名
功能
char charAt()
返回指定位置的字符
int indexOf()
返回指定子字符串在字符串中第一次出现的位置
int lastIndexOf()
返回指定子字符串在字符串中最后一次出现的位置
String substring()
返回字符串中指定位置的子串
String toLowerCase()
将字符串转换为小写字母
String toUpperCase()
将字符串转换为大写字母
String trim()
删除字符串首尾的空格
String replace()
用指定的字符串替换字符串中的另一个字符串
String replaceAll()
使用正则表达式替换字符串中的另一个字符串
String [] split()
将字符串分割成子字符串数组
Sting format()
使用指定的格式字符串和参数格式化字符串
...
Git使用指南
git简介Git是一个免费、开源的分布式版本控制系统,用于管理代码和其他计算机文件的版本控制。它最初由Linus Torvalds为了管理Linux内核源代码而创建,现在已成为许多开源和商业软件项目的标准版本控制工具。
与集中式版本控制系统(如Subversion)不同,Git是一种分布式版本控制系统,这意味着每个开发人员都有一个本地存储库,其中包含完整的项目历史记录。这使得开发人员可以在没有网络连接的情况下工作,并且使得合并和更改管理变得更加简单。
初次运行 Git 前的配置既然已经在系统上安装了 Git,你会想要做几件事来定制你的 Git 环境。 每台计算机上只需要配置一次,程序升级时会保留配置信息。 你可以在任何时候再次通过运行命令来修改它们。
Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:
/etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上 --system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此 ...