instance of 关键词在 job 中, instance of 运算符用于判断一个对象是否是某个类或接口的实力。 在下列代码中, up 是要进行判断的对象, class 是要判断的类或接口。如果 up 是 class 的实力,则 resolved it to, 否则 resolved a false。 在这个例子中, str 是一个 string 类型的实力, 所以 instance of 运算符返回 to 数出 s t r is a stream。 如果 s t r 不是 string 类型的实力,则返回 force 输出 stis not a string。 我们执行一下代码输出结果猜对了吗?再来一道例题,他会输出什么呢?哦,是 force 啊,和大家想的一样吗? 为什么是 force 呢?哦,原来是阿比被初始化为 now。 instance of 运算符用于判断一个对象是否是某个类或接口的实力。由于那不是任何类或接口的实力, 所以 of instance of class 的结果为 force。 因此 system art printer result 会输出 force。 大家明白了吗?
粉丝164获赞2129

哈喽,大家好,我是爱读野马的大嘟嘟。那今天呢,给大家讲一个嘉华程序员经常会遇到的错误, out of memory error, 大家有遇到过的同学可以在弹幕里面打个一, 那么当项目出现这个错误的时候,我们的项目他还能正常的去处理请求吗?啊,这个得辩证的按不同的角度来看待。首先我们来看一段代码, 这段代码很简单,有两个请求, test 和 hello, hello 请求它每一次呢都需要去消耗一百兆的内存,而 hello 请求它并不需要消耗太多的内存。 这个时候我来设置一下我们的 j v m 参数,大家可以看一下,我这样设置就表示 j v m 它最多只会用两百兆的内存。好,那么设置完之后,我来启动我的项目,我第一次访问 test, 它是会消耗一百兆内存 的,所以说它是能够消耗到的。那么假如我第二次再来访问 test 的时候,那么其实就没有一百兆内存可以用到 j v m 里面,对吧?所以这个时候呢,应该就会报错。那么我们来访问第一次访问 test, 它这里没有问题啊,那么第二次再来访问 test 的呢?哎,就抛了 out of memory 的错误。 好,那么注意,当第二次访问 test 的时候,它就是因为 g v m 里面没有可用的一百兆内存了,所以说这个 test 请求它是没办法执行的,所以说跑了这个错误。但第二次 test, 它并没有去占用内存了, 说这个时候我来访问 hello 的话,他其实应该是有剩余的请求是可以用的。呃,内存是可以用的,所以说我这里来访问 hello 其实是可以正常访问的,所以按站在我们单纯的 java 角度来看的话呢,呃,如果说你项目里面出现的 out of memory, 它并不表示所有的请求都不能执行成功,它只不过是表示有一部分请求,你如果说需要消耗的内存啊,我这边没办法提供的话,那么对于那些请求就就会持续的抛这个错误, 那么对于某些星球,你并不需要消耗太多内存,那么它还是能够正常的去执行的好。所以说当我们看到错这个错误的时候,我们脑海里面一定要知道,可能 jbm 里面还剩一部分内存,但是剩下的这部分内存呢,可能是比较少的了,所以说要注意这个点好,那么但是有同学可能在项目中心也遇到过, 嗯,就是好像一旦出现 out of memory error, 他的整个项目就挂掉了,也就说这个进程他直接就停掉了,那是为什么呢?啊?这是因为在我们的 minicus 里面有一个机制叫做 out of memory kinder 啊, 就是也是跟内存有关的,他会去监控操作系统中内存占用过高的进程,操作系统一旦发现他自己的内存不够用了啊,那么就会把占用内存最高的进程把它给 care 掉 啊。所以说当我们一个 java 进程,如果说你所占用的内存,你占的操作系统内存的非常大的一个比重,那么呢操作系统当他自己的内存发现不够用了,那么他就会把你给 care 掉。 那接下来呢,我就来给大家演示一下这个 k 的机制,我提前已经把我的刚刚这个项目的价报已经上传到了我的云服务器, 然后我这边就直接来启动他啊,注意这里呢,因为我机器的内存是五百一十二兆,就是我这里直接让我的加瓦进程直接去占用五百兆,然后我把它启动起来,启动起来之后啊,我们来 来看一下,看另外一个窗口,注意这个时候这边的 spring 部的项目其实是在正常运行的,对吧?然后我来直接访问一下当前的,呃,我们前面所说的那个 test, local host, local host, 八零八零 test 啊,第一次访问啊,它是正常执行的,这里打印了一个 sex, 那么再看第二次访问 啊,你看这边的进程,我并没有做任何的操作,他直接就被 care 掉了啊,其实就是因为,其实你两次访问之后,最终你加瓦进程可能占用了内存 太高了,那么超系统发现呢,内存不够用呢,他就把你价位竞争直接给 q 掉了,所以这就是我们刚刚说的这个机制啊,就是 king 的机制,所以大家要注意,所以呢,从这一点啊,我们应该要能够看得出来,就是 当我们自己在呃设置 j v m 参数的时候,就不能设置的太大,不然很有可能就会被操作系统给 care 掉, 好吧,所以今天呢就分享这个错误,分享到这里看大家。呃,如果还有什么问题的可以在评论区跟我讨论一下,那么今天就讲到这里,也希望能够得到大家的一见三连,谢谢大家。

今天是练习演讲的第五天,今天把断言和过滤器的讲解又好好的看了一下,然后练习了一下。那个 断言吗?就是他有一些配置 after 在 什么时间之后可以开启吧,就有点像那个秒杀商场在几点几点可以开始秒杀下一波那些东西。然后还有什么 honda 断言过滤器嘛,就是 一般就是两种吧, get 五 v 网缸过滤器,还有全车过滤器,一般还有自己会搞一些这是异异过滤器,然后内置的什么? 然后还看了一个和面试相关的问题吧。跨域,跨域就是协议域名端口,只要有一个不一样就叫跨域嘛,然后解决这个跨域就是 cros, 这是一个缩写。 呃,其实之前有很多人会把它直接当成一个单词去读嘛,但是其实它是四个单词的缩写, 然后你前端 f 十二一下,你看到一般看到 c, l、 s 还有后面有一个什么语句,就知道它是跨域引起的问题吧,然后去配置一下配置文件基本就行。然后今天 算是真正学习到了的 bug 吧,因为之前弄 bug 都是自己搞一些测试案例。呃,假装他错了,然后去找一下嘛,但今天在那个项目上面真的体会到了什么叫 bug, 添加两个字段根本就找不到你该添加到什么地方,只能 打断点,然后就是过一个方法打一个断点,过一个方法打一个断点,然后去添加那些方法,然后呃,反照着他们之前的业务逻辑去写一些东西吧, 幸好老师来了,不然根本就搞不出来,根本找不到光光一个那个。 呃,一个 service 城的代码,就一个 plus 文件,它就有将近 一万多项代码吧?反正我改的那个地方在六千四百多。


pattern 模式样本这个词,前面的 pattern 和 father 父亲相关,因为字母 p 和 f 的 发音啊,在全世界各地都喜欢当成爸爸的这个单词的读音, 这也是为什么中国人把爸爸叫做爸爸。大家注意,卜和普是一对青浊辅音,中国人也把爸爸叫做父亲,最开始也是字母 f, 而英文当中把爸爸叫做 papa, 也可以叫做 father, 还是 p 和 f 的 读音。所以 pattern 这个词啊,前面的 pattern 就是 father, 后面是一个鼻音字母 n。 大家不要忘记 pattern 这个词啊,它指的意思是模式样本,因为它指的呀,就是按照一个固定的模式去批量生产产品,就像父亲把基因传给众多的孩子一样。比如说 the design is so good that it's sure to set a pattern for many others。 这个设计太好了,肯定会有很多其他家来模仿,把它当成样本的。在很多批量生产的商品上面啊, 都有模式一模一样的图案。这也是为什么 pattern 做名词,除了可以表示模式样本,还可以表示图案。 比如说 a shirt with a floral pattern, 指的就是一件带有印花图案的衬衫。 okay, the limits of your language are the limits of your world。 语言观决定世界观。

每天进步一点点,今天我们来聊一聊 threadlocal, 我 们知道 threadlocal 是 用于实现县城隔离,为每个县城提供独立的变量副本,但是它内部是如何实现的?而且为什么说使用不当时容易导致内存泄露的问题, 下面我们来聊一聊这两个问题。首先我们先来聊一下它的实现原理,跟 threadlocal 相关的类有三个,第一个是 thread 的 类,第二个是 threadlocal, 第三个就是 threadlocalmap。 呃,我们需要知道的是, threadlocal 它本身其实并不存储数据,它只是作为一个数据访问的入口,那么它的数据究竟存储在哪里呢?呃,在 thread 类里面有一个 threadlocalmap 类型的这样一个成员变量叫 threadlocals, 数据其实是存储在这个里面。 在调用 threadlocalset 方法之后,首先会去获取当前正在执行的现成,并且从现成对象中获取 threadlocalmap, 然后以当前 threadlocal 对 象的弱引用作为 key, 然后把呃,我们需要存储的数据作为 value, 组成一个键值队存放到这个 threadlocal map 中。 要用 get 方法,也是先获取当前正在执行的现成对象,并且从现成对象中拿到 threadlocal 对 象为 key, 从这个 map 中进行获取。 这个就是 swipelocal, 它的存取过程以及它具体数据存储的位置。 swipelocal 中还存在一个比较著名的坑,也就是内存泄露的问题,它的 key 被设计成弱引用,弱引用也就意味着当外界没有其他对象去指向这个 swipelocal 对 象时,它会被垃圾回收器收回收掉, 那么当它被回收掉之后,它的 key 就 变成了 now, 但是它的 value 可能会因为呃我们使用的现成值导致现成长期存活而无法被回收掉,从而导致内存泄露问题的发生。 呃。因此最佳实践就是在使用完 swap 的 local 之后,我们手动去调用 ram 方法将这个呃 value 给它清掉。