TLS

TLS全称:Transport Layer Security——安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。

该协议由两层组成:TLS记录协议(TLS Record)和TLS握手协议(TLS Handshake)。较低的层为TLS记录协议,位于某个可靠的传输协议(如TCP)上面。

TLS的最大优势在于:TLS是独立于应用协议。高层协议可以透明地分布在TLS协议上面。

Linux I2C Tools

本文基于RockPi 4A Debian系统介绍i2c设备的调试工具i2c-tools。

i2c-tools的相关命令常用于linux系统读写i2c设备寄存器的在线调试。

安装命令:


apt-get update
apt-get install i2c-tools

linux版本代码下载路径:

准备

首先在gcp创建实例

1. 设置当前用户的新密码


$ sudo passwd ${whoami} // 下面以 user 代替 ${whoami}
# 输入新密码

2. 设置下 root 的新密码


$ sudo passwd root
# 输入新密码

3. 在本地生成私钥和公钥


$ cd ~/.ssh
$ ssh-****** -f myKey
或者
$ ssh-keygen -t rsa -f ~/.ssh/my-ssh-key -C [USERNAME]

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): ( 按enter键即可)
Enter same passphrase again: ( 按enter键即可)
Your identification has been saved in myKey.
Your public key has been saved in myKey.pub.
The key fingerprint is:
SHA256:EW7ow1aaaaaf8mNvk 该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。
The key's randomart image is:
+---[RSA 2048]----+
|=.o+= o .        |
|o+.o+= + .       |
|o.o..oo *        |
|..o+ +o+ o       |
|.oo+  =+S o      |
| o. * o. = o     |
| ..o =  . =      |
|. o.. .    E     |
| . .o.           |
+----[SHA256]-----+
# 此时会生成 公钥 myKey.pub 和 私钥 myKey

1.sudo!!:忘记用 sudo 运行命令?您无需重新编写整个命令,只需键入 sudo!!最后一个命令将使用sudo运行。

2.python -m SimpleHTTPServer:通过端口 8000 为当前工作目录创建一个简单的网页。

3.mtr命令是 ping 和traceroute命令的组合。

4.Ctrl+x+e:这个组合键会立即启动,终端中的编辑器。

5.nl:输出行编号的文本文件的内容。

6.shuf:把输入行按随机顺序输出到标准输出。

7.ss:输出套接字统计信息。

8.last:想知道上次登录用户的历史记录?这个命令来拯救这里。

9.curl json.im:显示机器的外部 IP 地址。

10.tree:以树状方式递归打印文件和文件夹。

一、定时器的实现原理

定时器的实现,依赖的是CPU时钟中断;时钟中断的精度,决定了定时器精度的极限。那么,一个时钟中断源如何实现多个定时器呢?

对于内核,简单来说就是用特定的数据结构管理众多的定时器,在时钟中断处理中判断哪些定时器超时,然后执行超时处理动作。而用户空间程序不直接感知CPU时钟中断,通过感知内核的信号、IO事件、调度,间接依赖时钟中断。

用软件来实现动态定时器常用数据结构有:时间轮、最小堆和红黑树。下面就是一些知名的实现:

  • Linux内核的 Hierarchy 时间轮算法
  • Asio C++ Library最小堆定时器实现
  • nginx 使用红黑树结构管理定时器事件

下面,介绍一下Linux内核定时器的一些相关代码。

内核启动注册时钟中断: