Believe it

相信不屈不挠的努力,相信战胜死亡的年轻

ARP

Address Resolution Protocol, 地址解析协议,实现IP地址到MAC地址的映射。

在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

阅读全文 »

进程如何互相通信

共享内存

操作系统通过页表让不同的进程共享一个物理地址空间,他们对应的逻辑地址空间可能不同,但是物理地址空间是相同的。共享内存不提供同步机制,我们需要额外的手段来保证同步。

管道

管道的参数如下

1
int pipe(int pipefd[2]);

成功则返回0,否则返回-1,pipefd中会得到两个文件描述符,一个可读,一个可写,就实现了管道,一般用于父子进程通信,父进程可fork,然后写pipefd[1], 子进程即可读pipefd[0], 或者父进程fork两次

命名管道

1
2
3
4
5
6
# docker run --rm -it centos:centos8 bash
mkfifo mypipe
for i in {1..100}; do echo $i>mypipe; sleep 1s; done &
for i in {1..100}; do echo $i>mypipe; sleep 1s; done &
for i in {1..100}; do echo $i>mypipe; sleep 1s; done &
tail -300f mypipe

信号量

详见link

消息队列

消息队列是由消息的链表存放在内核并有消息队列标识符标识。消息队列克服了信号传递信息量少,管道只能承载无格式字节流以及缓冲区太小受限。

信号

信号又被称为软件中断,一个有权限的进程可以向另一个进程发送信号,但发往进程的信号诸多都源于内核。

有时需要确保一段代码不被传递来的信号中断,为了做到这点,可将信号添加到进程的信号掩码中——目前会阻塞该组信号的到达。如果所产生的信号属于阻塞之列,那么信号将保持等待状态,直至稍后对其解除阻塞

套接字

socket,不赘述了。

参考

在操作系统中进程是如何通信的

计算机操作系统基础(十六)---进程同步之共享内存

【操作系统原理】使用管道完成进程间通信(匿名管道pipe、命名管道fifo)

操作系统基本概念——信号(一)

Mermaid

这是一个画图的东西,他可以画有向图、无向图、流程图、时序图、类图、状态图等等,官网在这 有一个坑,就是md文件第一非空行不可以是#mermaid, 否则渲染失败,所以我这用了Mermaid作为开头,

why this blog

简单介绍一下用法,避免每次都去官网找半天

基础用法

参数 备注
TB top bottom
BT bottom top
RL right left
LR left right
TD same as TB
阅读全文 »

1
2
3
4
5
6
7
8
# install logstash
yum install -y java-1.8.0-openjdk.x86_64 wget vim
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.0.0.tar.gz
tar -xzvf logstash-7.0.0.tar.gz
mv logstash-7.0.0 /usr/local/logstash
echo "LOGSTASH_HOME=/usr/local/logstash" >> ~/.bashrc
echo "PATH=\$LOGSTASH_HOME/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc

grok语法

https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-x86_64.rpm
rpm -vi filebeat-7.5.1-x86_64.rpm
filebeat modules enable logstash
filebeat setup
cat<<EOF>/etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /data/*.log
filebeat.config.modules:
path: \${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.elasticsearch:
hosts: ["localhost:9200"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
EOF
mkdir /data
for i in $(seq 1 10000); do echo "{\"x\"="$i"}" >> /data/10000.log; sleep 1s;done &
/usr/share/filebeat/bin/filebeat -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat -path.data /var/lib/filebeat -path.logs /var/log/filebeat -e &

mysql安装

可以酌情修改内存大小和交换内存大小。

1
2
3
4
5
6
7
8
# filename: $HOME/data/mysql/conf/docker.cnf
[mysqld]
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
performance_schema = off
skip-host-cache
skip-name-resolve
1
2
3
4
5
6
7
8
docker run \
--cpus 0.2 \
-d -e MYSQL_ROOT_PASSWORD=123456 \
--name mysql \
-v $HOME/data/mysql/data:/var/lib/mysql \
-v $HOME/data/mysql/conf:/etc/mysql/conf.d \
-p 3306:3306 \
mysql

允许远程登录

1
2
3
docker exec -it mysql bash
mysql -u root -p123456
ALTER USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '123456';

博客崩溃了

我很难受,重新开始配置一下,然后我记录一下过程

初始化博客

script
1
hexo init

然后我碰到了第一个问题

script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
INFO  Cloning hexo-starter https://github.com/hexojs/hexo-starter.git
Cloning into '/Users/s/Documents/debug'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 161 (delta 12), reused 12 (delta 4), pack-reused 131
Receiving objects: 100% (161/161), 31.79 KiB | 262.00 KiB/s, done.
Resolving deltas: 100% (74/74), done.
Submodule 'themes/landscape' (https://github.com/hexojs/hexo-theme-landscape.git) registered for path 'themes/landscape'
Cloning into '/Users/s/Documents/debug/themes/landscape'...
remote: Enumerating objects: 1063, done.
remote: Total 1063 (delta 0), reused 0 (delta 0), pack-reused 1063
Receiving objects: 100% (1063/1063), 3.21 MiB | 2.87 MiB/s, done.
Resolving deltas: 100% (585/585), done.
Submodule path 'themes/landscape': checked out '73a23c51f8487cfcd7c6deec96ccc7543960d350'
INFO Install dependencies

> ejs@2.7.4 postinstall /Users/s/Documents/debug/node_modules/ejs
> node ./postinstall.js

Thank you for installing EJS: built with the Jake JavaScript build tool (https://jakejs.com/)

npm notice created a lockfile as package-lock.json. You should commit this file.
added 254 packages from 454 contributors and audited 470 packages in 12.565s

5 packages are looking for funding
run `npm fund` for details

found 1 low severity vulnerability
run `npm audit fix` to fix them, or `npm audit` for details
INFO Start blogging with Hexo!
阅读全文 »