Linux:基础指令与内涵理解(下)与权限

1.mv

作用:将文件移动、文件重命名

语法: mv (选项) 源文件/目录 目标文件/目录

(1)将文件/目录移动到当前目录的新文件/目录(也就是重命名操作)

这里我们mv了test.txt文件到当前目录下当前并不存在的ln.txt文件,这种操作就是将test重命名了

(2)将文件/目录移动到已经存在的目录下(剪切操作)

这里我们利用mv将ln文件剪切移动到了d1目录下

(3)将目录移动到已经存在的目录中,但是目录中不存在指定目录(剪切+重命名)

这里我们将dir目录先剪切到了text目录中,然后将dir重命名为d

2.cat

作用:查看目标文件的内容

语法: cat (选项) 文件

(1)将目标文件内容写入到显示器文件

我们先追加了一个new message到log文件,然后cat显示文件内容

(2)打印时添加行号显示

加一个-n就可以显示行号

(3)打印时压缩连续空行为一行

这里我们利用-s选项将原本有多行的连续空行压缩为了一行

(4)对非空输出行编号

这里是由四行空输出行和十行非空输出行构成的文件内容,我们利用-b就可以对非空输出行进行编号,而不对空行进行编号


补充:tac命令

tac是把cat命令反过来了,所以他的作用也很好记,就是将文件内容倒着输出

3.文件内容显示的其他指令

 cat主要用于小文件/配置文件的打印

对于大文件(日志)我们有其他的命令负责显示,之所以不再使用cat不是因为cat不能打印,而是cat的打印会刷屏,不方便查看具体数据信息

(1)more(不方便)

语法: more (选项) 文件名

作用:分段查看大文件内容

优势:比起cat,他不会再进行刷屏,而是可以慢慢将所有文件内容显示出来

劣势:只能用回车键进行向下数据查看,无法上翻

(2)less(用于一行一行看的时候)

语法: less (选项) 文件名

作用:分段查看大文件内容

优势:比起more只能向下查看,less支持上下页面的查看,更加灵活

操作的写入位置:在less末尾的“:”后面写

操作1:q(quit:退出)

进入less查大文件内容后,如果想退出,直接按q即可

操作2:/

/主要用于查找指定内容

操作3:n

在使用/查找指定内容后,如果我们想跳转到下一个同样的内容,按一个n即可

(3)head

语法: head (选项) 文件名

作用: 用于打印从文件的开头开始的若干行信息

选项1: -n(n是任意数值)

这里我们用-1,就把log文件的第一行数据给打印出来了

(4)tail

语法: tail (选项) 文件名

作用:用于打印从文件的末尾开始的若干行信息

选项和head一样,作用改为了从倒数第n行开始输出n行

这里我们看到用tail把倒数六行数据倒着输出了


思考:如果我们想打印一段区间的数据,应该怎么做?

方法一:先用head将[0,right]的数据写入临时文件,然后从临时文件用tail读取[left,right]的区间数据

我们先将log文件的前10行输出重定向到newlog文件中,然后再打印newlog的尾部6行即可

方法二:使用管道"|"一行指令实现目标

管道的左侧为输入端,输入端进行了输出重定向,重定向数据到管道文件中

管道右侧位输出端,输出端进行了输入重定向,将数据重定向到显示器文件中

注意:如果管道有多段,前一段的输出端就相当于下一段的输入端了

4.时间相关的命令

 (1)date

语法: date +(选项)

作用:以自定义格式输出时间信息

其中:

%Y:表示年    %m:表示月    %d:表示日    %H:表示时    %M:表示分    %S:表示秒

注意:中间的反斜杠\是转义字符,负责将空格转义打印到显示器上


补充:时间戳

现在显示的数字就是从1970年的午夜12点到现在所经过的秒数,而这个数字就叫时间戳,和日期不同的是,时间戳是全球同步的

时间戳没有转化之前就是秒数

1.我们也可以将时间戳转化为日期信息

通过-d选项我们就可以把时间戳转化为具体的日期信息

2.查看北京时间的起始点

之前我们说起始点的时间是1970年1月1日的0点,但是这里却是早上八点,这是为什么?

因为地球的自转,所以地球上的不同地区被太阳照射的时间不是同步的,故不同的地区之间存在时差,这里我们把北京地区的时差加上之后,北京时间就可以同步到正确的时间戳上了。

(2)cal

语法:cal (选项)年份

作用:显示指定年份的日历

5.find

 语法:find  所处目录层级(选项)文件名

作用:用于指定目录层级下开始查找文件

选项1:-name

-name的作用是让我们可以指定需要查找的文件的名字

6.nano

 nano是一个用于修改文件内容的指令工具,它又叫文本编辑器。

语法:nano 文件名

修改方法:直接在内容中修改

保存修改:ctrl+o加enter

退出修改:ctrl+x

其余快捷键在底部显示

7. grep

语法:grep (选项)字符串 查找文件名

功能:在指定文件中查找目标字符串,找到后打印有目标字符串的行

(1)不带选项查找

我们先将内容重定向到test文件中,然后用grep查找指定字符,需要注意的是grep大小写敏感,所以若查找A就没有结果打印

(2)-i选项

加了-i选项后,我们的大小写就被忽略了,既可以查找大写的也可以查找小写的

(3)-v选项

加了-v选项后,我们打印出来的行就是没有指定字符串的行

比如上面,我们的查找策略就是找没有b字符的行

(4)-n选项

让输出的行带上行号 

8.top

语法:top

功能:以特定频率查看系统进程和cpu占用等情况

退出方式:q

若不退出则一直运行

选项1:-d

-d可以指定我们的刷新频率

选项2:-n

-n可以指定一共刷新的次数,若刷新次数达到-n指定的次数就直接退出

9.zip与unzip

zip:压缩指令
语法:zip 压缩后文件 待压缩文件

功能:将待压缩文件压缩到压缩后文件指定路径中

需要注意的是:

1.若不带任何选项,压缩的只有待压缩文件本身,无论他是目录还是文件。也就是说他是目录的话,我们压缩的就是空目录

2.带上-r选项,我们就可以对目录的全部内容进行打包压缩


unzip:解压缩指令
语法:unzip 待解压文件 解压路径

功能:将文件解压到指定目录

这里我们使用unzip指令将d压缩文件解压缩到当前目录下

 10.tar

(1)打包压缩

语法:tar -czvf 文件名 待压缩文件

功能:将文件压缩到某个路径

选项解释:
1.-c:表示create一个文件

2.-z:表示具有gzip属性

3.-v:表示显示压缩的文件名、解压的文件名

4.-f: 表示接档名,且加了f选项,他后面不可以直接再接其他选项

补充:

文件档名:主文件名+扩展名

扩展名中用tar一般是只对文件打包(不压缩,仅仅将文件打包到一个文件中)

用tar.gz(可简写为tgz)表示对文件用gzip进行了压缩

(2)解压

语法:tar -xzvf 压缩文件名 解压缩路径

功能:将文件压缩到指定路径


注意:tar和zip是两种压缩算法,他们只能解压他们对应的压缩文件,只能压缩成他们各自的压缩文件

11.bc

 语法:bc

功能:进行浮点型运算

程序不会自行结束,而是要使用quit手动终止程序

补充:

1.ctrl+c

如果我们在给键盘文件写入数据的时候写错了,想终止写入,我们可以用ctrl+c命令终止输入

2.tab

tab的作用是进行命令的补全,如果再按一次enter键就会让有相同前字符匹配的所有指令都显示出来

3.ctrl+r

ctrl+r的作用是对历史命令进行搜索,这里我们输入t进行历史命令搜索,可以发现之前写过的以t开头的命令

12.file

 功能:查看更详细的文件信息

 语法: file 文件名

通过file我们知道了test.c为空文件,d文件为具有粘滞位的目录文件。

13.体系结构查询指令

(1)uname

语法: uname (选项)

功能: 查找硬件体系结构

若直接查询只能查到是linux系统,用上-a选项就可以查看所有信息,此时我们就可以显示硬件体系结构

(2)lsb_release 
语法:lsb_release (选项)

功能:查找软件体系结构

我们需要加-a选项才能查看具体的软件体系结构配置

14.对操作系统的理解

 狭义上:linux的操作系统就只特指linux的内核

广义上:linux的操作系统还包括外壳程序,甚至某些默认安装软件

图示:

(1)什么是外壳程序?

外壳程序(命令行解释器):就像shell一样,主要负责将用户输入的命令翻译给内核,并把内核的执行结果翻译返回给用户

(2)为什么需要有外壳程序?
1.为了保护操作系统:如果用户输入非法的指令,外壳程序这一层就可以直接截断下来,而不会继续传递给内核判断

2.为了方便用户操作:若让用户直面内核程序,需要用户付出很高的学习成本,不利于用户上手

(3)操作系统主要通过管理软硬件来达到优化用户使用操作系统体验的目的

图示:
 

15.linux中的权限

1.linux的文件类型

对于windows系统,使用文件的后缀名来区分文件类型

就像这里,我们的代码会产生很多不同的文件,而windows就是根据这些文件的后缀名来区分文件类型的

对于linux系统,使用文件的属性列来区分文件类型

其中以d开头的就是目录,以-开头的就是普通文件。

虽然说linux不以文件后缀名区分文件类型,但是这并不代表我们不被允许在linux系统中使用文件后缀名,因为文件后缀名还有一个用处就是可以帮助我们快速区分文件类型

文件后缀名可能会被用于linux系统的不同工具中,在这些工具中,会以文件后缀名做区分

这里我们以gcc工具为例:

gcc是一个用于编译代码的指令工具,这里我们是使用gcc将.cpp的代码编译出来

如果我们将代码文件的后缀从.c改为其他后缀名,虽然linux系统仍然认为他是一个文件,但是gcc工具就不再认为他是一个.cpp文件,不再对它进行编译

2.linux用户

 在windows系统中,我们在开机的时候可以看到有切换账号的选项,其实windows可以有多个用户账号和一个管理员账号,这就是多用户操作系统。

而linux也是多用户操作系统,其中一个root管理员账号和多个user普通用户账号

(1)linux中的用户创建与销毁

1.adduser:创建新用户
2.passwd:设置密码
3.userdel -r :销毁用户

(2)将普通用户转账号为root账号(管理员才进行这个操作)

转换为root账号需要我们输入root的账号密码,输入失败会提示输入错误,输入成功就将用户转化为root,但是此时的工作路径仍然是普通用户的路径

我们输入ctrl+d就可以退出root账号回到普通用户账号

(3)将root账号转化为其他普通用户

如果我们以普通用户的身份想转换成其他普通用户身份,那么我们需要知道想转换成的普通用户的密码才可以转换,但是如果我们是root账号,可以通过su指令直接转化为任意普通用户账号。

此时的工作路径仍然是root的

(4)su - 重新登录账号

前面的su命令只会改变操作人身份,而不会改变工作路径。而su-则会直接进行重新登录的操作,不仅改变操作者身份而且改变工作路径

(5)普通用户使用sudo直接用管理员级别权限进行操作

更正:不是user/bin,而是usr/bin

这里我们需要输入的密码不是root的密码,而是普通用户自己的密码。

疑问1:为什么执行管理员权限操作不用输入root的密码?

因为有时候小组内成员需要执行管理员权限的操作,如果都交给管理员来做不现实,而如果我们将root密码交给小组内成员又会导致权责不明确的现象(root账号操作出现重大失误无法追责),所以此时我们就可以让root账号给普通账号授权,给他们进行管理员权限进行操作,这样出现问题就可以溯源了

疑问二:为什么现在我们的普通用户无法进行管理员权限的操作?

因为此时root账号还没有给lhc用户授权

授权操作:

以root的账号登录,先用nano进入配置文件,然后找到权限授予位置,添加lhc用户进入

这里我们就可以添加lhc用户到授权区域,获得和root一样的操作权限

授权后的操作演示:

由于我们前面几分钟内输入过lhc用户密码,所以此时我们就不用再重复输入,直接执行管理员权限将test.txt从/usr/bin目录中删除

3.权限的理论理解

 文件权限 = 角色 + 文件属性(权限属性)

简单来说就是我们能利用某事物做一件事的前提是这个事物本身有这个功能,且我们的角色被允许做这件事

权限总的来说就是可不可以干某件事情。


接下来我们看看具体的文件属性界面

一共分七部分:
第一部分是文件的读写执行权限分布

-rw-rw-r--

第二部分是文件引用计数

1

第三部分是拥有者名字

lhc

第四部分是所属组名字

lhc

第五部分是文件的大小

0

第六部分是文件创建日期

May 22 19:57

第七部分是文件名

text.txt

内容补充:
1.文件权限:rwx

其中r是读的权限,w是写的权限,x是执行权限

其中x如果放开并不意味这这个文件一定可以执行,只是说我们允许这个文件执行,最终是否可以执行还是要看这个文件本身

2.职能域分类:
(1)拥有者:文件的创建者
(2)所属组:创建者所在的工作组
(3)other:除了拥有者和所属组之外的其他用户

第一部分就是控制文件权限的部分,第一个占位符位置表示文件类型,是目录还是普通文件

后面接着的三个占位符是拥有者的,然后接着三个是所属组的,最后三个占位符是other用户的。-表示没有对应权限

4.权限的操作

4.1修改文件权限属性方法一

 (1)对单个角色属性的权限进行修改

指令:chmod

语法: chmod 角色+/-权限 文件名

角色:u表示拥有者,g表示所属组,o表示其他用户

权限: r/w/x(读/写/执行)

对拥有者权限进行修改

这里我们使用chmod指令给拥有者增加了文件可执行权限

对所属组权限进行修改

这里我们使用chmod给test.c的所属组权限增加了可执行

对other用户权限进行修改

这里我们使用chmod给test.c的other用户权限增加了可执行

(2)对多个角色权限进行修改

语法:chmod 角色+/-权限(多个之间用逗号隔开) 文件名

这里我们就将u,g,o的可执行权限收回了

(3)对所有角色权限进行修改

语法: chmod a+/-权限 文件名

a就是all的意思,也就是全部角色的替代。我们对a+/-权限就是对所有角色进行权限修改


注意:

1.root账号可以无视权限限制

这里我们将test.c的w权限收回,但是我们现在是root账号却仍然可以写入内容到test.c中,这说明root账号可以无视权限限制

2.角色身份只会匹配一次

这里我们的拥有者只有读的权限,所以我们进行写入的时候就会被拒绝。不过我们的lhc用户不仅是拥有者这个身份,他还是所属组的成员,而所属组是有写入权限的,为什么我们还是无法写入?

因为身份只会匹配一次,按照拥有者->所属组->other的顺序进行身份匹配,匹配成功了就不会再往后匹配了

4.2修改文件权限属性方法二 

由于每个角色对应的权限rwx分别都只有两种状态,有/无,所以我们可以用二进制0/1来表示权限的状态

eg:对于拥有者,它是rw-,此时r和w是有的用1表示,x是没有的,用0表示。所以用二进制表示就是110

而如果我们都用二进制表示状态会导致我们需要用九个位置的二进制数来表示权限状态,而其实rwx最大的二进制表示就是111,也就是是转成八进制的7,所以其实我们可以用一个八进制数表示一个角色的权限,三个角色就是三个八进制数即可

eg:u:rw-     g:r--     o:r--

此时我们的u就是110->6,g是100->4,o是100->4.所以最终就是644表示权限设置情况

接下来我们实际操作一次:

通过chmod 644我们确实把test.c的权限更改为了我们一开始假设的情况

4.3修改角色属性

1.更改拥有者

 指令:chown

语法:chown 修改成的用户名 文件名

功能:将对应文件的拥有者改为其他用户

这里我们试图将test.c文件传递给root账号,但是这被拒绝了,因为普通用户没有转角色属性的权限。

疑问:为什么设计的时候不给普通用户修改角色属性的权限?

因为这涉及到分工责任,如果员工a写烂了一个代码文件,该文件导致公司服务器瘫痪,此时员工a若把文件的拥有者转给员工b,那么此时员工b就应该要为这件事负责,员工a就把黑锅甩给了员工b

root账号/权限允许进行角色转换:

(1)root账号条件下进行转换

这里我们用root账号将test.c的拥有者从root改为了lhc

(2)root权限下进行转换

这里我们用sudo来提权,将文件的拥有者改为了root

2.更改所属组

 指令:chgrp

语法:chgrp 修改成的用户名 文件名

功能:将对应文件的所属组改为其他用户

这里我们将test.c的所属组从lhc改为了root

4.4目录权限

 r:决定是否执行用户要的查看文件的命令

w:决定用户是否可以修改文件名,新建/删除执行目录下的文件

x:是否可以进入目录

所以我们的目录创建好之后默认带上的权限就是都有x的。

普通文件默认权限:666

目录文件默认权限:777

疑问:那么我们真正创建文件/目录的时候为什么不是根据这个默认权限生成的?


因为我们还需要对默认权限进一步操作,将权限掩码的拥有部分除去,而权限掩码是用来增强默认生成的灵活性的,特殊情况下我们可能需要创建一堆特定权限要求的文件,所以我们用原来的默认权限和权限掩码组合使用就可以达到目的

权限掩码的作用:可以将权限掩码中出现的权限从默认权限中过滤掉,从而得到最终权限

权限掩码查看指令:umask

第一位可以先不看,后面三位就是权限的八进制表示

过滤方法:默认权限 & (~umask)

eg:

我们通过对umask取反然后再与默认权限按位与的计算方法就可以将权限掩码的权限从默认权限中过滤掉

修改umask的方法:

语法: umask 要改成的权限

这里我们就将权限掩码改为了007


对目录的w权限的理解:

一个文件本身是否可被读,写,执行,取决于他的文件权限。而他是否可以被删除和修改文件名取决于他所处的目录是否有w权限。

一般来说,普通用户的目录都不允许其他用户进入,也就是说普通用户的目录只有用户自己和root可以进入

假设现在我们想实现多个用户共享一个文件,我们可以怎么做?

首先我们一定不能把该目录文件创建在任何一个普通用户的家目录下,因为普通用户的家目录只有root和用户本身可以进入,无法实现共享功能。

1.利用root创建一个shared目录文件,并把other权限的w和x打开,从而其他普通用户都可以进入shared目录进行文件操作。

2.此时虽然可以进行文件共享,但是可能会出现错误删除或恶意删除的情况,所有用户都有对目录下文件的新建和删除权限。

3.此时我们可以使用粘滞位来限制普通用户的删除权限

粘滞位:当我们给目录设置了粘滞位后,只有该文件的拥有者/root/目录拥有者可以删除该文件,其他用户无权删除。

演示粘滞位设置:

粘滞位设置后x就被替换为了t,此时就可以限制普通用户的删除权限了

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

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

相关文章

卷积神经网络(CNN)入门学习笔记

什么是 CNN? CNN,全称 卷积神经网络(Convolutional Neural Network),是一种专门用来处理图片、语音、文本等结构化数据的神经网络。 它模仿人眼识别图像的方式: 从局部到整体,一步步提取特征&a…

c#基础07(调试与异常捕捉)

文章目录 调试与异常捕捉调试异常处理C#中的异常类异常处理抛出对象 调试与异常捕捉 很多时间,写代码不能一撸到底,中间都是经历过无数次的调试,才能正常正确的运行起来。.Net调试有很多方法和技巧。 调试 在C#中程序调试主要指在Visual S…

一种比较精简的协议

链接地址为:ctLink: 一个比较精简的支持C/C的嵌入式通信的中间协议。 本文采用的协议格式如下 *帧头 uint8_t 起始字节:0XAF\ *协议版本 uint8_t 使用的协议版本号:当前为0X01\ *负载长度 uint8_t 数据段内容长…

【windwos】文本编辑器Notepad++ 替代品Notepad--

一、N和N--对比介绍 曾经备受推崇的「Notepad」曾是Windows上的经典代码编辑器。然而,作者的一些政治言论已经让它被广大中国用户抛弃。 一个名为「Notepad--」的新编辑器,也是开源免费,功能和实用性也在尽可能接近。与此同时,「N…

贪心算法套路模板+详细适用场景+经典题目清单

1. 排序 贪心选择 适用场景: 任务调度问题:需要安排多个任务,尽量完成更多任务或最小冲突。 区间调度问题:选出最多互不重叠的区间。 区间覆盖问题:用最少区间覆盖某个范围。 合并区间问题:合并重叠区…

Qt QPaintEvent绘图事件painter使用指南

绘制需在paintEvent函数中实现 用图片形象理解 如果加了刷子再用笔就相当于用笔画过的区域用刷子走 防雷达&#xff1a; 源文件 #include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QPainter> Widget::Widget(QWidget…

SIGGRAPH 2025 | 快手可灵团队提出3D感知的电影级文本到视频生成框架CineMaster

Sora、可灵等视频生成模型令人惊艳的性能表现使得创作者仅依靠文本输入就能够创作出高质量的视频内容。然而&#xff0c;我们常见的电影片段通常是由导演在一个场景中精心布置多个目标的运动、摄像机拍摄角度后再剪辑而成的。例如&#xff0c;在拍摄赛车追逐的场景时&#xff0…

在springboot,禁止查询数据库种的某字段

使用Mp注解&#xff08;只对Mp提供的基础方法有效&#xff09; 在注解TableField后面加一个select false,这样就无法查询到该表下密码这个字段了 但需要注意的是如果是自己写的sql就无法通过这一种方法实现了

Spring Boot + MyBatis-Plus实现操作日志记录

创建数据库表 CREATE TABLE sys_operation_log (log_id bigint NOT NULL AUTO_INCREMENT COMMENT 日志ID,operation_type varchar(20) NOT NULL COMMENT 操作类型,operation_module varchar(50) NOT NULL COMMENT 操作模块,operation_desc varchar(200) DEFAULT NULL COMMENT …

开源多模态新标杆——BAGEL本地部署教程:7B参数撬动万亿数据

一、简介 BAGEL &#xff0c;这是一个开源的多模态基础模型&#xff0c;具有 70 亿个激活参数&#xff08;总共 140 亿个&#xff09;&#xff0c;并在大规模交错多模态数据上进行训练。 BAGEL 在标准多模态理解排行榜上超越了当前顶级的开源 VLMs 如 Qwen2.5-VL 和 InternVL…

SD卡+FATFS+Tinyjpeg图片解码显示 (STM32F103VET6通过CubeMX快速建立工程)

先展示最终实现的功能效果如下: 1.目的与意义 为什么选用SD卡? 使用Nor-flash(W25Q系列)进行图片的存取,需要先把图片通过对应软件批量处理为二进制bin文件,再通过SPI等通讯方式将 bin文件烧写进Nor-flash才能进行使用,使用时还要记住每张图片的首地址和对应字节数,MC…

数据结构-散列表查找(哈希表)

一&#xff0c;散列表查找定义 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f&#xff0c;使得每个关键字key对应一个存储位置f(key)。查找时&#xff0c;根据这个确定的对应关系找到给定值key的映射f(key)&#xff0c;若查找集中存在这个记录&#xff0…

Stable Diffusion 简单了解一下

1. 帮我简单介绍一下:StableDiffusion 🌈 Stable Diffusion 是什么? Stable Diffusion 是一个 文本生成图像(Text-to-Image) 的人工智能模型。你只需要输入一句话,它就能根据这句话生成一张高质量的图片。 比如: "一只穿着太空服的猫,在月球上弹吉他"St…

R语言科研编程-标准偏差柱状图

生成随机数据 在R中&#xff0c;可以使用rnorm()生成正态分布的随机数据&#xff0c;并模拟分组数据。以下代码生成3组&#xff08;A、B、C&#xff09;随机数据&#xff0c;每组包含10个样本&#xff1a; set.seed(123) # 确保可重复性 group_A <- rnorm(10, mean50, sd…

普罗米修斯监控CPU\内存汇聚图

要找出内存使用率大于80%的主机&#xff0c;你可以使用以下PromQL查询。这个查询会计算每个节点的内存使用率&#xff0c;然后筛选出使用率超过80%的节点&#xff1a; (avg by(nodename) ((node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)* on(instance) group…

飞牛fnNAS手机相册备份及AI搜图

目录 一、相册安装应用 二、手机开启自动备份 三、开始备份 四、照片检索 五、AI搜图设置 六、AI搜图测试 七、照片传递 现代的手机,已经成为我们最亲密的“伙伴”。自从手机拍照性能提升后,手机已经完全取代了简单的卡片相机,而且与入门级“单反”相机发起了挑战。在…

华为高斯数据库(GaussDB)深度解析:国产分布式数据库的旗舰之作

高斯数据库介绍 一、高斯数据库概述 GaussDB是华为自主研发的新一代分布式关系型数据库&#xff0c;专为企业核心系统设计。它支持HTAP&#xff08;混合事务与分析处理&#xff09;&#xff0c;兼具强大的事务处理与数据分析能力&#xff0c;是国产数据库替代的重要选择。 产…

网页 CSS美化2(详解)

这是接着上一篇css基础的第二篇&#xff1a;主要开始对页面的布局进行学习 显示模式&#xff1a; 块级模式&#xff08;Block&#xff09; 特点 &#xff1a; 元素会独占一行&#xff0c;在其前后会自动换行&#xff0c;与其他块级元素在垂直方向上排列。 宽度默认为所在容器…

JSON解析性能优化全攻略:协程调度器选择与线程池饥饿解决方案

简介 JSON解析是现代应用开发中的基础操作,但在使用协程处理时,若调度器选择不当,会导致性能严重下降。特别是当使用Dispatchers.IO处理JSON解析时,可能触发线程池饥饿,进而引发ANR或系统卡顿。本文将深入剖析这一问题的技术原理,提供全面的性能检测方法,并给出多种优化…

python打卡第37天

知识点回顾&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 作业&#xff1a;对信贷数据集训练后保存权重&#xff0c;加载权重后继续训练50轮&#xf…