00:01
那么这里边儿呢,其实咱们得说一下啊。有一个这个东西是咱们,嗯嗯,前面没讲的,现在还不会的,咱们把这个讲了。把这个讲了以后呢,其实吧,理论上来说,剩下这些事儿都是讲过的。啊,其实这时候其实你可以自己心里边评估一下是吧,你看如果思路也已经都给你了,这个时候如果让你对着这个流程图自己去一步一步去写,你能写到什么程度,对吧?哎。嗯,哎,所以说下一步呢,这个。代码呢,就是我们这个具体的实现了哈。第一步,哎,首先是去创建一个。工具方法。执行MD5的加密。创建工具方法,执行MD5的加密。然后,呃。
01:05
我们去找到,看在哪个类里边来做哈。咱们就CNU就行啊,就在这里边。哎,咱们不厌其烦的把把这个我尽可能哈去注意,把每一个我们要操作的文件,不管是Java的还是页面的还是什么的,都都给大家去标记出来,在哪啊,因为学项目的时候,其实还有一个困难,就是说。尤其我们做具体工作的时候,一会儿在页面上写。一会去改配置文件了,一会是Java的工具方法,一会儿是Java的handler service map,一会儿去写circle,一会儿呢又去写一个GS文件。你要是背后,你要是这个思路你不清晰的话,你就觉得这个这老师在上面到处乱跳,我真想把他掐死。但是我也我也我也很。无奈是吧,这个东西它不可能把代码写到一个类里边。
02:04
不可能把代码一条线下来,他不可能写在一个地方,这不像咱们Java基础的时候,说咱们写个啥啊,你就都在一个类里边写,就或者说写什么两三个方法就行啊,他这个时候不是这样了。啊,所以说这个时候他一定是从在很多个文件里边啊,到处跳,跳来跳去的啊,所以说这个我一方面呢,给你标记上,把这个思路给你说清楚了啊,然后呢,你要尽可能的你要使劲要要要跟上啊。嗯,在这里边儿呢,咱们新建一个方法。Sta。哎,返回字符串面,哎,这个叫做MD5哈。先return一个闹心。这里边儿呢,传入的数据哈,是我们传入一个铭文。假设我们叫S就是一个圆。这个原奏唱啊,三点水的那个圆。
03:01
那么这里边儿这个第一步呢。我们得先去判断一下这个S呢,是不是一个有效的值,有效的,呃呃,变量就是它是不是有效的走成。这个为什么要先做这么一个判断哈,其实这个呢,是一种自我保护。或者是它的length等于零。为什么一定要注意这个事儿哈,大家去了公司里边以后呢,有一种事叫做code review。这个翻译过来叫代码审查。就什么形式呢,小组里边可能就有十十几个人,或者就不到十个人吧,也可能啊,有再来一个会议室,前面有领导把这个。把把员工的成员的这个代码投影仪打到这个墙上,然后大家一起一行一行看。
04:06
特别是新来的人。特别是新来的人啊,因为这个老鸟人家都熟悉了,知道这个它代码很过硬,就其实基本上不不怎么看,特别是新来的人。然后去看你的代码,看你这个代码里边有没有什么问题。啊。笑你那么轻松。这个领导骂你都是轻的。啊,特别是咱们很多同学的话,现在起名字这个类名还是首字母还是小写的。你去了公司里头,你不找挨骂吗?啊,都挺大的人了,咱们都挺好面的是吧。你当那么多人领导去,去有的公司吧,这个看公司不一样哈,我反正做开发的那个第一份那个公司吧,那个经理特别凶。你从来从来就在在公司里边见到他,从来就没见他效果。啊,你见着他就想绕着走啊,就那种职场,职场,职场是很残酷的。
05:01
职场是很残酷的。有跳楼的对吧。没,没,前两年不是有一个也是程序员,30多岁了,公司劝退他。太完了,想不开跳楼了。有,有那个猝死的。对吧,啊。对吧,那很残酷的。很残酷的,所以说呢,你这个时候,你从现在你就注意是吧,你尽可能把这个代码要写规范,还有很多同学啊,代码就是这个这个东西根本就根本就完全不注意这个缩进。完全一点都不注意这个缩紧。啊,这个要代码要整齐,同一同一级的东西,你让他这个从缩进这是要对齐的。就是说有的同学那个代码呢,他已经到什么到什么程度呢,它这个格式化已经都格式化不了了。因为你要想格式化好呢,最起码你缩进的这个方式呢,是一样的,你要不就是用tab键缩进,要不就是用空格去缩进是吧,你都得都得是这个一致的,它它才能给你格式化。
06:07
有的同学他已经格式化,都已经整理不了了。啊,所以说你写代码的时候不完全依赖他,你得这个自己得去注意这个事儿。优秀的程序员写的代码像诗一样。蹩脚的程序员写的代码像屎一样。啊。所以说像这种地方。你想哈。你想如果你没有做这种判断,将来程序执行到这儿,抛控制针异常,你说你说是领导骂谁。你说领导骂谁领哪抛异常他骂骂谁啊,这抛一常这个地方,这个代码写谁写的就骂谁啊。对吧,所以说呢,这个这个因为你咋不判断一下呢。你这值拿过来,你咋就那么肯定他这个值就不会有问题是吧,人家人家这个传值那个地方人家人家不管是吧。
07:00
啊。对,所以说呢,这个地方啊,这是这个,我们这是一种我们自己的一种这个写代码呢,考虑的这个去尽量考虑这个周全一些啊,所以说很多地方你该加拆开的地方要去拆开啊,因为他你考虑到这个地方呢,有风险,不一定能执行成功,有可能会跑异常,那么后边这个异常怎么处理啊,你得考虑清楚,你是自己拆开式呢,还是项目里边有统一的我们这种异常处理的机制,这种都得要想清楚。像我们这儿呢,如果检测到它这个是是这样是这个无效的,是闹或者是空子串啊,我们这儿,我们这就可以抛异常。嗯,比如说呢。嗯。咱们这个就抛个runtime吧。这给一个消息,哎,这个消息呢,放在我们这个。Constant。点,来个message。叫string invalid。
08:08
这告诉他啊,呃,字符串不合法。请不要传入空字符串。哎,给这么一个消息啊,出问题以后呢,抛到抛出来这个异常,让别人能够知道在这出了什么问题啊。如果不是有效的字符串。哎,抛出异常啊去这个,呃,也等于说抛出这个问题。哎,如果如果能够执行到这儿,因为抛异常这儿就不走了啊,哎,所以说能够执行到这儿,说明没有抛异常这个就这回咱就可以放心的用了,最起码它不会有控制帧异常了啊,它也不是控子五串。所以说再往下呢。呃,下一步我们去创建或者叫做获取一个message dIgEst这样一个对象。
09:10
哎,可惜我们现在不能够体罚学生。不然的话是吧,这个很容易帮你们改过来呀,是吧,我在看到谁类名首字母小写的是吧,就拿棍敲你是吧,拿棍打手板是吧啊。啊,这个很容易就帮你改过来了啊,这是最简单最有效的办法。回头我建议建议我们校长是吧,咱们设置一个刑讯室。啊,在这里边儿呢,施加电刑。这个可以量化,看你犯什么错是吧,你看你在这个上课的时候打瞌睡了,就20伏的电压,这个给你给你给你充电五分钟是吧,充电五分钟精神一小时是吧,然后你就不犯困了是吧?哎,就是犯什么错,这个有定量的这个惩罚哈。
10:04
你要是做了好事以后呢,给你有奖励,奖励你可以给别人充电是吧。哎,赏罚分明,这个message对象就是JDK给我们提供的一个做MD5加密的,这样就是做加密的这样一个工具啊,Get instance这里边呢,传入这个加密的一个一个一个算法的名称。这写个MD5。他这儿有异常。有异常,这个有异常,现在这个异常是两个处理,你是抛到外边去,还是我们这才开始。对,那为什么要拆开?这儿跑出去呢。就是将来调这个方法还是我们自己,将来我们调这个方法的时候,还是得处理这个异常是吧,这就给自己找麻烦了。
11:00
所以说呢,就不往外抛了,哎,这个什么时候这个异常抛出去呢,不用我们处理,抛给框架了,抛给虚拟机了,就抛给他了,对吧,就说这个事儿不用我们操心了,就抛出去了。嗯。另外呢,还有一个就是说我这儿呢,还我还单独的把这个东西呢,这声明一个变量。哎,并没有把这个字串直接放在这儿哈,这个其实是也是有一点说道,包括我这个注释这儿都是在双斜线后边有个空格。这个这个这个依据是。嗯。我看一下啊,我看一下这个在不在这哈。这边阿里这边出了这么一个这个开发的手册,这里边儿就是说各种的这个规范啊,你比如说呢,就是啊,这个命名的规范啊,这个你看我找一下我刚才的这个哈。
12:02
嗯。常量。他这个叫不用不要使用魔法值是在哪。在哪?往下。啊啊对,不允许使用任何魔法值,啥叫魔法值呢?就是我这儿吧,如果我们这儿没有声明这个变量哈。我如果说在这儿就直接写这个,这就叫这个就叫魔法值。他没有变量,你在这写这么个字串,别人不知道你这这啥意思。可是如果我们这声明一个变量的话,这就很清楚了。那当然说,除非你不认识这个单词是吧,这就单词就是算法的意思,那么这就很明显,这就是一个算法的一个名称。这就是说哎,我们团队协作啊,将来去别人去维护这个代码,这个就不会造成一些个困扰。
13:06
就是人家这个依据呢,就是我们来自于阿里的这边这个。这个手册啊,那阿里的这个对我们最起码国内的程序员的影响还是很大的,我们遵守他的话,基本上能够就遵守大部分这个公司的这个规范了。啊,所以说哎,这个。这个也是给大家发一下是吧,啊这这这有这么多版哈,我们看这个终极版就行了。诶,是这个中级版还是这个详尽版啊,我看一下它这个日期是啥时候。2017年9月这个呢。啊,这个更新一些啊,2018年的,然后下边这个呢是。这个更早,这个要更早一些。啊,这也是2017年,那我们就是看这个详尽版。没事儿呢,你就拿出来刷一刷,没事儿你就拿出来刷一刷。
14:05
包括呢,这个注释哈,也是双斜线后边加个空格,也是这里边说的,我就不去找了啊哎。这也都是这个规范。好,那么这个下一步呢。有了这个以后,有了这个以后。呃,咱们用它怎么去做这个加密哈。怎么去做这个加密。嗯。呃,它加密呢,是调它的一个dIgEst的这么个方法。这里边儿需要传入一个字节数组,这个字节数组是哪来的呢?是我们这个S。对应的字节数组,所以说下一步呢,咱们把这个字节数组拿到。获取铭文字符串对应的。
15:00
自己数组。south.get bits。这就是我们它叫input啊,然后第五步呢,执行加密。哎,这个叫做message。dIgEst.dIgEst。然后呢,它出来这个叫output。但是这个字节数组吧,往数据库里边存的时候呢,不方便。啊,我们希望呢,就像就长得就像这样。出来以后应该像这样的值往数据库里边存,我们觉得哎,这个很好。那怎么把这个字节数组去转成这个哈,这个其实也也很容易转。嗯,我们去创建一个。Big这样一个对象。把它呢这个东西吧,当成一个很大的一个整数,Big不是大整数吗。
16:01
哎,Big有一个big。它有个构造器呢,咱们用这个哈,你看这个西格纳是控制它是正数负数还是零啊,负一是负数,零就是零,一就是正数,后边这就是字节数组。CTRLC,这别写魔法值是吧,嗯。呃,一啊,我们这是正数,然后把output呢这个字节数组放在这。然后呢,这个big吧。七二。呃。呃,就是按照。16进制。加big integer的值。哎,转换为字符串。
17:00
就行了。这个big integer.two three。兔子俊呢,这个。这个。这个这个rid哈,这个就是用它呢,去指定一下是多少进制的。就是16进制。得到一个组串,这个就是我们这个enco。加密好的就是它,然后呢,我们这边返回就返回它。哎,那么你在这儿呢,这个当然你这边要是这正常就返回了,出问题要没有走,这你这边开了,最后就返回闹也只能返回闹了哈。那基本上应该不会,这边其实这个代码吧,别的也没有什么风险了,也不会出问题了。这是这是这个方法,这写好以后呢,下边咱们去呃测试一下啊,先加个注释。嗯,在你包括这个类上哈。
18:00
其实按照这个代码的规范呢,你像这个代码里边,包括这个作者,你都得写上你的这个名字是吧?啊,你得写上你自己的名字。啊,你将来这个代码出问题,你好知道去找谁呀,对吧?哎。哎,上头网。啊,项目通用的工具方法类。然后我们这个呢,是对这个铭文字符串进行MD加密。哎,这个S呢,就是这个传入的。铭文。Return返回的就是加密的结果啊。当然这里边儿呢,我们。对,咱们测试一下啊,咱们到这个。呃,因为这个吧,就就是说这个测试呢,跟spring的LC容器没有关系,咱们就不不在这里边测了啊,在这里边测等LC容器初始化费好多时间,又没有意义,咱们新建一个,咱们来一个string test。
19:19
咱们来一个S。123123。要求。第二。MD5。啊,这是这个encoed,就是已经这个。加密好了,打印一下。啊,是这个值。这个值,然后呢,其实我们呃,123123这个哈。我们这儿创建一个123123。
20:00
哎,不对啊,文件名没用哈,是文件的内容哈。然后呢,我们拿这个工具呢,给它加密一下。CTRLC,你把这个复制过来呢,你看哈,这个是一样的。粘不了。哎,一样的,只不过大小写啊,我们这小写的,我们可以给它改成大写的。啊,这是我们大写的,看着比较硬朗。这个很简单,To upper case啊,就会变成大写了。啊,所以说它这个这个这个你用这个去加密,这个结果和我们这边出来的结果是一样的啊是一样。嗯,他就是其实这个他相当于跟我们这个做法也是这个类似的。这个工具方法我们就写好了。
21:01
呃。
我来说两句