Linux命令手册

简介

Multics(大而全)项目失败,吸取教训启动Unix(小而精),Linus Benedict Torvalds受Unix启发开发初始版本Linux内核,Git也由其开发,目的是为了更好的管理Linux内核开发。Unix是商业软件,Linux是开源软件。

Linux Logo,企鹅

请添加图片描述

Linux的发行版本可以分为两类,一类是商业公司维护的发行版本,以Red Hat Enterprise Linux为代表,一类是社区组织维护的发行版本,以Debian为代表,两者最大的区别是包管理方式。社区中常用的是CentOS和Ubuntu,CentOS为RHEL的社区版本,Ubuntu基于Debian发展而来。

Windows与Linux的区别
文件名、目录名、命令
Windows不区分大小写dir和DIR都行
Linux区分大小写,cd和CD中只有cd行
Linux中硬件被抽象为设备文件,在/dev下
Windows中使用设备管理器管理硬件;

Linux的用户界面不与内核绑定,服务器通常会使用无图形环境的操作系统镜像,Windows用户界面与内核绑定。

UNIX/Linux可以粗糙的分为三层,基础是硬件,第一层是内核,第二层是Shell,第三层是应用层。

安装LInux

虚拟机软件VMware安装linux

VMware网络适配器支持五种网络连接

  1. 桥接模式,虚拟机网卡和宿主机网卡均连接到虚拟机软件提供的VMnet0虚拟交换机上,虚拟机和宿主机地位平等。虚拟机与宿主机处于同一局域网,可以相互ssh登录,虚拟机可连接互联网,可连接路由器下所有机器构成的局域网(举例,路由器A,宿主机B,宿主机C,在宿主机B上创建虚拟机D、E且均使用桥接模式,在宿主机C上创建F、G且均使用桥接模式,则B、C、D、E、F、G地位相等,可互相ssh)

  2. NAT模式,虚拟机网卡和宿主机的虚拟网卡VMnet8连接到虚拟机软件所提供的VMnet8虚拟交换机上,VMware为虚拟机提供了一个虚拟NAT服务器和一个虚拟DHCP服务器,可以相互ssh登录,虚拟机可连接互联网,可连接宿主机与使用NAT模式的所有虚拟机构成局域网

  3. 仅主机模式,虚拟机和宿主机使用VMware的VMnet1虚拟网卡进行通信,无NAT服务,虚拟机仅可连接主机,不可连接局域网和互联网

  4. 自定义,手动选择虚拟网卡,VMnet1即为仅主机模式,VMnet8为NAT模式

  5. LAN区段,可划分不同虚拟网络

U盘安装Linux

分区

格式化,格式化的目的是写入文件系统,而非清空数据

文件系统类型:ext3、ext4(兼容ext3)、fat32(Windows上一代文件系统)、NTFS(Windows新一代文件系统)

分区和格式化后,Windows中分配一个盘符即可使用,Linux需要将该分区挂载到某个目录,另外,Linux中硬件被抽象为文件,分区自然被抽象为文件

IDE硬盘 /dev/hd[a-d]

SCSI/SATA/USB 硬盘 /dev/sd[a-p]

软盘 /dev/fd[0-1]

光驱 /dev/cdrom或/dev/sr0

打印机(25针)/dev/lp[0-2]

打印机(USB)/dev/usb/lp[0-15]

鼠标 /dev/mouse

无人值守安装

大批量服务器(如万台大集群)操作系统安装,搭建一台操作系统安装服务器,将其他所有未安装的服务器作为客户端,客户端修改启动方式为网络启动,从安装服务器下载所需的软件,并安装至客户端

Linux使用建议

Linux使用建议

  1. 将文件放在合适的Linux目录结构中

  2. 不在服务器高负载时运行高负载命令,如执行大范围搜索命令

  3. 远程配置防火墙或者ssh时不要将自己踢出服务器,在机房本地配置或者写个定时任务,每五分钟清空防火墙规则,等测试完了关掉定时任务

  4. 指定合理的密码并定时更新,合理保存密码

  5. 合理分配权限

  6. 定期备份重要数据和日志(重要)

命令

命令格式

命令 [选项] [参数]

命令用于执行一系列动作,选项用于调整命令的功能,参数用于指定命令的操作对象。选项可以分为ls -all形式的长选项或者ls -l形式的短选项,通常短选项是长选项的缩写形式,但并非所有长选项和短选项一一对应。

命令提示符,Linux用这个符号标识登录的用户权限等级。若为超级用户,提示符就是#,若为普通用户,提示符就是$

目录相关命令

ls

list

# 显示所有文件,Linux中以.开头的文件均为隐藏文件,如.bachrc、.ssh
ls -a

# 仅显示所有目录
ls -d

# 以长格式显示
ls -l

# 查看文件inode属性
ls -i

# 以人类可读性高的方式显示文件大小
ls -h

cd

change directory

# 更改当前目录到/home/centos
cd /home/centos

# 更改当前目录到本目录
cd .

# 更改当前目录到上一级目录
cd ..

# 更改当前目录到当前用户家目录
cd ~

# 更改当前目录到移动到本目录之前上次cd到的目录
cd -

mkdir

make directory

# 创建若干目录
make a
make a b
make a a/b

# 递归创建目录
make -p a/b

rmdir

remove empty directories

删除若干空目录

rmdir a b c
rmdir 

tree

查看树型目录结构

tree

文件相关命令

touch

修改文件访问时间和数据修改时间

Linux中每个文件都有三个时间相关属性,数据访问时间(Access Time)、数据修改时间(Modify Time)、属性改变时间(Change Time),没有文件创建时间

数据访问时间在文件被访问时更新,如cat命令读取文件内容,数据修改时间在文件内容被修改时更新,如echo “something” >> file,属性改变时间在文件属性改变时更新,如文件名、文件内容、文件权限、文件拥有者、文件所属组、文件数据访问时间、文件数据修改时间等属性变化均会更新

注:touch修改数据访问时间和数据修改时间,而数据访问时间和数据修改时间的修改会引起属性改变时间的更新

# 修改数据访问时间和数据修改时间,文件不存在时创建
touch .bashrc

# 仅修改数据访问时间,文件不存在时创建
touch -a .bashrc

# 仅修改数据修改时间,文件不存在时创建
touch -m .bashrc

# 修改数据访问时间和数据修改时间,但文件不存在时不创建
touch -c .bashrc

stat

查看文件或文件系统的统计信息

# 查看文件.bashrc文件的信息
stat .bashrc
# 查看文件.bashrc文件所在文件系统的信息
stat -f .bashrc

cat

concatenate

一次性输出文件内容

cat file

head

显示文件前n行信息,默认为前10行

head .bashrc
head -n 20 .bashrc

tail

显示文件后n行信息,默认为10行

# 显示文件后20行信息
tail -n 20 .bashrc
# 追踪日志文件后30行
tail -n 30 -f user-service-2024-01-18.log

more

less

ln

make link

创建链接文件

ln xxx hard-file

●不论是修改源文件(test文件),还是修改硬链接文件(test-hard文件),另一个文件中的数据都会发生改变。

●不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件(inode号是262147的文件)都可以被访问。

●硬链接不会建立新的inode信息,也不会更改inode的总数。

●硬链接不能跨文件系统(分区)建立,因为在不同的文件系统中,inode号是重新计算的。

●硬链接不能链接目录,因为如果给目录建立硬链接,那么不仅目录本身需要重新建立,目录下所有的子文件,包括子目录中的所有子文件都需要建立硬链接,这对当前的Linux来讲过于复杂。

ln -s xxx soft-file
  • 软链接的源文件必须写绝对路径,否则建立的软链接文件就会报错,无法正常使用。

  • 比如软链接可以链接目录,也可以跨分区来建立软链接。

  • 软链接和源文件的inode号是不一致的

文件和目录都能操作的命令

rm

rm file
rm -i file
rm -f file

# 删除文件或者目录
rm -r file dir

# 强制删除文件或目录
rm -rf file dir

cp

cp a b

# 若源文件a为软连接,则目标文件b为软连接,对硬链接无效
cp -d a b
# 交互式复制,若目标文件b已存在,询问是否覆盖
cp -i a b
# 指定目标文件b为源文件a的硬链接文件
cp -l a b
# 指定目标文件b为源文件a的软链接文件
cp -s a b
# 复制后目标文件保留源文件的属性,如所有者、所属组、权限、时间
cp -p a b
# 递归复制
cp -r a b
# 等价于 cp -rpd
cp -a a b

mv

mv a b
# 交互式移动或重命名,若目标文件b已存在,询问是否覆盖
mv -i a b
# 强制移动或重命名文件,若目标文件b已存在则覆盖
mv -f a b
# 不强制移动或重命名文件,若目标文件b已存在则不覆盖
mv -n a b
# 移动文件并显示移动信息
mv -v a b

权限相关命令

权限简介

安装完操作系统后绝大多数文件的所有者为root,所属组也为root

dr-xr-xr-x.   5 root root 4096 Jan 12 23:15 boot
d 文件类型,Linux中判断文件类型取决于该标志而非后缀名
- 普通文件
b 块设备文件,例如/dev/sda1
c 字符设备文件
d 目录文件
l 软连接
p 管道符文件
s 套接字文件

r-x 文件所有者权限
r-x 文件所属组权限
r-x 其他人权限

r 读权限
w 写权限
x 执行权限
- 无权限

.表示该文件受SELinux安全规则管理

chmod

超级用户可以修改任意文件的权限,普通用户只能修改所有者为该用户的文件

u表示所有者 user
g表示所属组 group
o表示其他人 other
a表示所有人 all

chmod u+x file
chmod g+x, o-x file
chmod a=rwx
chmod -R 777 dir

数字权限 r4 w2 x1
chmod 755 file
644 一般文件基本权限
755 可执行文件基本权限、目录基本权限
777 最高权限

一般文件r权限表示可以读取文件数据,如使用cat、more、less、head、less等命令查看文件

一般文件w权限表示可以修改文件数据,如使用vi、vim、echo等命令修改文件

一般文件x权限表示可以执行文件

目录r权限表示可以查看目录下内容,如使用ls命令查看目录下子文件和子文件夹

目录w权限表示可以在该目录下新建、删除、复制文件,如使用touch、rm、cp、mv

目录x权限表示可以切换当前目录到该目录,如使用cd切换工作目录

注意:文件w权限不能删除文件,文件名保存在所在目录的block中,删除文件需要修改所在目录的block即修改目录,需要文件所在目录的w权限

root用户为超级用户,即使root对某文件无任何权限,依然可以操作该文件

# 例如/home/centos,仅允许centos操作,但root用户可以删除centos下的文件
drwx------. 2 centos centos 62 Jan 16 08:25 centos

chown

change file owner and group

当希望将一个所有者为root的文件能让普通用户拥有最高权限时,应当修改该文件所有者为普通用户(root依然能访问),而非修改其他人权限为最高权限(会影响其他普通用户)

chown a-user a-file
chown a-user:user-group a-file

chgrp

change group

chgrp a-group a-file

umask

umask默认权限是Linux权限的一种,主要用于让Linux中新建文件和目录拥有默认权限

Windows中通过继承上级目录权限赋予文件和目录初始权限

umask,权限掩码

/etc/profile

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002  # 普通用户 UID > 199,普通用户权限为 rwxrwxrwx中去掉 -------w-,即rwxrwxr-x
else
    umask 022  # 超级用户 UID <= 199,超级用户权限为 rwxrwxrwx中去掉 rwxr-xr-x
umask -p  # 第一位代表特殊权限 Set-UID SetGID Sticky BIT
umask 0002
umask -S  # 
u=rwx,g=rwx,o=rx

帮助相关命令

man

https://www.man7.org/linux/man-pages/index.html

man ls
man -f ls  # 等价whatis
man -k ls  # 等价apropos,根据关键字搜索man
man useradd
1 普通用户可以执行的系统命令和可执行文件的帮助
2 内核可以调用的函数和工具的帮助
3 C语言函数的帮助
4 设备和特殊文件的帮助
5 配置文件的帮助
6 游戏的帮助(个人版Linux中有游戏)
7 杂项的帮助
8 内核的帮助

info

info ls

help

help命令只能获取Shell内置命令的帮助,help本身就是一个内置命令,但man和info不是

help help

注:绝大多数命令会有-h或–help参数用以查看该命令的帮助信息

man -h
info -h

用户相关命令

useradd user
passwd user

Windows中新建用户都属于users用户组
Linux中新建用户会同时建立一个与用户名同名的用户组作为该用户用户组

网络相关命令

ifconfig

ip

# 查看ip地址
ip address

ifdown

禁用网卡

ifdown eth0

ifup

启用网卡

ifup eth0

ping

通过ICMP协议进行网络探测,测试网络中主机的通信情况。

# 默认一直探测
ping baidu.com
# 指定探测10次
ping -c 10 baidu.com

mail

write

wall

netstat

yum install -y net-tools

查看网络连接、路由表

# 显示使用tcp协议端口的连接状况
netstat -t
# 显示使用udp协议端口的连接状况
netstat -u
# 查看路由表
netstat -r
# 仅显示State为Listing的连接
netstat -l
# 显示PID和程序名
netstat -p
# 使用IP地址和端口号显示,不使用域名与服务名
netstat -n
# 列出所有网络状态,包括socket
netstat -a
# 指定每隔几秒刷新一次网络状态
netstat -c 1

通常会使用netstat -tuln查看网络状态

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp6       0      0 ::1:323                 :::*                               

Proto,网络连接协议,TCP或UDP
Recv-Q,接收到的数据,已经在本地缓冲区,还没有被进程取走
Send-Q,表示从本机发送,对方还没有收到的数据,依然在本地的缓冲区
Local Address,本机IP地址和端口号
Foreign Address,远程主机的IP地址和端口号
State,连接状态

  • LISTEN,监听状态
  • ESTABLISHED,连接已建立状态
  • SYN_SENT,主动发起连接
  • SYN_RECV,接收到主动连接的数据包
  • FIN_WAIT1,主动中断连接,但未接收到被动方确认
  • FIN_WAIT2,主动中断连接,且接收到被动方确认
  • TIME_WAIT,主动方等待被动方关闭连接
  • CLOSED,连接关闭

关机和重启相关命令

sync

应用向磁盘写入数据,会首先将数据写入内存缓冲区,缓冲区写满会写入磁盘,如果缓冲区未满时机器宕机,则会丢失该部分数据,sync命令用于主动将内存中的数据写入磁盘,该命令在关机时会自动执行。

sync

shutdown

# 立即重启
shutdown -r now
# 18:00重启
shutdown -r 18:00
# 10分钟后重启
shutdown -r +10
# 立即关机
shutdown -h now
# 18:00关机
shutdown -h 18:00 

reboot

reboot

halt

关机

halt

poweroff

关机

poweroff

init

# 关机
init 0
# 重启
init 6

压缩和解压缩相关命令

zip

压缩.zip文件

# 压缩文件a、b、b为xxx.zip
zip xxx.zip a b c
# 压缩当前目录中所有文件和文件夹为current_dir.zip
zip -r current_dir.zip .

unzip

解压缩.zip文件

unzip xxx.zip

gzip

压缩.gz文件

# 压缩xxx.log文件,不保留原始文件
gzip xxx.log
# 压缩xxx.log文件,保留原始文件
gzip -c xxx.log
# 压缩xxx目录中所有文件,若xxx目录中有a、b、c三个文件,则压缩结果并非xxx.gz而是xxx/a.gz、xxx/b.gz、xxx/c.gz三个压缩文件
# Linux中打包和压缩分开处理,gzip命令仅压缩
gzip -r xxx
# 解压缩文件
gzip -d a.gz

gunzip

# 解压缩
gunzip xxx.gz
# 解压缩目录下的压缩文件
gunzip -r xxx

zcat

若压缩的文件为文本文件,则可直接通过.gz文件查看内容

zcat xxx.gz

bzip2

压缩.bz2文件

# 压缩文件,不保留源文件
bzip2 xxx.log
# 压缩文件,保留源文件
bzip2 -k xxx.log
# 解压缩文件
bzip2 -d xxx.bz2

# 注:bzip2命令不能压缩文件夹

bunzip2

解压缩.bz2文件

bunzip2 xxx.bz2

bzcat

若压缩的文件为文本文件,则可直接通过.bz2查看内容

bzcat log.bz2

Linux中打包和压缩是两个步骤,通常会先将若干文件打包为.tar文件,然后再压缩为.gz文件,最终结果为.tar.gz文件

tar

# -c 打包 -f 指定打包文件名 -v 显示打包内容
tar -cfv xxx.tar main.java controller/ service/

# -x 解包 -C 指定解包位置
tar -xfv xxx.tar -C ./

# tar打包完成后使用gzip或bzip2进行压缩,获取.tar.gz或者.tar.bz2文件,tar可以一步完成打包和压缩
# -z 压缩和解压缩.tar.gz格式
tar -zcfv xxx.tar.gz main.java controller/ service/
tar -zxfv xxx.tar.gc -C ./
# -j 压缩和解压缩.tar.bz2格式
tar -jcfv xxx.tar.bz2 main.java controller/ service/
tar -jxfv xxx.tar.bz2 -C ./

常用.tar.gz格式

搜索相关命令

whereis

搜索系统命令及其帮助手册

whereis ls

# 仅搜索二进制命令
whereis -b ls
# 仅搜索帮助手册
whereis -m ls

which

搜索二进制命令,若该命令为别名则展示别名细节,并指出实际命令

# cd就是一个二进制命令
which cd

# ls本身是一个二进制命令,位于/usr/bin/ls,但通常系统会设置别名ls='ls --color=auto'从而覆盖原始ls命令
# 执行ls实质执行的是ls='ls --color=auto'
which ls
# alias ls='ls --color=auto'
#         /usr/bin/ls
# 同理,ll命令也是一个别名,这种使用whereis是搜索不到的,使用which ll
# alias ll='ls -l --color=auto'
#        /usr/bin/ls

locate

yum install locate

locate用于搜索文件,系统命令就是二进制文件,locate仅根据文件名进行搜索,无法进行复杂搜索。locate并非直接搜索磁盘,而是将文件路径存储到locate数据库中,直接在数据库中进行搜索,相比于其他搜索命令,locate搜索快速资源占用小,但数据库并非实时更新,新建文件会搜索不到。

# 查找.bashrc文件
locate .bashrc
# 忽略大小写并查找.bashrc文件
locate -i .bashrc

# 初次安装locate或者新建文件在locate的数据库中是查找不到该文件的
# 该数据库会在用户退出或者重新启动后自动更新,数据库数据存储于/var/lib/mlocate/mlocate.db,若要手动更新
updatedb

locate数据库的配置文件为/etc/updatedb.conf,

# 是否启用搜索限制
PRUNE_BIND_MOUNTS = "yes"
# 禁止搜索的文件系统类型
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs fuse.glusterfs ceph fuse.ceph"
# 禁止搜索文件名中包含.git等的,.gitxxx也不会搜索到
PRUNENAMES = ".git .hg .svn"
# 禁止搜索如下路径下的文件
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp /var/lib/ceph"

find

# 文件名
# 按照名称搜索
find / -name .bashrc
# 忽略大小写并按照名称搜素
find / -iname .bashrc

# 文件大小
# 搜索大于10M的文件,k小写、M大写
find / -size +10M
# 搜索小于10M的文件
find / -size -10M

# 时间
# -atime 访问时间 -mtime 数据修改时间 -ctime 状态修改时间
# 查找往前数(不包括今天)第5天访问过的文件,若今天是2024.01.10,则会查找2024.01.05当天访问过的文件
find / -atime 5
# 查找往前数(不包括今天)第5天到现在(不包括第五天)访问过的文件,就是出今天外往前4个完整1天
find / -atime -5
# 查找往前数(不包括今天)第5天过去(不包括第五天)访问过的文件
find / -atime +5
# 总结就是以今天为0天,5表示过去第五天,-5表示(5, 0],+5表示(oo, 5)

# 权限
# 查询指定权限的文件,要求文件权限与给定权限完全一致
find / -perm 666
# 查询具有任意一个身份任意一个权限的文件,要求所有者、所属组和其他人任意一个身份中读写任意一个权限具有就会被查出来
find / -perm +666
# 查询具有三个身份指定的所有权限的文件,如777权限文件完全包含666,会被查出
find / -perm -666
# +表示或 -表示且

# 所有者、所属组
# -uid 用户ID -gid 组ID -user 用户名 -group 组名 -nouser 没有所有者
# 查找所属人为管理员的文件,0是root的uid
find / -uid 0

# 文件类型
# 查找目录
find / -type d
# 查找普通文件
find / -type f
# 查找软链接文件
find / -type l

# 复合逻辑
# -a 与 -o 或 -not 非
# 查询/目录下 文件大小大于2kb的普通文件
find / -size +2k -a -type f

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

有线桥接|Wifi隔了一堵墙就没信号?房间的网线口利用起来,让房间死角也有网!

前言 本篇文章是路由器有线桥接主路由&#xff0c;起到AP&#xff08;热点&#xff09;的效果 上次发布的无线桥接&#xff0c;使用的前提是需要把旧路由放置在主路由的信号范围内&#xff0c;这极大限制了桥接路由器的放置位置。 如果隔了一堵墙基本上就无法连接Wifi&#x…

供应链安全项目in-toto开源框架详解

引言&#xff1a;in-toto 是一个开源框架&#xff0c;能够以密码学的方式验证构件生产路径上的每个组件和步骤。它可与主流的构建工具、部署工具进行集成。in-toto已经被CNCF技术监督委员会 (Technical Oversight Committee&#xff0c;TOC)接纳为CNCF孵化项目。 1. 背景 由于…

微信小程序之WXML 模板语法之数据绑定、事件绑定、wx:if和列表渲染

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

一键搭建你的知识库

效果 说明 由于安装包安装需要glibc>2.7 我就不尝试了 因为glib升级是一个繁琐的过程 没有升级的意义 只是为了体验知识库 没必要浪费时间 1.1docker compose部署trilium 1.1.创建目录 mkdir -p /opt/triliumcd /opt/trilium 1.2.编写docker-comppose.yml文件 vim dock…

使用STM32的GPIO口实现LED闪烁

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;&#x1f447…

JavaWeb-Cookie与Session

一、概念 是否还记得我们在HTTP概念中提到&#xff1a;HTTP的一大特点是无状态&#xff0c;这意味着多次HTTP请求之间是无法共享数据的。而在请求之间共享一些数据又是我们期望达到的效果。&#xff08;例如登录的记住我功能&#xff09;于是便有了会话跟踪技术&#xff0c;而…

Qt拖拽组件与键盘事件

1.相关说明 1.设置widget或view的拖拽和放置模式函数setDragDropMode参数说明&#xff0c;NoDragDrop(无拖拽和放置)、DragOnly(只允许拖拽)、DropOnly(只允许放置)、DragDrop(允许拖拽和放置)、InternalMove(只移动不复制) 2.设置widget或view的放置动作函数setDefaultDropAct…

python 实现大语言模型中的概率论:两人轮流出手对决时取胜概率的推导

假设你跟朋友通过打赌投篮来打赌一万块。你们找到一个篮球框&#xff0c;然后约定轮流投篮&#xff0c;谁先投进谁赢。假设你投进的概率是 p&#xff0c;也就是投不进的概率是 1-p&#xff0c;你对手投进的概率是 q,投不进的概率是 1-q&#xff0c;如果由你先投&#xff0c;那么…

反序列化提升刷题(2)

今天的例题&#xff1a; <?phphighlight_file(__FILE__);class ctfshowvip{public $username;public $password;public $code;public function __construct($u,$p){$this->username$u;$this->password$p;}public function __wakeup(){if($this->username! || $thi…

解决 vue 项目开发越久 node_modules包越大的问题

解决 vue 项目开发越久 node_modules包越大的问题 node_modules.cache 文件&#xff08;编译缓存文件 可以删除 &#xff09; compression-webpack-plugin 禁止缓存 const CompressionPlugin require("compression-webpack-plugin");module.exports {plugins: [ne…

面向对象之深度优先和广度优先

面向对象深度优先和广度优先是什么&#xff1f; 二叉树的两种遍历是数据结构的经典考察题目, 广度遍历考察队列结构, 深度遍历考察递归 深度优先 先序遍历(父, 左子, 右子) 0, 1, 3, 7, 8, 4, 9, 2, 5, 6 中序遍历(左子, 父, 右子) 7, 3, 8, 1, 9, 4, 0, 5, 2, 6 后序遍历(左子…

SpringBoot跨域问题解决

前端访问后台接口时&#xff0c;浏览器报错&#xff0c;跨域无法访问。 报错信息如下&#xff1a; Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header is present on the requested resource. 经过一番百度之后&#…

【JVM】运行时数据区

文章目录 运行时数据区程序计数器栈栈帧 堆方法区本地方法栈直接内存变量存储位置 面试题本地方法栈有什么用&#xff1f;没有程序计数器会怎么样&#xff1f;说一说Java的内存分布情况类存放在哪里&#xff1f;局部变量存放在哪里&#xff1f; 运行时数据区 java虚拟机在运行…

acwing讲解篇之93. 递归实现组合型枚举

文章目录 题目描述题解思路题解代码 题目描述 题解思路 本题相当于二叉树的深度优先遍历&#xff0c;树的第i层表示第i个数选或不选&#xff0c;当选择了m次左节点后退出 我们记录当前递归的深度deep 然后用state进行状态压缩&#xff0c;state第i位是1表示选第i个数&#xff…

FaFu--练习复盘--2

3、函数练习 3.1、函数表达式&#xff08;1&#xff09; 描述 根据以下公式计算数学表达式的值&#xff0c;并将结果作为函数值返回。在main()函数中输入x&#xff0c;调用函数fun(x)&#xff0c;并输出fun(x)的值。 输入 输入1行&#xff0c;包含1个double类型的浮点数&…

git22端口超时

笔记本换了个主板后&#xff0c;将内容用git上传到GitHub时发现22端口超时。 以为是网络啥的原因&#xff0c;但是用ssh -T gitgithub.com进行多次测试&#xff0c;发现不是网络问题。按照网上操作&#xff0c;在.ssh文件夹内将config文件进行修改&#xff0c;改成&#xff1a;…

python爬取图片(thumbURL和html文件标签分别爬取)

当查看源代码&#xff0c;发现网址在thumbURL之后时&#xff0c;用此代码: # 当查看源代码&#xff0c;发现网址在thumbURL之后时&#xff0c;用此代码:import requestsheaders {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121…

cs231n assignment1——SVM

整体思路 加载CIFAR-10数据集并展示部分数据数据图像归一化&#xff0c;减去均值&#xff08;也可以再除以方差&#xff09;svm_loss_naive和svm_loss_vectorized计算hinge损失&#xff0c;用拉格朗日法列hinge损失函数利用随机梯度下降法优化SVM在训练集和验证集计算准确率&a…

vue项目执行依赖安装(npm i或npm install )报ls-remote -h -t异常

从git拉取的vue项目执行依赖安装时一直报错&#xff0c; 报错如下图&#xff1a;首先&#xff0c;查看了node版本、npm配置的镜像地址均没找到解决办法。 在命令行中直接输入git发现提示于是从网上搜到了一个博文https://blog.csdn.net/weixin_49159364/article/details/118198…

【LeetCode】141. 环形链表

leetcode题目链接 141. 环形链表 #include <stdio.h> #include <stdbool.h>struct ListNode {int val;struct ListNode* next; }; typedef struct ListNode ListNode;bool hasCycle(ListNode* head) {ListNode* slow head, * fast head;while (fast &&…