我靠,属实是没想到居然开始断电了…本来前几天一直没有断电,还以为这学期开始不会再断了。虽然是情理之中,但还是在意料之外。只能说,以后一定要在12点之前处理完所有事情了。
原本今天还打算花点时间把图片详情页的部分多写一些的,看来只能等睡醒之后去处理。悲(x
今天主要还是把之前在进阶之光里面的多线程的内容再读了一遍,好好的整理了一部分笔记。但是多线程完全弄懂真的还是挺花功夫,今天看了一大半时间还只是读了一半的内容。晚上安慰了焦虑的凯子之后,原本的一些时间也无了。其实本来下午两点多的时候也是可以再学习一会儿的,可惜用去摸鱼了…虽然说还是要劳逸结合吧,但还是有点不甘心。
因为很多事情不可能是在主线程上一口气就全部就做完的,所以一些耗时间的操作都需要我们自己手动去开启线程去操作。
- 继承
Thread
类 - 实现
Runnable
接口 - 实现
Callable
接口
开启线程后,对部分需要在不同线程中进行共享的数据和对象,要做同步和加锁,以保证数据的安全。
volatile
-> 将变量的数据进行及时更新,保证数据一致性和可见性- 同步方法 -> 对方法中的资源进行保护,避免竞争;自动释放
- 同步代码块 -> 对代码块中的资源进行保护,避免竞争;手动配置需要上锁的对象,自动释放
- 重入锁+条件对象 -> 当不满足条件时自动释放锁并阻塞线程;手动上锁和释放
再一个就是collection的HashMap
,顺带还复习了一下Hash的处理方法 (话说没想到这玩意儿居然是在util包里)
- Java 1.8开始使用数组+链表(红黑树),每次将map放进数组前需要对
k.hashCode
进行hash计算下标(二次hash,减少碰撞),之后保存为Node并放入数组中。当发生碰撞后,就使用链表将数据向后存放;当链表长度大于8后就改为使用红黑树。 - 有两个关键参数:capacity和load factor。默认长度为16,比例是0.75。当使用了12个下标后,就将长度拓展为2n(也就是16),
- get()每次从数组第一个进行查询,如果命中就直接返回;没命中就判断数组后面是否有链表/红黑树,并进去查找;再没找到,就换数组的下一个进行查询
对于Android开发本身相关的内容,今天其实并没有怎么看。和教练在晚上沟通的时候意识到实习方面还是重点在Android开发上,像是算法和Java、计算机网络八股等等并没有那么的重要。虽然算法方面我不意外,但还是担心像其他的基础内容会不会有影响。不过细想一下也是有一定道理的,确实也应该稍微把复习的内容做点微调。明天 (实际上写的时候已经是“明天”了233333) 开始复习一下
fragment和ContentProvider的内容 (其实本来是今天想要看的…) 吧,顺带看一看之前复习过的Handler和Service的使用(按照郭神书上的内容来看,这也算是Android多线程相关的内容。不过我还是觉得coroutine
更重要一点,也更加接近kotlin中的多“线程”)。
还是那句话吧,不能太贪心,但是也不能没有要求。上午九点半还约了宝莱他们寝室一起去看来学院春招的企业,也不知道自己到底是个什么情况。嘛,随缘吧。
但行好事,莫问前程