复杂问题求解

1.分解问题规模

2.利用抽象 用来解决重复,减小规模

3.分类求解,解决不同条件情况

  1. 4.最短执行路径,解决性能问题

技术的相关特点

1、组合(不同组件相互结合,产生的新组件(工具),迭代发展)

2、解释器(技术的现实问题的解决、模拟,不同环境、场景的分类求解)

3、TOC理论(任何系统至少存在着一个制约因素/瓶颈,否则它就可能有无限的产出。因此要提高一个系统 (任何企业或组织均可视为一个系统)的产出,必须要打破系统的瓶颈。)

计算机的通用工具

1、数据存储工具(计算机是用数(0和1来表示)和函数解决问题,对比画家用色彩绘画、音乐家用声音表达)

2、操作工具(开发语言,必须能操控数据、实现信息通信、读取和设置系统信息。需要解决功能实现和性能问题)

3、通信工具(通信协议)(TCP/IP协议)

4、运行环境(操作系统、计算机相关硬件(PC、手机……))

开发效率思考

问题一、开发效率低下

原因:

1、个人技能不熟练

2、方案、需求不明确

3、生产工具效率落后

4、项目流程堵塞

 

 

问题二:如何判断技术可行性

1、实现原理是否可行

2、依赖资源是否缺失(方案、实施、运行环境、维护监控)

3、

 

常用的思路

1、基本的实现原理

2、异常处理机制(不同环境时执行的流程)

3、运行状态监控

4、结果统计分析

5、反馈

算法复杂度

程序执行相关资源:

CPU消耗   (指令数量)

内存空间     (数量规模,包括常量、变量)

数据通信     (数据请求次数、网络链接、磁盘访问、网络数据包等)

O 记号法

复杂度 标记符号 描述
常量(Constant)  O(1) 操作的数量为常数,与输入的数据的规模无关。

n = 1,000,000 -> 1-2 operations

对数(Logarithmic)  O(log2 n) 操作的数量与输入数据的规模 n 的比例是 log2 (n)。

n = 1,000,000 -> 30 operations

线性(Linear)  O(n) 操作的数量与输入数据的规模 n 成正比。

n = 10,000 -> 5000 operations

平方(Quadratic)  O(n2) 操作的数量与输入数据的规模 n 的比例为二次平方。

n = 500 -> 250,000 operations

立方(Cubic)  O(n3) 操作的数量与输入数据的规模 n 的比例为三次方。

n = 200 -> 8,000,000 operations

指数(Exponential)  O(2n)

O(kn)

O(n!)

指数级的操作,快速的增长。

n = 20 -> 1048576 operations