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

【BASH】回顾与知识点梳理(三十五)

【BASH】回顾与知识点梳理 三十五

    • 三十五. 二十七至三十四章知识点总结及练习
      • 35.1 总结
      • 35.2 练习
        • RAID+LVM
        • systemd
      • 35.3 简答题

该系列目录 --> 【BASH】回顾与知识点梳理(目录)

三十五. 二十七至三十四章知识点总结及练习

35.1 总结

  • Quota 可公平的分配系统上面的磁盘容量给用户;分配的资源可以是磁盘容量(block)或可建立文件数量(inode);

  • Quota 的限制可以有 soft/hard/grace time 等重要项目;

  • Quota 是针对整个 filesystem 进行限制,XFS 文件系统可以限制目录!

  • Quota 的使用必须要核心与文件系统均支持。文件系统的参数必须含有 usrquota, grpquota, prjquota

  • Quota 的 xfs_quota 实作的指令有 report, print, limit, timer… 等指令;

  • 磁盘阵列 (RAID) 有硬件与软件之分,Linux 操作系统可支持软件磁盘阵列,透过 mdadm 套件来达成;

  • 磁盘阵列建置的考虑依据为『容量』、『效能』、『资料可靠性』等;

  • 磁盘阵列所建置的等级常见有的 raid0, raid1, raid1+0, raid5 及 raid6

  • 硬件磁盘阵列的装置文件名与 SCSI 相同,至于 software RAID 则为 /dev/md[0-9]

  • 软件磁盘阵列的状态可藉由 /proc/mdstat 文件来了解;

  • LVM 强调的是『弹性的变化文件系统的容量』;

  • 与 LVM 有关的组件有: PV/VG/PE/LV 等组件,可以被格式化者为 LV

  • 新的 LVM 拥有 LVM thin volume 的功能,能够动态调整磁盘的使用率!

  • LVM 拥有快照功能,快照可以记录 LV 的数据内容,并与原有的 LV 共享未更动的数据,备份与还原就变的很简单;

  • XFS 透过 xfs_growfs 指令,可以弹性的调整文件系统的大小

  • 系统可以透过 at 这个指令来排程单一工作的任务!『at TIME』为指令下达的方法,当 at 进入排程后, 系统执行该排程工作时,会到下达时的目录进行任务;

  • at 的执行必须要有 atd 服务的支持,且 /etc/at.deny 为控制是否能够执行的使用者账号;

  • 透过 atq, atrm 可以查询与删除 at 的工作排程;

  • batch 与 at 相同,不过 batch 可在 CPU 工作负载小于 0.8 时才进行后续的工作排程;

  • 系统的循环例行性工作排程使用 crond 这个服务,同时利用 crontab -e 及 /etc/crontab 进行排程的安排;

  • crontab -e 设定项目分为六栏,『分、时、日、月、周、指令』为其设定依据;

  • /etc/crontab 设定分为七栏,『分、时、日、月、周、执行者、指令』为其设定依据;

  • anacron 配合 /etc/anacrontab 的设定,可以唤醒停机期间系统未进行的 crontab 任务!

  • 程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等),为实体文件的型态存在;

  • 进程 (process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序。

  • 程序彼此之间是有相关性的,故有父进程与子进程之分。而 Linux 系统所有进程的父进程就是 init 这个PID 为 1 号的进程。

  • 在 Linux 的进程呼叫通常称为 fork-and-exec 的流程!进程都会藉由父进程以复制 (fork) 的方式产生一个一模一样的子进程, 然后被复制出来的子进程再以 exec 的方式来执行实际要进行的程序,最终就成为一个子进程的存在。

  • 常驻在内存当中的进程通常都是负责一些系统所提供的功能以服务用户各项任务,因此这些常驻程序就会被我们称为:服务 (daemon)。

  • 在工作管理 (job control) 中,可以出现提示字符让你操作的环境就称为前景 (foreground),至于其他工作就可以让你放入背景 (background) 去暂停或运作。(jobs,fg,bg, kill -signal %n)

  • 与 job control 有关的按键与关键词有: &, [ctrl]-z, jobs, fg, bg, kill %n 等;

  • 进程管理的观察指令有: ps, top, pstree 等等;

  • 进程之间是可以互相控制的,传递的讯息 (signal) 主要透过 kill 这个指令在处理;

  • 进程是有优先级的,该项目为 Priority,但 PRI 是核心动态调整的,用户只能使用 nice 值去微调 PRI

  • nice 的给予可以有: nice, renice, top 等指令;

  • vmstat 为相当好用的系统资源使用情况观察指令;(-a -d)

  • SELinux 当初的设计是为了避免使用者资源的误用,而 SELinux 使用的是 MAC 委任式存取设定;

  • SELinux 的运作中,重点在于主体进程 (Subject) 能否存取目标文件资源 (Object) ,这中间牵涉到政策(Policy) 内的规则, 以及实际的安全性本文类别 (type);

  • 安全性本文的一般设定为:『Identify:role:type』其中又以 type 最重要;

  • SELinux 的模式有: enforcing, permissive, disabled 三种,而启动的政策 (Policy) 主要是 targeted

  • SELinux 启动与关闭的配置文件在: /etc/selinux/config

  • SELinux 的启动与观察: getenforce, sestatus 等指令

  • 重设 SELinux 的安全性本文可使用 restorecon 与 chcon

  • 在 SELinux 有启动时,必备的服务至少要启动 auditd 这个!

  • 若要管理预设的 SELinux 布尔值,可使用 getsebool, setsebool 来管理!

  • 早期的服务管理使用 systemV 的机制,透过 /etc/init.d/*, service, chkconfig, setup 等指令来管理服务的启动/关闭/预设启动;

  • 从 CentOS 7.x 开始,采用 systemd 的机制,此机制最大功能为平行处理,并采单一指令管理 (systemctl),开机速度加快!

  • systemd 将各服务定义为 unit,而 unit 又分类为 service, socket, target, path, timer 等不同的类别,方便管理与维护

  • 启动/关闭/重新启动的方式为: systemctl [start|stop|restart] unit.service

  • 设定预设启动/预设不启动的方式为: systemctl [enable|disable] unit.service

  • 查询系统所有启动的服务用 systemctl list-units --type=service 而查询所有的服务 (含不启动) 使用systemctl list-unit-files --type=service

  • systemd 取消了以前的 runlevel 概念 (虽然还是有兼容的 target),转而使用不同的 target 操作环境。常见操作环境为 multi-user.target 与 graphical.target。 不重新启动而转不同的操作环境使用 systemctl isolate unit.target,而设定预设环境则使用 systemctl set-default unit.target

  • systemctl 系统默认的配置文件主要放在 /usr/lib/systemd/system,管理员若要修改或自行设计时,则建议放在 /etc/systemd/system/ 目录下。

  • 管理员应使用 man systemd.unit, man systemd.service, man systemd.timer 查询 /etc/systemd/system/ 底下配置文件的语法, 并使用 systemctl daemon-reload 加载后,才能自行撰写服务与管理服务喔!

  • 除了 atd 与 crond 之外,可以 透过 systemd.timer 亦即 timers.target 的功能,来使用 systemd 的时间管理功能。

  • 一些不需要的服务可以关闭喔!

35.2 练习

RAID+LVM

情境模拟题一:由于 LVM 可以弹性调整 filesystem 的大小,但是缺点是可能没有加速与硬件备份(与快照不同)的功能。 而磁盘阵列则具有效能与备份的功能,但是无法提供类似 LVM 的优点。在此情境中,我们想利用『在 RAID 上面建置 LVM』的功能,以达到两者兼顾的能力。

  • 目标:测试在 RAID 磁盘上面架构 LVM 系统;
  • 需求:需要具有磁盘管理的能力,包括 RAID 与 LVM;
  • 前提:会用到本章建立出来的 /dev/vda5, /dev/vda6, /dev/vda7 三个分区槽!
  1. 重新处理系统,我们在这个练习当中,需要 /dev/vda5, /dev/vda6, /dev/vda7 建置成一个 RAID5 的/dev/md0 磁盘!详细的作法这里就不谈了! 你得要使用 gdisk 来处理成为如下的模样:
[root@study ~]# gdisk -l /dev/vda
Number Start (sector) End (sector) Size Code Name1 2048 6143 2.0 MiB EF022 6144 2103295 1024.0 MiB 07003 2103296 65026047 30.0 GiB 8E004 65026048 67123199 1024.0 MiB 8300 Linux filesystem5 67123200 69220351 1024.0 MiB FD00 Linux RAID6 69220352 71317503 1024.0 MiB FD00 Linux RAID7 71317504 73414655 1024.0 MiB FD00 Linux RAID
  1. 开始使用 mdadm 来建立一个简单的 RAID5 数组!简易的流程如下:
[root@study ~]# mdadm --create /dev/md0 --auto=yes --level=5 \
> --raid-devices=3 /dev/vda{5,6,7}
[root@study ~]# mdadm --detail /dev/md0 | grep -i uuidUUID : efc7add0:d12ee9ca:e5cb0baa:fbdae4e6
[root@study ~]# vim /etc/mdadm.conf
ARRAY /dev/md0 UUID=efc7add0:d12ee9ca:e5cb0baa:fbdae4e6

若无出现任何错误讯息,此时你已经具有 /dev/md0 这个磁盘阵列装置了!接下来让我们处理 LVM 吧!

  1. 开始处理 LVM ,现在我们假设所有的参数都使用默认值,包括 PE ,然后 VG 名为 raidvg ,LV 名为raidlv ,底下为基本的流程:
[root@study ~]# pvcreate /dev/md0 <==建立 PV
[root@study ~]# vgcreate raidvg /dev/md0 <==建立 VG
[root@study ~]# lvcreate -L 1.5G -n raidlv raidvg <==建立 LM
[root@study ~]# lvscan
ACTIVE '/dev/raidvg/raidlv' [1.50 GiB] inherit

这样就搞定了 LVM 了!而且这个 LVM 是架构在 /dev/md0 上面的喔!然后就是文件系统的建立与挂载了!

  1. 尝试建立成为 XFS 文件系统,且挂载到 /srv/raidlvm 目录下:
[root@study ~]# mkfs.xfs /dev/raidvg/raidlv
[root@study ~]# blkid /dev/raidvg/raidlv
/dev/raidvg/raidlv: UUID="4f6a587d-3257-4049-afca-7da1d405117d" TYPE="xfs"
[root@study ~]# vim /etc/fstab
UUID="4f6a587d-3257-4049-afca-7da1d405117d" /srv/raidlvm xfs defaults 0 0
[root@study ~]# mkdir /srv/raidlvm
[root@study ~]# mount -a
[root@study ~]# df -Th /srv/raidlvm
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/raidvg-raidlv xfs 1.5G 33M 1.5G 3% /srv/raidlvm
  1. 上述就是 LVM 架构在 RAID 上面的技巧,之后的动作都能够使用本章的其他管理方式来管理, 包括RAID 热拔插机制、LVM 放大缩小机制等等。

systemd

情境模拟题:透过设定、启动、观察等机制,完整的了解一个服务的启动与观察现象。

  • 目标:了解 daemon 的控管机制,以 sshd daemon 为例;
  • 前提:需要对本章已经了解,尤其是 systemd 的管理 部分;
  • 需求:已经有 sshd 这个服务,但没有修改过埠口!

在本情境中,我们使用 sshd 这个服务来观察,主要是假设 sshd 要开立第二个服务,这个第二个服务的 port 放行于 222 ,那该如何处理? 可以这样做看看:

  1. 基本上 sshd 几乎是一定会安装的服务!只是我们还是来确认看看好了!
[root@study ~]# systemctl status sshd.service
sshd.service - OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)Active: active (running) since Thu 2015-08-13 14:31:12 CST; 20h ago
[root@study ~]# cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
  1. 透过观察 man sshd,我们可以查询到 sshd 的配置文件位于 /etc/ssh/sshd_config 这个文件内!再 man sshd_config 也能知道原来埠口是使用 Port 来规范的! 因此,我想要建立第二个配置文件,档名假设为/etc/ssh/sshd2_config 这样!
[root@study ~]# cd /etc/ssh
[root@study ssh]# cp sshd_config sshd2_config
[root@study ssh]# vim sshd2_config
Port 222
# 随意找个地方加上这个设定值!你可以在文件的最下方加入这行也 OK 喔!
  1. 接下来开始修改启动脚本服务档!
[root@study ~]# cd /etc/systemd/system
[root@study system]# cp /usr/lib/systemd/system/sshd.service sshd2.service
[root@study system]# vim sshd2.service
[Unit]
Description=OpenSSH server daemon 2
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -f /etc/ssh/sshd2_config -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
[root@study system]# systemctl daemon-reload
[root@study system]# systemctl enable sshd2
[root@study system]# systemctl start sshd2
[root@study system]# tail -n 20 /var/log/messages
# semanage port -a -t PORT_TYPE -p tcp 222where PORT_TYPE is one of the following: ssh_port_t, vnc_port_t, xserver_port_t.
# 认真的看!你会看到上面这两句!也就是 SELinux 的埠口问题!请解决!
[root@study system]# semanage port -a -t ssh_port_t -p tcp 222
[root@study system]# systemctl start sshd2
[root@study system]# netstat -tlnp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1300/sshd
tcp 0 0 0.0.0.0:222 0.0.0.0:* LISTEN 15275/sshd
tcp6 0 0 :::22 :::* LISTEN 1300/sshd
tcp6 0 0 :::222 :::* LISTEN 15275/sshd

35.3 简答题

  • 在大量新增账号范例中, 如果我想要让每个用户均具有 soft/hard 各为 40MB/50MB 的容量时,应该如何修改这个 script ?
    你得先要依据本章的作法,先将 /home 制作好 quota 的环境然后, 你可以在 do…done 内的最后一行,新增一行内容为:

    xfs_quota -x -c "limit -u bsoft=40M bhard=50M ${username}" /home
    

    这样就可以在制作用户时,指定更新密码且给予 quota 的限制!

  • 如果我想要让 RAID 具有保护数据的功能,防止因为硬件损毁而导致数据的遗失,那我应该要选择的 RAID 等级可能有哪些?
    具有备份数据的有: RAID-1, RAID-5, RAID-6, RAID-10

  • 在预设的 LVM 设定中,请问 LVM 能否具有『备份』的功能?
    是有的,就是那个快照 (snopshot) 的功能,此功能即可进行数据的备份!

  • 如果你的计算机主机有提供 RAID 0 的功能,你将你的三颗硬盘全部在 BIOS 阶段使用 RAID 芯片整合成为一颗大磁盘, 则此磁盘在 Linux 系统当中的文件名为何?
    由于硬件磁盘阵列是在 BIOS 阶段完成的,因此 Linux 系统会捉到一个完整的大的 RAID 磁盘,此磁盘的文件名就会是『 /dev/sda 』! 但如果是 Intel 的芯片组,则还是可能会成为 /dev/md127 等相关的档名!

  • 今天假设我有一个指令程序,名称为: ping.sh 这个档名!我想要让系统每三分钟执行这个文件一次, 但是偏偏这个文件会有很多的讯息显示出来,所以我的 root 账号每天都会收到差不多四百多封的信件,光是收信就差不多快要疯掉了! 那么请问应该怎么设定比较好呢?
    这个涉及数据流重导向的问题,我们可以将他导入文件或者直接丢弃!如果该讯息不重要的话, 那么就予以丢弃,如果讯息很重要的话,才将他保留下来!假设今天这个命令不重要, 所以将他丢弃掉!因此,可以这样写:

*/3 * * * * root /usr/local/ping.sh > /dev/null 2>&1
  • 您预计要在 2024 年的 2 月 14 日寄出一封给 kiki ,只有该年才寄出!该如何下达指令?
echo "happy"|at 1am 2024-02-14
  • 下达 crontab -e 之后,如果输入这一行,代表什么意思?* 15 * * 1-5 /usr/local/bin/tea_time.sh
    周一至周五每天的15点的每分钟执行tea_time.sh
    应该写成
    30 15 * * 1-5 /usr/local/bin/tea_time.sh
  • 我用 vi 编辑 /etc/crontab 这个文件,我编辑的那一行是这样的:
    25 00 * * 0 /usr/local/bin/backup.sh这一行代表的意义是什么?
    这一行代表…没有任何意义!因为语法错误!您必须要了解,在 /etc/crontab 当中每一行都必须要有使用者才行!所以,应
    该要将原本那行改成:
    25 00 * * 0 root /usr/local/bin/backup.sh
  • 请问,您的系统每天、每周、每个月各有进行什么工作?
[root@node-135 backups]# ll /etc/cron.monthly/
total 0
[root@node-135 backups]# ll /etc/cron.weekly/
total 0
[root@node-135 backups]# ll /etc/cron.daily/
total 16
-rwx------. 1 root root 219 Apr  1  2020 logrotate
-rwxr-xr-x. 1 root root 618 Oct 30  2018 man-db.cron
-rwx------. 1 root root 208 Apr 11  2018 mlocate
-rwx------. 1 root root 558 May 18  2022 rhsmd
  • 每个星期六凌晨三点去系统搜寻一下内有 SUID/SGID 的任何文件!并将结果输出到 /tmp/uidgid.files
vim /etc/crontab
0 3 * * 6 root find / -perm /6000 >/tmp/uidgid.files
  • 使用 netstat -tul 与 netstat -tunl 有什么差异?为何会这样?
    使用 n 时, netstat 就不会使用主机名与服务名称 (hostname & service_name) 来显示, 取而代之的则是以 IP 及 port number 来显示的。IP 的分析与 /etc/hosts 及 /etc/resolv.conf 有关, 这个在未来服务器篇才会提到。至于 port number 则与 /etc/services 有关,请自行参考喔!
  • 你能否找出来,启动 port 3306 这个埠口的服务为何?
    透过搜寻 /etc/services 内容,得到 port 3306 为 mysql 所启动的埠口喔!查询 google, 可得到 mysql 为一种网络数据库系统软件。
[root@node-135 backups]# grep '3306' /etc/services
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
  • 你可以透过哪些指令查询到目前系统默认开机会启动的服务?
systemctl list-units 以及 systemctl list-unit-files
  • 承上,那么哪些服务『目前』是在启动的状态?
    结果同上!只是若要进一步的信息,应该使用 systemctl status [unit.service] 一项一项查询!

该系列目录 --> 【BASH】回顾与知识点梳理(目录)

相关文章:

【BASH】回顾与知识点梳理(三十五)

【BASH】回顾与知识点梳理 三十五 三十五. 二十七至三十四章知识点总结及练习35.1 总结35.2 练习RAIDLVMsystemd 35.3 简答题 该系列目录 --> 【BASH】回顾与知识点梳理&#xff08;目录&#xff09; 三十五. 二十七至三十四章知识点总结及练习 35.1 总结 Quota 可公平的分…...

excel逻辑函数篇2

1、IF(logical_test,[value_if_true],[value_if_false])&#xff1a;判断是否满足某个条件&#xff0c;如果满足返回一个值&#xff0c;如果不满足则返回另一个值 if(条件,条件成立返回的值,条件不成立返回的值) 2、IFS(logical_test1,value_if_true1,…)&#xff1a;检查是否…...

设计模式详解-解释器模式

类型&#xff1a;行为型模式 实现原理&#xff1a;实现了一个表达式接口&#xff0c;该接口使用标识来解释语言中的句子 作用&#xff1a;给定一个语言&#xff0c;定义它的文法表示&#xff0c;并定义一个解释器&#xff0c;这个解释器来解释。 主要解决&#xff1a;一些重…...

如何在React项目中动态插入HTML内容

React是一种流行的JavaScript库&#xff0c;用于构建用户界面。它提供了一种声明式的方法来创建可复用的组件&#xff0c;使得开发者能够更轻松地构建交互性的Web应用程序。在React中&#xff0c;我们通常使用JSX语法来描述组件的结构和行为。 在某些情况下&#xff0c;我们可…...

十六、Spring Cloud Sleuth 分布式请求链路追踪

目录 一、概述1、为什么出出现这个技术&#xff1f;需要解决哪些问题2、是什么&#xff1f;3、解决 二、搭建链路监控步骤1、下载运行zipkin2、服务提供者3、服务调用者4、测试 一、概述 1、为什么出出现这个技术&#xff1f;需要解决哪些问题 2、是什么&#xff1f; 官网&am…...

ElasticSearch DSL语句(bool查询、算分控制、地理查询、排序、分页、高亮等)

文章目录 DSL 查询种类DSL query 基本语法1、全文检索2、精确查询3、地理查询4、function score &#xff08;算分控制&#xff09;5、bool 查询 搜索结果处理1、排序2、分页3、高亮 RestClient操作 DSL 查询种类 查询所有&#xff1a;查询所有数据&#xff0c;一般在测试时使…...

【考研数学】概率论与数理统计 | 第一章——随机事件与概率(2,概率基本公式与事件独立)

文章目录 引言四、概率基本公式4.1 减法公式4.2 加法公式4.3 条件概率公式4.4 乘法公式 五、事件的独立性5.1 事件独立的定义5.1.1 两个事件的独立5.1.2 三个事件的独立 5.2 事件独立的性质 写在最后 引言 承接上文&#xff0c;继续介绍概率论与数理统计第一章的内容。 四、概…...

SpringBoot整合RabbitMQ,笔记整理

1创建生产者工程springboot-rabbitmq-produce 2.修改pom.xml文件 <!--父工程--> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.0</version><r…...

搜狗拼音暂用了VSCode及微信小程序开发者工具快捷键Ctrl + Shit + K 搜狗拼音截图快捷键

修改搜狗拼音的快捷键 右键--更多设置--属性设置--按键--系统功能快捷键--系统功能快捷键设置--取消Ctrl Shit K的勾选--勾选截屏并设置为Ctrl Shit A 微信开发者工具设置快捷键 右键--Command Palette--删除行 微信开发者工具快捷键 删除行&#xff1a;Ctrl Shit K 或…...

Python包sklearn画ROC曲线和PR曲线

前言 关于ROC和PR曲线的介绍请参考&#xff1a; 机器学习&#xff1a;准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线 参考&#xff1a; Python下使用sklearn绘制ROC曲线&#xff08;超详细&#xff09; Python绘图|Python绘制ROC曲线和PR曲线 源码 …...

snpEff变异注释的一点感想

snpEff变异注释整成人生思考 1.介绍2.安装过程以及构建物种参考数据库3.坑货来了4.结果文件判读5.小tips 1.介绍 &nbsp SnpEff&#xff08;Snp Effect&#xff09;是一个用于预测基因组变异&#xff08;例如单核苷酸变异、插入、缺失等&#xff09;对基因功能的影响的生物…...

“保姆级”考研下半年备考时间表

7月-8月 确定考研目标与备考计划 暑假期间是考研复习的关键时期&#xff0c;需要复习的主要内容有&#xff1a;重点关注重要的学科和专业课程&#xff0c;复习相关基础知识和核心概念。制定详细的复习计划并合理安排每天的学习时间&#xff0c;增加真题练习熟悉考试题型和答题技…...

具有弱监督学习的精确3D人脸重建:从单幅图像到图像集的Python实现详解

随着深度学习和计算机视觉技术的飞速发展&#xff0c;3D人脸重建技术在多个领域获得了广泛应用&#xff0c;例如虚拟现实、电影特效、生物识别等。但是&#xff0c;由单幅图像实现高精度的3D人脸重建仍然是一个巨大的挑战。在本文中&#xff0c;我们将探讨如何利用弱监督学习进…...

查询投稿会议的好用网址

会议伴侣 https://www.myhuiban.com/ 艾思科蓝 https://www.ais.cn/...

一元三次方程的解

一元三次方程的解法&#xff0c;点击跳转知乎原文地址 &#xff08;一&#xff09;一元三次方程降阶 一元三次方程原型&#xff1a; a x 3 b x 2 c x d 0 a x^3 b x^2 cx d 0 ax3bx2cxd0 代换削元。最简单的方法是线性变化削元。假设x my n, 带入后可以削去未知数…...

aardio开发语言Excel数据表读取修改保存实例练习

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom479) winform.add( buttonEnd{cls"button";text"末页";left572;top442;right643;bottom473;z6}; buttonExcelRead{cls"button";text"读取Exce…...

webshell绕过

文章目录 webshell前置知识进阶绕过 webshell 前置知识 <?phpecho "A"^""; ?>运行结果 可以看到出来的结果是字符“&#xff01;”。 为什么会得到这个结果&#xff1f;是因为代码的“A”字符与“”字符产生了异或。 php中&#xff0c;两个变…...

Spring Boot 统一功能处理

目录 1.用户登录权限效验 1.1 Spring AOP 用户统一登录验证的问题 1.2 Spring 拦截器 1.2.1 自定义拦截器 1.2.2 将自定义拦截器加入到系统配置 1.3 拦截器实现原理 1.3.1 实现原理源码分析 2. 统一异常处理 2.1 创建一个异常处理类 2.2 创建异常检测的类和处理业务方法 3. 统一…...

图像处理常见的两种拉流方式

传统算法或者深度学习在进行图像处理之前&#xff0c;总是会首先进行图像的采集&#xff0c;也就是所谓的拉流。解决拉流的方式有两种&#xff0c;一个是直接使用opencv进行取流&#xff0c;另一个是使用ffmpeg进行取流&#xff0c;如下分别介绍这两种方式进行拉流处理。 1、o…...

数据可视化数据调用浅析

数据可视化是现代数据分析和决策支持中不可或缺的一环。它将数据转化为图形、图表和可视化工具&#xff0c;以便更直观地理解和解释数据。在数据可视化的过程中&#xff0c;数据的调用和准备是关键的一步。本文将探讨数据可视化中的数据调用过程&#xff0c;并介绍一些常用的数…...

恒运资本:CPO概念发力走高,兆龙互联涨超10%,华是科技再创新高

CPO概念15日盘中发力走高&#xff0c;截至发稿&#xff0c;华是科技涨超15%再创新高&#xff0c;兆龙互联涨逾11%&#xff0c;中贝通讯涨停&#xff0c;永鼎股份、太辰光涨超5%&#xff0c;天孚通讯涨逾4%。 消息面上&#xff0c;光通讯闻名咨询机构LightCounting近日发布的202…...

【蓝桥杯】[递归]母牛的故事

原题链接&#xff1a;https://www.dotcpp.com/oj/problem1004.html 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 我们列一个年份和母牛数量的表格&#xff1a; 通过观察&#xff0c;找规律&#xff0c;我们发现&#xff1a; 当年份小于等于4时&…...

使用RDP可视化远程桌面连接Linux系统

使用RDP可视化远程桌面连接Linux系统 远程桌面连接Linux安装安装包准备服务器安装xrdp远程连接 远程桌面连接Linux 通常使用SSH来连接服务器&#xff0c;进行命令行操作&#xff0c;但是这次需要远程调试生产环境的内网服务器&#xff0c;进行浏览器访问内网网站&#xff0c;至…...

数据可视化diff工具jsondiffpatch使用学习

1.jsondiffpatch 简介 jsondiffpatch 是一个用于比较和生成 JSON 数据差异的 JavaScript 库。它可以将两个 JSON 对象进行比较&#xff0c;并生成一个描述它们之间差异的 JSON 对象。这个差异对象可以用于多种用途&#xff0c;例如&#xff1a; 生成可视化的差异报告应用差异…...

pdf 转 word

pdf 转 word 一、思路 直接调用LibreOffice 命令进行文档转换的命令行工具 使用的前系统中必须已经安装了 libreofficelibreoffice已翻译的用户界面语言包: 中文 (简体)libreoffice离线帮助文档: 中文 (简体)上传字体 重点&#xff1a;重点&#xff1a;重点&#xff1a; 亲…...

【数据结构OJ题】设计循环队列

原题链接&#xff1a;https://leetcode.cn/problems/design-circular-queue/ 1. 题目描述 2. 循环队列的概念和结构 为充分利用向量空间&#xff0c;克服"假溢出"现象的方法是&#xff1a;将向量空间想象为一个首尾相接的圆环&#xff0c;并称这种向量为循环向量。…...

Java 中创建对象有哪些方式?

目录 面试回答 使用 new 关键字 使用反射机制 使用 Class 类的 newInstance() 方法 使用 Constructor 类的 newInstance 方法 使用 clone 方法 使用反序列化 使用方法句柄 使用 Unsafe 分配内存 面试回答 使用 new 关键字 这是我们最常用的、也是最简单的创建对象的方…...

Kafka 消息发送和消费流程

发送消息 流程如下&#xff1a; Producer 端直接将消息发送到 Broker 中的 Leader 分区中Broker 对应的 Leader 分区收到消息会先写入 Page Cache&#xff0c;定时刷盘进行持久化&#xff08;顺序写入磁盘&#xff09;Follower 分区拉取 Leader 分区的消息&#xff0c;并保持…...

UVa10048 Audiophobia(floyd)

题意 给出一个图&#xff0c;图中的边表示从点u到点v路径上的噪音。给出q个查询&#xff0c;问从u到v所经路径上的最小噪音 思路 在使用floyd计算点对之间的路径时&#xff0c; D u , v k m i n { D u , v k − 1 , m a x { D u , k k − 1 , D k , v k − 1 } } D_{u, v}^…...

​Redis概述

目录 Redis - 概述 使用场景 如何安装 Window 下安装 Linux 下安装 docker直接进行安装 下载Redis镜像 Redis启动检查常用命令 Redis - 概述 redis是一款高性能的开源NOSQL系列的非关系型数据库,Redis是用C语言开发的一个开源的高键值对(key value)数据库,官方提供测试…...

MsrayPlus多功能搜索引擎采集软件

MsrayPlus多功能搜索引擎采集软件 摘要&#xff1a; 本文介绍了一款多功能搜索引擎软件-MsrayPlus&#xff0c;该软件能够根据关键词从搜索引擎中检索相关数据&#xff0c;并提供搜索引擎任务、爬虫引擎任务和联系信息采集三大功能。我们将分析该软件在不同领域的应用&#xf…...

机器学习之概率论

最近&#xff0c;在了解机器学习相关的数学知识&#xff0c;包括线性代数和概率论的知识&#xff0c;今天&#xff0c;回顾了概率论的知识&#xff0c;贴上几张其他博客的关于概率论的图片&#xff0c;记录学习过程。...

【深度学习 | 数据可视化】 视觉展示分类边界: Perceptron模型可视化iris数据集的决策边界

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…...

【计算机视觉】相机基本知识(还在更新)

1.面阵工业相机与线阵工业相机 1.1 基本概念区别 面阵相机则主要采用的连续的、面状扫描光线来实现产品的检测&#xff1b; 线阵相机即利用单束扫描光来进行物体扫描的工作的。 1.2 优缺点 &#xff08;1&#xff09;面阵CCD工业相机&#xff1a; 优点&#xff1a;应用面…...

C++ (友元)(类嵌套时,成员函数以及类声明定义的顺序)小demo

#include<iostream> using namespace std; class Building; //1.因为Goodgay类需要声明Building类变量&#xff0c; //所以Building类必须Goodgay类之前声明&#xff08;前向声明&#xff09;&#xff1b; class GoodGay { public:GoodGay();void visit(); private:Build…...

前端实习第五周周记

前言 每一天做了什么还是要记录一下&#xff0c;不然过两天后就会发现&#xff0c;慢慢遗忘自己的收获与做过的东西。 这周做的是医学检验系统的样本库部分。由于是公司的代码所以不能交代具体&#xff0c;那么久聊一下每天具体做了些什么以及我的一些收获。 周一 周一上午…...

【图论】Floyd算法

一.简介 Floyd算法&#xff0c;也称为Floyd-Warshall算法&#xff0c;是一种用于解决所有节点对最短路径问题的动态规划算法。它可以在有向图或带权图中找到任意两个节点之间的最短路径。 Floyd算法的基本思想是通过中间节点逐步优化路径长度。它使用一个二维数组来存储任意两…...

ceph数据分布

ceph的存储是无主结构&#xff0c;数据分布依赖client来计算&#xff0c;有两个条主要路径。 1、数据到PG 2、PG 到OSD 有两个假设&#xff1a; 第一&#xff0c;pg的数量稳定&#xff0c;可以认为保持不变&#xff1b; 第二&#xff0c; OSD的数量可以增减&#xff0c;OSD的…...

mysql的两张表left join 进行关联后,索引进行优化案例

一 mysql的案例 1.1 不加索引情况 1.表1没加索引 2.表2没加索引 3.查看索引 1.2 添加索引 1.表1添加索引 2.表2添加索引 3.查看...

2018年3月全国计算机等级考试真题(语言二级C)

2018年3月全国计算机等级考试真题&#xff08;语言二级C&#xff09; 第1题 设有定义&#xff1a;char s[81]&#xff1b;int i0&#xff1b;以下不能将一行带有空格的字符串正确读入的语句或语句组是 A. while((s[i]getchar())!\n);s[i]\0; B. scanf("%s",s); C.…...

java.util.Timer简介以及简单使用示例

一、简介 定时器&#xff08;Timer&#xff09;是一个工具类&#xff0c;用于安排任务&#xff08;java.util.TimerTask&#xff09;在指定时间后执行或以指定的时间间隔重复执行。它可以用于执行定时任务、定时调度和时间延迟等操作。 定时器&#xff08;Timer&#xff09;可以…...

C语言笔试训练【第12天】

文章目录 1、请阅读以下程序&#xff0c;其运行结果是&#xff08; &#xff09;2、假设编译器规定 int 和 short 类型长度分别为32位和16位&#xff0c;若有下列C语言语句&#xff0c;则 y 的机器数为&#xff08; &#xff09;3、下列程序的输出结果是什么&#xff08; &…...

外网连接局域网的几种方式?快解析内网穿透安全便利吗?

外网连接局域网是一项网络连接中的关键技术&#xff0c;它能够让远程用户通过互联网访问内部局域网中的资源和服务。外网连接局域网为企业提供了更大的灵活性和便捷性&#xff0c;但也需要严格的安全措施来防止未经授权的访问。 外网连接局域网的几种方式 在将外网连接到局域…...

基于互斥锁的生产者消费者模型

文章目录 生产者消费者 定义代码实现 / 思路完整代码执行逻辑 / 思路 局部具体分析model.ccfunc&#xff08;消费者线程&#xff09; 执行结果 生产者消费者 定义 生产者消费者模型 是一种常用的 并发编程模型 &#xff0c;用于解决多线程或多进程环境下的协作问题。该模型包含…...

USB隔离器电路分析,SA8338矽塔sytatek电机驱动,源特科技VPS8701,开关电源,电源 大师

一、 USB隔离器电路分析 进行usb隔离可以使用USB隔离模块 ADUM3160 ADUM4160 注意&#xff1a;B0505S 最大带载0.16A&#xff0c;副边需要带载能力需要改变方案 比如移动硬盘至少需要0.5A 用充电宝、18650、设计5V1A输出电源 二、 1A隔离电压方案...

TPC-DS 测试是否支持 Glue Data Catalog?

在上一篇文章《在Hive/Spark上执行TPC-DS基准测试 (PARQUET格式)》中,我们详细介绍了具体的操作方法,当时的集群使用的是Hive Metastore,所有操作均可成功执行。当集群启用 Glue Data Catalog 时,在执行add_constraints.sql时会报错: Optimizing table date_dim (1/24).…...

网络编程(8.14)TCP并发服务器模型

作业&#xff1a; 1. 多线程中的newfd&#xff0c;能否修改成全局&#xff0c;不行&#xff0c;为什么&#xff1f; 2. 多线程中分支线程的newfd能否不另存&#xff0c;直接用指针间接访问主线程中的newfd,不行&#xff0c;为什么&#xff1f; 多线程并发服务器模型原代码&…...

认识负载均衡||WEBSHELL

目录 一、负载均衡 1.nginx负载均衡算法 2.nginx反向代理-负载均衡 二、webshell 1.构造不含数字和字母的webshell 2.如何绕过 一、负载均衡 1.nginx负载均衡算法 &#xff08;1&#xff09;轮询&#xff08;默认&#xff09;每个请求按时间顺序逐一分配到不同的后端服务&…...

Chapter 15: Object-Oriented Programming | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介Object-oriented programmingManaging larger programsGetting startedUsing objectsStarting with programsSubdividing a problemOur first Python objectClasses as typesObject lifecycleMultiple instancesInheritanceSummaryGlossa…...

模板编程-成员特化

成员特化:类模板特化除了可以对整个类进行特化外,可以只针对某部分成员函数进行特化 全类特化和成员特化都属于全局特化 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstring>template<typename T> class CMath { public:CMath(const…...