每周一个抓了小知识之字符的加操作,我们先定义两个变量, interi 等于十叉, c 等于字符大 a。 电量定义好之后,我们做一个输出语句,把这个 i 加 c 的结果进行输出 来,我们编一下加瓦 c, 执行加瓦,把点克拉斯去掉七十五。看到这里我们就应该能知道这个字符 a 的值是六十五,为啥? 因为爱加 c 的结果是七十五,爱的值是十,所以这个 c 的值就是六十五,而这个 c 是自负大 a 的值。来,我们在这写个注视, 字符大 a 的值是六十五。接着我 修改这个字符,把它改为小 a, 我们来编意 直行,结果是一百零七,那说明字符小 a 的值是九十七。我再修改他的值为字符零,预计一下 编意执行五十八,说明字符零的值是四十八,字符零的值是四十八。 好了,看到这里我们知道字符他是可以和英坦类型做加法预算的,而且他也是有值的。字符参与加操作的时候,拿的是字符在计算机底层对应的数据值来进行计算, 这里有几个值大家要了解一下。字符大 a, 他的值是六十五。字符大 a 到字符大 z 的值是连续的。 字符小 a, 它的值是九十七。字符小 a 到字符小 z 的值也是连续的。字符零,它的值是四十八。字符零到字符九,它的值也是连续的。 刚才我们把爱加 c 的结果是直接输出的,这一次我想用一个电量把爱加 c 的结果来接收一下。用一个什么类型的变量 比较好呢?来我们看一下。 i 是英特类型的, c 是差类型的,那么很明显,要么用英特类型接收,要么用差类型接收,这里我们用一个差类型来接收一下,写好之后我们先编一下, 发现报错了,说不兼容的类型,说明这是 不可以的,他为什么不可以呢?一个算数表达式中,他如果包含多个基本数据类型的值的时候,整个算数表达式的类型会自动进行提升。也就说我们做的字符和硬盘类型做操作,他的类型提升了,他的提升规则是什么样子的呢?来我们看一下 拜特类型,少特类型和差类型都将被提示为硬团类型,那么这个就说明了刚才我们那个结果,它应该是硬团类型的。 我们再来看第二个规则,整个表达式的类型自动提升到表达式中最高等级操作数同样的类型,那这个等级顺序什么样子呢?看这里, bad short、 叉印特、 love lot、 大宝。也就说 这三个参与预算,他们首先会提升为英特类型,如果结果中有英特类型,那么他一定是英特类型的。如果结果中有浪类型的,那么他一定是浪类型的。 如果我们这个是结果中他有浮躁等型的,那么最终的结果应该是浮躁类型。如果有大宝出现,那结果一定是大宝类型的,这个是错误的,我们把它注视掉。说一下,差类型 会被自动提升为 inter 类型,所以这就相当于使两个 inter 类型做加法,所以用 inter 类型来接受 inter, j 等于 i 加 c 啊 c 三点 alt 点否认特烂 输出这个 g。 我们再来看一下编意走你直行五十八好了,没有问题。 针对表达式的类型提升,我们再来举个例子,十加十三点一四,然后我把它用一个樱桃类型来接收,我们先编一下,看有没有问题啊? 变异,那么很明显他报错了,为什么?因为这个十是英特类型的,十三点一四是大宝类型的,而大宝类型的等级比英特要高,所以这个结果应该是大宝类型的。那么这里我们用大宝类型来接收一下 十三点一四,来,我们再来编一走,你好了,没有问题。
粉丝7.8万获赞28.9万

这节课来看算数预算中的自增和自减。来看代码,这里有个整数,在整数背量后边有两个加号,就是给这个背量值加一,为了值就变成了三。 是两个减号的话就是自减,自增自减使用方法是一样的,所以这里只以自增为例子。还有一种写法是加号在前面加加为它的结果是什么?来看一下, 还是三加号在后边表示后加一,也就是先使用 a, 使用完之后 a 再加一。 加号在前面是先给 a 加一,然后再使用 a, 那他们两个的区别是什么?他们俩都单独这样写的时候,直是一样的,是没有区别的,在 算数运算或者复职的时候,他俩的区别才能体现出来。来看这个表达是 b 等于加加 a, 看为何必的结果是什么? 来分析一下。在加瓦程序里边运算的时候,会把边量他的纸放到一个临时空间里边,因为这是相加,所以先给 a 加一,之后再放进去二,加一是三, 然后把这个结果付给 b, 这时候所以 a 是三, b 也是三,来运行一下看结果 都是三。那要是把加号放在后边呢?后加 a 和 b 的结果都是什么?来用同样的方式分析一下。把边上的直或者 结果放到临时空间里边, a 是后加,所以先把 a 放进去,然后再加 a, 加一之后变成了三,把这个结果付给 b, 所以 b 是二,运行一下看结果。 一个三,一个二,这么简单的表达是为什么我们要把它分析的这么复杂,如果不这样分析,稍微复杂一点的预算就会算错。来看另外一个例子, b 等于加加 v, 加上 a 加加, 你可以把视频暂停一下,自己看一下 fb 都是什么值。我还用同样的方式来分析,开屏一个临时空间, 先加 a, 先加一是三,把三放进去这一部分,也就是三,到这一部分的时候, a 从临时空间里边取出来, a 是三,在这一部分进行运算的时候,开辟一个临时空间, 因为这是后加,所以先把 a 放进去,然后再加,先把他的值放进去,他的值是三,然后 a 再加一,这时候 a 就是一个四, b 呢? b 就是他们两个相加是六。 来月薪一下看结果, 这样把结果付给其他变量,那如果把变量付给自己呢?这样来写, a 等于加加, a 加上 a 加加。 还用同样的方式来分析一下,开辟一个临时空间, a 是先加 二,加一是三,放到这里,这一部分表达是, a 从这里读取他还是三,然后先把他的变量值放到临时空间里边,还是三, a 还要后加一,所以这时候 a 等于四, 还没结束,最后是复制操作,他们两个相加付给 a, 最终结果 a 就是六, 来运行一下看结果。像这种复杂的运算在项目中是用不到的,可以把它仅当做一个理解分析或者应付考试或者面试的。再来看最后一个复杂的运算, 先看一个复制运算符, a 加等于三,他与他是相同的, a 等于 a 加三,看结果, 一加三等于五,他俩是一样的,那来看下一个复杂的预算表达是 他俩的区别就是这一个复制运算服务不同, 那这一个最终 a 的值是什么? 来分析一下,开辟一个临时空间, a 先加是三,放进去,到这一部分是后加,先把 a 的直放进去还是三,然后 a 再加 a 等于四, 右边的部分相加是六,也就是这个表达是变成这样, a 加等于六, 右侧 a 自增之后是四,那这个表达是结果是四加六是十吗? 这样对不对?按照我们之前分析的应该是十,但是这样算不对? 在程序里遇到这种复合的复制绿色辅导时候,程序会先把左边的他的边量的纸放入一个临时空间,最开始他是二, 所以先把二放进来,这是左侧,尽管右侧 a 等于四了,但是最后复制相加的时候,左侧 a 是从这里边去的二,所以最后结果应该是八。 最大的区别就在于左侧这个位应该取什么值来日行一下程序, 结果是八。来总结一下,当程序遇到自尊的时候,这种表达是无论是在前加还是后加是一样的结果。另外一种情况就是把值付给另外一个变量,还有就是把值付给自 自己。再一种就是这种复合的复制预算服,在计算的时候一定要注意使用临时空间这种概念。好了,这节课就到这里。

面试还和星座有关吗?面试官就是,你好你好。嗯,你好。这个先来问个问题啊,这个 string s 等于 a 加 b 加 c 加 d, 创建了几个对象? 嗯,这个题我昨天还刚好真看过这个就是创建了一个对象吗? 那你这运气不错啊,那你说说看,这是为什么呢?嗯,这个为什么?就是好像是因为在那个变异期间, 就是应用了编译器优化中的一种,被称为那个常量折叠的技术,这个技术就是会将编译期常量的加减乘除的运算过程在编译过程中折叠,然后直接用求出来的值替换表达式,所以就是直 直接得到了最后的这个对象。嗯,看的还是蛮仔细的。那我问个其他的,这个 string s 等于 new string a, 这个车加了几个对象? 嗯,这个题就是好像是要分情况的,如果是长量池里有 a, 那么你有了一个对象,如果就是长量池中没有 a, 那么就是创建了两个对象吗? 嗯,这个没错,是有个细节想确认一下。你是狮子座的吗?嗯,对的。面试还和星座有关吗?嗯,我们是 想找一个狮子座的女孩子,这样的话就对团队运气比较好,就是方便的话明天过来复试一下吧。哦哦, ok, ok, 好的。

大家好,我是阿海,今天我们来学习加挖基础中的输出,在前面的代码中,我们总是使用 sixtent b 奥典普林特幺 n 来向控制台输出内容。普林特幺 n 是普林特赖的缩写,表示输出并且换行,因此如果我们输出后不想换行,那么就可以用普林特。 我们看一个例子,我们这里把输出 a、 b、 c 这三个字符直接用普林的,不用普林的,要 n, 我们来运行一下看看结果, ok, 我们可以看到 a、 b、 c 他打分别打印出来了,但是他也并没有换行,所以说这个普林特他就表示不需要换行的意思,那如果说我们要换行的话,就直接用用普林特,要 n 这样子就可以了,我们看一下, ok, 我们可以看到 实际上他已经成功的换行了,就就是已经成功的输出并且换行。我们还有另外一种办法来换行,比如我们可以在这个 c 后面再给他输入一个换行服,这个斜杠反斜杠 n 表示换行服。我们再来看一下结果, ok, 我们可以看到他又成功成功的换好了,这就是输出的一个使用,看到这的同学记得点个赞, ok, 今天课到这里下课。

你未必能做对的死位置问题。哈喽大家好,我是小一老师啊,今天带给大家一道零一九年顺丰科技的一个面试题啊, number 等于二,然后经过一个 suit 结构,大家看到 suit 肯定会说,哇,好简单,那大部分人可能会选择啊,第二十八行的打印,他觉得打印多少呢?我们来分析一下,这个值是二,所以他会匹配到 suit 啊,匹配到这个地方,所以起就是一个分支语句,对不对?它的值是二,那 k 四一不符合 k 四,二是符合的,符合以后这个叫自增运算符,会让 number 的值加一 啊,所以说这个地方加以以后,小伙伴如果不仔细看,或者是不仔细想,或者平时没有注意的话,他会认为这要打印三,但是实际上呢,我们会发现他打印的是五, 怎么去分析呢?大家注意了, switch 语句的 case, 我在这写一下,一定要记住啊, switch 语句的 case 是一个入口,什么叫做入口啊?入口下面的 case, 入口下面的 case 是会自动执行的, 除非遇到 break, 除非遇到 break, 所以说我们在这,他的值是二,他在这匹配到了, 那下面的这个也会执行,这个也会执行,所以实际上他是执行了三个自增语句原值,所以最终我们分析是这样的,原值是二,经历经历了三个自增,最后是二加三等于五。这道题就是这么分析的,请大家 做一下课后练习。另外呢,我们把题目改一下啊,看大家是否真的掌握了 switch, 我们让他这等于一,在这呢加一个 break, 然后啊,大家去看一下这个 number 打印的纸是多少,然后给我分析一下好不好?如果你能分析出来,在评论区留言啊,给大家看一下,看一下有没有不同的一个分析的结果,或者是不同的分析过程。

现在我们来看拍摄格式化输出,输出功能我们学过了,就是普遍底盘格式化输出,就是我们提前规定好一种格式。举个例子,我的格式是这样,左边横杠右边横杠,你在中间填充值,你可能每次填充的值都不一样,但是输出的格式每次都是一样的, 比如你第一次填充的是张大仙,是这样显示的,第二次你填充李白也是这种格式显示的,这就叫格式化输出,一般我们也叫格式化这幅串格式化,这幅串一共有四种方式,第一种方式是百分号这种形式,这种方式是从拍成诞生开始就已经存在了,也就是基本上我们用的所有版本 都可以使用百分号进行格式化输出,我们来看怎么去用它。现在我规定一种格式就是 monexx i'm from xxx, 然后我们要往这两个叉叉叉的位置填充值,用百分号实现的方式就是把叉叉叉删掉,然后改成百分号 s s 代表是最的意思,就是你要用一个支付钻往这个位置填充值,这个百分号 s 就相当于一个支付钻的站位符。后面这点微改成百分号 s。 给这两个位置传值的方式也有两种,第一种是按照位置传,就直接在后面写百分号括号, 然后直接把纸写在括号里,当然如果你前面定义了变量,这里也可以写变量名,我这里就直接把纸写这了。第一个名字我们叫张大仙,然后第二个来自于广东,这样我们就给他传了两个字,不穿类型的纸,然后把这个结果复制给一个变量名,应付 在普云提下这个音符,结果就是 money 张大仙 m from 广东如果我把这两个字的位置换一下再来运行,结果就变成了 moneymee 在广东 from 张大仙,我们右边括号里写的纸是按照位置一一对应传递给左边的,多一个少一个都会报错。如果你只需要传一个字的话,可以不要后面这个括号,直接把纸跟在摆放好 后面就行了,这就叫安慰字传词,安慰字传词,你需要记住站位符每一个位置代表什么意义,然后安慰词传对应的字。还有第二种方式就是不按位置传,这时候我们就需要在后面写一个字典, k 叫 lam, 对应张大仙,然后 k 叫 hometown 对应广东。这样的话前面我们就不能直接写百分行 s 了, 这样写的话只能按位置传,我们要在百分号和 s 中间写一个括号,然后把字典 k 写在括号里,这里就不用加引号了,因为这段话本身就是自负串类型,后面也是一样,后头按,当然字典的位置就无所谓了,因为字典是根据 k 取值的,你后面这两个位置可以随便改, 可以自己去试试,我就不试了,现在一运行,结果就是, money 张大仙 mform 广东,这就是不按位置,以制定形式传值。这里要注意,虽然摆放 as 是要求我们传一个支付传过去,但是你看我这样,我传一个整 十八进去,我再传一个列表 a b 进去,甚至我传一个字典 a 冒号 a, a b 冒号 bb, 一运行也是可以的,也就是说百分号 s, 我们可以传任意类型的纸进去,他都会当成支付串处理,然后还有一个站位附加百分号 d, 他表示接受一个整形, 这时候也可以接受一个整形,十八一运行是没问题的,但是如果是百分号 d, 我再穿一个这幅串进去,这样就会直接报错了。现在我们简单总结一下,百分号 s 可以接受任意类型的字,百分号 d 只能接收整形,但百分号 d 用的很少,了解一下就行了。

扎瓦中的篮子先来看一段代码,一个集合用增强后循环给他便利输出出来,运行一下,把控制台放大,二十条数据被打印了出来,这是普通的写法,试着用篮子把它简化一下, 这就是 lamb 简化增强否循环的第一种写法。把上面的代码注视掉,再来运行一下, 可以看到集合里的数据也都被打印出来了,这段代码还可以被简化, 定义的变量和输出的变量一致就可以直接省略掉。把第一种 lamb 表达是注视掉,再来运行一下,效果也是一样的,三行的便利,最后被 lamber 简化成了异形代码。接下来来看一下给集合排序, 这里会用到一个匿名,累不累? 把这个集合整个打印一下, 给便利后打印一个空行,好区分一些。控制台会打印出排序后的集合, 下面来看一下第一种简化方式, 给上面的排序注视掉,让他打印没有排序的集合,再输出一下调用方法后的集合运行一下排序,前后的集合都打印出来了,这个简化是没问题的, 他还能被简化,像便利一样,可以直接把变量省略掉。 最后再来运行一下吧, 没有问题,集合卫生去排列了,这就是蓝白的魅力,总结一下,记得关注哦!

hello, 各位同学,接下来我们来学习第三个知识点,键盘录录。每次学习这个知识点的时候,都会有同学会有这样的疑问,为什么要有键盘录录呢? 其实啊,就是为了让我们操作的数据变得更加的灵活。举个例子,比如说这里定义了一个变量应该 a 等于十,那么这里的变量 a 记录的值十是我们自己手动写死的。 那我就考虑了呀,能不能让变量 a 记录的值灵活起来呢?在键盘当中输入什么变量 a 就记录什么,比如说我在键盘当中敲十, 那此时变量呢?就记录时,那么当我在键盘当中敲一二三的时候,那 变量 a 就会记录一百二十三,能不能实现这样的一个效果呢?当然这必须是可以的,那么代码到底该怎么写呢?有的同学要思考了,如果我实现这种效果,因为跟键盘相关啊,我要不要先写操作系统跟键盘之间的代码啊, 比如说发现键盘,配对键盘、连接键盘、组合键盘等等等等一系列的步骤啊。其实呢,并不需要,在加瓦当中已经把这些代码全部写好了,放在了一个叫做 scanner 的类当中。 所以说针对我们程序员,我们只要学习 scanner 这个类,他如何使用就可以了。所以关于键盘录录,我们只要知道两点就可以了。第一, scanner 这个类是什么?简单理解呢,就是 外已经帮我们写好了一个类,叫做 scanner 这个类就可以用来接收键盘输入的数字。第二,关于 scanner, 我们还要知道它的使用步骤是什么, 它分为下面的三步,第一步专业呢叫做倒包,其实呢就表示先要找到 sky 哪这个类在哪, 因为呢加瓦给我们写好的类有很多很多很多, scanner 只是其中的一个,所以呢我们要用它之前是不是要先找到它呀?那么找到之后就可以做。第二步专业呢叫做创建对象,其实呢就表示我要开始用 scanner 这个类了。 第三步叫做接收数据,其实呢就是真正的开始干活了,那么这三步呢,其实很好理解,第一步 简单理解就是找 scanner, 第二步就是准备开始用 scanner, 第三步就是让 scanner 开始干活。 这三步的代码呢,在书写的时候也是有固定格式的。第一步导包,它叫做 import, 加瓦点 youtube 点 scander 分号,那么这个代码呢,必须要写在类定义的上面。 第二步写作 scanner s c 等于 new scanner, 小锅里面写 system 点 in, 上面的这个格式当中啊,只有 s c 是变量名,可以发生变化,其他的都不能变。 第三步, in 的 i 等于 s c 点 next in, 在这个格式里面只有 i 是变量名,可以发生变化,其他的都不允许变。但是我建议大家这三步当中,大家 大家可以把它当做是一个固定的格式,等我们写熟了之后再去变化里面变量的名字。好,我们到代码当中去验证一下, 打开带零二,找到代码文件夹,在这里呢,我可以右键新建一个文件夹,叫做键盘录录。 ok, 然后呢到这个里面我们来新建一个文本文件 名字,我就叫做 scanner demo 一后缀名,把它改成加瓦就可以了,再来右键点击他艾迪的维斯 no 的派的佳佳。 那首先呢,第一步,哥们呢,还是要来新建一个类,类名还是用文件名,注意了哈,类名文件名一定要保持一致。后面的来大国号,这个里面呢是 publica static void man 小国号,大国号 在小光里面我们可以写 string, 翻过号 a, r, j, s, x, ok, 好,那么接下来我们就可以写键盘录录了, 键盘录录当中,第一步叫做倒包,其实呢,也就是说要找到四跟的这个类在哪,他的格式呢是固定的,在书写的时候要注意 要写在内定义的上面。 ok, 那么内定义的上面是哪呢? 那无非就是帕布里克克拉斯的上面,对不对啊?是的,所以呢,我们要把它放到下面来。在第一行呢,我们要来写 important imp o r t import, 加哇,点 youtube, 再点 scanner, 后面呢,加一个分号,好,那么这个呢,就叫做倒包, 我们可以把注视呢去粘贴到上面去。好,那么第一步呢,我们就已经全部写完,再来写第二步。第二步呢是叫做创建对象, 那其实呢,就表示我现在准备要用 scanner 这个类了。 ok, 好,那么它的格式呢,叫做 scanner s c 等于 new scanner, 后面再写小括号,分号在小括号当中呢,我们要写 system, 点 in 就可以了。再往下还有第三步叫做接收数据,他呢也是真正干活的代码, 他的代码呢,建议大家分成两步来写,首先我们先写 s c 点 next int, 好,那么这个代码呢,才是真正的接收 数据的代码,你在键盘当中输入什么,那么此时第十一行的代码他就会接收什么,那接收到了之后,再把接收到的结果复制给左边的电量,那么此时呢,电量里面记录的就是你键盘输入的数据, 所以呢,我们可以来写一下他的注意点,变量 i, 他就记录了键盘 路路的数据, ok, 所以呢,在这个下面,我们可以把 i 打印一下就可以了,写一下叫做 system 点 out, 点 print line, 再来打印一下。哎,那此时呢,你在键盘当中录录什么变量,哎,就记录什么,在第十四行当中,他就会直接打印出来了。好,我们可以来保存一下,再来右 右键点击上面,选择打开所在文件夹,命令行,用加瓦 c 来编一下,然后再用加瓦去运行加瓦 scanner 带帽一回车。 好,那么此时呢,你发现,哎,这个地方呢,没有结果呀,为什么呀? 其实很简单,在这个地方程序在等着你键盘录录呢,所以呢,现在哥们就录一个幺二三回车, 哎,你发现当你把幺二三录进去之后,那此时变量 i 记录的就是幺二三, 然后呢,第二行他就是把变量 i 里面的值做了一个打印, ok, 就是这样的一个逻辑,但是呢,如果说我程序直接运行完了之后,他没有一个提示,我也不知道 我该干嘛呀,对不对?这样子我觉得不太好,所以我们到代码当中最好呢,加一个提示, 在代码当中,我们可以这么办,此时在 inter i 等于 s c 点 next in 的上面,在这个地方呢,我们可以来加一个输出语句,这个地方呢,我们相当于就是加一个提示,叫做请输入整数, ok, 好,那么此时呢,我们就可以重新来保存变异,运行加瓦 c scanner, 带某一点加瓦, 好,那么再来运行一下加瓦 scanner demo 一回车,哎,这个时候你发现请输入整数,是不是相当于有一个提示了呀,这样呢,我们在用这个代码的时候会更好一些,然后呢,输入幺二三回车,哎,你发现 的逻辑呢,跟刚刚是一模一样的。好了,那么关于键盘录录,我们就先学习到这个地方,回到资料当中,我们来做一个小结,关于键盘录录呢,我们只要知道两点就可以了。第一个 scanner 呢,它是加瓦帮我们写好的一个类,那么这个类的功能呢,就可以用来接收键盘输入的数字, 当然呢,他除了输数字之外,还能接受一些其他的东西,比如说字幅,串啊等等等等,但是呢,这些知识点我们后面会学习,现在呢,我们用的这种方式,他只能接受一个整数,注意了哈,只能接整数,如果说呢,你输一个小数,或者是输一些中文,那么代码就会报错了。 好,那么再往下,在书写的时候分为三步,第一步叫做倒包,那么代码呢,是一个固定格式,叫做引炮的加 优秀点 scanner, 这个带毛必须要写在内定义的上面。第二步,创建对象, scanner s c 等于 new scanner, 小光里面写 system 点音。 第三步, in 的 i 等于 s c 点 next in, 那此时电量 i 记录的就是我们键盘录录的数字。 好了,那么关于 skinner, 咱们就先学习到这个地方,那大家呢,现在可以暂停视频,打开你心爱的 note 派的佳佳,把这个代码自己练习一下,马上我们又会再来写一个新的练习。 哈喽,各位同学,在刚刚我们已经学习完了键盘录录,那接下来呢,我们利用键盘录录来做一个小练习,看一下需求,键盘录录两个整数,并求出他们的核并打印出来。那这个题目呢,并不是很难,只不过呢 就是把我们键盘录录的代码做了一个练习,打开一下今天的资料,找到带零二代码文件夹,再找到键盘录录这个文件夹,在这个里面我们来书写,找到刚刚 scanner demo e, 选择他 ctrl c ctrl v 改一下名字,叫做 scanner test。 ok, 好,那么再来右键点击他艾迪的维斯 note bye 的佳佳,把这个类名呢,我们来 ctrl c, 回到代码当中, 把类名来修改一下。 ok, 把原有的代码呢我们全部删除。 好,那么现在呢,我们开始来书写。第一步,我们要来写导包,你记得吗?导包是不是要写在类定义的上面啊? ok, 所以呢,我们要来 input mport, 然后加瓦点 utl, youtube 点 scanner, 别忘了最后呢还有一个分号。好,那么第一步写完,第二步呢,叫做创建对象,那么相当于呢,就是说我要开始用 scanner 了。 好,那么就是 scanner s c 等于 new scanner, 小光里面我们可以来写 system 点 in, 下面我们再来写。第三步,接收数据代码呢,就是 inta i 等于 s c 点 next int。 ok, 那此时电量 i 他记录的就是我们键盘录录的数字。但是呢,现在会有一个问题,这个代码他是不是只能录一个数字呀?是这样,那我 还要录第二个数字,该怎么办呢?有的同学想,我是不是把刚刚的代码全都再写一遍呢?其实没有必要,你要来分析倒包他实际上是什么, 是不是要找到 sky? 那这个了呀,那你说这个代码我找一次不就得了吗?我干嘛要找两次呢? 所以说在我们键盘录录第二个数字的时候,导包不需要再写了,再来讲创建对象,我要不要再写呢? 其实也不需要了,你要来想第二步他真正的含义是什么?是不是说我要打个招呼,我准备开始用 scanner 这个类了呀?是这样,那你说我在接收第一个数字的时候,是不是已经做好了准备了?那现在我在接收第二个数字的时候,就不需要再 准备一次,所以在这个下面呢,我们可以直接来再次接收第二个数据, ok, 再用 inter i 等于 s c 点 next in, 再写一遍就可以了。但是呢,这样会有一个问题, 变量是不是不能重名啊?是的,所以呢,上面的变量哥们就叫做 number 一,下面的变量呢,哥们就叫做 number 二。然后在键盘录录之前,我们呢再做一个提示, system 点 out, 点 print line, 这个叫做,请输入第一个数字,好,然后呢,把这个 ctrl c 到这 ctrl v 输入第二个数字,这样子就可以了。然后最后呢,我们再来写一个,把他们两个 做一个相加,那就是 number 一,再加上 number 二就可以了,把他们相加结果再次打印一下,好,保存一下,右键,点击上面的选项卡,选择这里的,打开所在文件夹,命令行, 用加瓦 c 去编一下 scanner test 回车, ok, 再用加瓦去运行就可以了。 scanner test, 把后嘴名删掉,再来回车, 他说请输入第一个数字,那哥们就输一个十,再来第二个数字二十,那你说结果是多少? 我猜三十,对不对啊? ok, 好了,那么这个呢,就是键盘录入两个数字并进行求和,大家呢,可以暂停视频,把这个代码自己练习一下就可以了。好了,那么关于这个练习,咱们就先学习到这个地方。

那你这边的话,你先简单的自我介绍一下吧,我现在工作有六年了,然后现在是在在北京工作,现在从事的行业是区块链的一个数字藏品发行的一个平台。 ok 啊,然后你这边的话,那你平时项目里面用到的一些技术有哪些呢? 我们目前的系统加购的话,用的是那个存口罩的微服务,然后的话用到了像这个吹酷的存储的话用的是麦丝口,呃,缓存的话目前用的是 reds。 呃,因为我们这边业务里边用到了很多数据处理的这种最终一次一次性啊,就是我们用到了之后的话,是我们这边的整个是在 csb 部署这块,就是像 qys, 然后一些 aps, 一些监控,包括一些钉钉的等等,这些一些小姐的通知等等,主要是做这些, 有很多小伙伴后台问我有没有大厂面试文档,我这里给大家准备了一千道面试题和解力模板,有需要的话可以在评论区领取。那么你刚刚讲了就是你们数据存储用的是买收口,对吧?那么你们的单表的数据量大概就是最 最大的一张手表,差不多一千来万吧,那你们自己就是一千来万的话,你们自己有做分表吧?呃,目前还没有,还没有做。那你们单次就是最慢的查询大概多久?最慢的话如果说不添加这些其他这种外在的,比如说像缓存这些东西的话,大概是在一到两秒钟,那么这些业务啊,就是一到两秒。这些是 toc 的,还是说,呃,你们自己能够去承担的还是 top 的一些借口? 要兔币的一些,因为兔 c 的一一些基本上我们是一般是能加缓存的话是都会去加缓存,而且第二个的话是因为兔币的话,这块我们是在一些这种 sacro 上要处理很多的这种逻辑计算,但是在兔币上面的话基本上是属于一种就是就是无情的那种图图 数据的这种机器吧,我们会把一些数据会在那个一些这样电视任务啊。嗯,我们会将用户的一些数据进行一些清理,就是将一个洗数据的一个过程,我们会放到一个针对于 c 端这种用户的一些一些那种数据获得表,然后放到那个里边,然后再去 c 端去查用户的数据的时候,我们会将这些呃已经处理过的这些数据直接 拉出来。嗯, ok。 啊,那么你们卖收口的话,你们自己整个集群怎么搭建的吗?我们集群的话没有自己搭,就是我们用的是那个原服务吗?然后的话是像我们这种开发和测试房间的话,我们是自己搭的,目前的话是用那个像刀块比较多,因为通过刀块去安装一个厂卖收口的一种不储存的,或者说一种单机的都是可以的。 ok 啊,那么你们啊自己线上的话,那你像毒血啊,这些有分离吗?啊,目前还没有,目前没有。那你自己就是我刚看了,就是你会自己通过一些擦擦来叫不会去跑相关的一些表操作,然后呢同时会对最端,对吧提供服务。那你们会有遇到过像左表这样子的场景吗? 呃,我们目前没有遇到过,但是在我之前那些公司的经历里边我们是有遇到过这种锁表的这种情况,但是这个锁表的话是因为这个事物本身它处理的时候时间太长了,导致了整个的一个锁表的这个情况。那你们后面怎么解决呢?我们之前那个事务太大了,就是我们最终是把那些事物进行了一些拆分,就拆成一些一种小的事, 是我去值钱的,嗯, ok。 啊,那么你刚刚讲了就是你图币的业务啊,就是你包含了很多逻辑运算啊,然后所以他的每次执行时间大概在一两秒。嗯,那么假如说我让你去优化这块逻辑啊,你会通过哪些方式? 只不过说让我自己去做的话,就是如果说不换数据库的话,还是用麦收口的话,嗯,那我通过麦收口我将数据拿出来之后,我通过在那个内存当中去处理,那么在内存当中处理的时候, 我可能需要去进行一些分段的这种处理的方式。第二个的话是对于我的服务区在启动之前我可能要需要对他的整个一个,他的一个对战整的情况可能要去调大一点,因为本身如果说数据太多的话,确实还会有这种内存的一些风险。然后第二个的话是对于这个数据区分段处理的时候,我们可以去通过这种像多线程的这种方式去进行一些处理, 比如说像那种现场里边那种 cus 的这种机制,去最终去进行一个汇总的一个集合,然后将数据最终提到那个前段页面, ok, 就是主要是财运分段,或者说就是多些型的方式去处理,是吧? 对对对啊,那你刚刚讲了,就是你可以去采用一些多线程,那我问一个问题啊?

招吧中的运算符之三元运算符声明两个变量吧。 我就直接在输出语句中写三元运算符了。现在问号前面的表达是结果为真, 冒号前面写一个正确,后面写错误,来跑一下这串代码吧,结果出来了是正确,把表达式改成假,试一下 打印变成了错误,也就是说,当表达视为真实,执行冒号前的语句,否则执行冒号后面的语句。来看一下我的总结吧。

一个工作了五年的程序员在私信里面不断的向我诉苦,他说啊,他用了麦贝的斯这么久,怎么的也算是精通麦贝的事了吧,结果竟然在麦贝的斯这样一个面试题上翻车了,真的好烦。好吧,那么我们今天看看麦贝的斯里面的缓存机制,普通人和高手的回答。普通人, 嗯。呃。买奔驰的缓存机,是啊,买奔驰的缓存机是,就是,嗯,它有两两级缓存嘛,一级是,呃, c c 型级别的, 就是因为啊, suc 型,它是属于单个绘画嘛,那么意味着就是如果我们的每一个用户的查询是在多个绘画里面的话,那么它就无法,嗯,也就说一级缓存啊,它是它是单个用户绘画里面的,那如果说我要跨多个绘画 的话呢?呃,他没有办法去实现,所以在卖冰丝面还有个二级缓存,二级缓存就是,呃,就是跨跨是一个 c 线里面的一个缓存啊,然后他能够就是 针对多个这种这个车型来去实现这个,嗯,这个,这个就是数据的一个一个缓存吧。嗯, 高手的回答。这个问题啊,有点复杂,我打算从几个方面来去说明一下。首先呢, mi bads 里面设计了二级缓存这样一个机制来提升数据的一个解锁效率, 也就是说避免每一次数据的结束呢,都去查询数据库。一级缓存是 c 个 c 型级别的一个缓存,也叫本地缓存,因为每一个用户在执行查询的时候都需要使用 c 个 c 型来执行,为了避免每一次都去查询数据库,买别的车呢,把查询出来的数据呢缓存到 c 个 c 型的本地缓存里面,后续的 c 口如果在命中缓存的情况下,就可 直接从本地缓存去读取这样一个数据,如果想要去实现跨 c 个 c 型级别的一个缓存,那么一级缓存是无法做到的。因此啊,在麦贝斯里面引入了二级缓存的一个设计,也就是说,当多个用户在查询数据的时候,只要有任何一个 c 个 c 型拿到了数据 放入到二级缓存里面,那么其他的这个 c 选呢,就可以直接从二级缓存里面去加载数据。下面我再来解释一下一二级缓存的一个实现原理啊。首先我们看一级缓存在这个 c 选里面呢,会持有一个 execute, 每一个 execute 里面呢,会有个叫 local case 的一个对象, 当用户发起查询的时候呢,买杯的时候会去根据执行语句在 logo case 里面去查找,如果命重了,就直接把这个数据返回,如果没有命重,再去数据库里面去查询出来,再写入到 logo case 里面。所以啊,一级缓存的生命周期是一个车型,需要注意的一点是,在多个是一个车型或者分公司环境下 呢,可能会因为一级缓存导致一个这样的脏毒的一个问题。而二级缓存的实现原理呢,是在原来的 execute 上去做了一个装饰,一路叫 k 区 execute 的这样一个装饰器,所以在进入一级缓存的查询之前呢,会先通过 k 区 execute 进行二级缓存的查询, 开启二级缓存之后呢,会被多个是一个筛选的共享,所以他是一个全局的缓存,所以他的查询流程呢,就变成了先查二级缓存,再来查一级缓存,然后再去查数据库。 另外啊,卖贝利斯的二级缓存相对一级缓存来说呢,它实现了 c 跟 c 形之间的缓存数据的一个共享, 同时呢,缓存力度也能够控制到 name space 的一个级别,并且还可以通过 k 曲这样一个接口来实现不同缓存实现的一个组合,对 k 曲的可控性也更高了。以上呢,就是我对这个问题的理解。在实际的业务场景中, 多级缓冲的设计思想啊,是非常值得我们学习和借鉴的。所以呢,我认为这是一个非常不错的面试题, 大家牢记啊,学习底层技术的目的是为了提高技术思维能力和积累解决方案,为以后更高的职位做好铺垫。好的,本期的普通人 vs 高手的面试系列视频呢,就到这结束了,有任何不懂的技术面试题,欢迎在评论区给我留言。另外, 三月份的面试文档已经整理好了,需要的可以在主页上加我微来领取。我是麦克,一个工作了十四年的加我程序员,咱们下期再见。

观众老爷们大家好,我是经典鸡翅,最近鸡翅老哥比较忙,有一段时间也没有更新了,那么今天开始恢复更新,今天主要来分享一下日志的最佳实践。 那么在生产环境中,尤其是对于 c 端的系统,那么我们日志打得好不好是非常重要的,一旦发生问题,我们要快速的通过日志来判断问题产生的问在哪,然后去进行一个解决。那么我们来看一下都有几点是我们的一个最佳实践,这些最佳实践都是我们在项目中所使用的, 那么分享给大家。第一点就是说我们应用中不能直接使用日志系统中的 api, 这个什么意思?就是说我们不能单独去依赖某个日志框架,就比如说你用 log forge 的 api, 或者用 overbank 的 api, 我们其实一定要使用我们 spring 日志框架的 self g 中的 api, 那么 sell forge 呢?它提供了一套日志门面的模式,我们只需要通过 sell forge 的 api 可以进行一个日志的打印。然后呢,比如说你在 memory 里用的是 log forgee, 那么它在 sell forge 打印的时候,它就会自动用 log forge, 然后当你想切换为 log back, 那我们直接在麦文切换包的话直接上放,这就可以帮我们进行切换,我们不需对代码进行任何的调整,那么这就是我们日制门面的一种非常好的一个作用,它可以有利于维护我们日制处理方式的统一,大家可以可以看看自己日常项目中是怎么使用的, 那么基本都是这种用法。那么第二点就是我们是要使用一步日志,尤其是对于 c 端这种系统,当并发量很大的时候,如果说你日志是一个同步的,那么可能会对性能造成一些影响,那么使用日步一步日志的方式,我们一般都是 基于 disrupter 的高性能对列,通过 memo 年入,然后再通过 log forge 配置文件,我们去更改 logo 的一个 iclns 的翼步实现,那么这样的话就可以实现我们的翼步日志,具体的实现方式大家可以直接搜这里,就不过过多的坠出。 那么第三点比较重要啊,就是我们日日输出中,我们一定要使用战略符的方式,而不要使用字符串边的拼接, 那么战略服的方式就是如我们下面这种 log 点音放,然后后面有个花括号,然后逗号后面的东西就是可以去扩展那个括号暗号里面的内容。 那么如果说我们使用第二种 low 点音或者加这种方式,其实它的性能不是很好,那么它的性能为什么不好?可以来说一下啊,其实是这样的,假如说你是一个 jason 的变量,那么你一定是把这个变量去 转成 json 进行打印。如果说你使用加号的话,由于说我们 log 日志它是先进行一个参数的初始化,之后才会进行判断日志的级别,那么可能会造成大量的你已经初始化完了,但是结果日志的级别是 error, 那可能导致你应放的日志根本不用打印,那么可能会造成你性能的一些损耗,就是你你的 jason 还需要进行转化, 那么这就是我们一定要使用战略服的方式,而战略服的方式呢?他其实是如果说先判断日志的那个级别,之后才会进行替换,那么就是一个先判断和后不判断的一个问题,那么会可以提高我们的性能。 那么第四点就是在我们的日志保存中,我们其实至少要保存十五天的日志啊,这个要根据项目的具体情况而定。由于我们是对 c 阶段的项目,所以说日志是比较重要的,那么我们是以周围维度做保存,因为有一些情况可能是用户只有在每个周的一开始或者每个周的结束可能会产生, 如果说你只保留近一天或者两天日志,你可能过一阵你发现的时候就导致日志分级的发现所有延迟。 那么还有一些敏感的操作,比如说新用户的一些敏感操作,比如说对金钱的提现或对金钱的整体的一个更改,那么这些情况下,我们这些敏感操作一定要保存至少六个月, 那么这个还是要跟项目情况而定啊。那么接下来就是说我们日志打印之前要进行日志级别的判断啊,这个大家应该都理解,比如说我要打印一个 log 点音符,我们其实一定要先判断 if log 点 a 字音符引 a 宝,就是说我们要 判断当前级别一定是音符的话,我们才进行打印,那么这种方式可以保证我们的项目里有真正有用的日志。一些没有用的日志我们可以在生产环境中进行不必要打印,比如说 debug 或者锤子或者音符,我们其实可以不打印,只打印只保留 iver 的情况。 那么第五点就是避免打印重复日志,那么在 logo forty 里我们可以配这个属性。什么叫避免打印重复日志?就是说我们日志在配置的时候一般都会有一个 rot, rot 呢是保证了我们整体项目里跟日志的一个打印的情况,那么我们可能会有一些需求,就是说 我这个类的整体的一个日志,我觉得它非常重要,而且它非常具有独特性,我可能要打印到另一个地方,如果说我在这里没有配置这个属性,那么可能在 rot 日志里面我们还会打印一份,就造成了 rot 日志里有一份,我们这个另一个地方又有一份, 那么就可能造成了一些浪费。那么第六点就是我们打印 l 日制的时候应该使用这种方式,你既要包含我们简短的信息,也要包含我们异常对战的信息, 那么具体的方式就是 log 点 arrow 啊,比如说错误,然后又换个号,然后那么第一个先跟的是 e 点 get message, 这个是我们简要的一个错误信息,然后最后再跟一个 e, 然后这种情况下呢,他其实会把我们整个的一个对战的信息打出来。有的小伙伴可能他习惯用一点 printer step trace 那种方式啊,那种方式其实是不好的,在于一些日志框架里,包括如果说你设置了一些东西,他其实在我们的日志里是打印不出来的,你是看不到的, 那么我们还是要使用这种方式。那么第七点就是我们生长环境日其实要做动态配置,可以切换级别,那么这个意思是什么呢?动态配置 我们可以理解为,比如说,呃,除了公司自研的,我们可以说拿 nikos 的来说,那么 nikos 我们配成动态日志的级别,比如说我配置了一个 debug 级别,我发布之后,那么我日志接下来的请求 debug 的日志都会打印出来,那么这种情况就防止说我们日常 在项目中他报错的信息,我们直接打印出来,当我们发生了一些有问题的情况,我们接收到了报警,那么我们其实要把音符打开,我们就可以看到整体日制的流流转,那么平常其实他没有问题的话,我们就不用打开音符,这样可以节省我们的空间。 那么第八个就是入餐错误的日志,我们其实不要用 error, 要用 one, 就是有一些同学可能会觉得,呃,只要涉及到我的程序非正常运行,我们都要打 error, 那么这种情况下可能会造成一些频繁的报警, 尤其是公司有这种监控平台的话,你频繁的打 iro, 那么可能会你的手机端会接收到各种各样的报警,那么你要半夜可能起来处理,那么其实你发现啊只是一个入餐错误,那么这种就很难受。 那么第九个就是说我们打印的时候要加上类名和方法名,因为类名和方法名是天然的一个独特性,那么可以方便我们进行日志的代码的定位, 因为你一旦知道看到日志这个类名和画面,大体就知道哪某个地方出生了问题,你可以直接找到他。那么第十点就是说我们方法登录前打印日志, 然后再用后打一下日志,这个什么意思?就是说我们其实大型的系统会有很多 rpc 的交互,那么你 rpc 交互,你调别人的时候,你打一下日志,然后别人反映结果的时候,你打一下日志。如果说你调用别人前,你不打一下日志,当发生问题的时候, 你判定是由 rpc 另一方造成的,那么你一定要把你传递给他,参数给他,让他去进行排查。那么如果说你没有打印,那么就很难受了,你,人家管你叫入餐的时候,你都不知道入餐是什么, 那么你可能要涉及到推断啊,或者再上线啊等等等等情况,尤其是复杂的 pc 组装的时候,如果说你不打印会非常的麻烦。那么以上呢,其实就是我们日志的最佳实践,分享给大家。

我是小船老师,今天我们看一个比较简单又比较有趣的代码,首先看到这里我们有一个闷方法,我们这里定义这个 i, 他的初始直视零,接着我们微要循环对我们的 i 进行加加,并且当 i 等于三的时候,哎,我们输出这条语句对不对?好,接下来我们执行一下这个代码,好,我们看一下他的一个执行结果, 我们猜一下他这里会输出一次还是输出多少次?好,我们可以看到这里他是不是对我们这个 i 等于三这个输出语音是不是在不停的去输出?是不是?好,那我们猜一下这是什么原因?是不是说我这里 i 等于三之后,他这里就没有对他进行加加了?好,那我们断点看一下。 好,我们看到这里我们现在 i 是不是等于一,对不对?好,那么往下直行。好,这是不是等于二了?哎,我现在是不是等于三,那么等于三,这时候他是不会输出这条雨区,是不是?好, 那我现在 i 等于三,那么这个时候难道说他没有对我们的 i 进行加加了吗?好,我们继续往下直行,我们可以看到我们现在 i 是不是等于四了?好,我再往下直行,是不是等于五了?好,等于六了,对不对?那说明我们对 i 还是进行了加加,那为什么我第一次这里他会重复打印我这个 i 等于三这条语句呢?好, 那接着我将我的 i 把它改成四。好,那这个时候我再去执行一下我的代码,我看一下他这里会不会打印 i 等于三这条输出语句。 好,我们可以看到他这里是不是这时候也在不停的去打印我这个 i 等于三的输出语句,对不对?好,我们可以看到我们这里 i 他的初始值是多少?他是不是四啊?难道说我加加之后难道他会变成三吗?好,那这时候我们将我们的 i 给打印一下, 好,我们将我们的 i 出示值改成零。好,这个时候我们再来打一下,我们看一下。 好,我们可以看到这里,我们现在是 i 等于三了,对不对?他将我们这个 i 是不是给输出来了?好,那么往下执行他是不是打印这个 i 等于三的输出语句?好,那我继续往下执行。好,我们可以看到他这里是不是把我们的 i 每一次都给打印出来了,对不对?好,那我现在把它执行完。 好,我们可以看到他这里是不是在不停的打印我这个 i, 对不对?好,但是我这个第二条输出语句,我们 i 等于三,他是不是没有再打印出来啦? 我们可以看到他这里是不是执行了很久他才到一百多万,是不是?好,那接下来将我们的 inter 放出我们的 integer, 这个时候我们再来看一下他这个执行结果是什么样子的?我们可以看到这里他是不是打印了一次我们 i 等于三这条输出语句,对不对?但是他第二条语句是不是还没有打印出来?但是现在程序是不是还在执行,对不对?好,我们看一下他会不会打印出第二条我们的 i 等于三这条输出语句呢? 好,我们可以看到他这里是不是有打印的出我第二条 i 等于三这条输入语句,对不对?那么现在程序是不是还在执行?那么他后面是不是还会接着会打印我第三条,第四条呢?好, 我们看到它这里是不是第三条也打印出来了,对不对?好,那么将我们的 int 键改成我们的 number, 那么现在我再来执行我的问方法,我看到这里会打印多少次?好,我们可以看到 他这里是不是打印了我们第一次,我们 i 等于三这条输出语句对不对?好,那现在程序还在执行,那我们等一下看他会不会打印我们第二条输出语句 i 等于三, 好,我们可以看到他现在是不是只打印了一次?他这里是不是没有打印第二次,对不对?好,那这时候将我的 number 改成我的, but, 我们再看一下他这时候他的一个执行结果是什么样子的? 好,我们可以看到他这里是不是也在不停的去打印我这个 i 等于三这条输出语句,对不对?好,那这时候将我的 i 也给输出来看一下。 哎,我们可以看到我们这个 i 等于三这条输出语句是不是在这里不停的去闪,那么说明他这里是不是也在不停的打印我 i 等于三这条输出语句,对不对?好,那这个时候我们看一下我们这个 i 它打印的是什么?我们看一下。好,我们看到这里。对,是不是?当我的 i 等于一百二十七,那么进行加一,它成多少?它是成了负一百二十八,那我们知道我们, but 它这个取值范围是负一百二十八到我们的一百二十七,是不是?那所以说 当我达到一百二十七,当他达到最大值的时候,对他进行加一,他成了多少?他是不是成了一个最小值?是不是?好,哎,爷爷说 当我 i 等于零,那这时候我是不是进行加加?那这时候当他 i 等于三的时候,哎,他这时候是不是输出我们的 i 等于三,这时候输出语句对不对?好,那接着他是不是 i 继续进行加加?好, 那经历过很多次加加之后,那这时候他是不是只达到了一百二十七?好,那一百二十七,我这时候对他进行加一,他这时候乘了多少?是不是乘了我们的负一百二十八,是不是?好, 那乘五的负一百二十八,那后面我是不是又对他进行了很多次加一,是不是?好,那比如说我现在 i 是不是等于二了,对不对?好,这时候我 i 等于二,那么进行加一,那这时候他是不是又等于三了?那等于三,那是不是又会去打印这条语句?是不是? 那么继续往下面执行进行加加,那这个时候他是不是又达到了他一个最大值一百二十七,那么这时候他又在进行加一,是不是又达到最小值负一百二十八,那么继续他去重复执行这一段代码,所以说我们这里他会不停的去打印我们这个 i 等于三这个输出语句,对不对?好, 那我们再看。为什么我这里使用 inter 的时候,哎,我们这里进行输出,那么他这里打印一次之很久都没有打印我们第二条 i 等于三这条输出语句,对不对?那这是什么原因呢?好,因为我们这里是不是在不停的去哎?加加,不停的去循环,是不是?那么我们去执行这条语句的时候,我们 输出我们的 i, 这时候他是也比较耗时的,对不对?也就是说我现在在不停的循环,那么我第一次打印之后,他现在我们刚刚可以看到我们执行了很长一段时间,他的 i 的值才达到多少?才达到一百多万,对不对?而我们的 i 他的一个取值范围,他一个最小值是不是 负二了三十一次方,他最大值是多少?他最大值是不是二了三十一次方减一,是不是?那我们刚刚执行了很久,是不是都只才到达到我们的 i 一百多万,是不是? 好,那么我们再看为什么我们的 integer, 如果说我们在这里不输出我们的 i, 那么为什么我们的 integer 它的输出我们的这个是 i 等于三,这时候输出语句的时候,它的频率会比我们 int 会慢, 那是因为我们因踢脚类型,如果说我们的一个值超过一百二十七,那比如说我现在一百二十八了,对不对?那这时候他会六一个一百 十八出来,而我这里是不是在不停的进行加加,那?所以说他这里是不是在不停的进行六那,那这个时候他是不是不停的去循环加加,那我这里是不是不停的去六,对不对?好,所以说他这时候一个承受力,那肯定比我们 inter 他是不是要慢的多,对不对?好, 那为什么我这里使用浪的时候,哎,我们看到他这里是不是只打印了一次,对不对?那是因为我们浪他的一个最大值是不是非常的大?那我们看我们刚刚我们的印特他执行了很久才达到一百多万,是不是?所以说我们的浪他非常大,比如说 他执行了很久都没有达到我们最大值,所以说他这里就没有打油门。第二次输出语句对不对?好,那我们看一下我们刚刚的验证是不是正确的啊?比如说我现在输出我们的 int 解了一个最大值, 那么接着输出我已经积极了最小值。好,那么这个时候第三个输出语句对我的最大值进行加一。好,我们看一下它的一个执行结果, 我们可以看到他这里第一次打印是不是我们的最大值?那第二次打印是不是我们的最小值?好,那再看到我们第三次打印,我们第三次打印这里是不是将我们的最大值进行加一,我们可以看到他这里第三次打印他的结果是不是等于我们的一个最小值?是不是他们两个是不是相等的?好, 另外如果大家还想学习和了解更多的技术,比如我们的框架原码、性能调优、分布式微服务,还有我们的项目实战,以及我们的 ai 人工智能技术简历优化等技术干货,我们铜陵课堂每晚八点会准时有直播公开课分享, 欢迎大家来到直播间学习,直播间有额外的学习福利免费领取。想要直播链接或本系列教程资料,同学可以在评论区留言或者置顶消息获取。