技术管理篇5一技术演变史(I)

我们通过观察技术演变的历史,了解哪些技术架构延续到今天,中间又有哪些变革,当时是为了解决什么问题,每种技术方案又有哪些不足,学习这些取舍的过程,对我们技术的提升非常有好处。技术的演进过程,其实就是一个不断封装复杂,简单化的过程。

今天先来说说单机应用程序。在互联网普及之前,大部分的程序都是以安装包的方式,运行在个人的电脑上,文件存储也在放在PC本地。所以当时的程序的难点是怎么把界面做的足够好用和美观,我们可以注意到早期的技术框架都是封装界面渲染的,比如MFC、Delphy和VB的控件化。因为把界面做好这个事的确挺麻烦。

在了解这些框架之前,我们先看一下界面渲染的逻辑,其实这个逻辑一直到今天都没有变过,从PC到手机。我们可以把显示屏的渲染,比作电影的播放,都是一帧一帧展示的,只是因为展示的频率过快,所以人的肉眼感知不到而已。我们把一帧拿出来看,就是一副图画,在显示器播放之前,实际上操作系统会提前缓存这个图画,这样显示器可以按照固定的频率播放这个缓存,而我们的应用程序实际上是在这个缓存的画布上作画。

我们来看这个缓存的画布存储是什么样的,实际上就是像素的矩阵,我们对这个画布的渲染实际上是大量的矩阵操作。实际上我们的CPU是不擅长这个工作的,这就导致了GPU的出现。CPU更像是大学教授、专家,少而精,他擅长各种复杂逻辑处理和计数;GPU更像是富士康工厂,单个人都是普通工人,复杂逻辑计算搞不定,但是重复性的劳动,效率极高,所以你看现在人工智能时代,GPU这个特点就又被充分利用起来。

操作系统上,我们可不止会安装一个软件,每个软件都有他的界面渲染需求,操作系统是如何平衡每个程序的呢?如何让各个程序有序地在这个画布上作画的呢?实际上各家操作系统在这块的架构基本上相同的。操作系统会让每个软件有一个界面主线程来作画,同时操作系统与这个主线程之间通过消息来传递信息,比如用户在界面上的各种操作,点击、拖动啊等等,都是通过消息来传递。只要软件没有退出,这个主线程就要一直执行下去。如果大家写过MFC程序,就会知道每个软件都会有一个消息Loop段代码,就是这个界面主线程,我把逻辑关系和代码段放到图1和图2,大家可以看一下。


图1-UI消息分发逻辑图
图2-消息处理代码段

大家可以看到,界面绘制方面,操作系统通过消息机制,很好地和各个软件之间解耦,同时又达到了高效的协作。我们可以在很多地方看到这样的设计模式,消息其实就是一种协议,从软硬件之间的结合,到操作系统内核态与用户态的协作,再到异构系统之间的MQ通讯,甚至到互联网底层的整个Http协议栈,每个地方都可以看到这种模式的身影。

现在,大家再做桌面应用,无论PC还是手机,其实很少再写这种消息Loop代码了。原因很简单,因为现在的控件化已经做的很好了,技术演进让我们站在了前人的肩膀上,可以更专注在业务本身。当然,我们也可以通过一些遗留的小地方,看到这些逻辑存在的痕迹。比如我们不能在业务处理的线程中直接访问界面控件,了解了这背后的机理,就很清楚了,因为控件只能在界面主线程中访问,绘制的过程是操作系统统一协调的,资源句柄是不允许各个软件自己争用的。再比如,我们不能在界面主线程中做业务复杂的操作,因为这会降低界面绘制的效率,出现卡顿的问题。

总结一下,我们今天聊了单机应用程序界面绘制的机理,下一篇,我们来看看控件化是怎么封装这个复杂度的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,421评论 25 707
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,351评论 0 17
  • 昨天下午带着儿子去书店给他买一些学习用品,还有一些学习资料。在结帐的时候儿子拿着一份玩具过来,说他要买。每次我们去...
    蒲公英LiLychen阅读 246评论 0 1
  • “啊,啊!”路石竭力挣扎,“请当我不存在吧,我不存在……” “现在说这个已经晚了。”路遥紧紧抓着他,“现在...
    无二小姐_89b0阅读 231评论 0 0
  • 01内特平时很忙,难得有时间度假,而他在度假时,他的朋友找到他让他帮忙找他丢失的食品购物清单,他同意了。 真正的朋...
    且试风夕阅读 175评论 0 3