摘要: 貌似现在流行知乎live和微信公众号, 博客已经有些过时了,但关键是你对技术的思考和总结, 采用什么方式其实不重要。
(1) 界面和逻辑的分离, view和controller可以由不同的人分别实现, 独立变动
(2) 基于接口分层设计, 单向依赖且低耦合
(3) UI层数据类型的分类,共有共享的还是私有的
(4) 消息中心,同时支持同步/异步的消息广播机制, Manager/Controller/Data Model可以各自订阅自己感兴趣的消息
阅读全文
posted @
2018-05-19 19:50 Richard Wei 阅读(3660) |
评论 (1) |
编辑 收藏
摘要: 现在世面上的操作系统个可以说是百花齐放,但是它们的基本功能都是类似的, 包括:
进程管理, 内存管理,文件系统,网络通讯,安全机制,用户界面,驱动程序等。
同时我们会发现它们的基本架构也都是类似的,包括应用层, API层, 内核层。
阅读全文
posted @
2016-11-27 22:25 Richard Wei 阅读(1727) |
评论 (0) |
编辑 收藏
摘要: 总之,无论学什么,先深入一个平台, 从C++编译器到CRT运行库, 再到操作系统, 从用户态API到内核和驱动,越深越好,然后再跳出这个平台,接触其平台,会发现各个平台基本都是大同小异。
阅读全文
posted @
2015-09-18 00:49 Richard Wei 阅读(3992) |
评论 (10) |
编辑 收藏
摘要: 尽管我N次吐槽基于GDI的DirectUI界面库会随着XP的淡出而逐渐失去市场, 但是实际工作中还是要经常和GDI打交道,外面招聘单位还是有不少Windows客户端的开发岗位。 在这"移动互联和"Web前端"横行的"大数据"时代,很多同事开始向移动App和大数据转型, 尽管这几年PC客户端的开发人员是只出不进, 但是只要Windows存在一天,我们的工作就还是有价值的..
阅读全文
posted @
2014-11-15 00:01 Richard Wei 阅读(8271) |
评论 (7) |
编辑 收藏
摘要: 技术深了可以再深,从C++编译器到CRT运行库, 再到操作系统, 从用户态到内核和驱动, 最后到硬件, 原理背后还有原理, 真正能掌握所有细节的又有几人呢?
阅读全文
posted @
2014-10-12 22:03 Richard Wei 阅读(5431) |
评论 (3) |
编辑 收藏
摘要: 异常和中断是程序运行时比较重要的2个概念, 异常通常是由程序内部引起的(比较常见的如堆栈溢出, 空指针访问等),中断通常是由外部系统引起的, 外部产生的中断在应用程序中很多时候会以事件或回调的方式通知出来(比如常见的IO事件)。
阅读全文
posted @
2014-09-19 21:00 Richard Wei 阅读(4084) |
评论 (3) |
编辑 收藏
摘要: 一个基本的图形引擎要包括几个方面的支持:位图绘制,文字绘制,矢量绘制(如矩形,线条)。
可惜GDI这个20多年前发明的老古董,对这几项的绘制, 除了位图绘制可以通过AlphaBlend支持alpha通道,其他绘制都不支持alpha通道。
阅读全文
posted @
2014-08-26 00:22 Richard Wei 阅读(5216) |
评论 (3) |
编辑 收藏
摘要: 对于客户端架构设计,个人觉得最大的原则就分层设计, 每层都封装一个概念并保持独立, 同时根据依赖倒置的原则, 站在上层客户的角度提供接口。软件工程里面的一条黄金定律:“任何问题都可以通过增加一个间接层来解决。
阅读全文
posted @
2014-07-26 23:49 Richard Wei 阅读(7326) |
评论 (2) |
编辑 收藏
摘要: 一直觉得客户端开发的顶级就是浏览器开发, Webkit作为应用最广泛的开源浏览器内核,无疑具有很高的研究价值
阅读全文
posted @
2014-07-26 20:01 Richard Wei 阅读(1591) |
评论 (0) |
编辑 收藏
摘要: 计算机的好处是它永远不会欺骗你, 它只会按部就班的执行, 所以很多看似奇怪(甚至看似不可思议的问题), 只要你理解了程序背后的机制原理,都是可以找出根本原因的。
阅读全文
posted @
2014-05-30 23:18 Richard Wei 阅读(2662) |
评论 (2) |
编辑 收藏
摘要: 工作越久, 越觉得数据结构和算法才是程序的关键, 语言只是实现工具, 平台只是运行环境,数据结构和算法才是解决问题的思路, 很多时候我们过度关注外围的东西, 却反而忽视了程序的内在本质。
阅读全文
posted @
2014-05-15 20:10 Richard Wei 阅读(1623) |
评论 (1) |
编辑 收藏
摘要: 简单总结下,我们从C++的内置数组讲到标准库提供的vector, 最后谈到C++11新增的array, 数组这个最基本的数据结构在C++中终于有了完整的支持。
阅读全文
posted @
2014-05-12 22:05 Richard Wei 阅读(2599) |
评论 (1) |
编辑 收藏
摘要: 本文讲的的Windows 环境下exe可执行文件的运行原理,这里面涉及的知识很多,需要读者对Windows操作系统(如注册表、进程、线程、内存管理、PE文件格式等)、Windows编程(本文使用c++语言)等有所了解。
阅读全文
posted @
2014-04-05 11:48 Richard Wei 阅读(2429) |
评论 (0) |
编辑 收藏
摘要: 简单总结下,操作系统通过一层层的封装,隐藏了太多的东西, 很多看似简单的行为, 实际上背后都有很复杂层层调用。理解这些原理,可以让你的知识达到一定的深度,帮助你更好的解决问题。
阅读全文
posted @
2014-04-05 00:57 Richard Wei 阅读(5273) |
评论 (2) |
编辑 收藏
摘要: 计算机技术发展日新月异, 作为程序员的我们很多时候都很迷茫, 因为发现自己无论怎么努力, 也追赶不上新技术的步伐。这个时候我们有必要对整个技术发展的趋势做一个比较全局的判断, 这样才能做到心中有谱, 才能把握自己学习的方向。 TIOBE的编程语言排行榜为我们指明了方向, 通过对该排行榜不同时间段的排名比较, 可以帮我们理清技术发展的趋势。
阅读全文
posted @
2014-03-16 22:48 Richard Wei 阅读(5380) |
评论 (0) |
编辑 收藏
摘要: 如果说以前XP时代我们还有理由不关注高DPI, 那么在移动设备时代和大显示器的高分辨率时代, 我们就没有理由不关注高DPI了, 比如Surface Pro的分辨率是1920x1080, 这种情况下如果系统我们不设置高DPI, 基本上就没法触摸和操作了,所以现在普通程序对高DPI的支持已经成为趋势了。
阅读全文
posted @
2014-02-18 23:12 Richard Wei 阅读(41684) |
评论 (10) |
编辑 收藏
摘要: 在XP时代我们的程序没有响应后只能通过任务管理器强制杀掉,但是Vista之后情况变了, 我们仍然可以拖动失去响应的窗口,甚至可以尝试最小化和关闭窗口, 我们把这个特性叫住Window Ghosting。
阅读全文
posted @
2014-01-08 21:26 Richard Wei 阅读(3213) |
评论 (3) |
编辑 收藏
摘要: 我观察圈子里很多成功和不成功的技术人,提出一个观点,那就是个人的核心竞争力是是他独特的个性知识经验组合。这个行业里拥挤着上百万聪明人,彼此之间真正的不同在哪里?不在于你学的是什么技术,学得多深,IQ多少,而在于你身上有别人没有的独特的个性、背景、知识和经验的组合。如果这种组合,1,绝无仅有;2,在实践中有价值,3,具有可持续发展性,那你就具备核心竞争力。因此,当设计自己的发展路线时,应当最大限度地加强和发挥自己独特的组合,而不是寻求单项的超越。而构建自己独特组合的方式,主要是通过实践,其次是要有意识地构造。
阅读全文
posted @
2013-12-21 12:43 Richard Wei 阅读(1743) |
评论 (0) |
编辑 收藏
摘要: 最后简单总结下 , 我们可以看到Windows系统上基本没有一种通用的抓屏技术可以高效的抓取所有的系统(XP/Win7/Win8), 很大一部原因是操作系统的显示驱动模型在从XPDM向WDDM转变, 应用层的API也在从GDI向D3D转变 。 相对于Linux的稳定, Window的不断发展和进步, 对开发人员究竟是喜是悲?
阅读全文
posted @
2013-12-01 22:04 Richard Wei 阅读(38441) |
评论 (16) |
编辑 收藏
摘要: 我们可以看到数组new[]和delete[]的关键是, C++编译器在数组起始地址之前的4个字节保存了对象的数量N,后面会根据这个数量值进行N次的构造和析构 。
我们可以看到C++ 编译器在背后干了很多事情,可能会内联我们的函数, 也可以修改和产生其他一些函数, 而这是很多C开发者受不了的事情, 所以在内核级别, 很多人宁愿用C来减少编译器背后的干扰。
阅读全文
posted @
2013-11-17 21:17 Richard Wei 阅读(5621) |
评论 (0) |
编辑 收藏