00:00
来今天呢,咱们继续啊,继续这个肠类和技术API呢,这块我们把重点的内容啊,其实已经算收尾了啊,昨天呢,我们是提到了这叫比较器,比较器呢是一个比较重要的内容,这里边儿呢,我们涉及到两个接口,一个呢叫comparable啊,一个呢叫competitor,这两个的话呢,使用场景呢不太一样啊,昨天最后的话呢,我们也做了一个总结。啊,大家呢,应该啊,要去区分清楚这两个接口的使用场景。嗯,这个大家呢得会,凡是呢,在Java当中涉及到了,哎,对象比较大小的事儿啊,都和这两个接口其中之一去打交道就可以了。OK好,那么咱们这一章的话呢,最后还剩几个其他的API,这几个的话呢,咱们就稍微的看一下就行了啊,大家呢也是听一听下来呢,也不用再花时间呢去研究啊就OK了,那第一个呢,叫做system这个类,按说呢,这个类呢,我们接触的是比较早的。咱们在第一天写hello word的时候呢,其实就已经接触到它了,里边呢,其实我们使用的是它的一个属性是吧,这上点的时候呢,我们不是调用的吗?这个属性呢,还是静态的是吧。
01:10
啊,这块呢,我们用到的就是al这个属性。嗯,还有呢,我们在讲这个scanner的时候呢,是不是还用过这个in的属性是吧?哎,所以in呐out呀,就是它内部的属性,所以他这块呢,还有一个属性。啊,叫error是吧,OK,这块我们稍微的来看一眼,打开我们的API文档是吧,在这儿呢,我们就输入一下叫system,叫系统是吧,过来。然后在这块呢,哎,我们就能看到啊,这个是E22是吧,这个不是or的啊,这个error啊,然后这里边呢,涉及到了有三个,那这样的这个属性,第一个呢叫error,它呢叫标准的错误的输出流。然后in呢叫标准的输入流,Out呢叫标准的输出流啊这个什么意思呢?就这个out的话呢,它是一个输出,那我们看到它返回的这个对应的这个out类型呢,是print stream这个类型,我们说属性这不都有它对应的类型吗?
02:04
啊,这个呢,就是我们system的out,这个我们后边讲IO流的时候呢,到时候再提一下这个打印流的问题,然后这个in的话呢,叫标准的输入流。这个输入流的话呢,标准指的是什么呀?就是默认的咱们就从键盘输入,所以我们这个scanner的时候呢,把c.in呢作为一个参数传递过去,我们就可以从键盘呢去输入这个数据了。啊,Out的话呢,呃,叫输出流了,是个打印流,然后默认的话呢,它是从我们控制台呢输出OK,这个error的话呢,它就是默认的是一个叫错误这块呢,你要用system.error的话呢,它其实就是以红色的方式呢去打印出来这个效果了,这个我就不演示了啊这个一般呢,咱们也用不着它。好,这个呢,是它对应的几个属性哈,然后呢,相应的还有一些方法,方法这块呢,我们可以直接来看一看咱们的这个课件啊。方法这块的话呢,涉及到有这么几个啊,咱们有的呢,也都见过了啊,第一个呢,叫current time minutes啊,已经说过了啊。这个就是获取当前的这个时间戳了啊,然后下边一个呢,叫做ex,那ex的话呢,就是我们可以写一个int型的叫status啊,如果你要写零表示的叫正常退出,非零呢代表异常退出。
03:11
也就是呢,只要我们去通过system去调这个方法呢,表示呢,我们当前这个程序呢,就结束了。啊,这个进程呢,就要退出了,就这个意思啊好,下边这个呢叫system.gc啊调GC的话呢,就是去调用这个垃圾回收器呢,帮我们去回收垃圾。啊,这个呢也有一个小细节,就是我们去调c.GC的时候呢,调完之后立马这个GC就开始回收吗。不一定是吧,对不一定只是说呢,你现在帮我回收一下,就跟好比你在饭店的时候呢,你找服务员是吧,服务员这块那个前一桌吃完了,说你帮我收一下,哎,这就相当于我们就C这么点JC了,服务员呢,有可能说马上就过来给你回收了啊,给你收拾一下是吧,也可能说你稍等一下是吧,但是呢,你叫了他跟没叫呢还有点区别是吧。OK啊。
04:00
好,然后下边这个呢,叫get property啊,这个呢property呢,其实就是一个属性的意思了,我们获取相关的这种属性,这里边儿呢,都有哪些属性值可以选呢?就我们这个行三位置啊,有这样的一些字符串可以去选择。啊,涉及到有一些对应的这个结构,行,这个呢,咱们也比较简单啊,直接再拿过来来测试一下就行啊CTRLC回过来啊,咱们在这块右键。加一个啊,比如叫other的API的啊测试啊这样。啊,这是一个单元测试方法,这个大家呢,整一个模板,我看有同学没有整这个单元测试的模板,整模板多方便。是吧,你回头这个写一个test,这不直接就出来了是吧。很方便啊。好,这个位置呢,我们直接CTRLV啊,粘过来ctrl out加个L啊,调这个格式啊好这呢都提前写现成了,直接呢我们调get property。这里边儿呢。我们就填写相关的这个叫property这样一个名,那就可以了。好,这块我们做一个运行。
05:00
哎,看下这个相应的这个结果。诶这呢就出来了啊,比如说呢,我们现在呢,使用的这个Java的版本啊,1.8.0.271是吧,然后呢,Java这个home实际上呢,这块是我们这个运行的环境了啊,是在我们这个JDK的这个GRE里边运行的,当前呢我是WIN10的是吧,然后这是我当前的用户名。啊,User的一个home,然后第二诶,我们现在跑到当前这样一个module啊,这样一个情况啊,行,这里边儿呢,就列举出来一些基本的属性信息啊,这个大家做一个了解就可以了。行,诶后边这块呢,还有一个叫a copy啊,相当于呢,实现一个结构的一个复制啊,这个呢,咱们了解一下就可以了,所以整个呢,关于system呢,哎,我们也就稍微的熟悉一下就行啊回过来,然后我们后边呢,讲到这个流的时候呢,还会再提一下这里边儿的几个流。好,这里边儿呢,我们提到这三个属性呢,后边呢,我们在讲到这个IO流的时候呢,前面两个我们还会再去说一说的啊,因为它对应的呢,你看这块都是这个流嘛。哎,OK啊行,嗯,然后呢,方法这块呢,刚才我们看到的稍微呢,大家有个印象啊,刚才我们提到呢,叫current。
06:08
Ha。Million是吧?哎,这个大家也不用会自己写啊,直接你,哎这个能掉就行了啊JC方法是吧?哎,It的方法里边填一个int型的叫status它是吧,还有呢,刚才看到叫get proper。是吧,里边写一个死的,一个叫property。哎,这个稍微再熟悉熟悉就可以了啊。好,这是我们说的第一个,然后第二个呢,叫做runtime这个类。啊,Runtime我们前面呢叫runtime exception运行时异常啊,那runtime这个类呢,你翻译过来就叫运行时。啊,运行时,诶怎么会有这样一个类呢,这个类呢,其实我们在讲某一个知识点的时候呢,我稍微提了一下。啊,这个不知道还有没有印象啊,这个类呢,我们讲哪的时候说过呢。诶,我们进来看一下这个类啊,你可能能想到啊,这个RUNTIME1进来。
07:01
哎,你看到呢,当前这个类呢,其实是一个单利模式。啊,私有化构造器。然后呢,声明当年这个属性,而且还造好了。啊,也就是当前这个类的一个对象,然后通过get方法呢去获取,这是不是就典型的恶汉式。对啊,当初呢,咱们在提这个单利模式的时候呢,稍微的带着大家呢,看过这个类。哎,什么叫运行时呢,实际上呢,它对应的啊就是。稍微呢,我们再看一眼这个内存的这个结构。就看这个图吧。那咱们呢,也提到过了,整个呢,咱们Java呢,DBM涉及到这个内存结构的话呢,就是它把内存呢分成这样几个部分,那一个呢,诶我们说呢,叫Java的一个进程,实际上呢,你也可以理解成我们一个Java的一个应用程序啊,运行起来以后呢,不就是个进程嘛,一个进程的话呢,这块就对应着这样一套内存空间。然后这样的一创内存空间呢,我们称为它叫运行时数据区是吧,实际上呢,就在一个整个的运行时的这个环境当中啊,这呢就对应着唯一的一个runtime的实例。
08:05
啊,Runtime就是我们现在提到的这个叫runtime。OK啊,所以呢,这里边儿呢,只需要它的一个实例就可以了,它呢就做成是一个单立的方式了,OK,这叫运行时,哎,我们呢,通过这个静态方法可以获取它的一个实例。啊,了解就行啊,那这个类呢,有什么用呢,这就涉及到它内部呢,有一些方法是吧,这块方法的话呢,我们看到有这样一些哈,这个呢是获取他实力的,这个呢叫total memory。就获取一下我们这个虚拟当中初始化时候的这个内存的总量。诶默认呢,大概呢,占到我们物理电脑内存的一个1/64。啊,然后max memory呢,这个呢,就获取虚拟机最大程度上能够使用的啊,我们物理内存的一个总量,默认呢,是整个电脑内存的1/4。然后free memory就是我们空闲的一个内存空间。啊,这个大家做一个了解就行啊,哎,我这样一说,你稍微一听哎就完事啊好,CTRLC一下,这里边有对应的一段代码,我们稍微过来呢跑一下。
09:05
哎,我就写到这里了。哎,粘过来稍微的看一下,刚才呢,提到这个runtime呢,是一个单立模式的,所以我们调离方法呢,获取它这个实例。然后呢,拿着这个实例,就是咱们当前这个应用程序运行的话呢,它就是一个进程获取呢,它的一个初始化的一个内存啊,获取它最大可用的一个内存。啊,然后这块呢,我写了相应的一段代码,这个一个字符串啊,然后他呢,不断的去做这个拼接操作,相当呢就模拟占用一部分内存空间了,然后占用完以后的话呢,我们看还剩多少。啊,就简单的大家体会一下就行,那刚才呢,提到了咱们这个默认的一个内存占用呢,大概呢,是占到物理内存的1/64是吧。默认的一个内存大小占用,所以这块呢,我除以1024,再除以1024,然后乘以个64。啊,这呢,你看一共看一下这个相当于模拟一下,你看这块算出来的这个,嗯,内存是不是跟我物理内存呢,比较接近了,这不我乘了个64嘛。
10:02
呃,然后呢,这个最大的内存呢,咱们说呢,能够用到整个物理内存的1/4啊。那这块我们再乘一个四,看是不是能达到跟我物理内存呢,比较接近了。然后下边这块呢,这不是free,就是我们占用了一部分内存之后呢,看看还剩多少,然后呢,初始化的这个就是目前我们使总共的这个啊减去呢,哎,我用这个空闲的不就是我用了多少。是吧,大概呢,大家了解一下就行,好,我这呢run一下。我的啊是这个是吧,好你看这块呢,整体算出来的,我的电脑这不是32GB吗。基本上就比较接近了,那这个呢,也是这个呢,稍微差一点是吧,哎,我们说呢,大体上是1/4啊。OK,这是空闲的,这是已经用的这样的一个场景。啊行,这呢,就我们整体上做一个了解就行了,啊这个呢叫runtime在这稍微写是吧。他呢是一个。嗯,对应着咱们说整个Java进程。
11:01
啊的啊,内存。哎,使用的运行时的这个环境啊。这个呢,我们说呢是单立的OK。行,具体这个细节的话呢,像刚才几个方法,一般的话呢,其实咱们也都用不着啊,一般呢也都用不着。呃,下边这个呢,叫math啊,显然呢,就是数学类了是吧,这个呢,呃,凡是啊与这个数学运算。哎,相关的类。啊,哎,相关的这种操作是吧。哎,大家呢,可以在此类中。啊,这个。找是吧,相关的方法。即可啊,所以呢,这块我们也就抛砖引玉一下是吧,哎,大家后边需要了,你就来这块找一下就行行,那这里边儿的话呢,我们就看一看这个mass这个类,比如说呢,我们这个取绝对值是吧ABS。啊,就absolute是吧,呃,然后呢,这个sale这什么意思啊。
12:03
Sale ex sal呢?翻译过来就是天花板的意思。诶,然后floor呢叫地板是吧,诶天花板地板这块呢,就涉及到了我们里边针对的你看都是一个double型的数了,哎,比如说呢,这是天花板,这是地板,这是两个相邻的数,比如说这个是五,这是六。那中间这块呢,不都是一些浮点型的数吗。啊,随便我挑,比如说五点啊678是吧,哎,那么这个数的话呢,如果我们去调一下这个叫SE的话呢。哎,不管你这个数是5.5比5.5大的,还是比5.5小的,比如说你是5.001是吧,像这些数的话呢,我们要是取它的四呢,就都往上升。就是取天花板嘛。哎,所以这个呢就都是六了,然后呢,要取这个floor呢。可能你个数呢,是5.999是吧,哎,不管你多大,我只要取这个地板,那都是往下取。所以呢,就取了一个五。
13:00
啊就这个思路,这呢不管针对于正数负数也一样,所以这块你要准确话呢,你可以画一个数轴,这是零是吧?啊这个呢,咱就随便了,比如说这个是负六,这是负五,这个数呢,不管是多靠近于这个六,只要你取取天花板是不是往右取。对,然后呢,要取地板的话呢,就往左取是吧。就这意思。啊,这个呢叫天花板,这个叫地板啊,然后round呢,就是咱们平时用的比较多的了,四舍五入是吧。这个四舍五入的话呢,有时候在这个比例题里边呢,有时候会给你稍微考一下啊。你说这还不简单吗?哎,这个呢,他考你的话呢,肯定不是考你正数了,考你负数了就。啊,这块咱们说这个maths呢,是叫数学类了,其实呢,也可以看作就是操作一些数学运算相关的一个工具类了,只要是个工具类的话呢,你会发现基本上都是静态的方法是吧。啊,因为我们那个ma里边呢,基本上都是竞彩方法。因为呢,你像这种工具类,包括呢,像咱们说的这个ari。
14:01
这也叫操作数组的一个工具类了,你说我们去new一个race一个对象啊,New完了对象之后呢,你去调一个,比如说S方法。是吧,你会发现呢,你的对象了,一个A1对象和一个A对象调方法呢,AA2没有任何区别。主要呢,这个方法的区别点呢,是通过这种行三来体现的。所以这块干脆呢,你就不用找对象了啊,所以这块呢,就直接用类去调,工具类的特点嘛,数学类啊,它也一样,你造他一个对象也没啥意义啊,所以直接拿这个类来去调了,好,那通过它呢,我们去调这个叫round哈。吊状的话呢,这块给你写一个正的一个负点型的数,这块呢,都非常简单了啊。这个应该所有的,呃,咱们都应该会清楚是吧,这个你没达到五的话呢,那这个就舍了,达到五的就入了,这不就四舍五入吗。嗯,这个都很清楚,好,关键的就是我把这个呢,CTRLC我再复制一份,然后前面加了一个符号是吧。
15:02
负二的话呢,这个我们先整一个六的这种,然后呢,我们再整一个这个极端的这个,我们写一个五的这个是吧。就看这个你会不会了。这个是12。是三这个呢。不是。这个呢?不是咱。这个呢?不是三。不是。嗯,这个的话呢,你看对不对啊,最后一个。前面这个的话,你看是没问题是吧,这个是不是错了。就是这块的话呢,大家可能还有点感觉,也就是说呢,哎,举个例子啊,你看怎么去看这个事儿,正的我就不说了,负的这块呢,这是负12。这个是负的13,然后负的12.3应该是比较接近于这个负12的是吧,所以这块呢,就负12了,负12.6呢啊,比较接近于这个负13了,所以这个是负13,这个呢,可能大家都觉得还挺好说的啊,关键就是这个啊,负的12.5在中间了。
16:07
这到底归谁的问题了?哎,这个你发现他是不是就往大的这块去归了。对,有点儿像什么呢,就是这呢,如果是河两岸。哎,刚才呢,咱们提到的这个天花板地板这个呢,就是严格的让他再去找小的,或者是找个大的啊,而这种四舍五入呢,你可以理解成呢,这是河的一岸,这是河的另外一岸,现在中间有个人在这游泳呢,说现在他要上岸了。哎,上岸的话呢,这块呢四舍五入,其实想表达点就是说他呢,就是找离得近的这一边是吧。是这意思吧,所以它离这儿近,四舍五入的时候呢,他就往这考,他离这近他就往这考。那中间呢,你可以理解成就是正比如说这个呢是12,这个是13的话呢,先不考虑这个12.5的问题啊,诶但在12和12.5之间呢,它不就得往12靠嘛,12.5跟13之间的都往13靠。然后这块有个规定,这万一要在中间呢。
17:00
哎,我们说那叫四舍五入,中间的话呢,是不是往大的这块靠。所以这块呢,负数也一样,负12.5的话呢,也往大的这块靠,那就往右边这块靠。所以呢,就负12。大家可以这样去记。或者啊,怎么记呢。哎,其实我记的时候我都不这样记的。嗯,不是看距离了啊,这样就是本身的这个数呢,你比如说以12.3为例吧,我让这个数呢。加上一个0.5,然后呢,我再向下取整。不管你是正的负的,全如此。诶,你看这个12.3,我加上0.5就是12.8,向下取整,那就是12 12.5呢,加上0.5就是13 13再下去整还是13。这个负12.3加上0.5。所以说这个我已经算不明白了是吧,你看负11.8,负11.8呢,然后向下向下就永远是取比它小的那个,其实就是flow的意思嘛吧,对,所以负12这个呢,也同样道理,这个呢你就好算了啊,因为有时候中间这个呢,你整不明白了,这个呢,你加上个0.5不就负12吗。
18:04
负12就还负12。哎,所以你这样的去计算啊,就是这是一个技巧。就是本身这个数呢,哎,我让它比如咱们X吧,加上0.5之后呢,让它再取一个floor呗。哎,这样的一个思路就行。这个呢,有时候在这个比例题当中啊,他会恶心你一下,给你整个负数,尤其呢给你整到这个点五的时候,这个呢有时候就整不清楚了,到底是取负13还是负12啊这块呢小心一点啊。嗯,再往下的话呢,这个就是求谁的多少次幂了,这个是开方了,咱们讲这个质数的时候呢,用过它啊,然后这个呢,是取这个随机数的,这个咱们也说过了。是吧,嗯,最大的最小的这个就不多说了,然后呢,这块是三角函数,这是反三角函数。这还都记得吗?就差不多忘光了是吧?哎,记得的同学呢,估计离忘也不远了。
19:00
啊,因为呢,咱们基本上也用不着,其实是吧。嗯,你要这样讲的话,其实咱们学了很多知识点,好像都没用,用得着是吧。呃,用得着的一些技能呢,可能说都不是在学校里教的啊。OK。嗯,行,哎,这呢,就是我们说的这样的一些场景了。啊,这个具体呢,在一些特殊的一些项目当中,你需要用到了,那到时候再现学是吧,现看就得了啊,当然了,你要说真正想做一个跟数学操作一些相关的这种工具的话,可能这个MAS呢还不够用啊,到时候你就可以再去网上找一些相关的啊,数学操作相关的一些API啊,基本上啊,大家现在遇到的一些问题,咱们以前也说过了啊呃,你写程序的时候遇到的一些问题,包括你需要的一些资源,其实网上现在都有。啊,因为大家呢,现在学还没学到那种极其前沿的程度是吧,所以呢,找一些资料呢,网上都没有了啊,那现在呢,基本上是都能找得到的啊。就包括呢,大家呢,你像写论文也是一样啊,那时候上学时候写论文,嗯,就讲到了说有的那种,嗯,其实正常来讲,对于一个导师来讲,包括那个他的研究生也是一样哈,你要想做科研的话呢,必须要不断的读一些新的论文了。
20:12
啊嗯,有的这种这个这个导师的话,你凭自己的想象是吧,不读论文,然后呢,就自己在那去去去干想,基本上你的每一个idea,每一个想法别人都想过。啊,包括创业其实也是一样哈,前一年的话呢,还特别明显啊,总有一些同学毕业之后呢,可能干了就半年了,然后呢,就有时候跟我联系,说那个呃,他的一些朋友啊等等的说想创业了啊说呢是特别好的一个机会,说自己要不要去问我的意见呢,啊一般我的意见呢,都是说就别去。啊,因为呢,你工作半年之内啊,相当于你这个技术学了半年,工作了半年,其实还没有整个呢有巩固的,然后出去创业了,所谓的创业呢,首先呢,失败概率是极高的。对吧,你可能90%几的这种失败的概率,然后呢,最起码你创业创新不得折腾一年嘛,一年下来之后呢,基本上技术也忘的差不多了。
21:04
然后呢,创业没创业成功,最后呢,差不多就从头开始了。啊,你要想创业的话呢,怎么也得你先干上两年技术是吧,把这技术呢,最起码先整扎实了,就是你睡了一觉呢,再醒来发现有些东西还记得啊,而不是说呢,睡了一觉醒来技术忘的都差不多了。那麻烦了啊,你哪怕你干两年之后呢,如果遇到这个机会了,呃,拼一把就拼一把,呃没成没成的话呢,还可以回来再接着做技术是吧。啊,刚整半年去创业呢,这个事儿呢,就通常都不靠谱,而且呢,往往一说,哎呀这个是一个特别好的机会啊,你放心,就你想到这个机会呢,别人通常也都想到过是吧。基本上不会存在说我这这个idea呢,从来没有人想到过,不太可能。啊,不太可能啊,而且这种呢,所谓的靠这种叫什么。咱们国家现在好多就是靠这种商业思路的这种啊,其实很容易被别人抄袭的啊。你得真正有自己的硬实力才可以。啊,实打实的,你是做芯片的,你是搞研发的是吧,这个呢,你很难被别人抄袭啊,一些所谓的商业模式呢,那分分钟就被别人抄袭了啊,所以呢,你这个竞争力呢,护城河呢,有点太浅是吧。
22:11
啊好,这个我们再拉回来啊,然后呢,上面呢是一个mass类啊,下边这块呢,讲两个类啊,这两个类呢,我们得提一下,第一个呢叫be in。大的音是吧,哎,然后呢,下边还有个叫big DEC。啊DEC呢,就是这种浮点型的啊,小数点的这个意思啊,大的带小数点的。什么意思啊,这个big呢,它主要是来解决咱们在程序当中,如果呢,涉及到这个整数啊,特别的大了,乃至是呢,我们这个浪类型呢,都搞不定了。啊烙呢,咱们不是说呃是八个字节是吧。嗯,一个字级呢,是占八位八八六十四,所以呢,它能表示的这个总数呢,应该是二点六十四次方。但是这块呢,有一半正呢一半负的这种场景,所以呢,它的最大的这个正数呢,是二的六十三次方减一。
23:03
啊,这个咱们原来都说过了啊,那现在呢,如果我们要操作这个数呢,比这个数还要大。那这个浪呢,就无能为力了。那怎么办呢?啊,这时候我们就可以使用叫big integer诶这样的一个类了,这个类呢,它可以表示不可变的任意精度的一个整数。所以这个数呢,可以非常的大。啊,然后呢,你可以针对这个数呢,做相关的这种加减乘除的运算啊,绝对值啊,这个呢,就相关的这种加减乘除运算啊,都是没有问题的。OK啊,所以这块呢,具体的这种测试啊,就没必要刻意的去做了,主要呢,就是大家知道呢,哎,如果有这样的需求,你就想这个big integer就可以了。你看我在这个测,呃,这个演示的这个代码里边,我们写的这个数呢,就特别的长。然后呢,你要是同样的用这个浪去这个写的话呢,已经超出了这个浪的范围了。就搞不定了,就哎稍微的我们拿过来看一眼啊,你说C。回过来。
24:00
啊,这个咱们在这儿啊,来一个TEST4。哎,站到这儿,你看这时候呢,我们把这个浪这个你打开,这已经超出了浪的范围了。搞不定了,那你把它放到我们这个big in这里边,你看这是以字符串的方式呈现的,那字符串你可可以特别长了,就没有限制,那相应的这个加减乘除是吧,这样的一些运算呢,都可以啊。行,那就具体呢,该咋算就该咋算就可以了,那这个数相当大是吧。嗯,OK啊好,这个呢叫big in啊,这个呢,我们在程序当中如果有这样需要的话呢,我们就可以使用它了。哎,在这我们说一下啊,它呢可以表示任意。哎,京都的这个整数是吧。啊或叫任意长度的。啊,这个整数好,那么相对应的这个类呢,大家基本上也能够猜出来了,这个呢,就是如果我们想表达的这个浮典型的这个数呢,精度要求比较高,我们就可以使用叫big decimal啊。
25:01
哎,任意精度的啊,浮点数。哎,这个咱们在前面讲这个这个float和double的时候呢,大家也发现了float和double呢,他们这个精度啊不太高,如果你想精确到比如说小数点后30位,他是肯定做不到的。啊,精度呢是有限的啊,那怎么办呢?那这时候我们就可以考虑使用叫big decimal啊,用它呢来做一个替换啊,尤其呢在这种商业计算当中。啊,比如说每年世界上的各个银行的这个央行,它要统计一下这一年的一些数据了,这个数据呢,比如涉及到这种小数点比较多了,这个都得要求很精确的啊,这时候我们就可以考虑着使用在Java层面用这个big DEC来表示了。包括呢,像这个,比如说这个这个宇宙探索方面啊,天文方面啊,涉及到了这种带小数点的这个我们也得考虑呢,要精确一些啊,毫无疑问呢,我们就得使用Java层面呢,就是big盖来去替换了。OK啊行,下面有相关的一些运算,这呢,我们把这个测试类呢也可以呢拿过来啊,CTRLC。
26:06
来,稍微的看一眼。哎,五是吧,转过来啊。好,这里边的话呢,这是一个big,这是BIG2个,然后下边这块呢,我们让这个BD去除一下,我们这个BD2,然后这呢,它需要呢,去指定一下,除掉以后呢,我们可能是除不尽的啊,那除不尽的话呢,你怎么来处理呢?这呢叫round half up。哎,是就是四舍五入的意思是吧,哎,这样的情况,所以呢,我们这块呢,做一个运算,上面这个呢,它是一个默认的啊,有一个小数点的保留的位数,下面这块呢,我们就指定它要保保留到这个小数点以后呢,15位。那这块我们就可以指定了。所以呢,它可以去运算的比较精确。OK啊,这叫big decimal。就塌了啊。行这呢我们就过了,然后后边这块呢,还有一个呢叫random。哎,你看这个类名呢,跟咱们ma里边那个方法名一样啊,随机的意思是吧,所以呢,它主要呢,是用来产生这个随机数的。
27:06
那杨二呢,我们之前呢,使用。啊,这个mass.re这个方法呢,你可以呢,也换成咱们re这个类的对象去调指定的方法。OK啊。嗯,这呢,获取一个布尔型的。Bit型的double的float的高斯分布,诶,高斯分布知道是啥分布吧?哎,对,就是咱们说的那个正态分布。正态分布就是典型的就是这个长这样了是吧。啊,这样的一个场景啊,就是我们生活当中呢,其实好多都是正态分布的,或者乃至于呢,我们把很多呢,可能不是正态分布的,都理解成正态分布一样是吧。嗯,OK啊,生态分布的话呢,你像就是大家典型的这个学技术啊,其实就是这样的一个场景了啊呃,大家刚毕业的时候呢,应该处在哪个位置呢。这个你看你这个正态分布指的是什么了,如果呢,是对应的这个,呃,在各个阶段的这个人数的话。
28:00
啊,那现在的话呢,大家毕业的时候呢,其实应该处在这种偏高峰的这个场景。就大家记住的话呢,呃,就是咱们呢,算是经过培训过的啊,然后呢,也有没有培训过进入市场的,他们相对来说就差一些啊,但是呢,目前呢,咱们在市面上整个这个呃,中级工这个叫算中级吧啊这个工程师的话呢,相对来说这个数量呢,算是比较多的,在一个企业当中呢,它需求量比较大的,其实也是这个中级的,初级的话呢,这个是刚入门的这个。诶,他呢,就是初级中级是吧,这块呢,稍微偏多一点,高级的这块就稍微往上去走了哈,有点往下去滑动了。啊,所以呢,大家刚开始积累技术的时候,你发现呢,诶我积累这些技术,怎么感觉心思上也没有太大的变化是吧,因为你还处在这种人数比较多的这个场景下。但一旦呢,你持续的再去积累,你突然发现呢,人数就少很多了,然后呢,你再拿offer的时候呢,发现也更容易了啊,因为这块相当于你把别人给卷下去了是吧。嗯,然后你再往上走的话呢,你这个薪资呢,就上的更高了,人数就更少了。啊,就是虽然说呢,现在咱们看到今年整个这个大环境似乎呢,都在往下有一个下行,当然这也不光咱们it了啊,各个行业呢,其实都会有这样的一个调整变化。
29:09
啊,这个呢,随着这个疫情政策的变化呢,可能也会有一些变化。OK啊呃,但是总归来讲的话呢,It的话呢,现在咱们所说的包括it里边主要的这个软件开发,咱们这个现在学习的这个方向,基本上已经变成了各行各业的一些基础性的一些。方向或者基础性的一些需求了。啊,现在各行各业呢,其实都需要跟这个软件啊,跟互联网要打交道,那既然如此呢,就大家的这个岗位呢,在各行各业当中其实都会有所体现了,需求呢,也自然而然的,他不会说这个,除非呢,经济整个大环境都很差了,那这个需求呢就会很低了,否则的话呢,它会有一个调整的过程,你不能这些你一直看到it往上涨,不允许它往下跌一下,做一个动态调整。啊,其实这个调整呢,也是一个好事儿啊,他这个调整完以后的话呢,没有进来的,或者想进来那个人呢,他会观望了,他一观望呢,大家这个竞争呢,就没有那么激烈了。
30:03
要不这些年你持续性的再往里进人,这个也会越来越卷嘛,是吧。OK啊,诶,那随着你这个技术呢,不断去提升啊,你会发现呢,你后期的技术稍微涨一涨,你的薪资呢,变化反而很快,因为这块的人已经变少了。啊,这样的情况当然了,人变少了,另外一个场景呢,就是公司里边,其实这样人的需求也会少是吧。哎,也有同样的一个问题啊。当然了,还可以再说的另外一个场景呢,就是大家比如说从事啊,咱们有Java有大数据的同学啊,相对来说呢,这个Java的市场需求呢,应该是非常庞大的是吧。需求很大啊。啊,需求很大,但是呢,还有一个问题就是供给也很大是吧。你想Java已经这么多年了哈。那需求大,供给也大,那合在一起会有什么问题呢?啊,就是如果说你学的不太行是吧,觉得不太行的话呢,那不好意思,因为攻击很大,所以竞争呢,会非常的惨烈哈,比如你找工作的时候呢,你找不到,呃,1万多的,你说我就找个六七千的,那不好意思,公司可能不太需要六七千的。
31:07
对于公司来讲呢,他宁可招一个,比如说这个是20K以上的,还说30K的,他也不愿意招两个或三个10K的,甚至说呢,还不到10K的,再多招几个,他要不是找人打架去是吧,人多的话呢,有劲哈。啊,这个呢,你得看你实际上能不能解决开发中的这个问题啊,征集一个10K以下的这种技术水平,初级的解决不了问题没有用啊,他宁可招一个特别强的。啊,薪资再高一点,那也合适。OK啊,所以这块你要学的比较差的话呢,那不好意思,这个竞争很惨烈啊,所以这块你找工作会比较费劲一些,但是呢,呃,如果说你要是学的还不错哈,所以说呢,这个学的还确实都很好,那由于呢,这个需求呢也很大。所以你找工作的话呢,其实并不愁手里边可以握好多个offer是吧,你想当你握好几个offer呢,不知道该怎么选的时候,那种痛苦是吧,是特别爽的一件事情啊。就跟说呢,好几个女生要追你,然后这块你想哎,该选哪一个呢。是不是感觉特别的?
32:01
不一样是吧,嗯,特别的纠结啊对,所以呢,这个还是要把这个技术要学好啊,那现在的这个整个大数据是吧,咱们这个需求的话呢,相较于这个Java的这个需求呢,它肯定是要小一点了,但是现在有个点呢,就是供给其实也很小是吧。哎,需求小,供给也很小,竞争呢,现在还比较弱一些。这块呢,其实你主要来自于哪块,有精能呢,就是他们在企业里边做过Java开发的那些人,他们自己呢,自学的,或者根据公司的需求呢,他们转到大数据的这些人呢,会使大家的一个竞争者是吧,但是大家这块呢,在这学的大数据的这些技术啊,其实比他们自己研究的那些呢,肯定是要更靠前一些的。咱们是相当于纯做大数据的啊,这块呢,这个技术站的话呢,肯定是没有问题的。呃,那就相当于学的好一点的话呢,肯定也挺好的是吧,当然呢,相对来说有一个问题呢,就是他需求的话呢,当然这个是相对的哈,相对于Java来讲呢,需求呢,它会显得要小一些。OK啊,当然呢,由于现在这个供需关系的问题,现在的这个需求呢,这个虽然说小吧,供给也很小,所以呢,整个这个大数据的这个薪资水平呢,你看还是要高,扎完一刀。
33:10
啊,有这样一个情况啊,但是这种高的情况呢,以后呢,会慢慢的不是那么明显了,这个基本上前一年的话就都能看出来啊,前一年呢,这个大陆据呢20几K,还是因为供需关系影响,现在呢稍微有所缓解啊,需求的话呢,随着经济的下行也会有些变化,大厂有些调整是吧,所以这个薪资的话,你发现呢,再往下下行。当然了,如果大环境呢,回暖以后呢,大数据需求也会回暖,那现在的这个新资待遇呢,也会有一些回暖。啊,这个Java呢,也自然而然的随着这个变化,市场环境的变化也都会有调整啊OK。好,那么拉回来啊,提到这个random这个类,这个类的话呢,嗯,这儿呢,就是你取一个叫高斯分布的啊,这样的一个double型的值,那就相当于他取到中间这个值的概率呢,就要更大一些啊。行,然后这块呢,我们平常呢,在程序当中更多的是取一个整数的场景,这块取整数呢,它也给了一种方式啊,简单的稍微的提一下啊。
34:08
啊,再来一个六啊。好,这个呢,首先啊,你要想用这个类的话呢,首先得创建它的一个对象。嗯,先整个对象啊,然后呢,拿着这个对象呢,我们去调这个ne方法。这个方法的话呢,我们先啊,这块我们out enter一下啊。哎,不是int啊。要这个。现在alt加上回车。那这呢,我们就得到一个I是吧,这个我们去打印下这I。走起。啊,这能看得到一个这样的数是吧,哎,再来一个。啊,这个这个数,那这我们就关心说诶你这个呢,它是一个什么样范围的一个数,哎,说此雌激数呢,生成的这个序列中均匀分布的一个应等性值啊看这好像没看出来是吧。哎,其实已经说明了哈,均匀峰的一个in的性的值,In的这个值呢,本身不就有一个范围吗。
35:02
这个均匀分不清楚吧。就是取到每个数的这个概率是一样的。是吧,诶这个横轴呢,如果是具体这个数的话呢,它是平均概率的,是不是一个均匀的一个场景了。好,这个呢,一般咱们很少去用啊,咱们更多用的是这个next in。来接着呢,拿这个random点,我们叫这个next,这里边呢,我们去写一个叫晃,叫边界哈,比如这个呢,我写的是时。哎,打一下这个接啊,那么此时的话呢,我们得到这个阶呢,就是处在啊,其实最大最大值呢就要十了,而且这个十呢还取不到啊,它其实对应的这个范围呢,是从零到。哎,这个呢,我写成一个开区间吧,从零到十。这个范围内的一个整数。是随机获取啊,零到十。范围的整数。这个十呢是取不到的啊,这个稍微的注意一下。
36:03
行,那其实呢,我们借助于这个方法,是不是也可以获取任意范围的一个整数啊。像我们比如说我想获取十到30范围内的。其实也可以是吧。这这十到30范围的这个回整吧。谢谢大家。啊,这个呢,可以先考虑是零到。20是吧。零到20这个范围呢,你再加上个十就可以了。啊,然后这个20的话呢,这是一个B的,你改成一个零到21开的是不是就可以了。这样,然后这个呢,是不是就意味着我们这个方法调的时候,你这个改成。十八十一就行。是不是零到21,其实这块得到的不就零到20的,然后整个这个结果呢,再加个十是不是就它了。啊行,我就不写了啊好,那以后的话呢,我们获取指定范围随机数的话呢,你可以用咱们ma的reno方法也可以呢,使用这个方法。然后拼凑一下也行。
37:00
OK啊行,这个说完之后呢,整个呢,咱们关于这个其他的一些这个类呢,咱们就说完了,稍微呢大家了解一下,下来呢,也不用刻意的去练了啊就行啊,所以这块回过来关于random呢,就稍微提一个事儿啊,要获取指定范围的。啊,随机整数啊,这个呢,我们可以调用一下这个next int这个方法,Int型的一个叫found是吧,用这个就可以了啊。好,这个呢,我们就告一段落。
我来说两句