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到复杂 ...
随机推荐
- Mybatis多参传递的四种解决方案
Mybatis多参传递的四种解决方案 代码异常:org.apache.ibatis.binding.BindingException: Parameter 'param' not found. 长时间 ...
- nmap端口状态解析
nmap端口状态解析 状态 说明 open 应用程序在该端口接收 TCP 连接或者 UDP 报文 closed 关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应.但没有应用程序在 ...
- 在C#中如何读取枚举值的描述属性
在C#中,有时候我们需要读取枚举值的描述属性,也就是说这个枚举值代表了什么意思.比如本文中枚举值 Chinese ,我们希望知道它代表意思的说明(即“中文”). 有下面的枚举: 1 2 3 4 5 6 ...
- Android SDK 国内镜像
东软信息学院的 Android SDK 镜像,比配置代理下载快多了. 配置地址, http://mirrors.neusoft.edu.cn/configurations.we#android 启动 ...
- Node-restify 简介
restify 是Node.js的模块.虽然restify的API或多或少的参考了express,但restify不是一个MVC框架,它是一套为了能够正确构建REST风格API而诞生的框架. http ...
- Andriod Studio 开发环境安装和配置
Android Studio安装配置详细步骤(图文):http://www.2cto.com/kf/201604/500642.html第一次使用Android Studio时你应该知道的一切配置 : ...
- offsetWidth、clientWidth、width、scrollWidth区别及js与jQuery获取的方式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- paypal之nodejs 框架 Kraken-js 源码分析
本文是基于 kraken-js 0.6.1 版本的 关于如何使用kraken-js 可以去看看官网的使用文档 点击这里 .kraken-js 是基于express之上的,目的在于让工程师更多的去关注代 ...
- 如何在使用MAMP环境下安装MySQLdb
我的电脑上没有安装XAMPP,而是安装了MAMP PRO,其实两者都差不多,都是PHP+MySQL+Apache的集成环境,只是MAMP的GUI界面更华丽一些,但是也更复杂一些. 好了不说这些,说说问 ...
- <[你在荒废时间的时候别人都在拼命!]>
如果我在这里退缩了,那么再也不可能前进 当人有了目标的时候,就会有拼命努力的动力. 当一个人真的掌握了一些东西的时候,才会觉得踏实,这就是所谓的内涵. 人生其实就是这样一步步走过去的.付出总有回报,回 ...