复习
多元微积分
哈密顿算子,nabla算子、场论
梯度、散度、旋度与数量场,向量场之间的转换。
https://www.bilibili.com/video/BV19s41157Z4/?spm_id_from=333.880.my_history.page.click
https://www.bilibili.com/video/BV1a541127cX/?spm_id_from=333.880.my_history.page.click
transformer:从数学角度解释为什么用缩放点积会有更稳的梯度
https://zhuanlan.zhihu.com/p/371143022
雅可比矩阵
https://baike.baidu.com/item/%E9%9B%85%E5%8F%AF%E6%AF%94%E7%9F%A9%E9%98%B5/10753754?fr=ge_ala
计算机与科学
进程和线程的关系及区别,进程间如何通讯,线程间如何通讯
设计模式
依赖倒置(DIP)、控制反转(IOC)和依赖注入(DI)
https://blog.csdn.net/leila_W/article/details/90105192
简单工厂、工厂模式、抽象工厂、工厂方法
简单工厂:单一工厂决定初始化哪一个具体类,抽象产品接口,具体产品
抽象工厂:有抽象工厂、具体工厂、抽象产品接口、具体产品接口
Flutter
abstract class Widget的主要方法 80行代码
子类:StatelessWidget、StatefulWidget、ProxyWidget、RenderObjectWidget
1.createElement():工厂方法创建抽象Element
2.canUpdate(Widget oldWidget,Widget newWidget):判断Widget 能否用来更新Element,Widget是Element的配置
3.key()
abstract class Element 大概有1500行代码
子类:ComponentElement、RenderObjectElement
孙类:StatelessElement、StatefulElement、ProxyElement、LeafRenderObjectElement、SingleChildRenderObjectElement、MultiChildRenderObjectElement
1.widget作为Element的配置
2.reassemble:hot reload时重新构建时调用
3.markNeedsBuild: 将Widget标记dirty下一帧刷新
4.Widget get widget => _widget!;Element和Widget是一对一的关系
StreamBuilder与Setstate
abstract class RenderObject 大概2200行代码
https://www.jianshu.com/p/62508ad21be5
Notification和NotificaionListener的使用,原理【沿着Widget树向上冒泡】。
使用场景:自定义Notification和监听ListView的滚动
AbsorbPointer不会阻止点击事件向上冒泡,IgnorePointer会阻止点击事件向上冒泡
Listener可以监听原始点击事件
Flutter为什么能跨平台【OpenGL和C++】
Widget、Element、RenderObject的生命周期
1.Widget CreateElement
2.mount creatRenderObject
3.canUpdate 决定着Element的复用
4.Element调用deactiveChild
5.inactive->unmount
6.需要重新插入 通过GlobalKey