引导过程和服务控制

news2024/11/26 0:45:54

目录

一.Linux操作系统的引导过程

1.开机自检(BIOS):

2.MBR引导:

3.启动GRUB菜单:

4.加载Linux内核

5.init进程初始化

二.系统初始化进程

1.init 进程

2.Systemd 

2.1 systemd 概述

2.2 Systemd 与 传统 SysVinit 的比较

3.Systemd 单元类型

4.运行级别所对应的 Systemd 目标

三.排除启动类故障

1.修复MBR扇区故障

2.故障现象

3.解决思路

4.操作实验

5.遗忘 root 用户的密码,修改密码

第一种:

第二种:

三.系统服务控制

1.控制类型

2.Linux的运行级别

3.系统服务的启动和控制

一.Linux操作系统的引导过程

上图是操作系统引导的五个主要步骤

1.开机自检(BIOS):

服务器开机以后,会根据主板BIOS中的设置对CPU、内存、显卡、等设备进行检测,检测成功

后,可以找出可以引导系统的设备,大多是硬盘设备;然后移交控制权。

2.MBR引导:

从本地硬盘启动系统后,根据硬盘第一个扇区中MBR(主引导记录)的设置,会根据MBR 记录中

的引导信息调用启动GRUB菜单(CentOS-7采用的是grub2启动引导器)。

3.启动GRUB菜单:

GRUB引导程序通过读取GRUB配置文件(文件位置/boot/grub2/grub.cfg),来获取内核和镜像文件系统的设置和路径位置,并在屏幕显示GRUB菜单页面。

4.加载Linux内核

Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。加载Linux内核后,内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程(CentOS 7,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”)。

5.init进程初始化

Linux内核会将 init 进程加载到内存中运行,并把 init 进程作为系统的第一个进程,负责完成整个系统的初始化;最后等待用户进行登录。

二.系统初始化进程

1.init 进程

(1)由Linux 内核加载运行  /sbin/init  程序

(2)init   进程是系统中的第一个进程,是所有进程的父进程

(3)init  进程的PID(进程标记)号永远为1

2.Systemd 

2.1 systemd 概述

(1)Systemd 是Linux操作系统的一种 init 软件

(2)CentOS 7中采用全新的 Systemd 启动方式,取代传统的SysVinit 

(3)CentOS 7中运行的第一进程是 /lib/systemd/systemd

拓展:pstree 是一个在 Unix 和类 Unix 系统(如 Linux)中常用的命令行工具,用于显示进程的树状结构。

pstree -p:显示每个进程的 PID(进程 ID)。
pstree -u:显示每个进程的所属用户

2.2 Systemd 与 传统 SysVinit 的比较

传统SysVinit(CentOS7以前的版本):对于进/程的管理是串行执行 Shell 脚本启动服务,容易出现阻塞情况,导致效率低下,系统启动速度较慢。

Systemd(CentOS7开始的版本):能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度。

3.Systemd 单元类型

单元类型扩展名说明
Service.service

描述一个系统服务

Socket.socket描述一个进程间通信的套接字
Device.device描述一个内核识别的挂载点
Automount.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或交换文件
Path.path描述一个文件系统中的文件或目录
Timer.timer描述一个定时器(用于实现类似cron的调度任务)
Snapshot.snapsho用于保存一个 systemd 的状态
Scope.scope使用 systemd 的总线接口一编程的方式创建外部进程
Slice.slice描述居于 Cgroup 的一组通过层次组织的管理系统进程
Target.target描述一组 systemd 的单元

常用的是 .service 和 .target 两种单元类型 

拓展:套接字:应用程序直接的数据连接文件;套接字格式:ip:port    ftp  IP地址:端口号

4.运行级别所对应的 Systemd 目标

运行级别Systemd的target说明
0poweroff.target关机状态,使用该级别时将会关闭主机
1rescue.target单用户模式,不需要密码验证即可登录系统,多用于系统维护
2multi-user.target用户定义/域特定运行级别。默认等同于3(无网络)
3multi-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别
4multi-user.target用户定义/域特定运行级别。(保留的,没有任何作用的)
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境
6reboot.target重新启动,使用该级别时将会重启主机

拓展:

init 0 关机命令;init 6 重启命令;init 3 可以切换到字符界面

三.排除启动类故障

1.修复MBR扇区故障

(1)病毒、木马等造成的破坏

(2)不正确的分区操作、磁盘毒读写误操作 

2.故障现象

(1)找不到引导程序,启动中断

(2)无法加载操作系统,开机后黑屏

3.解决思路

(1)应提前作好备份文件

(2)以安装光盘引导进入急救模式

(3)从备份文件中恢复

4.操作实验

(1)第一种:利用提前备份的文件进行复原系统

【1】先做备份,添加一块新硬盘

1.添加一块硬盘后重启主机,作为备份使用,先切换到/opt/目录中创建mbr-bak
[root@192 ~]# cd /opt/
[root@192 opt]# mkdir mbr-bak
[root@192 opt]# ls -l
总用量 0
drwxr-xr-x. 2 root root 21 4月  17 19:42 mbr-bak
drwxr-xr-x. 2 root root  6 10月 31 2018 rh

2.对磁盘进行分区后,格式化磁盘后,创建 xfs 文件系统,在进行挂载/opt/mbr-bak/ 
磁盘分区直接全部默认,保存即可,不用创建分区类型ID

[root@192 ~]# mkfs -t xfs /dev/sdb1               #格式化并创建文件系统xfs  
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@192 ~]# mount /dev/sdb1 /opt/mbr-bak/       #将 /opt/mbr-bak 挂载到磁盘上
[root@192 ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        36G  4.4G   32G   13% /
/dev/sda1               xfs       509M  181M  329M   36% /boot
tmpfs                   tmpfs     378M   20K  378M    1% /run/user/0
/dev/sr0                iso9660   4.5G  4.5G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb1               xfs        20G   33M   20G    1% /opt/mbr-bak

3.对 /dev/ada 中的MBR主引导程序进行复制到 /opt/mbr-bak/mbr.bak 文件中(文件名自取)
[root@192 ~]# dd if=/dev/sda of=/opt/mbr-bak/mbr.bak bs=512 count=1    
记录了1+0 的读入                         #进行复制,大小512字节就即可
记录了1+0 的写出
512字节(512 B)已复制,0.000154789 秒,3.3 MB/秒
[root@192 ~]# cd /opt/mbr-bak/          #切换到指定目录上
[root@192 mbr-bak]# ll -h               #查看文件是否已经复制上
总用量 4.0K
-rw-r--r--. 1 root root 512 4月  17 19:42 mbr.bak   #512字节,复制成功

                             到此文件备份完成

【2】模拟破环文件中的数据

模拟破坏;输入内容到文件/dev/sda 中,将MBR主引导程序覆盖,造成文件丢失
[root@192 mbr-bak]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000131934 秒,3.9 MB/秒

破环后,进行重启设备;进入下面界面;发现需要重新安装系统;重启后,进入不了系统。

有光盘和无光盘的界面如下显示:

【3】如果想要恢复系统的方法:操作如下

把光盘挂载到设备中,在界面中选择急救模式;

此后输入重启命令(reboot 或者 init 6)即可;等待一会后就可以进入系统

(2)第二种:利用grub2进行文件恢复

【1】模拟 grub.cfg 文件被误删;不重启没事,重启后进入不了系统

[root@192 ~]# cd /boot/              #进入boot目录
[root@192 boot]# ls                  #查看文件
config-3.10.0-1160.71.1.el7.x86_64                       initramfs-3.10.0-1160.71.1.el7.x86_64kdump.img
efi                                                      symvers-3.10.0-1160.71.1.el7.x86_64.gz
grub                                                     System.map-3.10.0-1160.71.1.el7.x86_64
grub2                                                    vmlinuz-0-rescue-206e0447c56247938052c02b1cdfaa71
initramfs-0-rescue-206e0447c56247938052c02b1cdfaa71.img  vmlinuz-3.10.0-1160.71.1.el7.x86_64
initramfs-3.10.0-1160.71.1.el7.x86_64.img
[root@192 boot]# cd grub2/
[root@192 grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  locale
[root@192 grub2]# rm -rf /boot/grub2/grub.cfg        #删除指定文件grub.cfg
[root@192 grub2]# ls
device.map  fonts  grubenv  i386-pc  locale

【2】有两种方法可以恢复系统

第一种:手动敲入配置文件里面的配置信息(一般不建议使用,进入后只能手打,无法TAB快速补充)

基本配置如下所示:

grub> insmod xfs					#加载指定的模块到内核
grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet LANG=zh_CN.UTF-8										#内核的名字及位置等信息
grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img			#镜像系统文件
grub> boot							#引导boot

第二种:进入急救模式,恢复GRUB引导程序

也有两种方法进入急救模式

第1种:关机选择进入固件

之后就可以进入到急救模式界面

第2种:重启之后快速按 esc 键

进入急救模式后准备修复grub配置文件

之后即可登录账户

5.遗忘 root 用户的密码,修改密码

第一种:

进入急救模式

重启后,正常进入系统,按修改后的密码进入账户

第二种:

在重启之后,进入以下这个界面

CTRL + X 之后进入这个界面,修改root密码即可

如果SELinux没有关闭,则还需要输入这两条命令

touch /.autorelabel
exec /sbin/init

这样子就可以修改root密码了

三.系统服务控制

systemctl 控制类型 服务名称

1.控制类型

start      启动
stop       停止
restart    重新启动
reload     重新加载
status     查看服务状态

要确保在 /usr/lib/systemd/system/ 目录中有相关服务的 XXX.service 文件才能查看器服务状态

 (1)systemctl start 服务

[root@192 ~]# systemctl start firewalld          #开启防火墙
[root@192 ~]# systemctl status firewalld         #查看防火墙服务情况 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2024-04-17 23:03:48 CST; 2s ago
     Docs: man:firewalld(1)
 Main PID: 3608 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─3608 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...ame.
4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...ame.
4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:03:48 192.168.80.90 firewalld[3608]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
Hint: Some lines were ellipsized, use -l to show in full.

 (2)systemctl stop 服务

[root@192 ~]# systemctl stop firewalld           #停止防火墙
[root@192 ~]# systemctl status firewalld         #查看防火墙服务情况
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 三 2024-04-17 23:03:11 CST; 18s ago
     Docs: man:firewalld(1)
  Process: 807 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 807 (code=exited, status=0/SUCCESS)

4月 17 20:42:13 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
4月 17 20:42:13 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
4月 17 20:42:13 localhost.localdomain firewalld[807]: WARNING: AllowZoneDrifting is enabled. This is cons...ow.
4月 17 23:03:11 192.168.80.90 systemd[1]: Stopping firewalld - dynamic firewall daemon...
4月 17 23:03:11 192.168.80.90 systemd[1]: Stopped firewalld - dynamic firewall daemon.
Hint: Some lines were ellipsized, use -l to show in full.

 (3)systemctl restart 服务

[root@192 ~]# systemctl restart firewalld               #重启防火墙(无论开还是关着)
[root@192 ~]# systemctl status firewalld                #查看防火墙服务状态
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2024-04-17 23:04:20 CST; 3s ago
     Docs: man:firewalld(1)
 Main PID: 3805 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─3805 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...ame.
4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...ame.
4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
4月 17 23:04:20 192.168.80.90 firewalld[3805]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -w --ta...n?).
Hint: Some lines were ellipsized, use -l to show in full.

(4)systemctl reload 服务(大部分服务都可以适用,少部分不支持)

(5)systemctl is -active 服务也可以查看服务的开启状态,不过便只能看见开启和关闭状态

[root@192 ~]# systemctl is-active firewalld.service 
active
[root@192 ~]# systemctl stop firewalld
[root@192 ~]# systemctl is-active firewalld.service 
inactive

拓展:

在CentOS-6 及以前的版本使用 servie 命令来查看服务开启和关闭状态

要确保在 /etc/init.d/ 目录中有相关服务的管理脚本文件才能管理服务

2.Linux的运行级别

(1)查看运行级别

runlevel命令   只能查看切换运行级别与当前运行级别
systemctl工具  只能查看默认的运行级别
[root@192 ~]# runlevel
N 5
[root@192 ~]# systemctl get-default 
graphical.target

(2)设置运行级别

init 命令 命令参数是运行级别对应的数字
例如格式
init 3
init 5
systemctl 工具  命令参数是具体的target
[root@192 ~]# systemctl isolate multi-user.target
[root@192 ~]# systemctl set-default graphical.target   #永久设置运行级别
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@192 ~]# systemctl get-default                #查看运行级别
graphical.target

[root@192 ~]# systemctl set-default multi-user.target   #永久设置运行级别
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@192 ~]# systemctl get-default 
multi-user.target

和
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
功能是一样的

3.系统服务的启动和控制

(1)ntsysv 系统服务管理工具:

ntsysv          #图形化管理开机自启

ntsysv --level  级别列表

(2)服务开机自启管理

systemctl is-enabled 服务

systemctl  disabled 服务

--now选项可实现立即开启|关闭服务

systemctl is-enabled 服务名[.service]   #查看是否启动
[root@192 ~]# systemctl is-enabled firewalld.service 
enabled

[root@192 ~]# systemctl disable firewalld.service 
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@192 ~]# systemctl is-enabled firewalld.service 
disabled

(3)chkconfig 工具

chkconfig --add 服务名                                       #服务名就是 /etc/init.d/ 目录下的脚本文件名
chkconfig --level 运行级别列表  服务名  on|off   #开启|关闭服务在哪些运行级别下开机自启
chkconfig --list 服务名                                         #查看自启状态

服务名要和 /etc/init.d 下的脚本名保持一致

(4)扩展知识

永久修改主机名
hostnamectl set-hostname newname
查看主机名的状态
hostnamectl status 

设置系统语言为中文
localectl set-locale LANG=zh_CN.utf8
查看当前系统使用的语言
localectl [status]

字符集编码
ASCII  127个字符   
GBK    中国字符集编码   
UTF-8  万国字符集编码

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

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

相关文章

设计千万级并发系统架构需要考虑的各方面因素

设计千万级并发系统架构需要考虑多方面因素,包括系统的可伸缩性、高可用性、性能、安全性等。 1、分布式架构: 使用微服务架构:将系统拆分成多个独立的服务,每个服务都可以独立部署和扩展。 使用分布式服务框架:如S…

Unity类银河恶魔城学习记录12-11 P133 Merge Skill Tree with Parry skill源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Parry_Skill.cs using UnityEngine; using UnityEngine.UI;public class P…

Python多态

1.多态 多态定义:多态(polymorphism)是指同一个方法调用由于对象不同可能会产生不同的行为 注意以下2点: 1.多态是方法的多态,属性没有多态。 2.多态的存在有2个必要条件:继承、方法重写 class Animal:de…

LearnOpenGl练习题-着色器

LearnOpenGl练习题-着色器 题目地址:着色器 - LearnOpenGL CN 题目一:修改顶点着色器让三角形上下颠倒: #version 330 core layout (location 0) in vec3 aPos; layout (location 1) in vec3 aColor; out vec3 ourColor; void main() {gl…

openEuler 22.03 LTS SP3源码编译部署OpenStack-Bobcat(Neutron使用OVN)

openEuler 22.03 LTS SP3部署OpenStack-Bobcat 说明机器详情安装操作系统注意事项基础准备Controller节点 && Compute节点 && Block节点关闭防火墙关闭selinux设置静态IP更新安装前准备Controller节点 && Compute节点 && Block节点设置主机名配…

简单认识Git(dirsearch、githack下载),git泄露(ctfhub)

目录 dirsearch下载地址: githack下载(一次不成功可多试几次) 一、什么是Git 1.git结构 2.git常用命令及示例 3.Git泄露原理 二、Git泄露 1.Log 2.Stash 3.Index 工具准备:dirsearch、githack dirsearch下载地址: GitHub - mauroso…

配置流策略实现不同网段间限制互访

在创建了 vlanif 接口并配置 IP 地址后,不同 vlan 间就可以互通了。 如果我们想要限制vlan 之间的通信,就可以通过配置流策略实现。 配置步骤(以华为交换机为例) 1、ACL 定义拒绝通过的数据流 2、定义流分类,按照ACL 对报文进行分类 3、配置流行为,动作为deny 4、配置流…

计算机不联网是否有IP地址

计算机不联网是否会有IP地址,这个问题涉及到计算机网络的基础知识。要深入探讨这个问题,我们需要从IP地址的定义、作用,以及计算机在不联网状态下的网络配置等多个方面进行分析。 首先,IP地址(Internet Protocol Addre…

深度学习——常用激活函数解析与对比

1、 简介 在神经网络中,激活函数扮演着至关重要的角色。它们的主要目的是引入非线性因素,使得网络能够学习和表示更加复杂的函数映射。以下是激活函数应具备的特点,以及这些特点为何重要的详细解释: 引入非线性有助于优化网络&am…

求奖金(if)(C语言)

一、N-S流程图&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int I 0;float bonus 0;//提示用户&#xff1b;printf("请输入利润I&#xff1a;");//获取用户值&#xf…

怎么给一个字典进行按值或key来排序?

字典是具有指定数字或键的特定数据集或组。在 Python 以外的编程语言中&#xff0c;它们也被称为哈希映射或关联数组。 一般来说&#xff0c;它是键值对的形式&#xff0c;就像现实世界的字典一样。 要创建字典&#xff0c;请从左括号开始&#xff0c;添加键并键入一个冒号。…

SpringBoot 项目Docker部署三种方式

一种&#xff1a;直接拷贝jar到服务器部署 1.增加docker配置文件 新建Dockerfile文件&#xff0c;负责Docker的配置 FROM openjdk:21#ENV timezone RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo Asia/Shanghai >/etc/timezone# WORKD…

[2021最新]Java时间戳和日期时间互转换

代码&#xff1a; import java.text.ParseException; import java.text.SimpleDateFormat;public class MainProcess {public static void main(String[] args) throws ParseException {// 1.set formatSimpleDateFormat timeSmat new SimpleDateFormat("yyyy-MM-dd HH:…

【Jupyter Notebook】快捷键

在命令模式下&#xff0c;单元格边框是灰色&#xff08;缺省&#xff09;的。这些快捷键主要用于操作单元格。 Enter&#xff1a;进入编辑模式Shift Enter&#xff1a;运行当前单元格并选中下一个单元格Ctrl Enter&#xff1a;运行当前单元格Alt Enter&#xff1a;运行当前单…

高效生产管理:选择顺通网络ERP系统派单的理由

显然&#xff0c;传统的生产管理模式已经难以满足现代企业的需求&#xff0c;因此选择一款适合自身业务特点的生产管理软件成为了企业的当务之急。顺通鞋业ERP系统作为一款功能强大的生产管理软件&#xff0c;凭借其出色的派单功能&#xff0c;正逐渐成为众多企业的首选。通过系…

DBA-现在应该刚刚入门吧

说来话长 在2023年以前&#xff0c;我的DBA生涯都是“孤独的”。成长路径除了毕业前的实习期有人带&#xff0c;后续几乎都是靠自学。如何自学&#xff0c;看视频、看文档、网上查阅资料、项目实战。 可能是学疏才浅 &#xff0c;一直都是在中小公司混&#xff0c;在中小公司通…

MYSQL09_行格式概述、变长字段、NULL值、记录头信息、真实数据、内部结构

文章目录 ①. InnoDB - 行格式概述②. 变长字段长度列表 ③. NULL值列表④. 记录头信息5字节⑤. 记录的真实数据⑥. Compact行记录的内部结构⑦. Dynamic和Compressed行格式 ①. InnoDB - 行格式概述 ①. 我们平时的数据以行为单位来向表中插入数据,这些记录在磁盘上的存放方式…

PostgreSQL的学习心得和知识总结(一百三十八)|深入理解PostgreSQL数据库之Protocol message构造和解析逻辑

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

09-ESP32-IDF中的日志系统

ESP32-IDF中的日志系统 在ESP32-IDF中&#xff0c;日志系统是一个重要的组成部分&#xff0c;它可以帮助开发者调试代码和理解系统的运行状态。 1. 日志系统的作用 日志系统在ESP32-IDF中扮演着非常重要的角色。它可以记录系统的运行信息&#xff0c;包括系统启动、运行、错…

OSPF笔记+大实验

OSPF综合大实验---实验报告 配置IP地址 R1&#xff1a; [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 172.16.33.1 24 [R1-GigabitEthernet0/0/0]int l0 [R1-LoopBack0]ip add 172.168.34.1 24 R2: [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ip add 172.16.33.2 24…