粉丝1094获赞1254

哈喽,同学们好,现在我们来看看第六关的解题思路。那可以观察到啊,第六关我们大夫是没有在飞船上的,所以我们首先要让大夫到飞船上,这是第一步, 然后呢这飞船外面的路线,它是一个正方形,其实是可以构成一个重复的,那我们因为它不是在正方形的一个角上,所以我们需要 用其他的路线。飞船先要前进一步,然后呢飞船需要转向,飞船右转。 那我们可以用一个反推来,就是一开始飞船前进了一步,那第二次重复的话,飞船也是要先前进一步,那我们可以先不要让飞船走到这个角, 飞船前进三步,走到这里,然后第二次重复,他又是前进一步了,前进一步,然后继续去转向,前进三 步到这里,前进一步,转向,前进三步到这里,前进一步,转向,前进三步到这里,然后我们的大夫就可以退到这上面来, 然后继续去走这个正方形,后退两步,然后右转,后退两步,右转,后退两步,右转。这样子呢就可以完成了。这一道题的话,我们需要用到两个重复,飞船的路线是一个重复,大夫的路线又是一个重复。好,首先我们让大夫到飞船上 再后退一步,然后接着是重复一二三四,重复四次。首先是飞船前进一步,然后飞船右转,飞船前进三步,这是一次重复,一共重复了四次, 然后飞船回到这个位置,然后大夫是后退一步。大夫现在在这个位置需要行走这三段路线,正方形的三条边,那我们可以重复三次。首先是大夫后退两步, 然后 def 进行一个右转,最后点击一下运行。 以上就是第六关的解题思路。

这是不是一个拐弯?是,这是不是第二个拐弯?是规律,看出来没?哦?尾数是增加一,哪个是增加一?就是变量是增加一的, 往前走哪一条线增加一?比如说这个竖着的线都得。这个是 b, 哪个要增加?都 a b 都增加, a b 都要增加,对不对?对,所以我们先试着做一下 啊。第一步是不是仿飞船一步,然后右转飞船再一步,第二次该干嘛呢?飞船两步,所以已经看出来了吧。每次加到一,每次加几一,那是不可以设变量了?是,是 直接拿这个第一步 a a 的 出是指一一一吧。对,这个不要了吧?对, 这个地方是不是也得写文明啊?哎。对,每次加几一次加一好了没?好了, don't forget to start with yourself。 为啥要改成三次?你三个啊? no, 为啥有三个 one? 有 三个 one 好 了吧。哎呀妈,我说路线正确,行数正确,步数超了咋办?重复折行多了,一般是大百分之九十的概率是重复折行的原因,好了吧。

这道题的解析思路呢就是用到 for i in range, 简称放循环,然后它那个只要在框里面填上它要循环的次数,再加上在它的缩进里面再填上它要走的步数,还有它要旋转 就可以通关,他是典型的环形图,这道题就是一个典型的十字形。然后呢我们先用过循环,然后呢我们看一下他是前进回来,这有四条,所以我们过循环四,然后呢再让他先让他前进四步, 然后呢让他再走回来后退四步。 这边最近我觉得最近那个路径是先往前走两步,然后他这个人面朝这个的,他再让再再让这个往 往将这个东西往前走两步,然后这个小人再往前走。

挑战从零开始,彻底教会你考里 linux, 从打开考里开始讲起,本系列耗时六千八百小时,制作总时长三百六十分钟,手把手教你精通卡里用户进程管理, 不仅能吃透用户与进程管理核心逻辑,搞定用户信息、用户组配置与进程控制技巧,还能把卡里渗透入门,玩的更六。本节课呢,讲是用户和用户组之间的管理,那我们为什么要讲这个东西?首先你要知道用户有什么一个作用, 比方说我们要去,嗯,使用一款软件,是不是它就是让你去登录一个用户, 还登录完用户之后,你就可以自定义啊,就可以自己去 diy 啊,然后任何一个浏览的一些记录啊,都会保存到这个用户中,包括你要去加一些好友,里面的你的一些聊天记录,全部都是你要登录这个用户才会给到你这样方面的权限,对不对? 所以呢,不同用户所得到的权限是不一样的,而且里面所呈现的内容也是不一样的。 好,那了解这个东西之后,你要知道 linux 系统呢,本身就是一个多用户的一个系统,同一个账户呢,能够去多次同时登录来进行一个运行一些命令啊,而且这个命令呢,会拿着当前用户的这个身份来去访问所对应的一些资源 啊,就比方说我们之前通过叉线他就能够去登录所对应的一个权限,对不对?比方说我们, 哎,在这里就是我们所对应的卡里,是不是?比方说我想在呃查看他的一些信息,是不是他就会在这里去查看?比方说我想在咱们这, 我想切换到咱们这个桌面上啊,桌面上,然后在这个桌面我随便去建立一个东西啊,比方说我建立一个 touch, 然后方方,哎,点 test, 我 们先回到咱们这个卡里里面, 好,可以看到我卡里的桌面上是没有任何一个文件的,那如果说我在这里来进个登录, 然后我再回到咱们这个卡里面,你会发现这里呢,就会去新建一个,呃,方方面 test 是 不是文本文档这样子一个效果,那就证明呢,咱们这个卡 nix 呢,本身就是个多用户,我也可以进一个远程,是不是我可以进远程来操作,你所对应的一个权限我都能够去开放给你。 那我们这个时候如果说啊,我们的一个用户太繁琐了,然后特别特别多来去登录我这个卡里,那就会导致我卡里根本就分不清谁是谁,谁来进行改动,是不是?那出现这个状况的话,我们是不是要对这个用户来进行个管理, 好把这个关掉。 那么今天呢,我就主要给大家讲解一下这个用户怎么来进一个管理。那首先我们要看一下我们的这个用户的类型是什么东西,是不是我们先通过 id 来去查看咱们这个用户的基本的一个信息 啊? id 可以 看到它就是一个 root 用户啊,它就是一个 root 用户,因为我把它变了啊,我把它变成一个升权了,提权了。那如果说我在这个桌面啊,然后去新建一个东西,然后在这里再输入个 id, 哎,你会发现它又变成卡尼了啊,它又变成卡尼了,这是因为我把它提全了,你要看这里啊, root, 然后包括我刚刚的,刚刚的在哪里?哎,这里我是卡尼啊,是卡尼。来进一个提全啊,来进一个操作, 这里呢就可以看到它的 u i d, u i d 的 话,你就可以理解为是用户的身份证啊,用户的身份证,那呃 g i d 呢?你可以理解为它出生的一个地点啊,它出生在哪里? 所以呢,咱们这个 u i d 它是唯一的,但是你的身份证号码一定是唯一的,所以它具有唯一性。 微信,那这个我稍微了解一下,所以呢,你可以看到卡里他的 uid 是 多少呢?是一千啊,卡里的 uid 他 是一千。那我们再看一下我们的超级管理员的 id 是 多少?是零 啊?是零,这就说明啊,超级管理员他是以零啊,就是我们的入特他是以零权限。那在这里去给大家拓展一下,一到就是 uid 一 到九百九十九 这些呢?这个区间内它是一个系统账号啊,这保管给咱们这服务来进行使用的。但是一般来说我们用户是 不能够去登录的,那一到两百呢?它是由系统自动去分配的,那如果说 u i d 它是一百九十九,这是系统自己去分配的,那咱们这个,呃,两百到九百九十九啊, 两百到就是这个两百零一,然后到九百九十九呢?它是什么呢?它是如果说我们的使用者,也就是我们自身有这个系统账号的需求的话,你就可以去使用啊,你就可以去使用了。那此外的话,像这个 canny 它是一千,对不对?它是一千,也就代表啊一千以后,一千以后啊,这些东西一般来说都是可以通过 u i d 啊,就是 user i d, 也就是可以添加用户的这个密码啊,这个这个秘密吧,就能够去添加,也是可以去登录的,通过我们 u i d, 然后能够去登录, 自主登录,自主创建这样的一个意思。好,那首先我们来看一下啊,来看一下我们的一些就系统账户有多少个? 嗯,通过去查看啊,我们就通过默尔去查看吧。啊,默尔去查看咱们这个 etc 啊 etc, 然后 password, 哎,可以看到有这么这么多个啊, 可以看到有这么这么多个。排第一的就是我们的 root 啊,排第一的就是我们的 root。 好, 那我们以这个为例子啊,这些都到底是什么意思呢?我们首先看这个 root 呢,就是我们的一个用户名的意思,那这个 x 又是什么呢?在以前啊,这个 s 它存储的其实就是我们的一个 root 的 一个登录密码, 但是由于之后的话它不安全,所以的话它就以 x 来进一个命名。那这个零又代表是什么意思呢?这是我们所看到的一个 u i d 啊,这个零的话代表的是咱们这个 g i d 啊, g i d, 那 这个东西又代表是什么呢?它就是咱们这个 用户的一个描述,一个情况啊,用户的描述情况,像这个啊 g 函数的话,其实就是咱们这用户的一个加目录啊,加目录还有这个 a b, 然后 z, 呃 z s h 呢?它其实 z s h 呢?它就是一个脚本啊,脚本的话有呃 z s h, 还有咱们这个 b h, 还有很多很多,所以的话可以看到这里面的话,它就是一个脚本的一个信息脚本的一个类型,这样子的。 好,刚刚其实我给大家讲过啊,咱们这个 u i d 零到两百,它是由系统去创建的,是不是?所以的话,你可以看到这些的话,全部都是以系统来进行创建的 啊?一直到咱们这个东西,一直到这里都是由系统自己去创建的啊,由系统自己去创建的好,到这里只有这个卡里是可以去登录的。 好,此外的话,我们还可以去查看它的一个密码,因为我们的一个呃用户的密码的话,它是通过 x 来进一个呃执行的,就是来进一个代替的,是不是?那我们就可以在这里去查看在这个卡里 相关的一个密码, etc, 然后输的 好,可以看到有这么这么多的密码,哎,我们看第一个 root。 好, 我们可以看到这个 root 呢,其实就是咱们这个用户名,是不是 他们之间呢?都是以有这种冒号来进一个分割服务来进一个分化的啊?冒号之间呢,就是代表了一部分,一部分这样子个意思,那这个新号又代表是什么呢?就可能是代表咱们这个账户已经被锁定了,或者说这个账户压根就没有设置密码啊,有没有设置密码? 那这个一九五九,呃,零的话,它就代表的是最后一次更改密码的日期,从好像是从一九七零年的时候开始计算, 一九七零一月一日开始计算的一个天数。那这个为什么呢?这个零的话又代表是什么意思呢?就是这个密码最小个年龄啊,最小个年龄, 那这几个零的话,其实代表是我们可以在这里随意去更改,没什么太大问题。那这个代表的是什么呢?最大的一个年龄啊,最大的一个年龄,然后这个代表的是密码过期的一个天数,你可以看到一周啊,一周。 好,这里面的话就是一个空的啊,没有任何一个数字哈,没有任何一个数字。来,我们再看我们的一个卡里,可以看到卡里呢,有这么这么多,这么一长串,是不是?那这些的话其实都是一个密码,这些呢都是加密过后的一个密码, 以咱们这个钱的字符来进一个分割啊,做一个分割符。好,所以呢,其实卡里的一个安全系数还是相对来说有一定的保障的啊,有一定的保障的。 好,此外的话,我们还可以自己去干什么呢?我们可以自己去设定,可以自己去修改。你看我是一个 root 用户,是不是?比方说我想把我的 root 用户修改一下,因为我可以看到我这里的话是是为一个这个新号的,他可能就是没有设置密码,那我把它变一下, 那我就干什么呢?嗯,把它 password 啊, password, 然后的话 root, 它就是在这里说要我去设置一个新的密码,那我就把它设置为 root, 然后让我重新再输入一个,确定一下。 欸,还是 root, ok, 它这里显示的就是我的一个已经更新好了。好,那我们再输入这个好命令的话,你会发现,欸,咱们这个刚刚 root 的 话,它不是新号吗?你可以看到我更新完之后,它就已经变成像卡里这样子的,是不是? 欸?在这里像卡里这样子一个状况了,证明呢,我已经设置好新的一个密码,并且呢它们之间以咱们这个钱的字母来进行隔开啊,这些都是一个加密的字母。 好,那今天呢主要就是给大家讲了咱们这个 linux, 它是一个多用户的一个系统是不是?然后给大家讲了怎么去查看咱们这个基本的一个信息,用户的一个基本的信息,怎么去查看咱们这个用户卡里里面有多少个用户,还有怎么去查看咱们这密码,可以看到 不管是再去查看用户啊,以及查看密码的话,它的密码其实都是一个加密过后的一个密码,是一个密文,不是明文。 接着上节课没有讲完的内容,我们今天来讲讲怎么去进行用户这份的管理,因为上节课呢,其只是给大家去查看了用户是不是,那么今天呢,主要是给大家介绍怎么去添加新的用户来进啊,还有就是怎么去修改,怎么去删除这些等等等等。 那首先首先的话,你要看这个添加新的用户呢,只 user id 啊, id 就 添加了意思, mod 的 话它是一个修改的意思啊,第二的话就删除的意思。好,了解个基本的一个情况之后,我们来进一个操作,首先呢我们来到咱们这个卡里, 好,来到咱们这个卡里,然后点击咱们这个终端, ok, 那 首先呢,我先来看一下咱们这个 tier, 然后刚 n 前最后五行的一个用户吧,好吧 啊, password 最后五行可以看到是这几个用户,是不是哎,这个 deban 啊,或者是 ground 啊,还有咱们这个 cpu 啊等等等等啊, 好,那首先我们来进一个添加,由于呢我们是用卡里来清招数的,所以的话我们为了去确保它有更多的权限,我们在在这个前面加个 should do should do 就 齐全的意思。好吧, user id id 是 不是添加了一个意思?比方说我想添加一个方方,是不是? 好,我们再来看一下是不是已经添加好了,并且它已经刚我给我自动分配了,咱们就用户和用户组是吧?都是一千啊,到咱们就六万这样子个区间内啊,区间内? 好,那此外的话我们还可以啊,去修改它, 比方说呢,我想把它的脚本的一个类型变成咱们这个,呃, they they share 啊, they share 这样子一个类型,那怎么办呢?欸,也是一样的 should do 然后呢?啊? use mood, 这是天啊,这是修改了一个 s, 然后把它的一个 s, 呃,把它变成为并,然后 they 啊, 它叫什么呢?叫芳芳啊。好,我们再来看一下,是不是变了啊?是不是变了它的脚本的一个类型就已经变啊?变身成功了。 好,那此外的话我们还可以删除咱们这个用户,那就是嗯, user should do should do should 嗯 user there, 也就删除第一次,然后我们删除我们的一个方方。 ok, 我 们再来看一下, 哎,它又没有了,是不是它没有了啊?那其实如果说我们在创建文件啊,就创建一个新的用户的时候的话,其实还可以指定它的一个 u i d, 也就是就是 d d, 然后去创建个 u, 然后比方说我想让它是幺零零幺零号的话,创建一个这个吧。 好,你可以看到它是不是创建这个东西,并且还创建了一个加目录啊,并且还创建一个加目录,但是它的一个,呃,咱们这个脚本类型呢?还是咱们这个 shift 这样子的类型 好,此外的话,我们还可以对它进行个呃,创建,设置在这个密码吧,登录这方面的密码,也就是 password, 然后的话方,就你后面盯着的是我们那个,然后就方吧。 好,成功修改之后。好,成功修改之后的话,我们还可以干什么呢?我们还可以锁定咱们这个用户啊,那怎么去锁定呢啊? should do, 然后 use good, 然后大写的 l, 然后再加上我们的一个名称,也就是方零一, 这样子呢,就已经锁定成功了。那我们为什么要锁定呢?就是锁定之后的话,我们除了管理员之外,其他用户是无法进个登录的。好,那我们还可以进个解锁。哎,怎么解锁呢?其实就在这里加个 u 就 好了 啊,加个 u 就 好了,这样子就解锁成功了啊。但解锁之前呢,你一定要设置密码,你没设置密码的话,你解锁没有什么太大意义啊。 好,这些呢,就是我们的一些用户这方面的一个新增啊,修改以及删除,增删改查,这样子一个作用啊。然后我们接下来看用户组这方面的 用户组呢,我们怎么去查看?我们卡里中啊?这是我们这个操作系统中所有的一个组的信息呢?就通过它咱们这个配置文件来进行查看。 那我们怎么去添加一个新的用户?其实和我们 user 是 一样的,只是说在这前面呢是不一样的。加了个 group 啊, group 就是 组的一个意思, user 的 话就是用户的一个意思。好, 添加、修改、删除和它们的都是一样的。 i d d r, mod 和 d r 都是一样的,只是说开头变了一下,从一开始 user 变成组啊,变成组 group 这样子一个命令。那我们接下来来进一个操作, 首先的话我们把它删除一下啊, clean 一下。 ok, clean 完之后的话,我们为了方便的话把它切换成。 好,我们把它切换成咱们这个 root 用户啊,就不要在前面加 root 了啊,不要在前面加个 root 了。好,那我们添加是一样的,如果说我们去 goop 啊,嗯, goop i d d, 然后添加一个 f f 吧,添加一个 f 零一哈,添加一个 f f 零一。如果说你在这前面不加一些参数的话,它自己啊,这个卡里字本身就会给它自定义分配。 好,那我们再来查看一下。老样子,还是用 tail 去查看一下,只会显示最后五行的。然后的话我们的一个是什么呢? etc, 然后 go 这个呢?就是我刚刚所添加的啊,这个就是我刚刚所添加的,它自己给它自定义分配了。至于这个的话,是我添加用户之后,它就会新增一个用户组啊,新增一个用户组,这个不用管它。好, 那此外的话,我们也可以像咱们这个刚刚去添加个新用户一样,去指定给他自定一个什么。呃, g i d, 那 也就什么呢?在这前面。哎, 在这前面加一个小小参数,也就杠 g, 然后去怎么是大写的杠 g, 然后去指定我的什么东西,比方说我去搞个呃,九百九十九,好吧,九百九十九, ok, 那 我们叫它 f f 零二吧。啊,好,我们再来看一下。 哎,创建成功可以看到没?它是按最晚的啊,最新,嗯,来进一个创建,来进更新,可以看到没有?我这是最最最新的一个创建的一个用户组,它就会放排在咱们这最后面。 好,此外的话,我们还可以干什么呢?能不能去修改咱们这个用户组呢?那假设主,假设啊,我们这个芳芳零二,它错了,我不想叫它芳芳零二,我就想让它叫芳芳。那怎么办呢?我们是不是要修改它是不是也就是 group 啊? u f, 然后木的,然后在这里啊,我们去修改一下,嗯,新的名称就叫芳芳,然后旧的名称就是芳芳零二。 好,我们再来看一下,是不是已经更改成功了啊?更改成功了,这个呢就是修改啊,这个就是修改。还可以去修改什么呢?修改咱们这个 g i d, 这个 g i d 的 话,假设我想修改成,嗯,这样子吧,修改成这样子, 把咱们这个名称修改成,好吧,一万修改成一万,然后名字叫芳芳,我们再来看一下。 好,已经修改成功了,是不是这样子就好看一点点啊?好看一点点。好,所以呢,你可以看到其实它们的参数不一致的话,所对应所修改的一个内容也是不一致的啊。 比如说它一个参数是杠 g, 它只能够去修改 uid 啊,以 gid gid, 那 如果说是杠 n 的 话,它这里的话就是去修改咱们这个用户组的名称啊,一定不要去用错,一定不要用错。那此外的话,我们还可以干什么呢?能不能删除咱们这个用户组呢? 哎,删除用户组的就是 group, 哎哟,哎呀,哎呀。 第二,然后的话我们来进一个删除,嗯,比方说我要删除咱们这个方方零一吧, 把这个方方零一给删除掉,我们再来看一下,哎,是不是方方零一就没有了?哎,就是这么简单。好,那这底下呢,就是咱们这个队组的一个管理,此外的话我们还可以让用户去更改咱们这个组,比方说我们看一下啊, 我们看一下我所新建的一个用户啊 password, 嗯,比方说你可以看到它那个加木啊,嗯,是咱们这个芳芳啊,零一,也就是这个是不是它的一个 g i d, 也就是这个所对应的,所以的话你可以发现它的一个用户组的就是 方零一,那我把它放在方方这里,那怎么去做呢?还一样的一个操作,我们呢就把它这就是 user 啊木的,然后呢杠 g 啊,杠 g, 就是 把它修改我们的用户的组,然后呢我们一个 名称呢就叫芳芳,然后它的一个 user name 的 话,它就是咱们这个芳零一。 好,没什么太大的问题,我们来看一下,哎,已经变了啊,已经变了,你可以看到啊,咱们这个 u i d 呢?啊,不对,不对, g i d 呢?已经变成一万了啊,一万的话所对应的一个组的一个在在哪里来着?在这里。哎,是不是我们的芳芳, 哎,它的一个用户组就已经变了啊?我让它更加的明显一点吧, 可以看到他的是什么呢?用户名就叫芳芳林啊,芳林一,然后他的一个用户组名就是芳芳,是吧? 好,那今天呢,其实讲了两个内容,一个呢是组的一个管理,怎么去添加增删改查,是不是还有这是用户的一个管理,本节课讲的是进程管理,那首先我们来看一下什么是进程, 它呢其实就是一个基本单位,就是我们操作系统要对这个呃东西来进一个资源分配。 每个进程呢都有自己的一个地址空间啊,以及内存啊,包括数据占件等等等等等等啊, 那其实在我们 windows 里面都是有的,我们按住 ctrl shift 加 esd。 好, 这里面呢就是相关的一些进程啊,可以看到这就是相关的一些进程, 那这个进程里面的话还有一些紫进程,比方说这个这里面呢有最大的一个紫进程啊。好,还有我们的卡里面也能够去查看相关的一些进程,比方说我点击这里,然后我们打开咱们这个系统监视器。 好,这呢就是相关的一些进程啊,这是进程的一个名称,这是它的一个 id 啊,就进程的一个唯一的标识服务。它的 id 还有呢它它所占的 cpu 啊,它所占的 cpu, 可以 看到我们的一个主题,它的 cpu 呢占的居多一点点,还有它的内存所占的一个内存啊,包括此盘的一个读写啊、写入啊等等等等啊都反正都是在这里的。 好,其实呢我们也可以通过终端来进个查看,在终端呢我们通过 pass 啊,就是 ps 就 能够去查看相对的一个命令 可以看到我如果说我说 ps 的 话,它只有这么点,是不是因为我们没有带参数啊?一定要带参数,我们首先来看一下 ps 有 哪些参数, 它有这样子一个参数,就 ps 呢,它就是去显示我们的各进程的一个静态快转,它相对一个参数的话,就是杠 a a 的 话,显示的是所有啊的一些进程的一个信息,包括其他用户的一些进程全部都显示出来了。 杠 u 的 话,就是以用户这个为主题的一个格式来进行输出,让我们自身看的舒服一点点。那 四呢,它就是说当前用户所有终端下的一些进程信息全部都给你展示出来。 l 的 话,它就是长格式。 f 呢,就是比较完善的一个格式来显示我们的进程。 e 呢,就是说显示系统内所有所有的一个进程, 那其实这些的一个参数呢,都是能够进行一个组合用的居多呢,就是一些参数用的居多,就两个,哪两个呢?我们看一下,就 ps a u x 好, 这个用的比较多啊,用的比较多,你可以看到相关的所有的进程全部都已经出来了,是不是哎,并且是以用户为主的这个格式来进输出。 欸,可以看到以这样的格式 look 呀,包括卡里啊, magus 呀这样的格式来进行输出。此外的话,还有一个查看进程用的居多的啊,也就是 ps 杠 if 这个呢,也用的比较多啊,也用的比较多, ok, 这就是我们的一个进程啊,就是一个进程怎么去查看的一些命令。 好,了解这么多之后,我们再来看一下它输出的内容分别代表是什么意思, 比方说它的 u i d, u i d 的 话,大家都知道它是什么意思,就是该进程的一个用户的账号的一个名称啊,用户账号的一个名称,比如说 root, 比如说卡里,比如说 magis 等等等等啊, pid 的 话,它又是什么意思呢?它就是代表这个进程中,在这个系统中的一个 id 号, 这数也是一个唯一的,就相当于是我们的身份证号码一样。好,那这个 p p id 呢?代表的就是附进程的 id 啊,就是它的一个进程 id 号, 就这样子一个意思。然后这个 c 的 话,代表的是啊 cpu 用于就是计算机执行优先级的一个因子,如果说它的数值越大的话,就代表这个进程啊,是 cpu 密集型的一个运行 好。 s time 呢,代表的是我们的,呃,进程启动开始的一个时间,那这个 t t y 呢?代表的是我们的一个完整的终端的一个名称。那 time 呢?其实代表这个时间的意思啊,就我们的时间就是 cpu 的 一个时间。 那 c m d 呢?其实代表就是我们启动这个进程。呃,所用的一些命令啊,还有它的一个相关的一些参数呀,可以看到, 比如说我们最后一行是不是就是我刚刚所输了一个命令,是不是啊?就是我刚刚所输了一个命令,就这样的一个意思。 有的时候我们查看进程呢,其实也是可以杀死进程,能够查看进程,那我同样也能够杀死进程,为什么要杀死?有的时候就是这个电脑它太卡顿了,是不是?那我没有办法点击成功,我关也关不了,那我只能够去将这个进程杀死。 好,那怎么去呢?首先我们稍微演示一下,我们先打开 b p 啊,打开 b p, 好,点击, ok, 有 一个参照物 delete, 然后点击 next, 创建一个新的一个文件, 一点点慢。 好,我们的 b p 就 已经打开成功了。那接下来的话,我们一点儿,然后, 好,我们 b p 呢?已经打开成功了,那我们接下来来到终端,先看看有没有存在这个 b p 呢? 我们把它切换成 管理员的用户。 好, 还是一样的用 pass 啊?然后,嗯, a w x 这里呢?会用运用到管道啊,管道符,就是说一开始我给他一条命令,就是说让你让他去查看咱们这个进程的所有的一个进程是不是。 那接下来的话,我要去搜索这个进程里面有没有我想要的,比如说 b p, 比如说我们的一个啊, buffshoot, 能不能查看到呢?接下来我们输入 buffshoot。 好, 你可以看到它所满足的就两个,是不是?一个是以 tony 的 一个用户来进一个,呃,启动了,另一个是 root。 这个东西啊,那我们先将这个把它关闭一下。 那怎么关闭呢?你要知道有个东西啊,就爱情公寓里面有个叫杀死比尔,是不是?那我们的进程是不是也能够杀死呢?那就什么呢? care 是 吧? care 就 能杀死,然后我们再输一个中断啊,就输一个参数,叫什么呢?杠九,这个九呢?不是一二三四五六七八九的九了,它现在代表的是什么呢?强迫进程关闭,直接终止,我不管你愿不愿意,我把你终止掉,是一个话种啊, 强迫型的啊,那我们再把它的一个进程的一个 id 号给它弄上来,就是七七八一 啊,七七八一,然后我们再运行一下,你可以发现我们的一个 app store 就 已经没了,是不是?我刚刚是不是启动它,然后一旦去执行一下它的话,它就没有了?那我们也可以去验证一下 欸,你会发现就只有一个进程存活者,是不是?我刚刚那个进程是不是已经把它杀死了?欸?现在不叫杀死比尔了,这现在就叫杀死 bug 了。 好,那这个呢,就是一个完整的操作,也就是我刚刚所说的这一页,就说我们通过进程的一个 id 来进一个结束 杀死它,是不是我们呢?还可以根据进程的一个名称来去结束我们的进程,也就通过 picker 的 啊,也能够去结束咱们这个进程。 那怎么去操作呢?我们来到咱们这个卡里啊,然后我们再输一下,看一下有哪些,嗯,比方说,我想把这个啊, 关于 shoot 的 一个名称的所有的进程全部都结束掉,那我会怎么做呢?首先我们复制这个名称啊,然后的话我们再写入个 p q, 也就是通过它来进一个 shoot, 好, 已经终止了,可以看到已经终止了,然后我们再在这里输入一个,呃, ps, 欸,你会发现其实就没有了,是不是我们那些欸就没有了?我们其实也是可以通过它来进行查询,管道服务来进行查询,这这样子更快速啊,比如说 u 盘,欸,是不是已经没有了?我刚刚的一个卡里的所有的进程是不是都没得了? 现在只有一个 root 了,一个欸,欸,这三个是不是已经没有了? 此外呢,我们还可以调调整我们的进程的优先级,通过 nice 就 能够去进一个调节。那我们回到咱们这个 kali 为什么要调节它呢?其实就是说我们允许 啊,你自己去自定义我们的一个进程,设置一个,呃, cpu 调度优先级的,就是说什么意思呢?就是说我调整它的一个优先级,优先级越高呢,我的进程获取 cpu 的 时间就越高啊,它能力就越强。这样的个意思, 它其实默认啊,咱们这个默认的话就是十,默认就是十,那我们可以去调整到十五啊,或者说五这样子一个情况。那我们首先还是来看一下 挑调整哪个,比如说我想调整咱们这个 beach, 好, 那就通过 nice, 然后 d n, d n 后面的话,接着就就是我们的数值,比方说我想把它调整为,呃,五,好吧,把它调整为五。 好,那我们再把这个名称加上。好啦,已经调整完成了, 就建设了 ps 的 一个静态显示我们的进程。那此外的话,像 kanin 的 话,这 linux 的 命令的话,也还能够去动态查看我们的进程。那怎么去动态查看呢?就通过 top 啊, 能够去查看我们的一个动态的一个进程。可以看到啊,这个已经开始在动了啊,它呢就是类似于我这个一个界面,这样子一个界面 啊,这样子一个界面,只是说我的界面要稍微好看一点,它界面的话稍微 low 一 点,好吧,但是呢,嗯,内容都大差不差。这里呢,可以看到咱们这个呃,进程号呀,还能够看到我们的一个用户呀,也能够看到 cpu 的 一个占比,还有我们内存这方面的占比等等等等啊, 都能够去发现到,只不过它是一个动态的,动态获取的。那此外的话,我们还可以去查询我们的一个进程的一个信息。那通过哪些命令呢?就是通过啊, p g o。 你 知 p g o 的 话,它就是一个搜索,是不是通过它就能够去查询啊?能够去查询,比方说我想查询咱们这个 java, 没有,哈哈, java 没有,因为我没有开启。 那我们找一个开启的东西吧。呃,就这里面随便找一个吧。比方说这个吧,复制一下, copy 一下。 ok, 看到有了波,然后这是它的一个,嗯,它的一个进程号,好吧,这是它的进程号。此外的话,我们还可以去查看进程数。有没有见过进程数呢? to 啊,这个呢就是一个进程数 a, 咱们这个负进程对应的一些其他一个紫进程等等等等,这都是一个进程数。好吧,这就是以下列内容。当然我们为了让它更加的好看一点的话,其实还有一个命, 但是这个命令的话是需要下载的。 hottop 啊,这个命令就是我自身的话是已经下载好了。那如果说你们没有下载的话,你可以下载一下,通过那个,嗯, a t p, 然后一搜的来进行下载。好吧,这个呢,稍微要好看一点点,是吧?而且还有颜色这方面的区分。 ok, 终止一下。好,这就是咱们这个动态获取进程的一些。嗯,命令行,好吧,那么今天内容就到此为止啦,再见。

第一步,我们要收哪一个?第一步我们要选那个。哪个?最近圆珠笔一到三,一到四步的那个。这个最近吧?对,所以是不是先这样?对,然后收它吧?对, yes, 看到规律了,结束了。最明显有个圆就是三个。嗯,三个。所以还是这次是增加还是减小?减小, a 和 b 都要减小吗?对,那是不是结束了?哇?开始做第一步是不是左转?嗯,左转走几步? 一二三四四步。然后呢?然后右转,右转走几步是没到我呢?然后下一步是不是该左转走三步了?看出来了吧?看出来了。拿变量,第一次,第一个变量 a 的 初十是几? c 与 s, 这两个都要换成几 a。 a 每次加 a 增加几。不一不一。那很好,因为每次要减小误差。对,完了吧?完了。

比如我们现在持有了大量的黄金,那么如果金价达到一千二,我们就自动迈出。在排申中,波瑞克可以实现终端循环的指令,它的意思就是停止终端,它一般跟在 for 或者 while 循环中,当满足条件时,波瑞克就会进行停止运行。 在各种循环场景中,比如查找数据,密码判断等等。但是在这里要注意的是,布瑞克语法中,它必须写在循环的内部,如果写在了循环外面,就会导致程序报错。而且布瑞克是一个单独的单词,不需要加引号、括号这些符号就能够实现种植的效果。 那么如果我们要实现打印一到五的数字,打印三是停滞,那么你就可以用 for 循环加上 break 写上 for i in range 六,因为取值是五,所以写上六为中指位置。这里再写上 if 条件, 如果 i 等于三,那么 break 就 停止运行,然后跳出循环,接着打印 i 输出的结果就是一和二,因为打印到三的时候, 也就是 if 条件被满足了,则会进行布雷克终止代码,并且跳出循环。这里要注意了,这个 if 是 属于负循环的,而这个布雷克是属于 if 判断语法的,它们前面都各自加上的空格,缩进来表示代码的归属。 别看这个好像很简单,没什么用,学会了你就能够模拟股票卖出的价位。比如我们现在持有了大量的黄金,那么如果金价达到一千二, 我们就自动卖出。我们先导入随机模块等会要用,接着命名一个列表,就是精致的浮动价格。接着我们用 f 循环,里面放上一和三十一天, 模拟从第一天到第三十天,再导入随机模块,从列表格式中任意取值,作为当日黄金价格,接着用 print 打印出每一天的价格。这里 print 中的法语法,看不懂的去看我之前支付传拼接的视频。 然后如果价格大于等于一千二,则打印出超过一千二卖掉,最后跟上 break 结束循环。如果说不加 break 的 话,假如第三天进价就到一千二了,它会打印出卖掉,但是程序还是不会停止运行, 会接着输出第四天,第五天,一直到第三十天的价格写好了以后,我们运行代码,显示屏上就会出现第一天进价,第二天进价,直到进价达到一千两百的时候,就会打印出超过一千两百,并且卖掉。 接着我们再做一个 ct, 玩一个猜数字的游戏,如果数字猜对了,就结束运行。同样的,我们先导入一个随机模块,再命名一个变量,存储随机的值。这个 random 点 random 和 choice 不 一样, random 是 在一到十中随意取值, 后面加括号和随机范围即可。而 choice 是 在某个列表或者变量中取值,需要提前命名好变量,再在 choice 后面加上变量,接着打印出猜一到十的数字。 现在开始协助程序 while true 创建一个无限循环,它和 break 是 一对经典组合,用来实现重复执行,直到满足某个条件才退出的场景。用 guess 存储用户输入的数字,如果猜的数据和 secret 的 值一样,那么就打印出猜对了, 然后马上用 break 结束循环。再用艾利福写两个条件,用来提示用户如果输入的小于正确值, secret 就 打印太小了,同样的大于就大于太大了, 这样用户就可以更快的猜到数值。写好了以后我们运行一下看看效果。这里让我们输入数值,我们先输入五,如果提示是太大了,那么就接着输入一到五的中间值,直到猜中对应的数字,反过来也是一样的。 作业来了,如果说你现在准备谈恋爱,如果给女孩子花的钱超过一万五就不谈了,并打印出第 n 次,一共花超过了一万五不谈了。用 while 循环加 break 怎么写, 记得发出来,下节课会接着讲 break 实操,教你如何实现编辑一个密码输入案例以及今天的作业。 在生活中我们会遇到非常多的 break 使用场景,如密码登录输入三次错误则禁止登录。 又或者是循环抢票,抢到了就终止循环以及股票卖出价位,这些需要一直做,直到达到某个条件就停止的动作,基本上都是用的否或者 while 加波瑞克语法。上一期我们详细讲解了波瑞克的语法使用, 并且给大家布置了作业。今天带大家继续我们的实操练习。上一期的作业是谈一个女朋友, 一共花到一万五,还没追到就不谈了。第二个题目是制作一个密码登录程序,我们先输入 input, 导入随机模块,后面用。首先我们命名一个总花费时间次数,然后我们写主程序,先定义好每次花费的金额,这里调用 random 随机取值一千到两千,每次花一千到两千是我们能接受的范围。接着写总花费,加上每次消费 花费次数也是一样。这个加号等号的意思就是将两边的变量相加得到的值再命名给左边的变量好用一幅进行条件判断,我们的条件当中加超过一万五就打印出次数,总共花销不贪了。最后结束循环运行。 写好了以后,我们来看一下运行的效果,就会打印第多少次花费超过一万五就不贪了,因为每次花费的金额是随机的,所以每次的次数都是不一样的,但是一旦超过一万五,就会停止程序并打印 好。接着我们做第二个制作密码登录程序。我们先设定一个正确的密码为幺二三,再设定最大尝试次数为三次,然后使用否循环,让尝试次数从一到三包含三依次进行。 在循环里,每一次都会提示用户输入密码,提示文字会显示当前是第几次尝试。接着用一判断用户输入的密码是否等于我们预设的幺二三四五六, 如果相等就打印密码正确登录成功,并用 break 跳出整个循环,不再继续尝试。如果不相等,就打印密码错误,然后继续下一次循环。如果循环正常结束,也就是三次机会都用完, 且一次都没输入正确,就会执行。 else。 分 支打印已超过最大尝试次数账户锁定,这样就能实现最多尝试三次,密码正确就登录,否则锁定账户 代码写好以后运行,先错误输入三次,看看是什么结果好三次错误,他就会打印出锁定账号,跟我们平时生活中遇到的支付程序是一样的。再次运行,我们输入正确密码,他就会显示登录成功。 那么恭喜你学会制作了一个密码登录程序。在编程中, continue 的 意思是继续, break 是 满足某个条件时就结束代码,而 continue 就是 满足某个条件时就跳过它继续运行。它们俩是一对经典的组合,经常能用到。比如我们有一个数字列表 number, 一 到十,想一个一个把它们打印出来, 只需要写 for i in number, 然后 print i, 点击运行就能看到所有数字依次出现。 但如果我们想跳过某个数字,比如三,该怎么办呢?这时候就用到了肯铁牛,他的意思是跳过本次循环,继续下一次 我们怎样写,在里面加上一附二等于三的时候,我们就使用肯铁牛跳过这个指令,继续执行后面的内容。运行后你会发现控制台输出了一二四五六七八九十,唯独没有三,是不是很神奇? 需要注意的地方, continue 必须写在循环内部,并且通常配合一幅条件使用。如果忘记写一幅条件,那 continue 会一直跳过,导致什么都不输出。学会了 four 和 continue, 你 还可以做更多有趣的事。 那如果说你只想打印前五个数呢?同样的,修改一幅条件,当一幅大于五时,那么就跳过,不执行运行,就会得到小于六的数字。 接下来我们来到派克姆实操一下。首先我们看一下题目,题目一,侧派选择,当有很多侧派选择时,不要有四的侧派。 题目二,女朋友选择只喜欢田西维,其他人都不选,先做第一个。平时生活中我们会遇到一些数字的选择,大部分人都喜欢带八,不喜欢带四的数字。我们先命名一个列表,里面放上数据,用 f 循环来辨别科二里面的数据,再用一副条件, 如果制服串四出现在选择中,就用 continue 跳过,再打印出内容。小代码以后,我们来看看这个 choice。 我 们在前面加上了数据类型转换,变成了制服串类型,就能够和我们的要求不要数字四能够对应上,点击运行,我们就会发现出现的数字都是没有带四的。接着做第二个命令, girlfriend 等于列表里面放上数据,也就是人名。接着我们写一个佛循环,从女朋友中取值,意思就是赵如斯,虞书欣,田曦薇。那么我们只喜欢田曦薇的话, 就用 f 写条件,当女朋友不是田曦薇时用看替牛全部跳过。感叹号加等于的意思就是不等于。最后我们再用 print 打印出选择的对象, 哎妈,写好了以后,我们来看看佛循环中 choice 一 回,一直从 girlfriend 的 里面取之,也就是赵露思,虞书欣,田熙薇,而我们只喜欢田熙薇,当选择不是她的时候,用 continue 全部跳过,最后运行打印出来的结果就是 continue。 那 如果说你女朋友和你妈掉水里,你会选择谁呢?用 continue 怎么表示?记得交作业。在编程中, continue 的 意思是继续 break 是 满足某个条件时就结束代码,而 kitten 就是 满足某个条件时就跳过它继续运行。它们俩是一对经典的组合,经常能用到。如果你是一家小卖部老板,你每天都需要卖东西,需要做一个入账系统。 我们先定义一个变量,偷偷用来纯综合,用 while 处无限循环命名一个 number, 每次让用户输入一个整数,再用 if 判断。如果输入的是零,就用 break 直接结束整个循环。当我们每日结束工作时,就可以输入零结束运行下班。 如果输入的是负数,就用 continue 挑拨本次累加,并提示负数不急入重新输入。只有输入正数时才把它加到头头里,并打印当前总和。 点击运行后,你会发现程序会一直让你输入数字,直到你输入零才结束,并且负数永远不会被加进去,这样你就制作了一个简单的记账系统。接下来 我们再做两个案例,第一个,在数字一件事中不打印偶述,且打印出的内容不大于起点。第二个,用 continue 和 break 制作一个密码登录程序。第一个,我们先创建一个列表,里面有一件事的数据 用负循环便利列表中的每个数字。第一个 if, 如果 i 是 偶数,就用 continue 跳过本次循环,不执行后面的 print, 直接进入下一个数字。第二个 if, 如果 i 大 于七,就用 break 直接终止整个循环。后面的数字包括九和十都不会再处理, 只有既不是偶数又不大于七的数字才会被打印出来。运行后你会发现空字台输出了一三五七,偶数二四六被 content 又挑过了,是不是很神奇? 接着来到第二个题目,平时我们登录系统时通常有次数限制,并且不允许输入空密码,用户如果输入空格就挑过空输入,输入正确时就退出循环。 我们先设定正确密码为幺二三四五六,最大尝试次数为三次重复循环,从三倒着数到一,每次让用户输入密码再用一次判断。 如果输入的是控制符串,就用 continue 跳过本轮剩余的验证,并提示密码不能违规重新输入。 如果输入的密码正确,就用 brick 直接结束循环,显示登录成功。如果密码错误,就提示剩余次数继续下一次循环。如果循环正常结束,即尝试次数用完,则执行 l c 语句,提示账户已锁定。点击运行后, 我们先输入空密码,输入空密码会被立即要求重输而不消耗次数。我们输入正确密码时,就会直接打印出登录成功,并且结束循环。如果错误超过三次,这程序结束并锁定账户下课。

你说你能 web 编辑写程序吗?零基础小白也想 web 编辑?我建议你开始之前先别急着写代码,也别急着问 q, 怎么写程序?你先问自己一个问题, 我工作中或生活中,我做的这个东西帮我解决什么问题?没有目标,你只会在 ai 的 时代瞎撞。网上问的最多的就是这几个问题,我会从零开始,带你一步步入门 web 编辑, 安装和下载只是你迈出的第一步,你看了一堆安装视频,为什么别人能打开这个网页,你的却是无法访问此网站?后续这些问题我都会出教学视频,包括环境安装、网络问题,通通都是保姆级别教程。 是不是你在 web coding 的 时候, ai 在 转圈圈执行?有时候并不是 ai 在 帮你努力写代码,很有可能是网络很慢,或者目标网址打不开。你以为劝退你的是代码, 其实真正劝退你的往往是这些小事。接下来我们说 ai 工具,现在基本十天半个月就出一个新名词,学都学不赢。这些工具大致分四类, 第一类,黑窗你肯定见过。第二类, ai 的 编程工具,程序员的最爱。第三类,古法编程工具中装的 ai 插件。第四类是可以的升级版,有好看的 ui 界面。 接下来就大模型了,更是五花八门了, deep seek、 千问豆包、 gpt、 cloudops 这些大模型可以和 ai 工具组合起来,成为一个 agent。 零基础小白建议这样组合 工作效率直接拉满这些 ai 工具的使用。我都会出视频教学,关注我,一起从零开始,让普通人也能吃上这口用键盘表述需求的技术饭。你也对 ai 感兴趣的话,可以关注我,后续持续更新更有价值的视频。

什么是 web socket? 一 句话概括,它是一种让浏览器和服务器之间可以实时双向聊天的技术。 但这句话里头,信息量其实很大,因为大多数人对上网的默认印象是,我请求一次,你回应一次,就像你问一句,对方答一句,问完一次,对话就结束了。而 web socket 要做的是在双方之间拉起一条真正的电话线, 电话不挂两边,随时都能说话,也随时都能听到对方说话。这篇文章会带你拆开这条电话线,看看它是怎么建起来的,为什么需要它?它和普通 http 请求到底差在哪里,以及我们每天都在用的哪些功能,其实就靠它在背后撑着。 先来看我们最熟悉的普通 http 请求是怎么工作的。你在浏览器地址栏敲一个网址,浏览器就向服务器发一个请求,服务器把网页内容返回,然后连接就关了。哪怕你只是想看看有没有新消息,网页也得不停地一遍又一遍地去问,服务器 有新消息吗?现在有了吗?这种模式叫轮询,很像一个小孩每隔两分钟就跑进厨房问一次饭好了没有?这么做最大的问题是浪费, 因为大部分询问都得到还没好的回答,可服务器还是得接待。每一次询问消耗资源。而且就算消息来了,响应速度也不够快,最多只能做到每隔几秒刷新一次,做不到真正的实时。于是有人发明了 web socket。 web socket 的 核心思路很简单,能不能让浏览器和服务器从一开始就约定好。这次我们不搞一问一答, 而是直接升级成持续通话。这个升级过程本身就很有趣,它是在一次看似普通的 http 请求里完成了身份转变。客户端先发一条特殊的 http 请求,请求头里带着两个关键字段, 一个是 upgrade web socket, 意思是申请升级到 web socket 协议。另一个是 connection upgrade 服务器如果支持 web socket 就 会返回幺零幺状态码,表示好的,我们切换协议。从这一刻起,这条 tcp 连接就不再是 http 连接了,它变成了一条全双工的 web socket 连接。就像两个人原本在用对讲机说话, 现在对讲机突然被改造成了一部电话,两边都可以同时说同时听,而且不需要每次说话前都重新拨号。连接建立之后,数据传输的格式也变了。 http 的 消息是纯文本头加上可选的体,而 web socket 传输的是一个个帧,这些帧不是让你肉眼看的,而是高度结构化的二进制或文本数据包, 每个帧前面只有几个字节的控制信息,后面紧跟着数据本身,开销非常小。这跟 http 请求那种动不动就带上一大堆 cookie、 user agent 等头部信息的状态完全不同。低了几个数量级的数据开销,让 web socket 在需要高频小数据量传输的场景里优势巨大。比如在线写作、编辑文档,可能每敲一个字就要同步给其他人。如果用 http 一个字就要附带几百字节的头信息,而用 web socket 可能就多十几个字节。那这种技术到底解决了什么问题? 其实它解决的是一个实时性和服务器主动推送的痛点。在没有 web socket 的 年代,为了让网页看起来像是实时更新的开发者们绞尽脑汁。一种是前面提到的短轮询,隔几秒问一次。稍微进步一点的是长轮询,也就是发一个请求过去, 服务器不立即回复,而是等到真有新消息了再响应,响应完连接关闭,客户端马上又发起下一个长轮询。这听起来聪明, 但依然有一小段消息空白期,而且服务器要维持大量挂起的连接,压力山大。 webshop 直接把这些技巧都扔掉了,因为它本来就允许服务器在任何时候主动给客户端发消息。 比如一个股票行情页面价格变动是服务器先知道的,服务器可以直接把最新价格推送给所有在线的浏览器,不需要等浏览器来问。现在你可以回想一下, 平时哪些应用离开了 webcept 就 会瘫痪。在线聊天肯定是最典型的,你发出一条消息,对方几乎瞬间收到。 这个过程背后就是 webcept 在 维持着那条通话隧道。多人游戏也是,每一个玩家的移动射击释放技能都需要毫秒级同步到其他玩家屏幕上,还有协同文档。 比如你正在和别人一起编辑一个表格,任何一个单元格的改动都会及时出现在别人的界面上,甚至连你刷视频时看到的某某某正在输入。这种状态提示也往往是靠 webcept 传递的。正隐蔽一点的,像打车软件上司机在地图上移动的小图标, 还有外卖订单的实时配送位置,它们背后都可能是 webcept 在 持续刷新数据。当然, webcept 也不是完美无缺, 他要求服务器和客户端都维持长连接,这就意味着服务器需要能够同时管理成千上万甚至上百万个活动连接。这对服务器的架构设计提出了新挑战,不能像处理短连接那样用完就丢。 于是出现了专门针对这种长连接优化的服务器框架和编程模型,比如 node js 的 socket 点 i o 库或者构语言的 gorilla web socket。 这些工具帮开发者屏蔽了很多底层细节,可以像写普通事件监听一样处理消息。 另外, web socket 建立连接的那次握手基于 h t t p, 所以 它也能附用 h t p 的 八零或四十三端口,不容易被防火墙拦住, 这也是它能广泛普及的一个原因。在安全性上, web socket 也有加密版本,叫 w s s, 本质上就是 web socket over t o s。 跟 http s 一 样,数据在传输过程中是加密的。 理解了 web socket 是 什么,以及它怎么工作之后,不妨再站在一个更高的角度想想它带来的变化。它把网页从只能被动展示服务器返回的页面,变成了可以持续与服务器对话的客户端。 这不仅仅是技术上的一个协议升级,更是整个 web 应用走向实时化、互动化的关键一步。没有它,今天的在线会议实时协助多人游戏、直播、弹幕,这些体验要么根本无法实现,要么会变得无比蹩脚。最后,我们不妨用一句话收拢一下 webersepton, 就是 在浏览器和服务器之间建立了一条低成本、低延迟双向长连接,让服务器可以随时主动向客户端推送数据,从而让实时交互变得简单可靠,你可以把它想象成一根看不见的数据水管,一头连着你手里的网页,一头连着远方的服务器, 数据可以双向自由流动,既不用每次打开水龙头都要请求一次,也不存在只能一方说话另一方干听的限制。下次当你和朋友在线计时聊天,或者看到股票价格数字毫无延迟的跳动时,可以想到那正是 websoft 在 默默工作。