Communication - 01.Foreword
冷落博客已有一年,理由种种,想来是腾出了些时间,但未见得其他方面有了什么可观的进步。打理博客犹如健身,每天不抬几次杠铃活动活动筋骨则憋的荒。消耗了大量的体力,一天下来却倍感清爽,人清爽了做什么都很来劲儿,久而久之反而能积累不少成果。写博客,百利而无一害也。
最近一年与往年相比相差甚远,不管是Positivity、Endurance还是各种Ablilities,好比黄金圣斗士堕落到了青铜级别,更可怕的是对技术越感麻木,难道这就是所谓的技术阶段性更年期?思前想后确实有一点变了:”过去把技术视作目标,现在更愿意把技术作为达成其他目标的手段。“这种思想观念的变化有利有弊,也可能预示着什么。写点儿东西,一部分我了解的技术,不一定说得详细,但求从整体上把握能拥有全局的观念。人就是如此,知道今天的小树苗在未来会成为参天大树,则会在十年间乐此不疲的付出,并收获过程中的快乐。倘若在沙漠中茫然向前,即使水源充足也会放弃在绿洲前的沙丘身后。
从手机入手,当下正时髦的各种智能机谈起。
作为一个曾经搞手机的ITer无比遗憾一件事,人生其实有很多乐趣,记得大学时看着各种新颖的数码产品充满了好奇也获得了很多快乐,若干年后作为一名开发者,快乐就这么没了!各种数码产品丝毫没了吸引力,放眼望去只是一堆的处理器和存储器而已。类似的事情还有旅游,无比后悔当初到处穷游,直接导致现在对祖国的大好河山没了兴趣。所以,个人总结了一个生活教训:”吃,不要吃太饱;玩,要给未来留点余地。”
“搞手机开发”,一句经常听到的回答,但也过于笼统。搞IPHONE,也得有个UI和Coder之分。搞Android,这个Coder可能包括:
Java,XML为主的上层APP开发。重点是对语言的熟练程度和调试技巧。如果要深入研究,尝试了解JaveFramework层的代码,更甚者,可以研究下Dalvik。
高级点儿的就得往下走,一方面是各种Lib的应用,比如Media。Android的video, audio development往往重难点不在于编程,而在于原理。复杂的东西往往封装到最后给开发者保留的仅仅是几个简单的api,谁能剥开这层分装参透其原理就会更具有竞争力。另一方面便是对于Linux的了解,熟悉Linux系统的各种系统调用、进程关系、文件的属性。这一层也可以看作是NDK开发,通常意义上讲它便是Android开发的核心,撇开Android的东西在Linux的基础上利用C/C++独立处理任务,快速、干净、利索,最后得到return value,让表现力更好的Android体现到用户面前。真正意义上的安卓或许就是一个跑在Linux上的一个多进程的软件,我如此理解,误导勿怪。
说起Linux这一层,这本是Android前世投胎前既有的存在,所以,它早已成为一块独立的领域:Linux System Programming。《Unix高级环境编程》便是你的学生证。这一层之下便是Kernel,内核的一部分为Linux开发者提供了大量的系统API,而Kernel Development便是山寨最热门的一块领域。任何一件数码产品都关心成本,降低成本往往意味着更换为价格更低廉的芯片。但这不等于产品质量的下降,原本廉价的芯片随着产量规模的增大会趋于性能稳定,而原装芯片的昂贵或许只是源于市场规则。芯片的更换便意味着芯片驱动的更换,也就是Kernel Development中山寨的灵魂:Driver Development。
驱动开发是个比较奇怪的领域,电子工程的同学不懂Kernel Architecture,软件工程的同学搞不定杂乱的PIN脚高低电平变来变去。然后,这东西就火了。不会背语录的不是好同志,不使用Oscilloscope不看Datesheet都是伪驱动开发。软件开发需要一个人思维活跃、大胆创新,驱动开发需要一个人性格沉稳、谨慎小心,而驱动开发正是“数码产品麻木症”的罪魁祸首。总结:玩驱动者,看破红尘,心如止水。
不能打电话的phone是mini pad,能打电话的pad是增大版phone。作为一部智能手机,“智能”是因为安卓,通话则是因为有Modem。好比人,有大脑更要有心脏,大脑不够用最多是植物人,心脏不好使那就玩儿完了。Modem固然重要,也必然有自己的处理器,而且不止一颗。作为一部真正的手机,它要接收射频信号,而后变频、放大、滤波、转换,而后成为可读的0101,再经过协议解析终获得暗藏于载波中的声音信号,最后通过音频接口传给安卓一边的处理器,经过Kernel Developer开发的audio驱动解读后传给Earphone。接收无线电需要专门的处理器,或者叫DSP,也就是当下比较火的的RF部分。信号处理、解析协议也都需要处理器,也就是Baseband部分。再匹配一套实时操作系统,瞧,Modem完全是一个独立的体系。
非智能机也叫Feature Phone,当然没有安卓,但一定得有Modem。在没有安卓、塞班的年代Feather Phone独霸天下,一个Modem包揽了全部的任务,数年后一颗专门跑智能系统的CPU分担了Modem一部分任务,Modem在人们的视野中便退居了二线。“没有我,你不能成为一部智能手机,而我只是默默地负责供血这种单调重复的任务。我是Modem,我为自己代言。”
就先这吧,算是练手。又是一年端午节,却没有南下。
Communication - 01.Foreword的更多相关文章
- [Code::Blocks] Install wxWidgets & openCV
The open source, cross platform, free C++ IDE. Code::Blocks is a free C++ IDE built to meet the most ...
- Call U
Communication - 02.Call U App层 从大拇哥Click CallButton开始手机便已明白,主人这是要打电话.当然,你可以选择直接拨号,也可以通过ContactList,或 ...
- 本人SW知识体系导航 - Programming menu
将感悟心得记于此,重启程序员模式. js, py, c++, java, php 融汇之全栈系列 [Full-stack] 快速上手开发 - React [Full-stack] 状态管理技巧 - R ...
- uml和模式01
// */ // ]]> uml和模式01 1. UML 2. 用例图 3. 用例和类的关系 4. 类图 1 UML 模型语言(Modeling Language 检查ML)是一种设计语言,人们 ...
- 【WCF--初入江湖】01 WCF编程概述
01 WCF编程概述 SOA的优点 1.服务独立于平台和工作环境.服务并不关心自己所处的环境,也不关心与之进行通信的服务所处的 环境. 2.服务相互隔离. 3.服务对协议.格式和传输中立. 4. ...
- [转]A Faster UIWebView Communication Mechanism
ref:http://blog.persistent.info/2013/10/a-faster-uiwebview-communication.html Use location.hash or t ...
- 01: docker 基本使用
1.1 docker基础 1.docker与虚拟机比较 2.docker版本 1. 社区版(Community Edition, CE) 2. 企业版(Enterprise Edition, EE) ...
- 一步步Cobol 400 上手自学入门教程01 - 基础概念
先学习基础概念 1.COBOL字符:包含: User-defined words 用户定义字符 System-names Reserved words 关键字 2.用户定义字符User-defin ...
- Windows Communication Foundation (WCF)和Windows CardSpace的示例程序
微软公司昨天发布了一个Windows Communication Foundation (WCF)和Windows CardSpace的示例程序包,内容极为丰富,从最简单的Hello World到复杂 ...
随机推荐
- 关于iReport报表的分页
问题:二手车认证系统的检测报告采用iReport开发,开发者自定义了一张超级长的纸张,导致打印时自动缩放到了一张A4纸上.需要修改使之能够合理的分页打印,这是来到新公司的第一个任务. 解决方案一: 1 ...
- LPC43xx SGPIO DMA and Interrupts
The SGPIO output pins SGPIO14 and SGPIO15 can trigger a GPDMA request SGPIO pins SGPIO14 and SGPIO15 ...
- 携程Android App插件化和动态加载实践
携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验.本文将详细介绍Android平台插件式开发和动态加载技术的原理和实 ...
- quartzScheduler_Worker-1] but has failed to stop it. This is very likely to create a memory leak解决
01-Jul-2016 07:24:20.218 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 80 ...
- Bencode的编码与解码
开源地址: https://github.com/CreateChen/Bencode Nuget: Install-Package Bencode 1. Bencode规则 BEncoding是Bi ...
- 利用Mahout实现在Hadoop上运行K-Means算法
利用Mahout实现在Hadoop上运行K-Means算法 一.介绍Mahout Mahout是Apache下的开源机器学习软件包,目前实现的机器学习算法主要包含有协同过滤/推荐引擎,聚类和分类三个部 ...
- 谢谢博客-园,让我不再有开源AYUI的想法
第一次 第二次 教程不会在博客园上写了,具体的看我官网博客吧,谢谢大家了 ================= 我是个有素质的程序员 艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹艹 ...
- Scala 深入浅出实战经典 第45讲: scala中context bounds代码实例
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- 直接使用提交过来的类来更新字段EntityState.Modified并过滤null值的方法
public T Update<T>(T entity) where T : ModelBase { var set = this.Set<T>(); set.Attach(e ...
- mac OSX 上 brew install hive
本文介绍brew install hive并修改默认的metastore存储方案,改Derby数据库为mysql的方法以及可能遇到的问题的解决方案. 1. 通过homebrew安装hive 1 bre ...