00:00
呃,第一个补充,这个生产者我们先不着急,对吧,因为这个人在最后啊,我们用到的时候再补啊,这个还是一样的出书标准呢,你得把你要调用的东西先写出来啊,但是我们先不着急,对吧。呃,日期格式化的工具,这个呢,我们拿一下啊。因为我们里边要用把这个时间戳转成这个日期对吧,所以呢,我们在这边准备了一个时间的。转换的工具类啊,那为什么做这个事儿呢?呃,等会儿呢,我们给大家介绍来,我先把这个拿过来,这个用的是Java吧,当中的新的方式啊,用的是新的方式。田总啊呃,咱们用的呢,是新的这个API用的是这几个啊呃,在我们的账八里边,它有这几个有logo。Data。啊,还有local time。啊,还有一个logo叫date time。
01:03
对吧,它分别对应年月日十分秒,年月日十分秒合体的,这是合在一块的。对吧?呃,那为什么现在呢,我们用这个一,因为大家之前用的都是什么,就是一提到我们要将时间桌转化为年元日十分秒字符串,或者说把年月日十分秒字符串转化成日期,转化成这个时间戳,我们用什么。啊,一提到这个事情,大家想你要用什么。你就想到了什么?哎,就像小总所说啊,其他同学可能我也不知道是吧,啊,其他同学说我不知道,嗯,反正你在那边敲什么我就用什么啊,你让我自己想不可能啊。自己想啊,这辈子都不可能自己想是吧?啊,反正就是根据呃,我们写好的代码把它克隆下去,照着写就完了啊,反正你得把思路告诉我,你让我自己写啊,不可能的事儿,对吧?啊,就像肖总所说啊,应该。
02:16
大部分同学首先想到的应该是simple data format。对吧,应该是这个啊,就是说正常来说呢,我们经常会写的代码是这样啊,比如说你有一个叫simple。Date format对吧,这里边呢放格式啊,比如说是年月日啊,年月日啊这种格式啊,那么就得到一个SDF,然后接下来呢,我们经常调用的两个方法,一个呢是pass。对吧,解析一个日期去get time啊,那这个是解析日期获取时间戳,那还有一个方法呢,是SDF.for ma对吧?这里面呢,呃,我们可以放一个。时间戳。
03:01
啊,放个时间戳啊,得到一个什么年月日,十分秒的一个字符串。有印象了吗?我这样写一下,大家可以有印象,我把这个写给大家啊。有印象了吗?现在就是我们之前对于时间的处理,是不是用的都是simple data format,而不是用的这里面的什么local data local data time local time。对吧,因为这里面我们都type,就是连月十分秒这种格式对吧。这个想起来了吗?我们用的最多的两个方法,一个pass,一个format。是不是?对吧?好,那我们接下来介绍为什么我们要用这个工具类,而不用之前的simple data跟大家去做一个说明,对吧?啊呃,那这个东西呢,因为它有两个核心的方法,一个是这个pass,对吧,一个是format啊,那其实我可以告诉你在这个。
04:12
来,我们调用到这个里边。它是一个format的方法对吧,我们找到这个format的方法在这对吧。好。就是这个方法。这个方法呢,我告诉你,他有这个线程安全问题。啊,它有限制安全问题,你看啊这个方法它是怎么写的。呃,你调啊,刚才呢,我们从这点form,它进到的是form这个负类里边对吧,但实际上真正调用的应该子类的实现,因为这边呢,它调用之后,它肯定是调用子类的实现,因为我们六的是SIM对form。对象对吧,所以最终呢,会调用这个方法。呃,那么这里边儿我们看啊,它有现场安全问题,为什么诶线程安全问题。是怎么产生的?
05:02
就是现在安全问题产生的前提是什么?那怎么样我们就可以可判断。他有现在安全问题。一个代一块代码还有限制安全问题,我们怎么判断?多线程并发。只要有多线程并发,就就有现场安全问题啊。不是吧,诶方总说的没问题啊,叫多线程使用同一个资源啊,操作同一个资源,而且还是。写操作读无所谓对吧,如果多个线程读无所谓啊,跟老师写对吧,你去新增或者修改啊,那这个呢,容易产生。这个安全问题。对吧,好,那我们来看它里边共同的资源是什么呢?就是它。
06:03
看它是一个什么,它是一个全局的变量。比如说我有AB2个线程对吧,A线程B线程A线程呢稍微早一点,A线程的时间呢,是3月8号啊,B线程呢是5月4号,比如说两个时间对吧?好,那A线程呢。调用这个方法,它呢,把这个全局的变量。怎么样改成了38号好,那A线程呢,走到这儿,诶往下走对吧?啊接下来呢,我们B线程也紧随其后。进来了,进来之后呢,立马把这个全局变量改成了5月4号,好,A线程走完,发现出去的结果是5月4号。对吧,因为这个里边这个方法里边就操作了一个什么,它是一个set time修改日期对吧?诶它是一个写操作,然后呢,它是一个全局的变量,它并不是在里边定义的变量。它不是在里面定义的变量,而是全局定义的变量,对吧,这就涉及到我们多个线程可能会操作同一个资源,而且是。
07:07
写操作对吧,所以symbol data for呢,这里边它是有这个限制安全问题的,对吧,所以我们才不用这个内容,选用的是什么呢?叫local data或者local data time啊,那它呢,其实也还好啊,那首先呢,我们要定义这个local data time。这个对象,然后之后呢去pass。Years pass。对吧,也是这个pass一样的。啊去解析啊去解析,然后如果说我们要转成这个毫秒数呢,对吧?呃,毫秒数。这个用的format。啊,用的是。Format。同学们用的方还是pass for,只不过说它这个对象构建稍微要麻烦一点啊,不是像我们直接new一个,呃,这刚才我们SIM方是不是new一个SIM data方法就好了,这面呢,是这样写的,叫date time for点对吧?哎,把这格式写进去,你到底是年月日还是年月日十分秒,哎,你把它写清楚就好。
08:11
OK吧,啊,其实核心的都是一样,都是这个一样,先构建这个对象,然后呢,分别调用pass或者说format去转换,最核心的还是这套东西,就换了一个写法,OK了,因为C方里边呢,它有这个现制安全问题,所以呢,我们这个需求就会涉及要用到什么。把时间戳转化为。年月日。对吧,转化成这个日期啊,所以呢,咱们。这样去处理一下OK吧,好,这个就搞定啊,这是我们的一个呃工具类啊,时间转换的一个工具类啊,给大家说明一下为什么不用simple data了。
我来说两句