高焕堂老师软件架构的讲座总结
来源:互联网 发布:路老膏方 的揭秘网络 编辑:程序博客网 时间:2024/05/21 08:21
高焕堂老师软件架构的讲座总结
标签:高焕堂 软件架构
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://linugb118.blog.51cto.com/272628/271480
上次有幸参加了高焕堂老师的软件架构的讲座:
总结了下面几点:
1.做框架的思想很简单,就是所谓的雕刻之道,软件就如一块大理石,把多余的部分去掉,那就可以了
再比如如何做汽车的框架,为了满足汽车能在沙滩上,地面上,山坡上跑,我们只要把轮胎去掉,那么
剩下的就是框架,做软件完整的API不要写,留给空位就行了。
2.麦肯锡的思路(反向思维):当需要想完成某个目标的时候,往往一般人会想我现在应该先去做什么,然后
再做什么,这样的思路往往出来的step by step 只有一种,如果反向思维,从现在目标开始反向推理出前一
阶段的几种可能性,然后从分别对这几种可能性再向前推,以此类推可以形成一个树状,然后根据先有情况
去除不能满足的链路,这样同样的问题 你的思路和方法以及可选择的路线就多很多,往往不是一条。这就是
反向思维
3.如果把软件生产比作工厂,请问软件工厂的原料是什么? 是需求? 如果回答是需求,那就错了。
需求和架构没有关系。需求是桌面,架构是桌脚,桌脚的要几个,什么形状和桌面没有关系,只要桌脚能支持
桌面就行了。
4.架构就像万里长城,他是保护自己人的,是自己人能安居乐业,外面的多变都被万里长城挡在外面,
框架下面的可以多变,没钱就改版,改版就有钱。
5.写框架的是强龙,写AP的是地头蛇。买主出现才有地头蛇。也就是需求出现的时候才有地头蛇。
6.软件哲学,如何让先写的call后写的?引入接口和基类就能完成这个问题
7.子接口因为都是基础基类,那么他们之间怎么new,如果他们要new 也就向框架要,这样才能不违背框架的用意。
8.框架先不要考虑太多效率的问题,效率的问题在后面慢慢修改,这样可以减少考虑的因素,更容易理清。
9.强龙要有主控权,那么框架所做的事情就是能让强龙能包容改变
10.如果不想子系统继承那么就用final 关键字
11.如果两个类 不要相互继承,但是要他们相互call,那么就在他们里面分别定义一个方法,相互call
12.基类告诉子类,让子类call她,那么子类才能call基类,没有call子类,那么子类不能先去call她。
13一般进程process 是不共享的,他们在不同的位置区间,如果要跨进程的call,那么用IPC。而Process
一般分Main thread;Message Quene;Main Looper。其中Main thread是主线程,他通过Looper 一直查看他的
MQ,MQ记录要求做的事情,如果MQ里面有什么事情,那么Main thread 就拿到他把他做掉。
14.Main thread 主要是处理UI相关的用户事件,而且一般有时间设置比如每个function不能超过5s。
15Andriod中是通过IBinder 来实现跨进程的通信。
16.主线程一定有一个MQ 一个Looper。而小线程没有,所有小线程从一开始到执行完就结束了,但是小线程
不能touch UI,只有Main thread 可以touch UI相关的用户事件。
17 架构师是在暗室里面抓黑猫,在没有路的情况下找出一条可行之路,所有没有步骤可言。
18 做框架 尽量把人家会抓住你的地方分开,如果实在分不开,可以当壁虎,把壁虎的尾巴给人家抓。
19 框架的东西尽量要用c++写,因为c++比起java 安全,快,无反编译。
20 做一个系统一定要只要你的控制中心和整合中心,而且他们只有一个并且只有一个连接。控制中心好比大脑
而整合中心好比骨骼。在控制中心可以增加状态机来增加控制力和安全性。
总结了下面几点:
1.做框架的思想很简单,就是所谓的雕刻之道,软件就如一块大理石,把多余的部分去掉,那就可以了
再比如如何做汽车的框架,为了满足汽车能在沙滩上,地面上,山坡上跑,我们只要把轮胎去掉,那么
剩下的就是框架,做软件完整的API不要写,留给空位就行了。
2.麦肯锡的思路(反向思维):当需要想完成某个目标的时候,往往一般人会想我现在应该先去做什么,然后
再做什么,这样的思路往往出来的step by step 只有一种,如果反向思维,从现在目标开始反向推理出前一
阶段的几种可能性,然后从分别对这几种可能性再向前推,以此类推可以形成一个树状,然后根据先有情况
去除不能满足的链路,这样同样的问题 你的思路和方法以及可选择的路线就多很多,往往不是一条。这就是
反向思维
3.如果把软件生产比作工厂,请问软件工厂的原料是什么? 是需求? 如果回答是需求,那就错了。
需求和架构没有关系。需求是桌面,架构是桌脚,桌脚的要几个,什么形状和桌面没有关系,只要桌脚能支持
桌面就行了。
4.架构就像万里长城,他是保护自己人的,是自己人能安居乐业,外面的多变都被万里长城挡在外面,
框架下面的可以多变,没钱就改版,改版就有钱。
5.写框架的是强龙,写AP的是地头蛇。买主出现才有地头蛇。也就是需求出现的时候才有地头蛇。
6.软件哲学,如何让先写的call后写的?引入接口和基类就能完成这个问题
7.子接口因为都是基础基类,那么他们之间怎么new,如果他们要new 也就向框架要,这样才能不违背框架的用意。
8.框架先不要考虑太多效率的问题,效率的问题在后面慢慢修改,这样可以减少考虑的因素,更容易理清。
9.强龙要有主控权,那么框架所做的事情就是能让强龙能包容改变
10.如果不想子系统继承那么就用final 关键字
11.如果两个类 不要相互继承,但是要他们相互call,那么就在他们里面分别定义一个方法,相互call
12.基类告诉子类,让子类call她,那么子类才能call基类,没有call子类,那么子类不能先去call她。
13一般进程process 是不共享的,他们在不同的位置区间,如果要跨进程的call,那么用IPC。而Process
一般分Main thread;Message Quene;Main Looper。其中Main thread是主线程,他通过Looper 一直查看他的
MQ,MQ记录要求做的事情,如果MQ里面有什么事情,那么Main thread 就拿到他把他做掉。
14.Main thread 主要是处理UI相关的用户事件,而且一般有时间设置比如每个function不能超过5s。
15Andriod中是通过IBinder 来实现跨进程的通信。
16.主线程一定有一个MQ 一个Looper。而小线程没有,所有小线程从一开始到执行完就结束了,但是小线程
不能touch UI,只有Main thread 可以touch UI相关的用户事件。
17 架构师是在暗室里面抓黑猫,在没有路的情况下找出一条可行之路,所有没有步骤可言。
18 做框架 尽量把人家会抓住你的地方分开,如果实在分不开,可以当壁虎,把壁虎的尾巴给人家抓。
19 框架的东西尽量要用c++写,因为c++比起java 安全,快,无反编译。
20 做一个系统一定要只要你的控制中心和整合中心,而且他们只有一个并且只有一个连接。控制中心好比大脑
而整合中心好比骨骼。在控制中心可以增加状态机来增加控制力和安全性。
本文出自 “linugb118” 博客,请务必保留此出处http://linugb118.blog.51cto.com/272628/271480
- 高焕堂老师软件架构的讲座总结
- 马毅老师讲座收获总结
- 高焕堂架构师讲座
- 李超老师的讲座感想
- 软件架构的控制流总结
- 软件架构的数据流总结(一)
- 软件架构的数据流总结(二)
- 软件架构的数据流总结(三)
- 从晏才宏老师的凄凉到李开复讲座之“火爆”
- 从晏才宏老师的凄凉到李开复讲座之“火爆”
- 胡伟武老师在讲座上提到的几句警言
- 听了wangyang老师的java讲座后
- 从晏才宏老师的凄凉到李开复讲座之“火爆”
- 从晏才宏老师的凄凉到李开复讲座之“火爆”
- 从晏才宏老师的凄凉到李开复讲座之“火爆”
- 从晏才宏老师的凄凉到李开复讲座之“火爆”
- 从晏才宏老师的凄凉到李开复讲座之“火爆”
- 从晏才宏老师的凄凉到李开复讲座之“火爆”
- 开车二十年后得到的真实的26条教训!开车的人一定看看!
- Flex导航中内嵌IFrame关闭问题
- 技嘉主板的优越性
- 揭密:网管职业教育存在的问题(1)
- 很奇怪,今天发现笔记本无线和有线能一起上网
- 高焕堂老师软件架构的讲座总结
- 【转】windows驱动开发环境的搭建
- gcc:undefined reference to 'std::cout'
- 20110303,完成单机版基本开发
- ARM、DSP及FPGA
- 你欠自己一个老学究的身份[转]
- 记事2
- Apple还是不懂中国市场,真的不懂。
- ibatis下载载地址