创新课程
TRIZ
- 灵光乍现
- 试错
- TRIZ:
例如:组合原理- 空间、时间上将各种功能整合
- 将相同或相反的功能整合
- 技术矛盾
“又要马儿跑,又要马儿不吃草。”————了解改善参数、恶化参数,通过统计学方法查表分析。 - 技术进化趋势:
- 产品发展有固定规律吗?
由功能简单,到功能复杂,再由结构复杂,到结构尽量简单。 - 产品生命周期不同阶段研发侧重点:
功能实现->功能实现最大化->性能最大化->效率最大化->可靠性最大化->成本最小化 - 常见发展规律
- 由静态变为动态
- 由单体变为系统
- 空间分割趋势
- 物体分割趋势
- 可控度增加(手动向自动发展)
- 引入物质的趋势
- 表面分割的趋势
- 维度的上升
- 表面曲面化趋势
- 增加裁剪度
JVM
GC
栈帧(stack frame)和堆:
- 一个线程一个栈
- 堆是程序运行时动态分配的空间
栈里的空间随着程序弹栈自动释放,JVM负责堆的空间管理。
同一个对象,释放了两次,则会产生NullPointerException(野指针),这是所有语言需要面对的问题。go语言和Java类似,使用GC自动维护内存空间。在不同线程中,都存在并发问题,同时访问一个内存空间。
语言的发展历史:
- C/C++:手工管理内存(malloc free / new delete),容易产生内存泄漏,可以通过重启电脑解决,容易产生释放多次,产生非常难调试的bug,导致运行效率高,但是开发效率低。
- python java go: 自带GC机制,方便内存管理。只需要分配内存,垃圾回收器负责回收。但是Java没有解决空指针的问题。执行效率相对比较低。
- rust:严格的内存安全,兼顾运行效率。
Garbage如何确定?
- 引用指向法(reference count):python使用,在每个引用下计数,当计数为0时标记为垃圾。存在问题,当循环引用时,出现一堆垃圾。
- 根可达算法(root searching):从根开始遍历,如果没有遍历到,则为垃圾。根包括一些栈,静态池等。
GC算法
- Mark-Sweep 标记清除
容易导致内存碎片化 - Copying 拷贝
边找边复制,但是浪费内存 - Mark-Compact 标记压缩
在回收的过程中整理,但是效率低
三种算法的综合运用,诞生了各种各样的垃圾回收器。
GC的演化过程(随着内存大小的不断增大而演进)
分带算法:分为新生带和老年代
新生带使用拷贝算法,会回收90%的对象。
eden(8)—-survivor(1)—-survivor(1)—-tenured(30)内存几兆-几十兆时,使用Serial,单线程时间停止复制回收。
- 内存几十兆-上百兆1G时,parallel并行多线程
- 内存几十G时,线程过多,线程上下文切换需要巨大的资源,concurrent GC,此时业务线程和GC线程并发。
通常情况,Java 1.8版本使用ps+po。ParNew 工作在年轻带的多线程。
CMS concurrent mark sweep:
初始标记(stw标记root)->并发标记->重新标记(stw三色标记算法)->并发清理
自主研修学习心得
自主研修课一:创新创业类教育
- 学习内容:
Triz理论的发展历史、Triz理论的用途,产品的创新过程,人类社会发展中,科学技术进步的规律,如以下常见的产品技术发展规律:- 由静态变为动态
- 由单体变为系统
- 空间分割趋势
- 物体分割趋势
- 可控度增加(手动向自动发展)
- 引入物质的趋势
- 表面分割的趋势
- 维度的上升
- 表面曲面化趋势
- 增加裁剪度
- 学习收获:
以前在思考创新点的时候,缺少系统的训练和方法,导致经常缺乏灵感。通过学习Triz理论,我学习到了如何利用这些方法和规律,进行思考和创新。自主研修课二:系统地学习一门软件或硬件开发
- 学习内容:
android应用程序的开发,包括android studio软件的使用,android虚拟机和真机的编程调试,android系统的内存交互。Java语言语法,包括面向对象编程的各种技术,多线程技术,lambda表达式。学习了android底层DVM的工作机制和kotlin语言的编译运行原理,了解了Java语言中的JVM,JDK,JRE,深入学习了JVM中的内存管理机制GC中的CMS垃圾回收算法。 - 学习收获:
对于android应用程序的开发,更加熟悉了,同时借助android开发的实践,学习了解了Java语言的语法知识,并且深入学习了Java虚拟机的原理,对于以后的移动应用开发打下了基础。自主研修课三:人工智能类
- 学习内容:
吴恩达机器学习,基础机器学习算法,包括线性回归,最小梯度法,K-Means,支持向量机等算法。
数据结构的相关算法,如Splay算法,二分答案、贪心搜索、模拟、压状dp、平衡树算法、查并集、欧拉线性筛、图论、拓扑排序、数论基础(费马小定理、逆元运算、欧拉线性筛)、快速幂等。 - 学习收获:
通过学习和实践各种算法,打牢算法和数学基础,为将来学习和使用更高级的算法做铺垫。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.