云原生高级必备基础

news2024/11/15 22:26:46

一.文件管理

相对路径和绝对路径

touch 创建文件

mkdir 创建目录 -p多级创建

rm 删除

·-i 删除前逐一询问确认。

·-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。

·-r 将目录及以下之档案亦逐一删除。

cp 复制 -p -r

mv 移动

cp和mv的区别

相同设备:cp是复制mv是重命名(改名字)

不同设备:cp和mv差不多,但是cp会好一点,mv会删除了在移动

1、功能上的区别

mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中(该文件从原来的文件夹中消失)。

cp: 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中(该文件仍保存在原文件夹中)。

2、从inode角度来区分

mv:会将存储于indoe索引节点上的文件元信息也移动到新文件中。

cp : 只会复制文件数据,不会复制inode索引节点上的文件元信息。

vim 查看

批量添加,配置,tab长度 自动缩进

针对所有用户都生效

ll /etc/vimrc

子配置文件对当前用户生效

ll ~/.vimrc

set nu显示行号

set ts=2 tab的长度等于两个空格

set ai 自动缩进

set ai sw=2 自动缩进的长度为2格

set nu ts=2 ai sw=2 et (et把tab自动转换为空格)

vim多行添加

(1)进入可视化模式的方法: ctrl+v

(2)按上下键选中要添加字符的列

(3)按大写的i,进入插入模式

(4)加入所要加入的字符

(5)按esc退出

(6)保存退出

全部注释的方法:ctrl+v,小g到行首,G到行尾,然后#,esc,保存退出

cat 正向查看

tac 反向查看

watch 定时执行一个程序或命令(监视)

head 查看文件的开头部分的内容(前十行)

tail 查看文件的内容(后十行)

显示文件5到8行:head -n 8 passwd | tail -n 3

less 可以随意浏览文件

ln 创建软硬链接, 软硬连接的原理

链接分为软链接和硬链接

软链接

软链接:多个节点号对应一个数据区域(节省空间)

(类似于拿着快递单号去取快递)

在多个路径下为了减少磁盘空间时使用软链接(节省空间)

软链接命令: ln -s 链接的文件名 创建的文件名

什么是软链接

(1)软链接可以理解成快捷方式。和windows下得快捷方式得作用是一样的。
(2)软链接文件的大小、创建时间和源文件不同。
(3)软链接文件只是一个指向关系(从链接文件到源文件的指向关系),不是源文件的内容,大小不一样。

说明:1.源文件被删除后,并没有影响硬链接文件;软链接文件在centos系统下不断的闪烁,提示源文件已经不存在2.重建源文件后,软链接不在闪烁提示,说明已经链接成功,找到了链接文件系统;重建后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效

硬链接

硬链接:多个数据区域对应的一个节点(用于备份小而多的数据,防止节点的损耗)

硬链接用于备份琐碎的文件方式节点区域被使用完,使用硬链接完成对琐碎文件的备份(用于备份小而多的数据,防止节点的损耗)

硬链接命令:ln 链接的文件名 创建的文件名

d是目录

硬链接都是数据访问的途径

删除一个后源数据连接的次数减一

什么是硬链接

(1)硬链接文件和源文件的大小、创建时间是一样的
(2)硬链接的文件内容和源文件的一模一样,相当于copy -p 复制文件的内容和创建时间(注意:-p是为了复制文件的时间)
(3)源文件修改,硬链接文件内同会同步修改。保持和源文件的内容相同。

find 在指定目录下查找文件和目录,文件大小的方式,权限,类型

find /mnt -name 文件名

find /mnt -perm 权限

find  /mnt  -perm  444
#  /为或者,ugo有一个有读的权限即可
find  /mnt  -perm /444
#  -并且,ugo都要有读的权限
find  /mnt  -perm -444

etc配置权限

usr系统资源

var变量

srv常量

二.用户管理

添加用户

useradd -s -M -d

·-s<shell> 指定用户登入后所使用的shell。

·-M 不要自动建立用户的家目录

·-d<登入目录> 指定用户登入时的默认工作目录

-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。

-d<登入目录> 指定用户登入时的起始目录。

-D 变更预设值.

-e<有效期限> 指定帐号的有效期限。

-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。

-g<群组> 指定用户所属的群组。

-G<群组> 指定用户所属的附加群组。

-m 制定用户的登入目录。

-M 不要自动建立用户的登入目录。

-n 取消建立以用户名称为名的群组.

-r 建立系统帐号。

-s<shell> 指定用户登入后所使用的shell。

-u<uid> 指定用户ID。

删除用户

userdel -r 用户名

·-r 删除用户登入目录以及目录中所有文件。

练习:创建用户

监控动作
[root@localhost ~]# watch -n 1 "tail -n 3 /etc/passwd /etc/group;ls -l /home"


#用户建立时的命令
useradd test

#删除用户
userdel -r test

#不要家目录
useradd -M test

#指定shell创建
userdel -r test
useradd -s /sbin/nologin test

#指定用户登入时的默认工作目录
userdel -r test
useradd -d /mnt test

useradd -u 2000 shengcan
grup -u 2001 caiwu
grupadd -g 2001 caiwu
groupadd -g 2001 caiwu
groupadd -g 2002 jishu
useradd -g shengchan -G JISHU -G caiwu lee
useradd -g shengcan -G JISHU -G caiwu lee
useradd -g shengcan -G jishu -G caiwu lee
useradd -M linux
useradd -G caiwu westos
useradd tabadmin
echo westos | passwd --stdin lee
echo westos | passwd --stdin linux
echo westos | passwd --stdin westos
echo westos | passwd --stdin tabadmin
passwd -e lee
passwd -e linux
passwd -e tabadmin
passwd -e westo
chage -M 30 lee
chage -M 30 linux
chage -M 30 westos
chage -M 30 tabadmin

三.权限管理

chown:用于设置文件所有者和文件关联组的命令。

·user : 新的文件拥有者的使用者 ID

·group : 新的文件拥有者的使用者组(group)

·-c : 显示更改的部分的信息

·-f : 忽略错误信息

·-h :修复符号链接

·-v : 显示详细的处理信息

·-R : 处理指定目录以及其子目录下的所有文件

·--help : 显示辅助说明

·--version : 显示版本

#把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid

#将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt

#将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *

#把/home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob

chgrp:用于变更文件或目录的所属群组。

chgrp -v bin log2012.log

-c 或 --changes:效果类似"-v"参数,但仅回报更改的部分。

-f 或 --quiet 或 --silent: 不显示错误信息。

-h 或 --no-dereference: 只对符号连接的文件作修改,而不改动其他任何相关文件。

-R 或 --recursive: 递归处理,将指定目录下的所有文件及子目录一并处理。

-v 或 --verbose: 显示指令执行过程。

--help: 在线帮助。

--reference=<参考文件或目录>: 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

--version: 显示版本信息。

chmod:控制用户对文件的权限

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

suid:u+s

sgid:g+s

sticky:o+t

uid和gid

suid和sgid

特殊权限:

sticky:sticky简写为t,o+t (1)777

作用:让公共文件中的特殊权限设置为t,在这个公共目录下不同目录创建的文件其他用户不能删除

suid:u+s权限 (2)77 7

作用:使得其他用户运行该文件,使用该文件所有者身份运行

sgid:g+s (4)777

作用:使得所有人在此目录创建得的文件或目录都属于改所属组

四.网络管理

查看网络的功能:

[root@node1 ~]# nmcli networking 
enabled
[root@node1 ~]# nmcli networking on

网络排除

#看绿没绿
[root@node1 ~]# nmcli connection show

#看有没有网卡
[root@node1 ~]# ifconfig

#看配置文件
[root@node1 ~]# cd /etc/NetworkManager/system-connections/
[root@node1 system-connections]# ls
172.25.254.100.nmconnection  eth0.nmconnection
ens160.nmconnection
[root@node1 system-connections]# vim eth0.nmconnection 

#查看网络的功能
[root@node1 ~]# nmcli networking 

ip 主机在网络中的网址,ipv4 2/32 子网掩码 172.25.254.0/24 172.25.254.0/255.255.255.0

查看IP的方法:

ifconfig

ip a

hostname -I

红帽

改ip:

改ip的脚本
#查看网卡:
[root@serverb ~]# ifconfig
[root@serverb ~]# vim /usr/local/bin/vmset.sh

#!/bin/bash
cat > /etc/NetworkManager/system-connections/$1.connection <<EOF
[connection]
id=$1
type=ethernet
interface-name=$1

[ipv4]
method=manual
address=$2/24,172.25.254.2
dns=114.114.114.114;
EOF

chmod 600 /etc/NetworkManager/system-connections/$1.connection
nmcli connection reload
nmcli connection up $1



[root@serverb ~]# chmod u+x /usr/local/bin/vmset.sh

[root@serverb ~]# bash vmset.sh ens224  172.25.254.111

OPENEUDER

修改网卡的名称

#在内核钟禁止使用net.ifnames模块,这样可以让网卡显示为ethx(x为数字)
[root@localhost ~]# grubby --update-kernel ALL --args net.ifnames=0
#重启
[root@localhost ~]# reboot
#查看
[root@localhost ~]# ip ad

配置网卡(自动配置IP)
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
NAME=eth0
[root@localhost network-scripts]# nmcli connection reload
[root@localhost network-scripts]# nmcli connection up eth0

临时给eth1添加一个ip
[root@localhost ~]# ip a a 172.25.254.10/24 dev eth1
#显示ip
[root@localhost ~]# ip a s eth1

配置网卡(手动配置IP)
#文件里面ip哪些要1都要1
[root@localhost network-scripts]# vim ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR1=172.25.254.120
NETMASK1=255.255.255.0
DNS1=114.114.114.114
GATEWAY1=172.25.254.2
NAME=eth1

[root@localhost network-scripts]# nmcli connection reload
[root@localhost network-scripts]# nmcli connection up eth1
[root@localhost network-scripts]# nmcli connection show

[root@localhost ~]# vim /bin/vmset.sh
#!/bin/bash
cat >/etc/sysconfig/network-scripts/ifcfg-$1 <<EOF
DEVICE=$1
ONBOOT=yes
BOOTPROTO=none
IPADDR1=$2
NETMASK1=255.255.255.0
DNS1=114.114.114.114
GATEWAY1=172.25.254.2
NAME=$1
EOF

nmcli connection reload
nmcli connection up $1

[root@localhost ~]# chmod +x /bin/vmset.sh 
[root@localhost ~]# vmset.sh eth1 172.25.254.254

网关

dns

ip

route -n

cat /etc/resolv.conf

/etc/hosts

五.进程管理

以下命令的所有列都要会:

ps aux

格式说明:

USER: 行程拥有者

PID: pid

%CPU: 占用的 CPU 使用率

%MEM: 占用的记忆体使用率

VSZ: 占用的虚拟记忆体大小

RSS: 占用的记忆体大小

TTY: 终端的次要装置号码 (minor device number of tty)

STAT: 该行程的状态,linux的进程有5种状态:

D 不可中断 uninterruptible sleep (usually IO)

R 运行 runnable (on run queue)

S 中断 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (”zombie”) process

注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).

START: 行程开始时间

TIME: 执行的时间

COMMAND:所执行的指令

ps是显示当前状态处于running的进程,grep表示正则化搜索搜索,而ps aux是显示所有进程和其状态。

top

如果想对进程时间监控,应该用 top 工具。(top会1s一刷新)

第一行:是统计信息区。包括系统当前时间、系统运行时间、当前登录用户数、系统平均负载时长

第二行;是进程信息。包括进程总数、正在运行的进程数、睡眠的进程数、停止的进程数以及僵尸进程数

第三行:是cpu信息

包括us (user):用户进程占用 CPU 的比率、

sy (system): 内核、内核进程占用 CPU 的比率、

ni (nice): 用户进程空间内改变过优先级的进程占用 CPU 比率、

id (idle): CPU 空闲比率、

wa (iowait): CPU 等待执行 I/O 操作的时间比率、

hi (Hardware IRQ): CPU 处理硬件中断所占时间的比率、

si (Software Interrupts): CPU 处理软件中断所占时间的比率、

st (steal): 流逝的时间,虚拟机中的其他任务所占 CPU 时间的比率

第四行:内存占比信息。total 物理内存总量; free 空闲内存总量; used 使用的物理内存总量; buffers 用作内核缓存的内存量

第五行:交换内存信息。总的,可用的,已经使用过的

systemctl set-default 是 Linux 系统管理器systemd的一个命令,用于设置默认的运行级别或目标单元

systemctl multi-user.target是在 Linux 系统中使用systemd系统管理器来启动多用户模式的一种方式。在多用户模式下,系统通常提供图形用户界面(GUI)或命令行界面(CLI)供用户使用。

基本用法

要启动多用户模式,您可以使用以下命令:

systemctl start multi-user.target
Copy

这条命令会启动多用户模式,加载所有需要的服务,如网络、X11(对于图形界面)或终端服务(对于命令行界面)。

例子

假设您想在系统启动时自动进入多用户模式,您可以在/etc/systemd/system/default.target.wants/multi-user.target文件中添加一个链接到multi-user.target,或者在/etc/systemd/system.conf 文件中设置DefaultTarget-multi-user.target。这样,每次系统启动时,它将直接进入多用户模式。

杀掉进程

[root@localhost ~]# ps aux | grep mariadb
mysql       3058  0.0  2.7 1804288 94076 ?       Ssl  21:47   0:00 /usr/libexec/mariadbd --basedir=/var/lib/mysql/
root        3381  0.0  0.0  22108  2312 pts/1    S+   22:54   0:00 grep --color=auto mariadb

#-9强制删除,3058数据库进程
[root@localhost ~]# kill -9 3058
[root@localhost ~]# ps aux | grep mariadb
root        3394  0.0  0.0  22108  2300 pts/1    S+   22:54   0:00 grep --color=auto mariadb

如果忘记了mysql密码的方法:

[root@localhost ~]# systemctl stop mariadb
[root@localhost ~]# mysqld_safe --skip-grant-tables&
[root@localhost ~]# mysql
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> alter user root@localhost identified by 'redhat';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> quit
Bye

[root@localhost ~]# killall -9 mysqld_safe
[1]+  Killed                  mysqld_safe --skip-grant-tables
[root@localhost ~]# ps aux | grep mariadb
mysql       3790  0.0  2.5 1672964 88256 pts/1   Sl   23:01   0:00 /usr/libexec/mariadbd --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mariadb/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mariadb/mariadb.log --pid-file=/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root        3835  0.0  0.0  22108  2376 pts/1    S+   23:04   0:00 grep --color=auto mariadb
[root@localhost ~]# kill -9 3790

[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql -u root -predhat
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.25-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 


六.软件管理

本地软件仓库

#建立一个目录
[root@localhost ~]# mkdir /openeuler
#挂载镜像
[root@localhost ~]# mount /dev/sr0 /openeuler/
mount: /openeuler: WARNING: source write-protected, mounted read-only.
#开机自动挂载
[root@localhost ~]# vim /etc/rc.d/rc.local
#添加
mount /dev/sr0 /openeuler/
#给权限
[root@localhost ~]# chmod +x /etc/rc.d/rc.local

[root@localhost ~]# reboot
[root@localhost ~]# df -h

#写仓库
#备份
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
openEuler.repo
[root@localhost yum.repos.d]# mv openEuler.repo openEuler.repo.bak
[root@localhost yum.repos.d]# vim openEuler.repo
[openEuler]
name=openEuler
baseurl=file:///openeuler
gpgcheck=0
[root@localhost yum.repos.d]# dnf makecache

如果不小心删除了ls

查找到软件包之后,安装

dnf isntall 软件包 -y

yum

install

groupinstall

whatprovides

search

remove

reinstall

--downloadonly

--dest=

rpm

-ivh

-qc

-qa

-ql

-qd

配置docker镜像

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim docker-ce.repo
[docker-ce]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck=0
#生成 YUM 缓存,测试仓库是否可用
[root@localhost yum.repos.d]# yum makecache

yum makecache更新和加载缓存的命令

这个时候就可以直接yum install安装了。

如果不直接安装,自己弄一个docker的本地仓库

#通过软件仓库下载软件但不安装
[root@localhost ~]# dnf install docker-ce --downloadonly --downloaddir=/mnt
[root@localhost yum.repos.d]# cd /mnt
[root@localhost mnt]# ls
containerd.io-1.7.19-3.1.el9.x86_64.rpm
container-selinux-2.138-5.oe2203sp4.noarch.rpm
docker-buildx-plugin-0.16.1-1.el9.x86_64.rpm
docker-ce-27.1.1-1.el9.x86_64.rpm
docker-ce-cli-27.1.1-1.el9.x86_64.rpm
docker-compose-plugin-2.29.1-1.el9.x86_64.rpm
[root@localhost mnt]# mv *.rpm docker
[root@localhost mnt]# cd docker/
#此目录只是一个存放rpm软件包的目录而不是软件仓库
[root@localhost docker]# ls
containerd.io-1.7.19-3.1.el9.x86_64.rpm
container-selinux-2.138-5.oe2203sp4.noarch.rpm
docker-buildx-plugin-0.16.1-1.el9.x86_64.rpm
docker-ce-27.1.1-1.el9.x86_64.rpm
docker-ce-cli-27.1.1-1.el9.x86_64.rpm
docker-compose-plugin-2.29.1-1.el9.x86_64.rpm

#查找createrepo软件包
[root@localhost docker]# dnf whatprovides */createrepo
Last metadata expiration check: 0:04:54 ago on 2024年08月01日 星期四 20时52分49秒.
createrepo_c-0.17.6-3.oe2203sp4.x86_64 : Creates a common metadata
                                       : repository
Repo        : openEuler
Matched from:
Filename    : /usr/bin/createrep
#下载createrepo软件
[root@localhost docker]# dnf install createrepo_c-0.17.6-3.oe2203sp4.x86_64 -y

#扫描软件并生成软件仓库数据
[root@localhost docker]# createrepo -v /mnt/docker/

#配置docker仓库,改为本地仓库
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim docker-ce.repo
[docker-ce]
name=docker
baseurl=file:///mnt/docker
gpgcheck=0
[root@localhost yum.repos.d]# yum install docker -y

查找createrepo软件包

扫描软件并且生成软件的数据

配置docker仓库,改为本地仓库

七.日志管理

实验环境:systemctl stop firewalld

1.journald

服务名称:systemd-journald.service

journalctl

默认日志存放路径: /run/log

实验1 journalctl命令的用法

实验2 用journald服务永久存放日志

2.rsyslog

服务名称:rsyslog.service

实验1.自定义日志采集路径

小实验:

[root@node1 ~]# vim /etc/rsyslog.conf
*.*;authpriv.none					/var/log/system.log
[root@node1 ~]# systemctl restart rsyslog

实验2.如何更改日志采集格式

1定义日志采集格式

$template WESTOS_FORMAT, "%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
#WESTOS_FORMAT:    格式名称
#%FROMHOST-IP%:    日志来源主机IP
#%timegenerated%:  日志生成时间
#%syslogtag%:      日志生成服务
#%msg%:            日志内容
#\n:               换行

$template WESTOS_FORMAT, "%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"

#WESTOS_FORMAT: 格式名称

#%FROMHOST-IP%: 日志来源主机IP

#%timegenerated%: 日志生成时间

#%syslogtag%: 日志生成服务

#%msg%: 日志内容

#\n: 换行

自己定义日志的采集格式
[root@node2 ~]# vim /etc/rsyslog.conf 
$template HAHA, "%FROMHOST-IP% \n"
...
*.info;mail.none;authpriv.none;cron.none                /var/log/messages;HAHA
[root@node2 ~]# systemctl restart rsyslog.service 
[root@node2 ~]# vim /etc/rsyslog.conf 
[root@node2 ~]# tail -f /var/log/messages 
Aug  3 21:02:31 node2 systemd-logind[897]: Session 3 logged out. Waiting for processes to exit.
Aug  3 21:02:31 node2 systemd-logind[897]: Removed session 3.
127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1 
127.0.0.1 
127.0.0.1 
127.0.0.1 
127.0.0.1 
127.0.0.1 
127.0.0.1 
127.0.0.1 



[root@node2 ~]# vim /etc/rsyslog.conf 
$template HAHA, "%FROMHOST-IP% %timegenerated%\n"
...
*.info;mail.none;authpriv.none;cron.none                /var/log/messages;HAHA

[root@node2 ~]# systemctl restart rsyslog.service 
[root@node2 ~]# tail -f /var/log/messages 
172.25.254.100 
172.25.254.100 
127.0.0.1 Aug  3 21:08:45
127.0.0.1 Aug  3 21:08:46
127.0.0.1 Aug  3 21:08:46
127.0.0.1 Aug  3 21:08:46
127.0.0.1 Aug  3 21:08:46
127.0.0.1 Aug  3 21:08:46
127.0.0.1 Aug  3 21:08:46
127.0.0.1 Aug  3 21:08:46


[root@node2 ~]# vim /etc/rsyslog.conf 
$template HAHA, "%FROMHOST-IP% %timegenerated% %syslogtag% \n"
...
*.info;mail.none;authpriv.none;cron.none                /var/log/messages;HAHA

[root@node2 ~]# systemctl restart rsyslog.service 
[root@node2 ~]# tail -f /var/log/messages 
127.0.0.1 Aug  3 21:08:46
127.0.0.1 Aug  3 21:08:46
127.0.0.1 Aug  3 21:10:07 systemd[1]: 
127.0.0.1 Aug  3 21:10:07 rsyslogd[2261]: 
127.0.0.1 Aug  3 21:10:07 systemd[1]: 
127.0.0.1 Aug  3 21:10:07 systemd[1]: 
127.0.0.1 Aug  3 21:10:07 systemd[1]: 
127.0.0.1 Aug  3 21:10:07 rsyslogd[2272]: 
127.0.0.1 Aug  3 21:10:07 systemd[1]: 
127.0.0.1 Aug  3 21:10:07 rsyslogd[2272]: 


[root@node2 ~]# vim /etc/rsyslog.conf 
$template HAHA, "%FROMHOST-IP% %timegenerated% %syslogtag% %msg% \n"
...
*.info;mail.none;authpriv.none;cron.none                /var/log/messages;HAHA
[root@node2 ~]# systemctl restart rsyslog.service 
[root@node2 ~]# tail -f /var/log/messages 
127.0.0.1 Aug  3 21:10:07 systemd[1]: 
127.0.0.1 Aug  3 21:10:07 rsyslogd[2272]: 
127.0.0.1 Aug  3 21:11:20 systemd[1]: Stopping System Logging Service... 
127.0.0.1 Aug  3 21:11:20 rsyslogd[2272]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="2272" x-info="https://www.rsyslog.com"] exiting on signal 15. 
127.0.0.1 Aug  3 21:11:20 systemd[1]: rsyslog.service: Deactivated successfully. 
127.0.0.1 Aug  3 21:11:20 systemd[1]: Stopped System Logging Service. 
127.0.0.1 Aug  3 21:11:20 systemd[1]: Starting System Logging Service... 
127.0.0.1 Aug  3 21:11:20 systemd[1]: Started System Logging Service. 
127.0.0.1 Aug  3 21:11:20 rsyslogd[2285]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="2285" x-info="https://www.rsyslog.com"] start 
127.0.0.1 Aug  3 21:11:20 rsyslogd[2285]: imjournal: journal files changed, reloading...  [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ] 

将自己定义的格式设置为默认格式
[root@node2 ~]# vim /etc/rsyslog.conf 
# Use default timestamp format
#module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
module(load="builtin:omfile" Template="HAHA")
$template HAHA, "%FROMHOST-IP% %timegenerated% %syslogtag% %msg% \n"

[root@node2 ~]# systemctl restart rsyslog.service 
[root@node2 ~]# tail -f /var/log/messages 
127.0.0.1 Aug  3 21:11:20 rsyslogd[2285]: imjournal: journal files changed, reloading...  [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ] 
172.25.254.100 Aug  3 21:13:20 systemd[1]:  packagekit.service: Deactivated successfully. 
127.0.0.1 Aug  3 21:15:28 systemd[1]: Stopping System Logging Service... 
127.0.0.1 Aug  3 21:15:28 rsyslogd[2285]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="2285" x-info="https://www.rsyslog.com"] exiting on signal 15. 
127.0.0.1 Aug  3 21:15:28 systemd[1]: rsyslog.service: Deactivated successfully. 
127.0.0.1 Aug  3 21:15:28 systemd[1]: Stopped System Logging Service. 
127.0.0.1 Aug  3 21:15:29 systemd[1]: Starting System Logging Service... 
127.0.0.1 Aug  3 21:15:29 rsyslogd[2297]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="2297" x-info="https://www.rsyslog.com"] start 
127.0.0.1 Aug  3 21:15:29 systemd[1]: Started System Logging Service. 
127.0.0.1 Aug  3 21:15:29 rsyslogd[2297]: imjournal: journal files changed, reloading...  [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ] 

-表示日志时时采集,没有的话会生成完再同步

实验3.日志的远程同步

实验:收集日志

日志发送方:(172.25.254.100)

[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# vim /etc/rsyslog.conf
*.*                                                     @172.25.254.200
[root@node1 ~]#systemctl restart rsyslog.service 

#等日志接收方配好之后运行
[root@node1 ~]# logger haahahah

日志接受方:(172.25.254.200)

[root@node2 ~]# systemctl stop firewalld
[root@node2 ~]# vim /etc/rsyslog.conf
#打开
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
[root@node2 ~]# systemctl restart rsyslog.service

#清空日志
[root@node2 ~]# > /var/log/messages 
#查看日志
[root@node2 ~]# tail -f /var/log/messages 
Aug  3 20:19:02 node1 root[2397]: haahahah

测试日志:

3.timedatectl

timedatectl set-time "2020-02-13 10:41:55" ##设定系统时间

timedatectl list-timezones ##显示系统的所有时区

timedatectl set-timezone "Asia/Shanghai" ##设定系统时区

timedatectl set-local-rtc 0|1 ##设定系统时间计算方式

##0表示使用utc时间计算方式

4.时间同步服务

#服务名称: chronyd.service

#配置文件: /etc/chrony.conf

在rhel7作为时间源rhel8同步rhel7时间

#在time_server中
vim /etc/chrony.conf
26 allow 172.25.254.0/24   ##允许172.25.254.0网段主机同步时间
29 local stratum 10        ##开启时间同步服务器功能并设定级别为10
systemctl restart chronyd.service
systemctl stop firewalld 
在time_clinet中
vim /etc/chrony.conf
pool 172.25.254.100 iburst
systemctl restart chronyd
[root@rhel8_node1 ~]# chronyc sources -v

八.web服务器基础

九.DNS服务器

查看dns的访问顺序的文件

#查看dns的访问顺序的文件
[root@node1 ~]# vim /etc/nsswitch.conf

先看hosts(本地解析)(/etc/hosts)的,再看dns

配置正向解析

[root@node2 ~]# dnf install bind -y
#更改子配置文件
[root@node2 ~]# vim /etc/named.rfc1912.zones
#添加
zone "timinglee.org" IN {
        type master;
        file "timinglee.org.zone";
        allow-update { none; };
};

#更改主配置文件
[root@node2 ~]# vim /etc/named.conf
#更改
listen-on port 53 { any; };
...
allow-query     { any; };
...
dnssec-validation no;


#配置正向解析文件
[root@node2 ~]# cd /var/named
[root@node2 named]# ls
data     named.ca     named.localhost  slaves
dynamic  named.empty  named.loopback
[root@node2 named]# cp -p named.localhost timinglee.org.zone
[root@node2 named]# vim timinglee.org.zone
$TTL 1D
@       IN SOA  ns.timinglee.org. root.timinglee.org.  (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.timinglee.org.
ns      A       172.25.254.200
node2   A       172.25.254.200
node1   A       172.25.254.100

#重启服务
[root@node2 named]# systemctl restart named

#测试
[root@node2 named]# dig node1.timinglee.org @172.25.254.200

; <<>> DiG 9.16.23-RH <<>> node1.timinglee.org @172.25.254.200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2902
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 3e46dab94aa0de790100000066ae378e477c0873ed8eeab5 (good)
;; QUESTION SECTION:
;node1.timinglee.org.		IN	A

;; ANSWER SECTION:
node1.timinglee.org.	86400	IN	A	172.25.254.100

;; Query time: 3 msec
;; SERVER: 172.25.254.200#53(172.25.254.200)
;; WHEN: Sat Aug 03 21:58:38 CST 2024
;; MSG SIZE  rcvd: 92

dns服务器部署

1.关于dns的名词解释

dns:

domain name service(域名解析服务)

关于客户端

[root@node1 ~]# vim /etc/resolv.conf
nameserver 172.25.254.20

测试:

host www.baidu.com ##地址解析命令

dig www.baidu.com ##地址详细解析信息命令

A记录 ##ip地址叫做域名的Address 记录

SOA ##授权起始主机

dns顶级

. 13

次级

.com .net .edu .org ....

baidu.com

关于服务端

bind ##安装包

named ##服务名称

/etc/named.conf ##主配置文件

/var/named ##数据目录

端口 ##53

关于报错信息:

1.no servers could be reached ##服务无法访问(服务开启?火墙?网络?端口?)

2.服务启动失败 ##配置文件写错 journalctl -xe查询错误

3.dig 查询状态

NOERROR ##表示查询成功

REFUSED ##服务拒绝访问

SERVFAIL ##查询记录失败,(dns服务器无法到达上级,拒绝缓存)

NXDOMAIN ##此域名A记录在dns中不存在

2.dns服务的安装与启用

安装

[root@node1 ~]# dnf install bind -y

启用

[root@node1 ~]# systemctl enable --now named
[root@node1 ~]# firewall-cmd --permanent --add-service=dns
[root@node1 ~]# firewall-cmd --reload
[root@node1 ~]# vim /etc/named.conf
11 listen-on port 53 { any; }; ##在本地所有网络接口上开启53端口
19 allow-query { any; }; ##允许查询A记录的客户端列表
34 dnssec-validation no; ##禁用dns检测使dns能够缓存外部信息到本纪
[root@node1 ~]# systemctl restart named

3.高速缓存dns
20 forwarders { 114.114.114.114; };

4.dns的正向解析
[root@node1 ~]# vim /etc/named.rfc1912.zone
zone "westos.com" IN { ##维护的域名
    type master; ##当前服务器位主dns
     file "westos.com.zone"; ##域名A记录文件
     allow-update { none; }; ##允许更新主机列表
};

[root@node1 ~]# cd /var/named/
[root@node1 ~]# cp -p named.localhost westos.com.zone
$TTL 1D #TIME-TO-LIVE(dns地址保存时间长度)
@ IN SOA dns.westos.com. root.westos.com ( #SOA授权起始(Start of Authority)
                             0 ; serial #域名版本序列号
                             1D ; refresh #刷新时间(辅助dns)
                             1H ; retry #重试时间(辅助dns)
                             1W ; expire #过期时间(辅助dns,查询失败过期停止对辅助域名的应答)
                             3H ) ; minimum #A记录最短有效期
                NS      dns.westos.com.
dns             A       192.168.0.20
www             CNAME   westos.a.westos.com. ##规范域名
westos.a        A       192.168.0.111 ##正向解析记录
westos.a        A       192.168.0.112
westos.com.     MX 1    192.168.0.20. ##邮件解析记录

[root@node1 ~]# systemctl restart named

[root@node1 ~]# dig www.westos.com #查询正向解析
[root@node1 ~]# dig -t mx westos.com #邮件解析记录查询

5.dns的反向解析
[root@node1 ~]# vim /etc/named.rfc1912.zones
zone "0.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.0.ptr";
    allow-update { none; };
};

[root@node1 ~]# cd /var/named/
[root@node1 ~]# cp -p named.loopback  192.168.0.ptr
[root@node1 ~]# vim 192.168.0.ptr
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
                                        0 ; serial
                                        1D ; refresh
                                        1H ; retry
                                        1W ; expire
                                        3H ) ; minimum
        NS      dns.westos.com.
dns     A        192.168.0.20
11      PTR     www.westos.com.
12      PTR     bbs.westos.com.
13      PTR     news.westos.com.

[root@node1 ~]# systemctl restart named
测试:
[root@node1 ~]# dig -x 192.168.0.11

6.dns的双向解析

实验环境:

客户端2台

192.168.0网段

172.25.254网段 ##ifconfig ens160 172.25.254.30 netmask 255.255.255.0

服务端1台2个网段的ip

192.168.0.20

172.25.254.20 ##ifconfig ens160 172.25.254.20 netmask 255.255.255.0

在192.168.0网段的客户主机中

vim /etc/resolv.conf

nameserver 192.168.0.20

在172.25.254网段的客户主机中

vim /etc/resolv.conf

nameserver 172.25.254.20

配置方式:

[root@node1 ~]#cd /var/named/
[root@node1 ~]#cp -p westos.com.zone westos.com.inter
[root@node1 ~]#vim westos.com.inter
$TTL 1D@ IN SOA dns.westos.com. root.westos.com (
                                        0 ; serial
                                        1D ; refresh
                                        1H ; retry
                                        1W ; expire
                                        3H ) ; minimum
                NS      dns.westos.com.
dns             A       172.25.254.20
www             CNAME   westos.a.westos.com.
westos.a        A       172.25.254.111
westos.a        A       172.25.254.112
westos.com.     MX 1    172.25.254.20    #mail exchanger

[root@node1 ~]#cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inters
[root@node1 ~]#vim /etc/named.rfc1912.inters
zone "westos.com" IN {
    type master;
    file "westos.com.inter";
    allow-update { none; };
};

[root@node1 ~]#vim /etc/named.conf
#zone "." IN {
## 	type hint;
## 	file "named.ca";
##};
#
##include "/etc/named.rfc1912.zones";
##include "/etc/named.root.key";

view localnet {
 match-clients { 192.168.0.0/24; };
 zone "." IN {
     type hint;
     file "named.ca";
     };
     include "/etc/named.rfc1912.zones";
     include "/etc/named.root.key";
};
view internet {
     match-clients { any; };
     zone "." IN {
     type hint;
     file "named.ca";
 };
     include "/etc/named.rfc1912.inters";
     include "/etc/named.root.key";
};

[root@node1 ~]#systemctl restart named 
测试:
分别在2个网段的主机中作同样域名的地址解析
得到的A记录不同

十.数据库基础

数据库需要的操作:软件仓库搭建完成

安装mariadb

[root@localhost ~]# yum install mariadb-server -y

由于前面安装了docker有的selinux有冲突无法安装mariadb,解决方法:

[root@localhost yum.repos.d]# rpm -qa | grep selinux
libselinux-3.3-6.oe2203sp4.x86_64
libselinux-devel-3.3-6.oe2203sp4.x86_64
python3-libselinux-3.3-6.oe2203sp4.x86_64
selinux-policy-35.5-22.oe2203sp4.noarch
selinux-policy-targeted-35.5-22.oe2203sp4.noarch
[root@localhost yum.repos.d]# rpm -e selinux-policy-targeted-35.5-22.oe2203sp4.noarch --nodeps
[root@localhost yum.repos.d]# rpm -e selinux-policy-35.5-22.oe2203sp4.noarch --nodeps

安全初始化

#启动mariadb
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.25-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> quit
Bye


#安全初始化
[root@localhost ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):    #输入当前数据库免密,没有就直接回车
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n  #是否使用sock访问
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] y  #是否要设定密码
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y   #是否删除匿名用户
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y  #是否禁止root用户远程登录
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y  #是否要删除测试库
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  #是否要重新加载特权表
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!


#更改密码
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.5.25-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> alter user root@localhost identified by 'lee';
Query OK, 0 rows affected (0.001 sec)

改密码

alter user 'root'@'localhost' identified with mysql_native_password by 'redhat';
create database if not exists bbs; 
update mysql.user set host="%" where mysql.user.User="root";

建立用户使用户远程登录

[root@localhost ~]# mysql -u root -plee
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 10.5.25-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

#创建一个可以远程访问的用户,%是让处理本地的主机
MariaDB [(none)]> CREATE USER lee@'%' identified by 'lee';
Query OK, 0 rows affected (0.001 sec)

#创建bbs数据库
MariaDB [(none)]> CREATE DATABASE bbs;
Query OK, 1 row affected (0.000 sec)

#让bbs数据库可以让任何人访问
MariaDB [(none)]> GRANT ALL ON bbs.* TO lee@'%';
Query OK, 0 rows affected (0.001 sec)

#查看lee的权限
MariaDB [(none)]> SHOW GRANTS FOR lee@'%';
+----------------------------------------------------------------------------------------------------+
| Grants for lee@%                                                                                   |
+----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `lee`@`%` IDENTIFIED BY PASSWORD '*9BB439A3A652A9DAD3718215F77A7AA06108A267' |
| GRANT ALL PRIVILEGES ON `bbs`.* TO `lee`@`%`                                                       |
+----------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

MariaDB [(none)]> exit
Bye

#测试,root无法远程访问,lee可以
[root@localhost ~]# mysql -u root -plee -h 172.25.254.130
ERROR 1045 (28000): Access denied for user 'root'@'172.25.254.130' (using password: YES)
[root@localhost ~]# mysql -u lee -plee -h 172.25.254.130
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.5.25-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1982143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8月4号分析:CSGO市场行情如何,给几个操作建议

很多粉丝让我聊聊对近期CSGO饰品市场的看法&#xff0c;那今天就简单聊聊&#xff01; 最近的CSGO市场&#xff0c;从在线人数就可以看出来&#xff0c;这段时间是实打实的流失了很多玩家&#xff0c;就目前这个情况&#xff0c;120万的在线人数里面&#xff0c;至少还有10多万…

sql注入之无列名注入

目录 一、基础知识 二、平替information_schema库 三、无列名注入 3.1 正常无列名查询&#xff1a; 3.2 子查询&#xff1a; 3.3 实战 一、基础知识 我们在注入的过程中很多时候利用的就是information_schema这个库获取 table_schema table_name, column_name这些数据库内…

一键转换语言,五款强大文件翻译软件推荐!

在当今的职场环境中&#xff0c;跨语言沟通已成为常态。无论是与国际客户洽谈业务&#xff0c;还是处理海外项目报告&#xff0c;精准高效的文件翻译能力都是每位职场人士的必备技能。今天&#xff0c;我们就来盘点几款职场人士必备的文件翻译工具。 福昕在线翻译&#xff1a;…

PXE批量安装——————rhel7

实验前准备 什么是PXE&#xff1f; PXE是一种基于网络的启动技术&#xff0c;它集成了在计算机的BIOS或UEFI中&#xff0c;允许计算机从网络服务器下载并启动操作系统或其他软件。 应用场景 无盘工作站&#xff1a;在教育和科研机构中&#xff0c;无盘工作站通过PXE启动操作…

字符串切割split

let obj {} let str "aa占比:17.48%,aa计费占比:0.00%" let arr str.split(,) // [aa占比:17.48%,aa计费占比:0.00%] arr.forEach(item > { let [key,value] item.split(:) obj[key] value }) console.log(obj) //{aa占比: 17.48%, aa计费占比: 0.00%} con…

Markdown文本编辑器:Typora for Mac/win 中文版

Markdown 是一种轻量级的标记语言&#xff0c;它允许用户使用易读易写的纯文本格式编写文档。Typora 支持且仅支持 Markdown 语法的文本编辑&#xff0c;生成的文档后缀名为 .md。 这款软件的特点包括&#xff1a; 实时预览&#xff1a;Typora 的一个显著特点是实时预览&#x…

lombok安装成功但是找不到方法

2024.1.1版本的IDE的插件安装了默认的lombok&#xff08;如图1&#xff09;&#xff0c;pom文件中也引入了lombok的依赖&#xff0c;在实体类写了Data的注解&#xff0c;当调用实体类的get和set方法运行时&#xff0c;报错找不到相应的方法&#xff0c;但是在调用get、set方法的…

Java实现全局异常统一处理

Java实现全局异常统一处理 【一】介绍【二】为什么要使用全局异常处理【三】案例实现【1】GlobalException【2】GlobalExceptionHandler【3】使用 【一】介绍 全局异常处理器是一种在应用程序中几种处理异常的机制&#xff0c;它允许在应用程序的任何地方抛出异常时&#xff0…

2024年6月scratch图形化编程等级考试一级真题

202406 scratch编程等级考试一级真题 选择题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 1、音乐Video Game1的时长将近8秒&#xff0c;点击一次角色&#xff0c;下列哪个程序不能完整地播放音乐两次 A、 B、 C、 D、 答案&#xff1a;D 考点分…

CasaOS系统小主机Docker部署memos结合内网穿透打造私有云笔记

文章目录 前言1. 使用Docker部署memos2. 注册账号与简单操作演示3. 安装cpolar内网穿透4. 创建公网地址5. 创建固定公网地址 前言 本文主要介绍如何在CasaOS轻NAS系统设备中使用Docker本地部署开源云笔记服务memos&#xff0c;并结合cpolar内网穿透工具配置公网地址&#xff0…

STL-queue容器适配器

目录 一、queue 1.1 使用 1.2 模拟实现 二、priority_queue 2.1 使用 2.2 仿函数 2.2.1 概念 2.2.2 使用 2.3 模拟实现 一、queue 1.1 使用 具体解释详见官方文档&#xff1a;queue - C Reference (cplusplus.com) queue就是数据结构中的队列&#xff1a;数据结构之…

体系结构论文导读(三十四):Design of Reliable DNN Accelerator with Un-reliable ReRAM

文章核心 这篇文章主要讨论了一种在不可靠的ReRAM&#xff08;阻变存储器&#xff09;设备上设计可靠的深度神经网络&#xff08;DNN&#xff09;加速器的方法。文章提出了两种关键技术来解决ReRAM固有的不可靠性问题&#xff1a;动态定点&#xff08;DFP&#xff09;数据表示…

日撸Java三百行(day14:栈)

目录 一、栈的基本知识 1.栈的概念 2.栈的功能 3.栈的实现 二、栈的代码实现 1.栈的基本属性与方法 2.栈的遍历 3.入栈实现 4.出栈实现 5.数据测试 6.完整的程序代码 总结 一、栈的基本知识 1.栈的概念 根据百度百科&#xff0c;我们知道“栈”是存储货物或供旅客…

小怡分享之Java图书管理系统

前言&#xff1a; &#x1f308;✨前面小怡给大家分享了抽象类和接口&#xff0c;今天小怡给大家分享用Java实现图书管理系统。 1.功能 不同的用户看到的菜单是不一样的&#xff0c;我们分为两个用户身份&#xff0c;管理员和普通用户。 2.知识点 数据类型、变量、数组、方法…

跳妹儿学编程之ScratchJr(12):综合篇-五只小猴子床上跳

博主资深软件架构师&#xff0c;拥有13年大型软件与互联网系统开发、设计和架构经验&#xff0c;曾就职于华为&#xff0c;现任职于国内知名互联网公司。平时在家教咱家“跳妹儿”编程&#xff0c;并将心得和过程记录下来。希望可以帮助更多对编程感兴趣的家庭。 引言 在前面的…

略读ArrayList源码

ArrayList是Java集合框架中的一部分&#xff0c;底层是通过数组实现的&#xff0c;可以动态增长和缩减。 一、首先看成员变量 序列化ID定义。在Java中&#xff0c;如果一个类实现了Serializable接口&#xff0c;那么它的serialVersionUID就非常重要了。serialVersionUID用于确…

Cesium初探-CallbackProperty

在Cesium中&#xff0c;CallbackProperty 是一种非常有用的特性&#xff0c;可以用来动态更新实体的属性&#xff0c;如位置、方向、高度等。CallbackProperty 允许你在指定的时间点计算属性值&#xff0c;这样就可以实时地改变实体的状态而不需要频繁地重新设置整个属性。 下…

PCIe学习笔记(16)

层次结构&#xff08;Hierarchy&#xff09;ID Message &#xff08;PCIe I/O 互连的树形拓扑结构称为 PCIe 的 Hierarchy&#xff0c;或称层级、层次&#xff08;不是事务层、数据链路层的“层”&#xff09;。层次区域是指与 RC 某一 RP 相关联的所有设备和链路组成的线路结…

【Linux课程学习】:对于权限的理解(粘滞位)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 这篇文章主要理解权限的概念&#xff0c;以及如何更改…

CSS:图片间空白间距问题的解决方案

一、问题描述 今天有小伙伴遇到多张图片排版显示时中间存在空白间隙&#xff0c;问如何处理&#xff1a; <div> <img width"100%" src"https:/xxx.png" id"1747098" style"max-width:100%;"><img width"100%&qu…