当前位置: 首页 > news >正文

引导过程与服务控制

文章目录

    • 一、Linux操作系统引导过程
      • 1、开机启动的完整过程
        • 1.1 开机自检(BIOS)
        • 1.2 MBR引导
        • 1.3 GRUB菜单
        • 1.4 加载内核(kernel)
        • 1.5 init进程初始化
      • 2、系统初始化进程
        • 2.1 init进程
        • 2.2 systemd
          • init与systemd区别
      • 3、Systemd单元类型
      • 4、运行级别所对应的Systemd目标
    • 二、故障处理
      • 1、service unit文件格式
        • 1.1 unit 格式说明
        • 1.2 service unit file文件通常由三部分组成
        • 1.3 Unit段的常用选项
        • 1.4 Service段的常用选项
        • 1.5 Install段的常用选项
        • 1.6 编译安装nginx-systemctl
          • 编译安装nginx,然后用systemctl管理(图文详解)
      • 2、修复MBR扇区故障
        • 2.1 故障原因
        • 2.2 故障现象
        • 2.3 解决思路
        • 2.4 故障模拟及处理过程
          • 修复MBR扇区故障(图文详解)
      • 3、修复GRUB引导故障
        • 3.1 故障原因
        • 3.2 故障现象
        • 3.3 解决思路
        • 3.4 故障模拟及处理过程
          • 修复GRUB引导故障(图文详解)
      • 4、遗忘root用户密码
        • 4.1 故障原因
        • 4.2 故障现象
        • 4.3 解决思路
        • 4.4 故障模拟及处理过程
          • 修改root用户密码(图文详解)
    • 三、Linux系统服务控制
      • 1、系统服务控制
        • 1.1 格式:systemctl 控制类型 服务名称
        • 1.2 控制类型
    • 四、Linux系统运行级别切换
      • 1、查看运行级别
        • 1.1 runlevel命令:runlevel只能查看切换运行级别与当前运行级别
        • 1.2 systemctl工具
      • 2、临时切换运行级别
        • 2.1 init命令
        • 2.2 systemctl工具
        • 2.3 init与systemctl对应表
      • 3、查看系统默认级别
      • 4、设置临时运行级别
        • 格式:chkconfig --list [服务名称]
      • 5、设置永久运行级别
    • 五、优化开机自动加载服务
      • 1、优化启动过程
        • 1.1 ntsysv工具
        • 1.2 systemctl/chkconfig工具
      • 2、系统服务的启动和控制
        • 2.1 ntsysv系统服务管理工具
      • 3、命令补充

一、Linux操作系统引导过程

1、开机启动的完整过程

  • BIOS加电自检 ---- MBR — GRUB — 加载内核文件 — 启动进程

加电后BIOS程序会自检硬件,硬件无故障后,会根据第一启动项去找内核,一般来说第一启动项是硬盘,找到硬盘后,会根据MBR的指引找到完整的GRUB程序,再根据grub的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后会启动第一个程序

BIOS:检测硬件是否正常,然后根据BIOS中的启动项设置,去找内核文件

1.1 开机自检(BIOS)

服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘

总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱

1.2 MBR引导
  • 指引硬件找到内核文件

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区,或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB)

总结:运行放在MBR扇区里的启动GRUB引导程序(因为grub程序启动太大,第一个扇区存不下所有的grub程序,所以分为两部分)

1.3 GRUB菜单
  • 根据grub配置文件(grub.cfg)中记录的位置,去找到内核文件

对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权移交给内核。

CentOS 7采用的是GRUB2启动引导器。

总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置

1.4 加载内核(kernel)

Linux内核是一个预先编译号的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程

CentOS 7系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.e17.x86_64”

总结:把内核和镜像文件系统加载到内存中

1.5 init进程初始化

为了完成进一步的系统引导过程,Linux内核首先将系统中的额“/sbin/init”程序加载到内核中运行(运行中的程序称为进程),init集成负责完成整个系统的初始化,最后等待用户进行登录

总结:加载硬件驱动程序,内核把init进程加载到内存中运行

2、系统初始化进程

2.1 init进程

①、由Linux内核加载运行/sin/init程序

②、init进程是系统中第一个进程,是所有进程的父程序

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

2.2 systemd
  • systemd是系统的级程序,代为管理系统上的程序

①、systemd是Linux操作系统的一种init软件

②、CentOS 7中采用全新的Systemd启动方式,取代传统的SysVinit

③、CentOS 7中运行的第一个init进程是/lib/systemd/systemd

注:传统SysVinit依赖于串行执行Shell脚本启动服务,导致效率低下,系统启动速度较慢,systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度。

  • centos6:启动init(串行启动后续程序,一个一个按顺序启动)

  • centos7:启动systemd(并行启动程序,全部一起启动)

    init与systemd区别
    1. init:串行启动后续程序,一个一个按顺序启动
    2. systemd:并行启动程序,全部一起启动

systemd方便管理程序,将程序按照特定的功能分成了很多特定的单元(如:服务单元,文件路径单元,挂载单元等)

  • yum以及rpm安装的软件可以直接使用systemd去启动、关闭、重启、开机自启等功能,
  • 编译安装不可以直接使用systemctl命令去管理程序,需要手写一个配置文件

3、Systemd单元类型

img

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

  • 0—关机
  • 1—单用户(类似于windows的急救模式)
  • 2—字符界面(少一些功能)
  • 3—字符界面(默认)
  • 4—字符界面(没有使用)
  • 5—图形界面
  • 6—重启

img

runlevel    #查看当前运行级别systemctl  get-default    #查看默认的运行级别systemctl  set-default    #设置默认的级别target    #关机rescue.target    #单用户multi-user.target    #字符界面graphical.target    #图形界面reboot.target    #重新启动

二、故障处理

1、service unit文件格式

1.1 unit 格式说明
  • 以 “#” 开头的行后面的内容会被认为是注释
  • 相关布尔值,1、yes、on、true 都是开启,0、no、off、false 都是关闭
  • 时间单位默认是秒,所以要用毫秒(ms)分钟(m)等须显式说明
1.2 service unit file文件通常由三部分组成
  • [Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
  • [Service]:与特定类型相关的专用选项;此处为Service类型
  • [Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项
1.3 Unit段的常用选项
  • Description:描述信息
  • After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
  • Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
  • Wants:依赖到的其它units,弱依赖
  • Conflicts:定义units间的冲突关系
1.4 Service段的常用选项
  • Type:定义影响ExecStart及相关参数的功能的unit进程启动类型

    1. simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中
    2. forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止
    3. oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中
    4. dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因此通常也要同时设定BusNname= 才行
    5. notify:在启动完成后会发送一个通知消息。还需要配合 NotifyAccess 来让 Systemd 接收消息
    6. idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务
  • EnvironmentFile:环境配置文件

  • ExecStart:指明启动unit要运行命令或脚本的绝对路径

  • ExecStartPre: ExecStart前运行

  • ExecStartPost: ExecStart后运行

  • ExecStop:指明停止unit要运行的命令或脚本

  • Restart:当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务

  • RestartSec: 设置在重启服务( Restart= )前暂停多长时间。 默认值是100毫秒(100ms)。 如果未指

  • 定时间单位,那么将视为以秒为单位。 例如设为"20"等价于设为"20s"。

  • PrivateTmp:设定为yes时,会在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/目录

1.5 Install段的常用选项

Alias:别名,可使用systemctl command Alias.service

RequiredBy:被哪些units所依赖,强依赖

WantedBy:被哪些units所依赖,弱依赖

Also:安装本服务的时候还要安装别的相关服务

1.6 编译安装nginx-systemctl
cd  /opt
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf   nginx-1.18.0.tar.gz
cd  nginx-1.18.0
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel mkdir /data/nginx -p    
./configure   --prefix=/data/nginx
make
make  installln -s /data/nginx/sbin/nginx   /usr/sbin/nginx 
#做软链接   可以补全  vim  /usr/lib/systemd/system/nginx.service[Unit]
Description=The nginx HTTP and reverse proxy server    #描述软件的功能[Service]
PIDFile=/data/nginx/logs/nginx.pid    # 方便使用pid号进行操作,指明进程的pid号
ExecStart=/data/nginx/sbin/nginx     #使用绝对路径启动
ExecStop=/usr/bin/kill -s TERM $MAINPID     #杀死进程
ExecReload=/data/nginx/sbin/nginx -s reload     #重新加载[Install]
WantedBy=multi-user.target     #安装字符界面systemctl  daemon-reload     #重新加载服务的配置文件systemctl  start  nginx      #开启systemctl status nginx      #查看状态
编译安装nginx,然后用systemctl管理(图文详解)

image-20240102212859734

image-20240102213209569

image-20240102214058543

image-20240102214616948

2、修复MBR扇区故障

2.1 故障原因
  • 病毒、木马等造成的破坏
  • 不正确的分区操作、磁盘读写误操作
2.2 故障现象
  • 找不到引导程序,启动中断

  • 无法加载操作系统,开机后黑屏

2.3 解决思路
  • 应提前做好备份文件

  • 以安装光盘引导进入急救模式

  • 从备份文件中恢复

2.4 故障模拟及处理过程

MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节

①、备份MBR扇区数据到其他磁盘(/dev/sdb1)

mkdir /backupmount /dev/sdb /backupdd if=/dev/sda  of=/backup/mbr.bak bs=512 count=1

②、模拟破坏MR引导扇区

 dd if=/dev/zero  of=/dev/sda bs=512 count=1

③、应道界面进入急救模式,从备份文件中国灰度MBR扇区数据

先加载好光盘镜像,重启操作系统当出现安装向导界面时,选择“Troubleshooting”选项再选择“Rescue a CentOS system”选项,进入急救模式
1111
选择“1”选择Continue并按Enter键继续在此按Enter键后将进入带“sh-4.2#”提示符的Bash Shell环境sh-4.2# mkdir /backupdirsh-4.2# mount/dev/sdb /backupdir      #挂载带有备份文件的分区sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda     #恢复备份数据sh-4.2# hexdump -C -n 512 /dev/sda       #查看字节(字节恢复正常后,重新启动系统即可恢复)
修复MBR扇区故障(图文详解)

image-20240102230855980

image-20240102231507104

image-20240102232006534

image-20240102232244263

image-20240102232802383

image-20240102232827067

image-20240102233040065

image-20240102234956584

image-20240102235204261

image-20240102235324229

image-20240102235403314

3、修复GRUB引导故障

3.1 故障原因

①、MBR中的GRUB引导程序遭到破坏

②、grub.conf文件丢失、引导配置有误

3.2 故障现象

系统引导停滞,显示“grub>”提示符

3.3 解决思路

①、尝试手动输入引导命令

②、进入急救模式,重写或者从备份中恢复grub.conf

③、向MBR扇区中重建grub程序

3.4 故障模拟及处理过程

/boot/grub/目录下的包是用于启动菜单的背景图片及样式

/boot/grub2/grub.cfg #GRUB配置文件

方法一:手动输入引导命令(笨拙繁琐,不建议使用)

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

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

MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节,前446字节是主引导记录,分区保存在MBR扇区中的第447-510字节中

①、备份数据到其他磁盘中

mkdir /bakmonut /dev/sdb1 /bakdd if=/dev/sda of=/bak/grub.bak bs=446 count=1

②、模拟对MBR中的GRUB引导程序的破坏,但并不破坏分区表

  dd if=/dev/zero of=/dev/sda bs=446 count=1

③ 引导界面进入急救模式,从备份文件中恢复GRUB引导程序

sh-4.2# mkdir /backupdirsh-4.2# mount/dev/sdb1 /backupdir    #挂载带有备份文件的分区sh-4.2# dd if=/backupdir/grub.bak of=/dev/sda     #恢复备份数据sh-4.2# exit     #执行exit命令退出临时Shell环境,系统将会自动重启

方法三:引导界面进入急救模式,重建GRUB菜单配置文件

mv /boot/grub2/grub.cfg /opt       #先模拟破坏grub.cfg配置文件重启进入急救模式 321sh-4.2# chroot /mnt/sysimage     #先切换根,从光盘的根切换到系统的根bash-4.2# grub2-install /dev/sda     #重新将GRUB引导程序安装到第一块硬盘(/sev/sda)的MBR扇区,(如果有多个分区可省略)bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg     #重新生成GRUB菜单的配置文件bash-4.2# exit     #退出chroot环境sh-4.2# reboot     #重启
修复GRUB引导故障(图文详解)

image-20240103000341453

image-20240103001935576

image-20240103002146008

image-20240103002307311

image-20240103002415789

image-20240103002616843

image-20240103002804901

image-20240103002840851

image-20240103003746535

image-20240103004142432

4、遗忘root用户密码

4.1 故障原因
  • 遗忘root用户的密码
4.2 故障现象
  • 无法进行需要root权限的管理操作

  • 若没有其他可用账号,将无法登陆系统

4.3 解决思路
  • 进入急救模式,重设密码
4.4 故障模拟及处理过程
  • 有光驱
chroot /mnt/sysimage    #切换根目录
passwd    #修改密码
exit     #退出chroot环境
reboot    #重启
  • 无光驱
进入系统,在选择内核界面,选择第一个选项,按e将光标移动到linux开头行的最后(按end键),添加rd.break 然后按ctrl+x 运行
进入单用户mount -o remount,rw /sysroot    #重新挂载,添加读写权限chroot /sysroot    #切换到真正的根passwd    #修改密码touch /.autorelabel    #如果你开启了selinux需要重新打上标记
修改root用户密码(图文详解)

image-20240103005133236

image-20240103005749030

image-20240103010056484

image-20240103010455365

image-20240103010752177

三、Linux系统服务控制

1、系统服务控制

服务程序

  • 一旦运行,一直运行,不会退出;
  • 一般是后台运行,不会影响前台的操作
1.1 格式:systemctl 控制类型 服务名称
1.2 控制类型

①、start—启动

②、stop—停止

③、restart—重新启动

④、reload—重新加载配置文件

⑤、status—查看服务状态

centos6 —— chkconfig

service  服务程序  start     #开启service  服务程序  stop     #关闭service  服务程序  status    #查看状态service  服务程序  reload     #重新加载配置文件service  服务程序  restart      #重启chkconfig --level 35 服务程序 on    #开机自启chkconfig --level 35 服务程序 off    #关闭开机自启

centos7 —— systemd

systemctl  start  服务名       #开启systemctl  stop  服务名       #关闭systemctl  status  服务名       #查看状态systemctl  reload  服务名       #重新加载配置文件systemctl  restart  服务名       #重启systemctl  enable  服务名    #开机自启systemctl  disable  服务名    #开机不自启systemctl  enable --now  服务名     #开机自启,并立即启动systemctl  disable --now  服务名     #开机不自启,并立即关闭

四、Linux系统运行级别切换

1、查看运行级别

1.1 runlevel命令:runlevel只能查看切换运行级别与当前运行级别
1.2 systemctl工具
  • systemctl 时能查看默认的运行级别

2、临时切换运行级别

2.1 init命令
  • init命令参数是运行级别所对应的的数字
2.2 systemctl工具
  • systemctl的命令参数是具体的target
2.3 init与systemctl对应表

img

3、查看系统默认级别

  • systemctl get-default

4、设置临时运行级别

格式:chkconfig --list [服务名称]

​ chkconfig --add 服务名称

​ chkconfig --level 级别列表 服务名 on/off

chkconfig --add httpdchkconfig --level 35 httpd on     #开机自启chkconfig --level 35 httpd off     #关闭开机自启

5、设置永久运行级别

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.targetsystemctl set-default multi-user.target

五、优化开机自动加载服务

1、优化启动过程

1.1 ntsysv工具
  • 提供一个交换式、可视化窗口
  • 可以在字符终端运行
  • 便于集中管理多个服务
  • 用于控制服务是否开机自启动
1.2 systemctl/chkconfig工具
  • 不提供交互式、可视化窗口
  • 管理单个服务效率更高

2、系统服务的启动和控制

2.1 ntsysv系统服务管理工具
  • 输入ntsysv命令进入设置界面
  • 按空格键标志服务选项(*为自启项)
  • 按↑、↓键切换服务选项
  • 按tab切换光标

常用命令

sysemctl is-enabled 服务名称     #查看系统服务的启动状态systemctl enable 服务名称       # 开启开机自启动syatemctl disable 服务名称      # 关闭开机自启动

3、命令补充

hostnamectl set-hostname 新主机名    #永久修改主机名hostnamectl status    #查看主机名的状态localect set-locale LANG=zh_CN.utf8     #设置系统语言为中文localectl [status]     #查看当前系统使用的语言systemd=analyze     #查看系统启动耗时

相关文章:

引导过程与服务控制

文章目录 一、Linux操作系统引导过程1、开机启动的完整过程1.1 开机自检(BIOS)1.2 MBR引导1.3 GRUB菜单1.4 加载内核(kernel)1.5 init进程初始化 2、系统初始化进程2.1 init进程2.2 systemdinit与systemd区别 3、Systemd单元类型4…...

《矩阵分析》笔记

来源:【《矩阵分析》期末速成 主讲人:苑长(5小时冲上90)】https://www.bilibili.com/video/BV1A24y1p76q?vd_sourcec4e1c57e5b6ca4824f87e74170ffa64d 这学期考矩阵论,使用教材是《矩阵论简明教程》,因为没…...

『App自动化测试之Appium应用篇』| Appium常用API及操作

『App自动化测试之Appium应用篇』| Appium常用API及操作 1 press_keycode1.1 键盘操作1.2 关于KeyCode1.3 press_keycode源码1.4 电话键相关1.5 控制键相关1.6 基本按键相关1.7 组合键相关1.8 符号键相关1.9 使用举例 2 swip方法2.1 swip说明2.2 swip使用方法2.3 使用示例 3 sc…...

VSCode搭建 .netcore 开发环境

一、MacOS 笔者笔记本电脑上安装的是macOS High Sierra(10.13),想要尝试一下新版本的.netcore,之前系统是10.12时,.netcore 3.1刚出来时安装过3.1版本,很久没更新了,最近.net8出来了,想试一下,…...

python 写自动点击爬取数据

今天来点不一样的!哥们 提示: 这里只是用于自己学习的 ,请勿用违法地方 效果图 会进行点击下一页 进行抓取 需要其他操作也可以自己写 文章目录 今天来点不一样的!哥们前言一、上代码?总结 前言 爬虫是指通过编程自动…...

CSDN博客重新更新

说来惭愧,好久没更新博客文章,导致个人博客网站:https://lenky.info/ 所在的网络空间和域名都过期了都没发觉,直到有个同事在Dim上问我我的个人博客为啥打不开了。。。幸好之前有做整站备份,后续慢慢把内容都迁回CSDN上…...

《剑指 Offer》专项突破版 - 面试题 5 : 单词长度的最大乘积(C++ 实现)

目录 前言 方法一 方法二 前言 题目链接:318. 最大单词长度乘积 - 力扣(LeetCode) 题目: 输入一个字符串数组 words,请计算不包含相同字符的两个字符串 words[i] 和 words[j] 的长度乘积的最大值。如果所有字符串…...

【Java集合篇】HashMap的get方法是如何实现的?

HashMap的get方法是如何实现的 ✔️典型解析✔️拓展知识仓✔️如何避免HashMap get方法的哈希重✔️HashMap get方法的优缺点有哪些✔️HashMap get方法的是线程安全的吗✔️什么是ConcurrentHashMap✔️ConcurrentHashMap有哪些应用场景✔️ConcurrentHashMap的优缺点 ✔️源…...

Java学习苦旅(二十二)——MapSet

本篇博客将详细讲解Map和Set。 文章目录 搜索概念模型 MapMap.Entry<K, V>Map的常用方法说明TreeMap和HashMap的区别 Set常用方法说明TreeSet和HashSet的区别 结尾 搜索 概念 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例…...

【Linux Shell】12. 文件包含

和其他语言一样&#xff0c;Shell 也可以包含外部脚本&#xff0c;这样可以很方便的封装一些公用的代码作为一个独立的文件。可以理解为在第2个文件中包含第1个文件&#xff0c;执行第1个文件的代码。 被包含的文件 不需要可执行权限 。Shell 文件包含的语法格式如下&#xff1…...

前端-基础 常用标签-超链接标签( 锚点链接 )

锚点链接 &#xff1a; 点击链接&#xff0c;可以快速定位到 页面中的某个位置 如果不好理解&#xff0c;讲一个例子&#xff0c;您就马上明白了 >>> 这个是 刘德华的百度百科 &#xff0c;可以看到&#xff0c;页面里面有很多内容&#xff0c;那就得有个目录了 …...

2024--Django平台开发-基础信息(一)

一、前置知识点 - Python环境搭建 (Python解释器、Pycharm、环境变量等) - 基础语法(条件、循环、输入输出、编码等) - 数据类型(整型、布尔型、字符串、列表、字典、元组、集合等) - 函数(文件操作、返回值、参数、作用域等) - 面向对象 (类、对象、封装、继承、多态等)包和模…...

C++力扣题目--94,144,145二叉树递归遍历

思路 这次我们要好好谈一谈递归&#xff0c;为什么很多同学看递归算法都是“一看就会&#xff0c;一写就废”。 主要是对递归不成体系&#xff0c;没有方法论&#xff0c;每次写递归算法 &#xff0c;都是靠玄学来写代码&#xff0c;代码能不能编过都靠运气。 本篇将介绍前后…...

开源游戏引擎:创造无限可能 | 开源专题 No.56

godotengine/godot Stars: 62.6k License: MIT Godot Engine 是一个功能强大的跨平台游戏引擎&#xff0c;可用于创建 2D 和 3D 游戏。它提供了一套全面的常见工具&#xff0c;让用户可以专注于制作游戏而不必重复造轮子。该引擎支持将游戏一键导出到多个平台上&#xff0c;包…...

MyBatisPlus学习一:快速入门

前言 前面快速学习了Mybatis&#xff0c;现在开始快速学习MyBatisPlus 学习教程&#xff1a; 黑马mybatis教程全套视频教程&#xff0c;2天Mybatis框架从入门到精通 黑马程序员最新MybatisPlus全套视频教程&#xff0c;4小时快速精通mybatis-plus框架 简介 MyBatisPlus 是…...

2024最新外贸建站:ChemiCloud主机购买使用及自建外贸独立站教程

随着电商平台竞争的加剧&#xff0c;许多外贸从业者意识到减少对平台依赖的重要性&#xff0c;并选择搭建自己的外贸独立站来获得更多的控制权和灵活性。即使是没有建站基础的新手&#xff0c;也可以通过学习建站来实现这一目标。下面是一个适用于新手的外贸建站教程&#xff0…...

校招社招,认知能力测验,③如何破解语言常识类测试题?

作为认知能力测评中的一个环节&#xff0c;语言常识类&#xff0c;是大概率的出现&#xff0c;不同的用人单位可能略有不同&#xff0c;语言是一切的基础&#xff0c;而常识则意味着我们的知识面的宽度。 语言常识类的测试&#xff0c;如果要说技巧&#xff1f;难说....更多的…...

了解一下InternLM2

大模型的出现和发展得益于增长的数据量、计算能力的提升以及算法优化等因素。这些模型在各种任务中展现出惊人的性能&#xff0c;比如自然语言处理、计算机视觉、语音识别等。这种模型通常采用深度神经网络结构&#xff0c;如 Transformer、BERT、GPT&#xff08; Generative P…...

关于使用统一服务器,vscode和网页版jupyter notebook的交互问题

autodl 查看虚拟环境 在antodl上租借了一个服务器&#xff0c;通过在网页上运行jupyter notebook和在vscode中运行&#xff0c;发现环境都默认的是miniconda3。 conda info --envs 当然环境中所有的包都是一样的。 要查看当前虚拟环境中安装的所有包&#xff0c;可以使用以…...

Linux22.04系统安装显卡驱动,cuda,cudnn流程

1. 安装显卡驱动 ubuntu-drivers deices显示所有适配显卡的驱动型号&#xff0c;recommended为推荐安装 安装 sudo apt install nvidia-driver-440重启 sudo reboot验证 nvidia-smi2. 安装cuda 在 CUDA Toolkit 的下载页面选择系统版本和安装方式&#xff0c;下载并运行…...

【常考简答题】操作系统

目录 1、什么是进程 2、创建进程步骤 3、什么是死锁 4、死锁四个必要条件 5、什么是内存管理 6、内存管理功能 7、进程的三个基本状态转化图 8、操作系统为什么引入线程 9、什么是对换技术&#xff0c;好处是什么 10、DMA直接存取控制工作方式流程图 11、什么是假脱…...

Large Language Models Paper 分享

论文1&#xff1a; ChatGPTs One-year Anniversary: Are Open-Source Large Language Models Catching up? 简介 2022年11月&#xff0c;OpenAI发布了ChatGPT&#xff0c;这一事件在AI社区甚至全世界引起了轰动。首次&#xff0c;一个基于应用的AI聊天机器人能够提供有帮助、…...

微信小程序实战-01翻页时钟-1

文章目录 前言需求分析功能设计界面设计界面结构设计界面样式设计 逻辑设计 单页功能实现运行结果 前言 我经常在手机上用的一款app有一个功能是翻页时钟&#xff0c;基于之前学习的小程序相关的基础内容&#xff0c;我打算在微信小程序中也设计一个翻页时钟功能&#xff0c;J…...

BigDecimal的性能问题

BigDecimal 是 Java 中用于精确计算的数字类&#xff0c;它可以处理任意精度的小数运算。由于其精确性和灵活性&#xff0c;BigDecimal 在某些场景下可能会带来性能问题。 BigDecimal的性能问题 BigDecimal的性能问题主要源于以下几点&#xff1a; 内存占用&#xff1a;BigDec…...

Defi安全-Monox攻击事件Foundry复现

其它相关内容可见个人主页 Mono攻击事件的介绍见&#xff1a;Defi安全–Monox攻击事件分析–phalconetherscan 1. 前情提要和思路介绍 Monox使用单边池模型&#xff0c;创建的是代币-vCash交易对&#xff0c;添加流动性时&#xff0c;只需添加代币&#xff0c;即可进行任意代…...

大二上总结和寒假计划

&#x1f442; Start Again - Connor Price/Chloe Sagum - 单曲 - 网易云音乐 &#x1f442; 年年 - 徐秉龙 - 单曲 - 网易云音乐 目录 &#x1f33c;前言 &#x1f44a;成长 &#xff08;1&#xff09;情感 &#xff08;2&#xff09;运动 &#xff08;3&#xff09;穿搭…...

使用 pdfh5 实现 pdf 预览功能

1. 安装 npm install pdfh5 2. 使用 html部分&#xff1a; <div id"showPdf" style"width: 100%;"></div> js部分&#xff1a; <script> //合同展示组件 import Pdfh5 from pdfh5 //合同组件样式 import pdfh5/css/pdfh5.css expo…...

HttpRunner辅助函数debugtalk.py

辅助函数debugtalk.py Httprunner框架中&#xff0c;使用yaml或json文件进行用例描述&#xff0c;无法做一些复杂操作&#xff0c;如保存一些数据跨文件调用&#xff0c;或者实现一些复杂逻辑判断等&#xff0c;为了解决这个问题&#xff0c;引入了debugtalk.py辅助函数来进行一…...

PC端扫描小程序二维码登录

1、获取二维码地址&#xff0c;通过请求微信开发者文档中的服务端获取无限制小程序二维码URL #controller层 import org.apache.commons.codec.binary.Base64;/*** 获取小程序二维码*/PassTokenGetMapping("/getQrCode")public AjaxResult getQrCode(BlogUserDto bl…...

计算机毕业设计 | SpringBoot+vue移动端音乐网站 音乐播放器(附源码)

1&#xff0c;项目背景 随着计算机技术的发展&#xff0c;网络技术对我们生活和工作显得越来越重要&#xff0c;特别是现在信息高度发达的今天&#xff0c;人们对最新信息的需求和发布迫切的需要及时性。为了满足不同人们对网络需求&#xff0c;各种特色&#xff0c;各种主题的…...

wordpress 文章 总数/临沂seo网站管理

今天研究了一下CONSTRAINT的检验&#xff0c;分为两种&#xff1a;immediate--指在执行DML语句时就进行验证&#xff0c;defer--指在执行commit后才进行验证.默认条件下&#xff0c;会话的constraint验证类型为immediate&#xff0c;但是我们可以将它改为defered;SQL>alter …...

金华市建设局网站贾润根/sem优化推广

1.复制&#xff1a;整体拷贝文件&#xff1b; 2.安装&#xff1a;一个一个拷贝文件&#xff1b;...

做网站论文/企业培训十大热门课程

网格搜索算法和K折交叉验证法是机器学习入门的时候遇到的重要的概念。 网格搜索算法是一种通过遍历给定的参数组合来优化模型表现的方法。 以决策树为例&#xff0c;当我们确定了要使用决策树算法的时候&#xff0c;为了能够更好地拟合和预测&#xff0c;我们需要调整它的参数…...

大公司网站建设建网站/湖南网站排名

什么是AMQP高级消息队列协议 AMQP&#xff0c;即Advanced Message Queuing Protocol,是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议&#xff0c;是应用层协议的一个开放标准,为面向消息的中间件设计。&#xff08;说白了就是规范&#xff…...

政府门户网站建设总结/新产品推广方案怎么写

在论坛上经常会有人问&#xff0c;到底是使用Trie算法保存路由表还是用Hash算法。那么我首先要明白&#xff0c;你要保存多大的路由表。简单的答案如下&#xff1a;少量&#xff1a;Hash算法大量&#xff1a;Trie算法但是&#xff0c;仅仅这么回答会显得很业余&#xff0c;真的…...

南阳网站建设价格/谷歌搜索引擎入口363

集成运放的主要技术参数 评价集成运放好坏的参数很多&#xff0c;它们是描述一个实际运放与理想放大器件接近程度的数据&#xff0c;这里仅介绍其中主要的几种。一、输入参数1&#xff0e;输入失调电压UO 及其温漂在室温及标准电源电压下&#xff0c;为了使静态UO 0&#xff0…...