reddies 中的管道也就是拍出来啊,管道是干嘛的呢?是批量执行我们这个 reds 命令呢?它用来提高性能。是这样,就管道我们给这个,我们从这个客户端给这个 reds 服务器发这个命令,是不是只要发一次,一次发很多个命令,然后他他很一次把这个很多个结果返回回来? 如果我们不这么做,我们一条一条发,是不是这个通讯往返的次数特别多?嗯,减少这个往返的次数,从而来提高性能啊,然后我们直接来看吧啊, 首先还是连一下我的数据库,这个我就从之前的笔记里复制粘贴一份啊,我们就不啰嗦了。 然后如何开启一个管道呢?就是我们的第一逼点, 这样就 ok 了,然后我们接受一下。 然后如何使用我们的管道呢?就是我们派不点,然后他后面我,我们这个 db 点什么,他他基本都有对应的什么,比如说我们的点度啊,他可以啊,然后我们的点 get 啊,他也可以,我这里就用点 get 吧,比如说我 get 一下之前存的这个 t 一,是吧,看一下, 嗯,你们上下门还是需要的啊。然后我们的 t 一,然后我,我可以直接从这接收啊,他返回的还是四川的 cmd 啊, t 一但执行钱他应该是拿不到的,对吧?我们是什么时候我们真的去执行了,他才才是一次性的去批量执行?我们来打印一下 直行前的 t 等于 he。 然后呢,我也可以就是写个放心,还是说就是批量的去往里放,但是一般用放心还真真实,业务中用放心还是比较少,这样零到九。然后呢,我可以用我的 pec 点,我来个 sit 啊 sit。 然后首先还是需要我们上下文跟那个一样的吧,然后这我就来一个,呃, supermeas f 吧, 来拼接一下这个字母串啊,比如说照拍,这叫 p 啊 p, 然后百分号微,这个微呢就是我们的爱,张大叔每个 k 歌不一样,然后 y 六呢,就还是我们的爱啊,然后超时呢,我就让他永永永不过期,就这样,然后我也就不接收了啊,这个接收是判断他有没有错误。这个,呃,为了快速演示,我们暂且不接收了。然后我们怎么去执行我们管道里缓存的命令呢? 就这么去执行啊,然后这里需要什么?需要我们上下文啊?然后他会有两个返回值,一个是这个 cmder, 这是什么呢?这其实就是我们各种各样的 cmd, 他把他们都都打包成了一个接口啊,然后他返回这个接口的一个切片,然后和一个错误, 因为我这里都是 ct, 然后我这个 get 是直接接收了,我暂且就不不接收了啊,等我们过会用另外一种方法来演示的时候接收一下。 嗯,所以我就忽略,然后看一下他的错误,如果呢?我们的错误 不为空,然后我也不判断他是是否是那个不存在了,我就直接判你。 然后我们来打印一下执行后的提议,这会提议应该就是有东西了,对吧? 可以看到啊,执行前的题什么都拿不到,执行后才能拿到啊,只有我们的管道。呃。然后除了这么用,我们来演示一下这个啊, 这是干嘛的?他是直接开几个管道,然后我们给他一个函数,然后他自动把我们执行给进这个函数,然后依次执行这个缓存的命令啊,一次性把这事都干过,干都干一下,然后返回一个 还是返回一个这个三 d r 的切片。嗯,我们这会接受一下他这个切片,来演示一下这个怎么用啊?那我们来吧滴滴点 看这个啊。然后他需要第一个,他需要的还是我们的上下门,然后第二个就是这个需要一个这个函数了啊?这为了为了快速演说,我复制粘贴一下, 然后我就直接从这写了,当然我这个报名没有写,是吧?就是,呃,我们的 ridis 点, 这样就 ok, 对吧?然后他需要返回一个错误,我暂且呢为了把他报错消掉,对他一个孽。哦,然后我们这里就是他会帮我们执行这个, 还是我们这里就是还是用我们这个管道,然后这个拍拍呢?这个也是一个接口啊?这个接口,我们,呃,他其实就是为了实现我们的管道,我们这里呢就还是写一个放循环吧,我们把上次放进去这个取出来看一下啊。放, 那还是十个,让我们看点 gate, 这次对吧? gate 都需要什么呢?上下文,然后 k, 那 k 是不是还是我这个呀? 然后我可以一个一个这么接收啊?直接接收,那也可以,其实用它的,用它返回的,它会返回一个这个。呃,三 d r 的切片,那我这次我就用它的切片 c m d s 啊。然后我们的错误 我们来判断一下,如果呢?错误不为空,但他错误一定为空,是吧?因为我们瑞特呢就是个鸟啊,那不一定,他操作出去过,还有可能错误, 然后他这个切片呢?我们就可以啊,我们可以来便利这个切片了,对吧?一个 four raingefour i 和,嗯,我们的就就叫,还叫 i 啊? i, 然后还叫 cmd, 润着我们的,嗯,润着我们这一堆面那段,然后我们直接来打印吧, 我们用格式化输出啊,我们打印什么呢?比如说就打印我们的,呃,这不是 p 开头的 k 吗? p 百分号 v 就等于我们的百分号 v, 然后每一个打印完了,换个行,是吧?然后第一个就是我们的 i, 第二个就是我们这个 cmd 是不是他的?他的数据类型?是,呃,他给我们返回的是这玩意 是个 cmd 芽,然后我们需要把它就是类型断言回我们需要的类型。我们这个 get get 得到的什么类型啊?是不是还是这个 stree 啊?是,是这个 stree cmd, 那我我就把它类型断言回这个 stree cmd 就行了,对吧? 嗯,我想一下这里还是需要加个曲之风。他是,呃,这个叫什么? 指针类型,然后我们来看一下他的指八柳啊,这样是不是就 ok? 让我们去运行一下试试, 可以看到啊,没有任何问题。呃,就是这样就没了,你明白了吗? fun channel。
粉丝2126获赞4098

这是一个 ip 地址还是一个子网野马?什么又是子网野马?这样的野马又是什么意思?而这又是什么呢?为什么我们配置电脑 ip 的 时候,子网野马通常都要填入二五五点、二五五点、二五五点零呢?带着这些疑问, 今天这个视频我就用最通俗的方式,带你彻底搞清楚什么是网络地址的子网掩码。子网掩码是计算机网络里的一个核心概念,它的作用就是帮我们划分 ip 地址里的网络地址和主机地址部分。 举个例子,网络地址就好比你所在的小区,用来标识你属于哪一个具体的网络网段。而主机地址就好比你家的门牌号,专门用来标识这个网络里的某一台具体设备。假设我们有这样一个延码地址,首先我们把它的每组数字都转成二进制, 那这样一个掩码值到底哪些用来表示网络地址,而哪些用来表示主机地址呢?很简单,我们从左往右开始算,连续的 e 表示网络地址部分,而后边连续的零则表示主机部分。 野马的每一组都是八位二禁止数,从全零到全一,对应到实,禁止里只会出现零、一百二十八、一百九十二二二四、两百四十、两百四十八等等这九种数值。所以此网野马的每一段数字也只能是这九个数字的组合。就像我们最常用的二五五点、二、五五点、二、五五点零, 前面连续的二十四个一是网络位,最后八个零是主机位,一眼就能看明白。从这个规则就能判断野马是否有效。 比如二五五点、二五二点零点零,它的二进制是连续的十四个一后面全是零,这就是一个有效的子网掩码。但像二五五点二、五三点零点零就不一样了,它的二进制里,一和零相互交错,没有做到连续,那它就不是一个有效的掩码地址。那么这种又是什么格式的掩码呢? 其实这种叫做无类别预见路由 c i d r 表示法,它其实比我们前面所说的点分时禁止表示法更直观,它后面的二十四直接表示子网掩码中从左开始有二十四位是连续的一,用来标识网络部分。 因此,这样一个 c i d r 表示法的掩码地址其实就等价于这样,而这样的掩码地址则等价于这样。 也许你发现了,这种 c i d 二表示法的掩码地址更加简洁直观,你甚至可以直接将这个掩码地址写成这种简洁形式。现在你已经明白了掩码地址如何表示了,那拿到一个子网掩码,该怎么计算?这个网段里能容纳多少台设备? 首先,将子网掩码转成二进制,从我们前边所学的规则中可知,从左边开始有连续二十四个一,用来表示网络部分,最后八个零用来表示主机部分。 主机位有八位二的八次方,结果就是两百五十六。也就是说,这个子网中总地址数量是两百五十六个。这里要注意两个关键点,这两百五十六个地址里,有两个地址是不能分配给设备使用的。 第一个是主机位全为零的地址,这个地址是网络地址,用来代表整个子网的网段范围,就像小区的总门牌,只能标识网段,不能给设备使用。第二个是主机位全为一的地址, 这个地址是广播地址,专门用来给网段里所有设备发送广播消息,同样不能分配给具体设备。所以这个子网里真正能给设备用的可用主机数量就是总地址数减去二,也就是两百五十六,减二,等于两百五十四个。回到视频开头的核心问题,为什么配置电脑 ip 时, 我们通常填的都是二五五点?二五五点、二五点零?答案很简单,因为这个野马对应的可用主机数量是两百五十四个,这个数量完全能满足家庭网络和大多数小型办公室的使用需求。而例如像这类野马地址则可以存在多达六万五千五百三十四个主机,适用于大型企业网络。 怎么样,关于子网野马的核心知识,你现在是不是彻底搞懂了,再也不用盲目填写子网野马,也明白背后的原理了, 别忘了点赞、收藏这个视频,以后遇到网络配置相关的问题,随时能翻出来看。关注我,后续还会用这种通俗易懂的方式,给大家分享更多实用的网络小技巧。

很多家长都有一个疑问,孩子学了两三年 scratch, 课没少上,项目也做了,可一换 python、 c 加加,马上就懵了。于是大家开始怀疑,是不是 scratch 太弱了?今天我想告诉你一个有点反直觉但非常重要的真相, squatch 的 计算能力其实和 python、 c 加加一样强,因为它们都是徒劳万倍的。什么意思?简单说就是只要是计算机能算的事, squatch 理论上都能算,只是 squatch 写代码和运行的速度要慢一些。 不管是 scratch、 python 还是 c 加加,所有编程语言本质上都在教四件事,第一,程序怎么执行,顺序分支循环。第二,怎么算预算,逻辑判断。第三,怎么存数据变量列表。第四,怎么拆问题 函数。那 scratch 有 这些吗?答案是,全部都有!你可以把编程想象成做菜。 c 加加是商用厨房,火猛刀快,但新手容易受伤。 python 是 家用厨房, 好用灵活。 scratch 是 儿童安全厨房,刀是塑料的,但切菜的动作是一样的,火不会烫,但加热的概念完全学得到。那问题在哪呢?不是孩子,也不是 scratch, 而是很多 scratch 的 课教的是积木怎么拖,而不是程序怎么想。 孩子学会了特效、角色动画,却没有被系统训练过,程序是怎么变化的?为什么要拆成模块? 学的是拼法,不是逻辑。但如果在 scratch 里让孩子充分练习了这些编程基本功,那以后学 python、 c 加加,孩子真正的变化不是我认识这个语法了, 而是他们会这样想。问题,这一层循环是不是在每一举,所有的可能条件应该放在内层还是外层?这个变量应该记录当前状态还是历史结果?这个问题太复杂了,能不能拆成两个步骤来算?这才是 scratch 真正训练到的东西, 不是语法记忆,而是问题拆解,流程设计,状态管理。而这些正是孩子后来学 python, c 加加式最难也是最值钱的那一部分。所以真正的问题不是 scratch 行不行,而是我们有没有用 scratch 在 教真正的编程。 scratch 不是 弱,它只是把复杂的东西变成孩子也能学会的样子,而一旦本质打通,后面的语言只是工具。

来一秒教会你们计算机网络。这是一个 ip 地址,它有四组数字,中间用点分开,相当于你的电话号码底下这个是子网掩码,它表示 ip 地址的网段, 意思是前三位一样,那就属于同一个网段,可以直接通信。比方说你随便找两台电脑,中间用一根网线连接起来,这时候它们是不能互相联通的,你得配置一个 ip 地址,比方说左边是幺九二点幺六八点零点幺,右边是幺九二点幺六八点零点二,因为前三位都一样, 这样它们就可以直接通信。这个是 ip 地址的配置界面,第一个是 ip 地址,第二个是子网掩码, 第三个是网关,网关后面再讲。配置完成之后,用电脑 b 给电脑 a 发送一个数据包看看,可以看到数据包发给电脑 a, 电脑 a 返回,电脑 b 收到返回包,就说明连接建立成功了。 那么有什么用呢?就好比你可以直接共享文件夹,实现文件互传,还可以开启远程桌面,实现控制另一台电脑,这就是计算机网络最简单的组成。如果说此时来了第三台电脑,很明显没地方接入,此时就需要一台交换机,所有电脑全部连接交换机, 这样就可以让多台电脑互相访问。这里把第三台电脑 ip 设为幺九二点幺六八点零点三。然后用第二台电脑给他发数据包看一下, 可以看到数据包先发送给交换机,交换机可不知道是给谁的,他只能分发给所有电脑。左边电脑一看数据包不是给他的,直接丢弃。然后第三台电脑发送返回包,告诉第二台电脑他收到了, 那么这就是一个同网段的局域网,比如学校电脑机房,三四十台电脑处在同一个网络内,所以教师机可以控制你们所有的屏幕。 接下来注意看,此时我加入第四台电脑, ip 设为幺九二点幺六八点幺点幺,注意这次前三位不一样了,那么此时它和其他三台可以互相联通吗?答案是不能联通,因为 ip 地址不在同一个网段, 这是因为 ip 地址是唯一的,如果两台电脑 ip 地址一样,就会冲突,并且 ip 地址范围是零到两百五十五这个区间。所以要想跨网段联通,就得使用路由器,路由器作用就是让不同网段进行通信,这里我家一台路由器,左边端口连接交换机,右边端口连接电脑, 然后我们需要进行配置,左边端口 ip 设为幺九二点幺六八点幺点幺点幺零零, 这个就是网关地址。还记得前面网关地址吗?在左边电脑网关就填零点一零零,右边电脑就填一点一零零,意思就是说 如果要访问其他网段,就走各自的网关来看一下。用左边电脑发送数据包,可以看到先发给交换机, 交换机依然傻瓜分发,然后路由器收到了,发回一个返回包,此时链路就打通了,左边电脑直接发送数据包,交换机直接给路由器,路由器直接给另一台电脑,然后原路返回,这样一套流程就完成了。 那么这就是最基础的计算机网络。视频中是 i p v 四地址,以后会逐渐普及 i p v 六,如果你感觉每台电脑配 ip 太麻烦,于是就有了 dhcp, 这也解释了为什么我们手机电脑连上路由器就能用,当然还有太多太多网络技术讲不完,感兴趣的话我们下期继续。这就是本期内容,我们下期再见。

随着科技的发展,如今世界已经进入到了人工智能的时代,编程也逐渐变成了一项基础技能。从今天开始,我将开启一个新的系列, 从零开始学习 c 加加。今天是第一章一点零认识编程语言。 c 加加和派送是我们常见的两种编程语言, 它们有什么区别呢? c 加加的语法更严谨,常用于计算机考试和底层开发。 python 的 语法简单,常用于爬虫和数据分析。不同语言编辑代码时使用不同的工具。 c 加加可以使用 d e v c 加加。 python 一 般使用 pi charm。 c 加加和 python 就 像是英语和汉语,语法不同,但是可以表达同一个意思。写完的代码 最终都会变成二禁制,因为计算机的 cpu 只认识二禁制。程序可以理解成给士兵下达指令,告诉计算机让它做什么。运行程序时,计算机就会一行一行地执行命令,这段程序就是让计算机输出 hello world 到屏幕上。 之所以要学习 c 加加,是因为信息学奥赛指定使用 c 加加,而且以后 c 加加也很有用,例如计算机研究生考试也是指定 c 加加。 下面我们开始安装编辑器,首先打开这个网站,点击下载,然后找到下载的安装包,双击安装,选择语言,下一步。稍等一会儿,安装完成。打开编辑器,我们开始编辑第一个程序,新建文件,引入头文件, 使用标准命名空间。这两样大家先记住固定写法。 int 表示主函数的返回值为整型。 main 表示主函数,小括号是参数列表,主函数没有参数花,括号内是主函数的内容缩进 c out 表示输出两个小于号。 hello word 用英文的双引号括起来,别忘了分号 return zero 表示程序正常结束好了,我们的第一个 c 加加程序完成了,点击保存给程序文件命名, 点击翻译,翻译成功,点击执行,看看结果。 hello word 正常显示。恭喜你成功了, 你已经进入了二进制的世界,并且和这个世界打了一个招呼。大家在学习过程中有什么建议或者问题,欢迎评论区交流。 something wrong。

pasa 快 速入门第一篇变量的用法学 python 我 只看章鱼哦。 python 中的变量是什么?它是指计算机内存里的某个数据,就像你给盒子贴标签以后找东西就看标签一样。写程序时,你明确让电脑需要记住一个数值, 怎么操作呢?就用变量,比如我把今天的天气记下来, weather 等于晴朗。这行代码的意思是把晴朗存起来,给它起名叫 weather, 这个过程呢就叫赋值。 变量有什么用呢?举个例子,你要计算三个科目的平均数,如果不使用变量,你可能得这样写, print 八十五加九十加八十八,然后再除以三。如果分数变了,那么你就得改这串数字,但用了变量就简单多了。 首先把三科分数存起来,例如数学分数八十五,英语分数九十,科学分数八十八,那么计算平均数就是 average, 就 等于 math 加 english 加 sense, 除以三 print 平均分式 average。 这样就算别的数字有变动,也不用再去修改了,特别是对于工作,是财务或者是跟数字接触很多的,这样就非常节约了你的时间。 用变量还有个重要规矩,必须先存储才能用,就是得先给变量赋值,才能再用 print 输出,否则的话,计算机找不到变量就会自动忽略。 我们来实际试一下,假如你要给同学们发通知说晚上一起打三角洲,用三个 print 当然可以,但如果改成下午一起打三角洲,你得改三处,对吧?那么用变量就方便多了。 我们先给晚上一起打三角洲赋值 activity, 等于晚上一起打三角洲,那么内容就是这样的, 现在如果活动改成下午一起打三角洲,你只需要修改变量,三个通知就都能更新了。那么今天关于变量的内容就讲到这里了,是不是超级简单呢?宝子们?

从您开始学 python 第一章 print 基础你知道怎么让你写的 python 程序说话吗?这就是我们本期视频要学习的内容。 print 输出函数 print 函数是 python 中常用的一个函数,它在英文中是打印的意思,它的作用是将我们想要的内容输出或打印到控制台上。计算机的大脑可以执行计算,处理数据。 这一切都发生在我们看不见的地方。如果我们想要知道他干的怎么样,就得让他汇报工作。 print 就是 这个标准的汇报工具。他就像一个传声筒,搭建了你和电脑内部世界的桥梁。他负责将电脑老字里面的东西说出来给你听。 它是初学者学习编程时接触的核心函数,也是程序员日常调试和构建程序界面的不可或缺的工具。掌握了 print, 你 就掌握了怎么让 python 程序说话。我们希望程序说出什么内容,就在 print 后面的括号内写上什么内容。 这个括号就像是能够发出声音的声带。如果你把需要打印的内容放到了括号的外面,就相当于使用除了声带之外的习惯说话,这显然是不可能的。 值得注意的是,这个括号是英文括号。当我们输入的是中文括号,代码就会出现红色的波浪线,代表的是代码报错。同样, great 括号里面的这一对引号也非常重要, 用单引号或者是说双引号都可以,但必须是英文的引号,否则代码下面也会出现红色的波浪线,提示代码报错。为了避免错误,大家可以尽量在编辑代码前把输入法提前改成英文模式 观听可能还不太有感觉,接下来我们一起动手练习一下吧。启动我们的软件,跟上期视频步骤一样,我们新建一个 python 文件来存放,我们新的练习 命名为 demo r print 代表的就是 print。 练习在代码编辑区写下我们的打印语句, 当我们输入 p 二这两个字母时,对应的就会有相关的提示,这个对新手就比较友好。 这里的括号跟引号都需要是英文字母,输入完成后,鼠标右击编辑区域,选择运行选项,执行代码。在弹出的运行窗口,我们可以看到运行结果。如果我们需要输入的是多个值, 需要在指之间加一个英文逗号即可。当我们不小心将代码敲错,比如括号敲成了中文的代码,下方就会出现红色波浪线提示,代表我们的代码敲错了。 那如果说我们没有注意到,直接运行了,在控制台也会显示对应的报错信息, 我们也可以直接复制报错信息,去百度查询解决方案。很多时候你遇到的问题,别人早已踩过坑, 并给出了详细的解决方案。但话说回来,与其等到出错再去排查,不如一开始就养成良好的编程习惯。而其中很基础也很容易被忽视的一点就是写注。试 注是不仅能帮助他人理解你的代码,也能让未来的自己少走很多弯路。所以下期我们就来详细聊聊什么是注,是为什么他如此重要,以及如何写出清晰有用的注是。

dna 是 计算机系统中一种允许硬件子系统直接读写内存而无需中央处理器介入的核心技术,你可以把它理解为一个高效率的数据快递专员。核心概念,一个高效快递系统。 想象一下,没有 dna 时,数据搬运就像让你亲自从仓库一件件取货,再亲手搬到房间,整个过程你都被占用,无法做其他工作。而有了 dna 后,你只需要给快递专员下一道指令, 从仓库 a 区搬十箱货到房间 b 区之后,专员会独立完成全部搬运工作。在此期间,你可以解放出来去处理其他任务,只有当专员完成工作后,才会来敲门通知你任务完成。 dma 的 主要工作流程,一、 cpu 出厂, cpu 设置好 dma 控制器的参数,包括原地址、目标地址、数据长度。二、 dma 接管 dma 控制器启动开始,直接在内存和 iu 设备之间搬运数据。三、 cpu 解放在数据搬运的整个过程中, cpu 几乎不参与可以执行其他任务的指令。四、完成通知 数据传输完毕后, dma 控制器向 cpu 发送一个中断信号,告知任务完成。 在你提到的开挂场景中的应用逻辑,在一些对性能要求极高或需要绕过常规监测的软件中,会利用基于硬件的 dma。 其特殊优势在于极高速度 通过 pci 总线直接访问,速度远超软件获取,难以被检测,因为它是一个独立的硬件设备,从外部直接获取目标系统的内存,其行为与目标系统内运行的软件完全不同。 目标系统的反作弊软件通常只监控运行在自身操作系统上的软件行为很难监测到外部硬件设备通过物理总线进行的直接内存访问。简单来说,普通的软件外挂像是派一个卧底进入游戏公司内部偷看资料,容易被保安发现。 而基于硬件的 dna 攻击则像是在公司大楼外架起一台高精度望远镜,直接读取特定房间里白本上的信息,大楼内部的保安系统难以察觉。 重要补充与澄清,一、 dna 本身是中立技术,它是现代计算机不可或缺的合法基础技术,广泛用于提升硬盘、网卡、显卡等几乎所有外设的性能。 二、 dma 外挂特制且滥用利用独立的硬件设备进行未经授权的 dma 访问以实现作弊或攻击, 通常违反软件的用户协议,并可能涉及法律问题。三、硬件防护一些高端系统会采用 i o m m u 等技术为 dma 访问设置内存保护, 防止未经授权的硬件设备随意读取所有内存。总结, d m a 是 一项通过硬件代理来解放 cpu, 大 幅提升数据吞吐效率的基础技术。 在你提到的特定语境下,它因其硬件特性带来的高速和隐蔽性被用于一些非常规的软件交互场景,但这只是其庞大应用领域中一个非常特殊且敏感的策略。

一天一个知识点,今天要讲的是来了第一节如何把字母串转成整数,那接下来我们再来介绍和字母串相关的另外几个函数,一个是 s、 k、 f, 另外一个是 s print f。 在 讲这个函数之前,我们先给大家介绍两个比较简单的函数,比如说现在我们有这样一个例子,我这里有一个一,后面四个零,但是他不是字母串形式的,他现在是一个字母数的形式,我们需要把它变成一个整数一万,这样他可以 进行后面的加减乘除,对不对?那怎么样把一个符合要求的字母串转成一个整数呢?那么我们首先介绍的函数叫做 a to i, 这函数做的事情,把字母串转成一个整数, a 是 什么意思? a 是 a 锐的意思, i 是 什么意思? i 是 一个整数的意思,也就是说把一个字母串变成一个整数,我们用 a to i 就 可以了。那人说老师如果要变成浮点数,这个时候你可以看到它会有一些其他的函数, 除了有 a to i 以外,我们还有 a to f, 是 不是转一个双精度浮点数,还有一个 a to l, 变成一个长整型,这个是我们的这样一个转整数。有的时候如果我们要做字母串和数字之间的一个转换,那我们要用到一个函数叫做 a to i, 但这个函数不够通用,我们有一个很通用的函数,叫做 s 跟 f。 第二节 stem 的 用法, s 跟 f 是 一个通用的类型转换函数,那 s 跟 f 和我们之前学过的一个函数很像,是不是叫和 s 跟 f 是 很像的?那他们两个有什么联系?其实很简单,比如说我们之前如果要去输入一个数字, 可能是在我们的这个标准输入缓冲区里面去输入的,对不对?比如说我输入的是一后面四个零,再输入一个换行, 这个时候经过我们的四 k、 f 反方号 d 是 会变成一个整数的。一万,那 s、 k、 f 是 干什么事情? s、 k、 f 做的事情其实很简单,把这个 s、 d、 e 换成一个字母数组不就好了吗?把 s、 d、 e 换成是一个叉数组,那也就说这边是一是零,零 零零,不用换行,你这边可以写一个反斜杠零。这个时候我们用到函数是叫做 s、 k、 f, 这边百分号 d, 那 这样也能够把一个字母串变成一个整数。那 s、 k、 f 相对于 a 二的好处是什么?如果我把这个百分号 d 换成是一个百分号 f, 就变成一个浮点数了,换成百分之 l, f, 是 不是变成一个方金度浮点数?所以用 s、 k、 f 呢?可以起到跟 a 图 i 一 样的效果,但是用起来会更方便一点。 s、 k、 f 它的原理就是用我们的制服串 去取代原来的标准输入,原来是我在键盘上面去摁一后面四个零,现在换成制服串,里面有一个一和四个零。第三节写代码, 我们来举个例子,我们这边准备好一个括号叉 s、 t、 r 里面内容是这样,一后面四个零,你后面还可以加空格,换行都可以。我们准备好一个整数 i, 最开始 i 是 没有什么有意义的内容了,我们要调两个函数 s、 k、 f, 这里写一个反分号 d, 这里是 取地址 i, 你 还要注意,你要把我们的这个 string 的 地址作为我们第一个参数填进去,我们看这个程序运行的效果是怎么样子的。我们在这里打开一个站点,我们可以看到 s t r 原先内容是一个没有意义的值,对不对? 而我一旦执行了这个 s k f 以后,这个 i 的 数值是不是就是一个整数的一万了?这个数字你还可以对它做一个加减乘除的操作,比如说你加一是等于一万零一,显然只有整数是不是才能做加减乘除?那 s k f 它优势在哪里呢?我除了可以用来读起整数,我可不可以读一个双精度浮点数?比如说我们这边这样写 s k f, 先是 str, 再写一个反方号 l f, 这里是取地址 d, 那 么我们同样的一个函数 s k f, 它既可以用来读取一个整数,又可以用来读取一个 双精度浮点数。你可以看到这个孩子是非常的通用,而且它的用法和我们之前的 skf 是 非常的像,所以这就是我们的 sskf。 关注我,解锁更多成学就业技巧!

还在担心内存泄露?快来看看 c 家家的最强魔法 roy, 如何让资源自动回家。又泄露了,写了 delete 也没用异常,跳来跳去,搞不清哪里释放内存,还在手动 new delete 在 现代 c 家家里,这太危险了, 那我要申请内存存数据不用 new 咋办?用 c 家家终极奥义 roy, 有 了它甚至不用写 delete, 全称 resource acquisition is initialization, 即资源获取及出实化。 意思是拿到资源就开始干活。意思是把资源绑定给对象生命周期,对象创建即获取资源,对象消失即释放资源。利用 c 加加机制占对象离开作用域,如结束十会自动调用吸购函数来释放资源。讲 ready 吗?想想你玩玩具,进房间拿玩具就是构造函数获取资源, 玩完乱扔就是内存泄露。 ready。 像魔法绳,只要你走出房间出作用域,绳子自动把玩具收回箱子,吸购释放,完全不用操心。 那代码里的魔法绳子是什么?典型代表是智能纸。真如 s t d unique ptr, 完全不用写牛和 delete, 它就是站上卫兵韩束,结束卫兵下班吸够,顺手清理内存。 那如果提前微 turn 或者中间出错呢?我要打断执行顺序,休想运行到 delete。 普通代码完蛋。内存泄露 reclock stack winding 暂展开机制,即使发生异常也会被吸够。原来是防灾的自动保险箱。 roi 不 只用于内存,像多现成的锁,忘了开锁就会死。锁 deadlock, 哎呀,中间报错就没法解锁了。用这个构造自动上锁,吸购自动解锁,就像厕所门进门自动锁,出门自动开,绝不会被关里面这下写多现成也不怕死锁了。 其实 c 加加标准库容器都武装了。 roi std vector, 构造申请吸购,释放内存不用管,内部销毁 std stream, 对 象消失时自动关闭文件不用写 flow。 有这强大军团,何必手动管理资源? roy 万岁!记住, c 家家给你管理资源的权力, roy 给你安全管理的智慧!代码变短, bug 变少,心情变好。只要控制好对象生命周期, scope 资源管理就自动完成了。 scope 作用域就是守护安全的魔法结界。下一集再见。

看漫画学 python 七、 print 基础学编程就像教计算机叫爸爸一样简单,写代码是给计算机下指令,如果你让朋友喊一声爸爸,那他可能会给你一巴掌, 但让程序执行这个操作,那计算机可太开心了。在 python 中,我们只需要输入 print 爸爸 print 这个词,它的意思是打印,在编程中理解为把内容显示在屏幕上,有几点关键点要注意, 首先这个括号是专门用来放你要打印的内容的,如果把内容放在括号外面, print 就 不会管用了,还可能会报错。 其实注意这里用的是英文括号,而不是中文括号。虽然两者看起来有点像,但计算机只能英文标点。程序的书写中所有的符号都需要用英文的,不然程序是会出错的。 这对引号也很重要,用单引号或者双引号都可以,它们包裹着你要打印的文字,如果不加引号,程序就会把里面的内容当成变量,就会输不出内容了。现在你可以尝试一下打印一些更复杂的东西。 首先我们需要创建一个文件零二杠 print 基础敲回车。接下来我们来编辑一下代码, 关键字呢?我们需要打印,那我们首先是不是需要输入 print? 一 般情况下,因为拍叉姆它有自动提示功能,我们输入个别的单字母,可能单词不用输入全部。然后呢,我们直接按住 tab 键就行了。 然后这个括号,注意这个括号啊,它一定要是英文的括号。如果说你是中文的括号,很明显的这里会有一个红色的波浪线,就会提示你这个语法错误了,我们改成英文的括号, 接下来输入两个双引号或者单引号,注意啊,这里的单引号或者双引号是同样的,也都是需要英文的, 如果说你输入的是中文的双引号,或者说英文的单引号,这里是不是同样报错,显示你的语法错误。然后呢,输入英文的双引号,然后再输入你想要计算机打印什么内容,比如说我们前面的这个爸爸, 运行鼠标右击这个空白区域,点击 rock, 那 他这个控制台上面就已经打印出爸爸两个字了。这里呢还需要注意几个点,第一个,这个括号和这个双引号 他都是成对出现的,如果说你只有一个,大家注意看是不是语法错误。另外呢,如果说只有一个括号不成对的,他是不是也语法错误,所以说这个他是一个固定的模式,双引号和单引号他都是成对的。 注意这里它这里又有一个语法错误,明显的是因为这个双引号它是中文的,一定一定要是英文的哦。另外还有一个点,你的这个文本就是说爸爸这两个字, 比如说你好,爸爸你好不放在这个括号里面,也是语法错误,注意这个编辑器它自动会检测,同时如果说你运行它也会提示你,说什么呢?这个语法错误,无效, text 就是 语法,这个 invalid 就是 无效的,我们把它改了就行,是不是超级简单呢?宝子们,那么今天的 print 基础就讲到这里,我们下期见。

哈喽,大家好,我是 jack。 在 这一讲当中,我们一起来看例扣的两千零四十九题统计最高分的节点数目。给你一颗根节点为零的二叉数,它总共有 n 个节点,节点编号为零到 n 减一, 同时给你一个下标从零开始的整数数组。 parents 表示这棵树,其中 parents i 对 应的元素是节点 i 的 负节点。这句话是什么意思呀? 这句话的意思呢?我给大家解释一下。大家看,这有一个 powers 速组,我把它放大, powers 速组, 那负一。呃,其实负一不用管它,负一是根节点,负一是根节点。好,那也就说其实它的下标是零啊,它是一,然后二,然后三,然后四,它说这个元素 就是他对应的这个元素,就是这个下标对应的负节点。那我们来看一,一在这里, 一的负节点是几呢?一的负节点是二,大家看一的负节点就是二。好,了解这个之后呢,我们再往下看,那零的负节点是几呢?呃,不不不,是二的负节点是几呢?二的负节点。你看在这里,他的负节点是零。好,我们再看 三的负节点是几呢?三的负节点是二,你看三下标三,他的负节点就是三,对应的元素是二。好, 下标四,四是在这里四,他的负节点是几呢?是零是这个意思,所以这句话的意思就是说,其中 parents i 对 应的元素就是 i 的 负节点,那由于节点零是根,所以他把这个根的定成负一, 负一定的负负一了。 ok, 一个指数大小为这个指数内节点的数目,每个节点都有一个与之关联的分数求出啊,这个分数叫 score 分 数,求出某个节点分数的方法是将这个节点和其他相连的节点啊的边全部删除,剩余部分是若干个非空指数,这个 节点的分数为所有这些指数的乘积,请你返回最高得分节目的数目。啊, build, 一 棵树叫 build tree, 当然这个 build tree 呢,我需要的是它给我传录这个 parents, 也就是这个数据, ctrl c 一下,把这个数据传给我,我给你构建一棵树。我们先做一个定义,这个定义就是将 parents, 将 parents 宿主转换。呃,为转换成常规的二叉数, 但这个二叉树其实并不是 tree node 的 结构啊,并不是我们之前讲的 tree node 的 结构,但它是一个什么结构呢?它是一个临接表,临接表结构形式。 ok, 那 同学们,我们先定义一个 假设,我有一棵树,当然这个树呢?呃,你现在并没有结果,那怎么办呢?这个树的值从哪里来?啊?这个树的值呢?就从 c f 点 build tree, 从这里来, 从这里来。好,现在我们看一下。呃,外面传的是这样的, python 对 应的 i 对 应的下标是这个 i 对 应的一个赋节点,所以这里面到底怎么去编写这个代码呢?合音点是我先要取得 n, python 这个 n, 然后我,我呢,先去构建一棵树,这个树啊,注意听它里面的粗的话都是负一,粗的话都是负一,然后佛根据 n 的 长度来构建。 为什么里面是,或者你可以把它写成圆组类型也是可以的,写成圆组类型也没有问题。那你这样做的负一表什么负一表是空指针,我做一个说明啊, 这是一个临界表吗?这个表结构呢?这个表节点啊,这里面的节点我们用 s 表示,那表节点 x 的 左子节点, 左子节点是谁呢?其实就是,呃,就是我们这个 tree 的 x 对 应的第零个元素,是它左边第零个元素。 ok, 好, 那节点 x 的 右子节点 是谁呢?是 tree x 对 应的一下边元素,一下边元素。那若 若这个 tree x 对 应的零元素,或者这个 tree x 对 应的一元素,它等于负一的话呢, 就表则表示空指正则表示空指正,或者叫空对象,浪对象嘛。 ok, 这就是我的一个先进行粗读化。那进行完粗读化呢?你就要根据根据这个 parents 数组构建这个二叉数。 好,注意,如果构建阿拉伯数呢?其实你本上可以直接跳过根节点,直接跳过这个啊, parents 零这个根节点。 好,我们来看一下怎么去构建 for i in range 这里直接从一开始就可以了,跳过去。而大家知道,大家知道啊,这个 parents 呢?这个 pans 第 i 个元素,它对应的其实是啥呀?啊?是对应的 i 第 i 个元素的负节点,是它的负节点,所以我们这里判断呢,是通过拿到它的负节点,看看它的第零个下标 是不等等于负一,如果它等等于负一呢,我们就给它赋值成 trig parent 第二个下标的第零个元素,它就是 i, 那 否则的话,诶,这个地方 tree, 嗯, plant node 第二个元素,这里为什么报错呢? 好,我先看一下啊,否则的话呢,就是它的第一个下标为 i class int int。 哦,对对对,我要修改它的,所以这里不能定成原主,一定要定成列表。 是的,忘了这个元素如果不修改的话,我们需要定义成原主类型,但这个元素我在这里是需要修改的,所以一定要定成列表类型,原主类型的元素是不能修改的。好的,这里呢我们就开始去判断,并且完成了一个赋值,最后我们再将这个翠给它返回就可以了, 此时这个翠就构建完毕了。来,同学们,当然你可以在这个位置上去看一下这个翠啊, c f 点翠,我们可以简单的看一下这个结果, 最终的结果大家可以看到二四一三,二四一三啥意思呢? 来我们看一下这个图,也就说根节点它底下对应的两个元素是二四, 那还有一个节点,二下面对应的是一三,二下面对应的是一三,其他的负一呢,表示都是空,也就意味着这底下其实有三个节点是空的,三一四节点是空的,两个节点是非空的, 对吧?好,就这样的一个临界表。 ok, 做完这一步以后,接下来 我们要统计,大家想接下来我们要统计一下这个节点到底有多少个啊?节点元素,因为你一旦把某个元素移除掉以后,我要做乘积, 对不对?所以呢,我们在下一步呢要计算。呃,我们可以先在这里写一个啊,这里的代码是干什么用的呀?是将 find 的 速度转换成二叉数临界表形式。然后呢,这里接下来呢,我们要计算二叉数的节点个数, 计算二叉数中的节点个数, ok, 我 们取个名字就叫 count nose, ok 吧, count nose, 好, 把零把根节点给它传进去, 这里呢它会给我返回,呃,返回总数量, count nose 这一个总数量呢?我们先等,我看看要不要接收,或者把它用一个变量存起来,我们先写,比如说 count, nose, 它的根节点就是零,如果我们去返回的话,嗯,其实不用返回,我们记录到变量里面去。 我们先对这个函数做一个定义,它呢是计算二叉数的节点个数。 首先我们判断一下,如果你这个入得它等等于负一的话,意味着它是一个空节点 啊,但这个地方写成 node 了,我可以改成 root, 如果它等于负一的话,说明它是个根节点,直接返回零就可以了。好了,否则的话呢,它就是,呃,再次递归,我们递归 统计,或者叫递归统计吧,统计二叉数的左右子节点总数。 当然这里是个硬的类型啊,同学们是个硬的类型,所以你传餐的时候呢,并不能像我们之前的 root 点 love root 点 no 的 去传,不是这样子传的。那你怎么去传餐呢?其实它的参数呢,是在 tree 的 root 当中的第零个元素,第零个表示它的左子数,所以我们这样子,这里呢是 left, left count, 然后这里呢是 right count, 是这样子去传餐的。一定要小心,一定要小心,好往下走呢,是他的一个后续位置了,后续的一个位置在这个后续位置上呢?嗯,我们应该如何去做呢? 我们要计算分数,对吧?计算每个减整的分数, 可是计算分数大家知道啊,可你可以这样理解啊,其实这个函数呢,其实要返回一个总数嘛,那 分数是等会再说的,你要返回一个总数的话,正当情况下你应该让 left loved 的 数量加上 right 的 数量,再加上自身这个节点,所以这是总共的分数。但是呢,大家知道,最终呀,我们是要返回最高分数那个出现的次数, 是吧?所以你呢,还得计算一下每个节点的分数,它的分数是多少?那你计算这个节点的分数, 你除了 left, right, 你 还得知道 other, 还得知道一个 other, 所以 本质上呢,嗯,他得需要先得拿到这个 n。 大家看这个 n 呢,它来自于 self 点 tree 的 节点个数,它这里面有几个节点,这就是 n 总数,这是总数。好,然后有了总数之后呢,我们要让 n 减去 left, count, 再减去 right, count, 再减去自身这个节点。 这个减一是什么意思?就是删除自身节点嘛,把自身这个节点给删了,然后计算这一个 other, other, count 剩余的这个数量。好,你有了这些数量以后,你就可以计算分数了。这个分数大家一定要小心啊,因为有可能它这个分数是零,就是个零,没有节点就是空嘛,是个零。那你在计算的过程当中一定不能乘以零。 比如说你拿 left, count 和 e 做比较,看看谁大取谁,然后乘以 max, right, count 和 e, 再做比较,看看谁大乘以谁,然后再看一下 other 和 e, 谁大乘以谁,然后统计出这个 score 分 数。 大家注意,这个分数其实就是,呃,看看它是不是最大的,或者说你不需要看它最大的,你就看这个分数 啊,我们要对这个 score 进行计数,对 score 统计次数,统计它的一个次数。啥意思呢?就,嗯,举个例子,我现在有个映设表,就是用来对 score 进行 count 的 统计, 我们呢要定一个映设表,对对 score 进行 count 次数的统计,来统计它。 self 点 score, score to count 啊,当然它是一个映设表,直接定成这样子就可以。然后你这里怎么去统计呢?我先判断一下 score 是 否应这个里面 kiss 写不写他都是判断 kiss, 所以 你这里可以写 kiss, 也可以不写啊。好,如果你在里面,那就说明你原来出现过,出现过我就加一就可以了。那如果你不在里面,说明你原来没有出现过,你第一次出现,那就等于一就可以了,这样子我就对你出现的这个是过 放到映设表里面去了。给你放到映设表里面。放到映设表的好处呢?就是等一会我可以看一下谁最大,把它的值取出来就可以了, 大家理解吧。那这个函数呢?呃,这样子,它就是一个分解问题的思维模式,分解问题的思维模式,因为你调它的时候做完了, 可是在这里你并不需要接收,在这里并不需要接收,因为我们最终的结果存到哪去了?我们最终的结果存到了 score to count 的 这个映设表当中去了,已经存进来了。好,那你存,存到这里来以后,你调完这个函数呢?你下一步需要做的事情就是 你下一步是要找到分数最大的出现的那个次数,对吧? 或者说啊,找到我们就说找到,找到分数最大的, 最大的出现的次数。比如像我们第一个案例,我们知道分数最大是四,那这个四它出现了几次?其实是出现了三次, 而这到底出现几次?都被我们存到这个音色表里面了。好,我们假设啊, max, 假设我们的 max count 刚开始为零,但它是最大的吗?我去看一下音,大家注意这个值呢?其实本质上都在, 呃,都在 keys 里面,不在 values, 都在 keys 里面。好,那你现在要看一下这个 max count 它是不是最大的,就是让 max, 让 max count 和 score 比一下, 看看你俩谁大,然后把大的值重新复制给它,这样子便利完,你就找出最大的值了。然后最后一步就是根据 max count, 呃,从映设表中取出对应的 value 即可,取出对应的 value, 然后返回即可。比如说这个四四,在这个映设表中取出的就是一个三,因此最终 self 点 呃 score to count, 把 mass count 传进去。来,我们先拿第一个例子做一个检测, 大家可以看到取出的就是三。好的,那这个 solution 类代码我们基本上就已经写完了,现在呢,我们把它提交到立构测试平台,进行所有测试,用力的检测,点击提交。

有的人啊,他就是喜欢这种带大括号的这种语法,他不喜欢这种恶冒号,然后缩进的语法,有个梗图啊,他拿着尺子对着屏幕去比这个,但是在拍丧里面呢,他贴心地给了我们提示,我们只要按住 else 下面这个地方,就可以看到他对应的意思就显示出来了。 有的人他还是不高兴,他就是喜欢大括号怎么办?我们可以给他加项,那我们就可以在这里加个小括号,然后在这里加个大括号,然后把这个回括号下面去,这样的话呢,我们右键一运行,就可以看到把这个习武打印出来了啊。

这个工具箱可以解决电脑百分之七十的疑难杂症,无论是一键维护还是优化增强都不在话下。还可以清理 c 盘,让宏文的 c 盘恢复如初,并且可以查找电脑上无用的空文件夹,并自动清理磁盘碎片整理可以提高电脑磁盘的性能。 文件粉碎机和综记清除器可以清理顽固的软件应用,比如三六零等。修复系统文件就和表面意思相同, 他会扫描并修复坏掉的系统文件。如果开始菜单和桌面快捷方式存在错误的话,可以试试快捷方式修复器。总结来说,这是一款能解决电脑百分之七十疑难杂症的超棒工具箱。米总。

哈喽,大家好,我是 jack。 在 这一讲当中,我们一起来看立扣的六百零六题,根据二叉树创建自互串,给你一个二叉树的根节点入的。请你采用前序遍历的方式,将二叉树转换为 一个由括号和整数组成的自互串返回构造出的自互串空节点。使用一对空括号表示, 转换后需要省略所有不影响字母串与原始二叉数之间的一对一映射关系的空字母串。这个函数是什么意思呀? 是不是输入一颗二叉数的根节点呀?输入一颗二叉数的根节点,那你这个函数返回的结果是什么?是返回描述该二叉数的字母串呀,返回描述 该二叉数的自辅串。 ok, 好, 我们现在来思考啊。当然,第一步呢,我可以直接对入的进行判断,如果你入的是空,直接返回一个空自辅串就可以了。 然后我开始做一个前序的位置。我先不写啊,我先写递归便利左右指数,递归便利 左右指数,他们也会返回对应的字母串,左边的字母串我们叫 love 的 string, 右边的字母串叫 right string。 然后这个位置呢,是后续的一个位置了,后续位置 结识同学们,你们注意看啊,在前序的位置,你要判断一下当节点点是否为叶子节点。判断一下 判断当前 root 节点是否为叶子节点。如果 root 的 left 是 non, right 也是 non, 说明它就是叶子节点。既然是叶子节点,我们直接将值给它返回,直接将 root 的 值转换成字母串返回,但你把它转换成字母串了, 他跟左右指数的自负算。到底要不要拼接括号呢?他要不要拼接一个括号进去呢?所以同学们在这里是有不同情况的,比如说我的第一种情况,第一种情况是这样子的,左指数存在,右指数为空,怎么办? 左指数存在,但右指数呢?右指数为空,你应该怎么做?也就意味着 loved root, 呃,不对不对,那我想想啊, 这个 loved string 要不要拼接进去?那你还是要判断 root 的 呀, root 的 left, 如果它存在 is not a non, 但是呢,它的 right 却是个 non, 也就是我说的情况一,这种情况可以对应到哪里去呢?比如说,你这个节点,他左指数是存在的,但右指数是空的,右指数是空的,是吧?在这种情况下,你应该怎么做?格式应该是什么样?其实这个格式应该是这样子的,首先呀, root 的 value 放进去,然后左指数是存在的,那你就直接拼接左指数就可以了,把这个 left string 给它拼接进去,右指数为空,就不用拼接了。但大家注意,左指数是要带一个小括号的,是要把这个小括号给它带上的, 要这样子返回。好了,这情况一,那,呃,这里我们要说一下啊,这个地方主要是干什么呢?它省略了空的右指数,它省略了空的右指数。 好,那我们再来看情况二。情况二呢,是左指数为空, 但右指数非空,右指数是存在的,右指数存在,那你又怎么做呢?来,同学们看, 我们先判断一下,如果他的左指数是空的话,但是他的右指数却是存在的,也就说右指数呢,他是非空的。在这种情况下呢,你能够省略左子,能够省略空的左指数吗? 可以吗?我们知道空的左指数是不能省略的,所以注意空的左指数。 左指数是不能省略的,也就意味着我直接拿这一段代码放过来,唯一需要注意的这个地方呢,已经不再。是啊,左指数的值不算,因为左指数空的,但如果左指数空的,你也得给他加一个小括号,需要在这里给他加一个小括号, 这就是这种情况。好,其实呢,还有情况三,情况三就是左右指数都飞空,左右指数都飞空, 对吧?接着我们不用判断了,前面两个判断如果没有返回的话,那自然就是第三个判断了。那在这种情况下,它的格式是什么样子的呀?嗯,格式,首先是 rudder value, 然后大家知道这里有两个括号,然后这个括号里面呢是左指数的值。 left string, 那 后面这个括号里面呢,是柚子树的枝,是不是这个样子的呀? right string。 好 了,同学们,这样子我们就做完了。 ok, 我 们可以检测一下这两个结果啊,点击右键,点击执行,大家可以看到,这边就省略掉了,这边却加的, 是不是跟我们给出的两个视力结果是相同的呀?是相同的。好,接下来呢,我们可以将我们编辑的 solution 类直接复制一下,回到我们的平台。 ok, 复制过来,点击提交。