学习记录

2021.8.19

1:协程的代码效率不一定比多线程高,因为协程内部就是多线程(?)

  协程可以使异步的代码写成同步,便捷易懂。

 

传统方式弊端,异步线程请求服务器,取得数据利用handler发送数据给主线程

 

对于有suspend的函数,自动开启异步线程

main主线程{


suspend函数(自动切出去又切回来)

更新ui
}

 

 

2021.8.20

suspend函数内部得 手动开启协程

suspend的意义是什么

 

viewmodelScope {}默认主线程

 

suspend函数内部 withContext(Dispatcher....){}

主线程到IO线程——为协程的挂起 suspend

IO线程到主线程——为协程的恢复 resume

 

suspend起提醒作用,真正起挂起作用的是withContext里面的代码块

 

launch(Dispatchers.Main){
  withContext(dispatchers.IO){}  
    withContext(dispatchers.IO){}
}

变成

launch(Dispatchers.Main){
func1()
func2()
  
}

suspend fun func1(){
  withContext(dispatchers.IO){}  
}

suspend fun func2(){
  withContext(dispatchers.IO){}  
}

 

 

协程就是线程的上层框架

 

Room的一个实体类在内部对应的就是一个数据库表,然后一个实体的实例就是表的一行

 

默认情况下,Room 使用类名作为数据库表名。如果您希望表具有不同的名称,请设置注释的 tableName属性 @Entity同样,Room 默认使用字段名作为数据库中的列名。如果您希望列具有不同的名称,请将@ColumnInfo注释添加 到该字段并设置该name 属性。以下示例演示了表和列的自定义名称:

 

官方文档,entity   DAO   Database

 

 

2021.8.21

compose和其他组件的结合使用?

 

设置Room entity字段id自动递增

 

 

  1.  定义数据库名字为常量

 

仓库模式 单例

 设置主题颜色

 

仓库上面的viewmodel

 

2021.8.22

viewmodelscope{

}

 

报错 找不到依赖(解决)

 

添加更多的composable函数

 

 

2021.8.23

添加更多compose组件

 报错 nullpointer fuck!

 

java.lang.NullPointerException应该是Compose之间传递参数之间的问题

 

找到解决问题,似乎是observeAsState的初始化的值的问题

 

https://www.cnblogs.com/--here--gold--you--want/p/15178229.html

 

 

2021.8.24

设置滚动时,悬浮按钮不可见。

 

找到lazyliststate的isScrollInProgress来判断是否正在滚动    设置出现动画和消失动画效果

 

设置card

navigation学习以及sealed class

 

 

2021.8.25

了解密封类和枚举类

把github compoise实例项目拉到本地

navigation

 

2021.8.26

添加message的逻辑

 

2021.8.28

研究composecookbook里面的button例子,自定义看不懂55555

左成云算法:位运算比算数运算快

 

今日要点:交换两个数0额外空间抖机灵写法

a = a^b
b = a^b
b = a^b
前提两个数不一样

 

                  把一个数从右往左第一个1保留,其他的位上的数字变为0

a = a & (~a + 1)

 

 

2021.8.29

  1. 数据状况
  2. 问题标准

根据这两点来优化算法策略。

 

对数期test,不依赖线上测试平台,写两套算法,一个稳,一个要测,再写一个测试数据生成器,再把两个结果比对

mid = L + (R - L) >> 2
右移比除2要快

 

递归行为时间复杂度估计 master公式

 

  1.  N/b 为每一次递归中子问题的规模
  2. a为每一次递归中递归的次数
  3. O(N^d)为其他操作的算法时间复杂度

 

归并排序, 求解时间复杂度:

  1. master公式
  2. 理解法,每一层merge归并O(N), 然后有logN层,所以时间复杂度NlogN

归并排序, 每一层比较之后都会得到一个更大的有序数列,因此, 信息得以传递。

归并的时候,左组和右组的数相等,放左组,就是稳定,放右组就不稳定。

例题:求小和 (求小和时,两个数相等,要放右组的数

 

 

荷兰国旗问题

展开到快速排序, 最差情况O(N^2)

进化版,参考中定在中间,参考有好和差,因此总的时间复杂度取期望O(NlogN)

两种快排的patition的方法,一个左成云版,一个书本版

 

 

 2021.8.29

kotlin的各种特性的学习

 

2021.8.31

堆排序,heapInsert建堆和heapify恢复堆。时间复杂度NlogN,空间复杂度1

 

 

 

 

 

materialtheme 与 composition local

 

truth库,dsl的学习

 

2021.9.2

kotlin协程  很coder入手  dp

 

2021.9.3

扔物线课程 网络部分

 

动态规划学习

 

2021.9.6

这段时间就学习android jetpack compose吧

posted @ 2021-08-20 22:45  ou尼酱~~~  阅读(129)  评论(0)    收藏  举报