-
川西之成都-四姑娘山-稻城亚丁-康定-海螺沟旅游-成都:
D1:成都-雅安-宝兴-夹金山-小金-日隆;午饭夹金山饭店,夜晚住日隆;
D2:看四姑娘山,双桥沟;下午日隆-小金-丹巴;午饭在双桥沟门口,住丹巴;
D3:丹巴-塔公-八美-新都桥;午饭在八美,住新都桥;
D4:新都桥-雅江-理塘-稻城;午饭在理塘,住稻城;
D5:稻城-亚丁-珍珠海:中午饭在景区,住亚丁村;
D6:亚丁-洛绒牛场-亚丁-稻城,午饭在亚丁,住稻城;
D7:稻城-理塘-雅江-新都桥-折多山-康定,午饭在雅江,住康定;
D8:康定-木格措-康定-泸定-摩西镇,午饭在泸定,住摩西镇;
D9:摩西镇-二郎山-雅安-成都,午饭在摩西镇,住成都;
D10:成都-宽窄巷-春熙路-双流机场;
喜欢在那儿待着的感觉,里面到底有什么呢?有什么魅力?为什么吸引人呢?也许它就在那儿吸引着你! -
2010-09-28
JDK 7 in JavaOne 2010 - [Java]
执行Plan B的JDK 7,愿景:“Making things programmers do everyday easier.”;其Coin项目公布的新特性:
- Improved numeric literals
- Strings in switch
- Reduced varargs warnings
- Diamond operator
- Multi-catch with more precise rethrow
- try-with-resources statement
细节请参考Joseph D.Darcy的博客:http://blogs.sun.com/darcy/entry/project_coin_javaone_2010
文档下载参考:http://blogs.sun.com/darcy/resource/JavaOne/J1_2010-ProjectCoin.pdf
-
2010-09-11
摘要:40 Android Business Models - [Android]
Alex Curelea在Blog中从Sell app to individuals/Freemium/other sorts of products/srevices不同角度归纳了Android的四十种Business Model,分别是:
Model #1: Build the App, Sell the App to Individuals
Model #2: Make the App, Sell the App to Enterprises
Model #3: Make the App, Sell the App to Schools or Universities
Model #4: Make the App, Sell the App to OEMs
Model #5: Make the App, Sell the App to Content Providers
Model #6: Make the App, Sell the App to Service Providers
Model #7: Give Away the App, Sell the Customizations
Model #8: Give Away the App, Sell the Analytics
Model #9: Give Away the App, Sell the Remix
Model #10: Give Away the App, Sell the Bundle
Model #11: Give Away the App, Sell the Plugins
Model #12: Give Away the App, Sell the Feature Unlock Codes
Model #13: Give Away the App, Sell In-App Ads
Model #14: Give Away the App, Sell the Account
Model #15: Give Away the App, Sell Support
Model #16: Give Away the App, Sell the API
Model #17: Give Away the App, Sell the Content
Model #18: Give Away the App, Sell Premium Placement
Model #19: Give Away the App, Sell the Firm
Model #20: Sell Development Tools
Model #21: Sell Portability Toolkits
Model #23: Create a Content Marketplace
Model #24: Create an Android Job Board
Model #25: Create an Android Site Ad Broker
Model #26: Create Hardware Add-Ons
Model #27: Create Device Accessories
Model #28: Write Books
Model #31: Internationalization and Localization
Model #32: Bug Hunter
Model #33: User Experience Designer
Model #34: JAR Porter
Model #35: API Wrapper
Model #36: App Promoter
Model #37: App Market Agent
Model #38: Device Marketer
Model #39: Trainer
Model #40: Break Outside the Box -
2010-08-25
Java服务器开发基础知识(1) - [Java]
因为实际需要所致,我们不得不考虑在现有的开源/商用的应用服务器之外开发一个,有性能要求、有并发要求的服务端应用,从技术要求的角度来分析一下,用Java实现这件事情我们可能关注的知识层面。
在整体上,可能需要我们从下面几个层面出发来考虑:

1.在硬件和操作系统层面:为什么需要关注这两个方面的知识,因为Java并没有自己的线程,使用的也是OS中的IO,所以我们不得不去了解系统在不同的硬件、OS上面的适用情况、运行情况。比方说,多核技术对于操作系统的影响,这种影响直接会传递到JVM层面;对于数据传输操作的DMA(Direct Memory Access, 存储器直接访问)方式的了解,便于我们更好的了解CPU和IO的关系。同样的,对于OS层面的select/poll/epoll的认识,不仅帮助我们去理解Java的IONIO(New IO)AIO(Asynchronous IO)的发展之路,同时让我们对IO/NIO/AIO在Java层面的体现有更清晰的思路。
Select
Select在1983年首次出现,是在4.2BSD中。通过select()的系统调用来监视包含多个文件描述符的数组;当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作。
Select方式现在为几乎所有的平台支持,具备良好的跨平台支持。同时,select()方式需要维护一个存储文件描述符的数据结构,随着其的增加,对其的内存操作的开销也会线性增加;每次网络响应,进程在调用select()的时候都会对所有的socket做一次线性扫描,包括那些处于非活跃状态的连接,这也是一个巨大的开销;在系统方面,每个进程能够监视的文件描述符的数量是有最大限制的,通过宏FD_SETSIZE来指定的,在Linux中这个值默认是1024,修改这个宏值并生效,有时候可能需要重新编译OS的内核:).
Poll
Poll是在1986先首次出现,是在System V Release 3中。其和select相比在本质上变化不大,只是poll没有了select方式的最大文件描述符数量的限制。
注:select()和poll()采用的模型都是:水平触发(Level Triggered)。
Epoll
Epoll是在Linux 2.6版本中开始有内核直接支持的实现方式。这种方式的三个特点:
a. 同时支持水平触发LT和边缘触发ET。
LT(Level Triggered)是缺省的工作方式,同时支持block和no-block socket。在这种模式中,内核将就绪的文件描述符告诉进程后,进程可以对这个就绪的fd进行IO操作。如果进程不作任何操作,那么内核会在下次调用中继续将这些文件描述符报告给进程,所以,这种模式在编程中出错误可能性要小一点。传统的select/poll都是这种模型的代表.
ET (edge-triggered)是高速工作方式,只支持no-block socket。在这种模式中,当文件描述符从未就绪状态变为就绪状态时,内核通过epoll报告给进程。然后内核会假设进程知道文件描述符已经就绪,并且不会再为这个(种)文件描述符发送更多的就绪通知,直到进程做了某些操作导致这个(种)文件描述符不再为就绪状态了(比如,进程在发送,接收或者接收请求,或者发送接收的数据少于一定量时导致 了一个EWOULDBLOCK 错误)。同时请注意,如果一直不对这个(种)fd作IO操作(从而导致它再次变成未就绪),内核不会发送更多的通知(only once)。不过在TCP协议中,ET模式的加速效用仍需要更多的benchmark确认。
b. epoll模式在操作中获得就绪的文件描述符时,返回的不是实际的文件描述符,而是一个代表就绪文件描述符的值,然后在文件描述符数组中查询对应的的文件描述符。这样避免系统调用时候在内存中数据结构复制的开销。
c. epoll采用事件通知方式。即每一个文件描述符都对应的注册了一个类似callback,当就绪激活时,通过callback和进程进行匹配操作。避免了select在每次调用的时候都遍历整个socket的扫描开销。
因此epoll具备优势:支持一个进程打开大数目的socket描述符(FD);IO效率不随FD数目增加而线性下降;用mmap加速内核与用户空间的消息传递;和内核微调一起协调工作。
注:似乎Apache主要采用的是select模式;而lighttpd和nginx主要采用epoll模式—带考证确认。
-
2010-06-30
关于处理器架构的一点儿知识 - [Android]
在关注Android的时候,有一些CPU架构方面的术语知识需要给自己补充的。主要有ARM、X86/Atom、MIPS、PowerPC,其中ARM在智能手机上面一枝独秀:)
其中ARM/MIPS/PowerPC均是基于精简指令集机器处理器的架构;
X86则是基于复杂指令集的架构,Atom是x86或者是x86指令集的精简版。
根据各种新闻,Android在支持各种处理器的现状:
ARM+Android 最早发展、完善的支持,主要在手机市场、上网本、智能等市场;
X86+Android 有比较完善的发展。有atom+Android的上网本,且支持Atom+Android 和 Atom+Window7双系统;
MIPS+Android 目前在移植、完善过程中;
Powpc+Android 目前在移植、完善过程中。
ARM系列
ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。
在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机)到电脑外设(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有他的存在。在此还有一些基于ARM设计的派生产品,重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。
优势:价格低;能耗低;
ARM 授权方式:ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。ARM 提供了多样的授权条款,包括售价与散播性等项目。对于授权方来说,ARM 提供了 ARM 内核的整合硬件叙述,包含完整的软件开发工具(编译器、debugger、SDK),以及针对内含 ARM CPU 硅芯片的销售权。对于无晶圆厂的授权方来说,其希望能将 ARM 内核整合到他们自行研发的芯片设计中,通常就仅针对取得一份生产就绪的智财核心技术(IP Core)认证。对这些客户来说,ARM 会释出所选的 ARM 核心的闸极电路图,连同抽象模拟模型和测试程式,以协助设计整合和验证。需求更多的客户,包括整合元件制造商(IDM)和晶圆厂家,就选择可合成的RTL(暂存器转移层级,如 Verilog)形式来取得处理器的智财权(IP)。借着可整合的 RTL,客户就有能力能进行架构上的最佳化与加强。这个方式能让设计者完成额外的设计目标(如高震荡频率、低能量耗损、指令集延伸等)而不会受限于无法更动的电路图。虽然 ARM 并不授予授权方再次出售 ARM 架构本身,但授权方可以任意地出售制品(如芯片元件、评估板、完整系统等)。商用晶圆厂是特殊例子,因为他们不仅授予能出售包含 ARM 内核的硅晶成品,对其它客户来讲,他们通常也保留重制 ARM 内核的权利。
生产厂商:TI (德州仪器)/Samsung(三星)/Freescale(飞思卡尔)/Marvell(马维尔)/Nvidia(英伟达)
下面是四核ARM芯片架构图,可以参看:
x86系列/Atom处理器
xx86或80x86是英代尔Intel首先开发制造的一种微处理器体系结构的泛称。
x86架构是重要地可变指令长度的CISC(复杂指令集电脑,Complex Instruction Set Computer)。
Intel Atom(中文:凌动,开发代号:Silverthorne)是Intel的一个超低电压处理器系列。处理器采用45纳米工艺制造,集成4700万个晶体管。L2缓存为512KB,支持SSE3指令集,和VT虚拟化技术(部份型号)。
现时,Atom处理器系列有6个型号,全部都是属于Z500系列。它们分别是Z500、Z510、Z520、Z530、Z540和Z550。最低端的Z500内核频率是800MHz,FSB则是400MHz。而最高速的Z550,内核频率则有2.0GHz,FSB则是533MHz。从Z520开始,所有的处理器都支持超线程技术,但只增加了不到10%的耗电。双内核版本为N系列,依然采用945GC芯片组。双内核版本仍会支持超线程技术,所以系统会显示出有4个逻辑处理器。这个版本的两个内核并非采用本地设计,只是简单的将两个单内核封装起来。
MIPS系列
MIPS是世界上很流行的一种RISC处理器。MIPS的意思是“无内部互锁流水级的微处理器”(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。
MIPS技术公司是美国著名的芯片设计公司,它采用精简指令系统计算结构(RISC)来设计芯片。和英特尔采用的复杂指令系统计算结构(CISC)相比,RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。MIPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MIPS指令集,并增加了许多更强大的功能。MIPS自己只进行CPU的设计,之后把设计方案授权给客户,使得客户能够制造出高性能的CPU。
1984年,MIPS计算机公司成立,开始设计RISC处理器;
1986年推出R2000处理器。
1992年,SGI收购了MIPS计算机公司。
1988年推R3000处理器。
1991年推出第一款64位商用微处器R4000;之后又陆续推出R8000(于1994年)、R10000(于1996年)和R12000(于1997年)等型号。
1998年,MIPS脱离SGI,成为MIPS技术公司;随后,MIPS公司的战略发生变化,把重点放在嵌入式系统;1998年-MIPS科技股票在美国纳斯达克股票交易所公开上市。
1999年,MIPS公司发布MIPS32和MIPS64架构标准,为未来MIPS处理器的开发奠定了基础。新的架构集成了所有原来NIPS指令集,并且增加了许多更强大的功能。MIPS公司陆续开发了高性能、低功耗的32位处理器内核(core)MIPS324Kc与高性能64位处理器内核MIPS64 5Kc。
2000年,MIPS公司发布了针对MIPS32 4Kc的版本以及64位MIPS 64 20Kc处理器内核。
2007年8月16日-MIPS科技宣布,中科院计算机研究所的龙芯中央处理器获得其处理器IP的全部专利和总线、指令集授权。
2007年12月20日-MIPS科技宣布,扬智科技已取得其针对先进多媒体所设计的可定制化系统单芯片(SoC)核心“MIPS32 24KEc Pro”授权。
PowerPC系列
PowerPC 是一种精简指令集(RISC)架构的中央处理器(CPU),其基本的设计源自IBM(国际商用机器公司)的IBM PowerPC 601 微处理器POWER(Performance Optimized With Enhanced RISC;《IBM Connect 电子报》2007年8月号译为“增强RISC性能优化”)架构。二十世纪九十年代,IBM(国际商用机器公司)、Apple(苹果公司)和Motorola(摩托罗拉)公司开发PowerPC芯片成功,并制造出基于PowerPC的多处理器计算机。PowerPC架构的特点是可伸缩性好、方便灵活。
PowerPC 处理器有广泛的实现范围,包括从诸如 Power4 那样的高端服务器 CPU 到嵌入式 CPU 市场(任天堂 Gamecube 使用了 PowerPC)。PowerPC 处理器有非常强的嵌入式表现,因为它具有优异的性能、较低的能量损耗以及较低的散热量。除了象串行和以太网控制器那样的集成 I/O,该嵌入式处理器与“台式机”CPU 存在非常显著的区别。
互补型的实时性(Real Time)较好的DSP架构
DSP是微处理器的一种,这种微处理器具有极高的处理速度.因为应用这类处理器的场合要求具有很高的实时性(Real Time)。比如通过移动电话进行通话,如果处理速度不快就只能等待对方停止说话,这一方才能通话。如果双方同时通话,因为数字信号处理速度不够,就只能关闭信号连接.在DSP出现之前数字信号处理只能依靠MPU(微处理器)来完成。但MPU较低的处理速度无法满足高速实时的要求。因此,直到70年代,有人才提出了DSP的理论和算法基础。那时的DSP仅仅停留在教科书上,即便是研制出来的DSP系统也是由分立元件组成的,其应用领域仅局限於军事、航空航天部门。90年代DSP发展最快,相继出现了第四代和第五代DSP器件。现在的DSP属於第五代产品,它与第四代相比,系统集成度更高,将DSP芯核及外围元件综合集成在单一芯片上。这种集成度极高的DSP芯片不仅在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域。
百科:
ARM架构 http://zh.wikipedia.org/zh-cn/ARM%E6%9E%B6%E6%A7%8B#.E5.85.A7.E6.A0.B8.E7.A8.AE.E9.A1.9E
ARM架构 http://www.txrjy.com/baike/view.asp?ARM%BC%DC%B9%B9
dsp架构 http://baike.c114.net/view.asp?id=17155-2E64F9EF
x86 http://zh.wikipedia.org/zh-cn/x86
AMD http://zh.wikipedia.org/zh-cn/%E8%B6%85%E5%A8%81%E5%8D%8A%E5%AF%BC%E4%BD%93
ARM:
云计算中心的基石,ARM架构?http://goo.gl/OMwl
ARM问鼎服务器 能否成为挑战x86的黑马 http://goo.gl/zsB3
Android:
Android助力mips移动战略 http://goo.gl/EgM4
分析ARM与ANDROID市场及技术结合点 http://goo.gl/854L
论山寨手机与Android http://goo.gl/nd9C
Android资源 http://goo.gl/m62y
国内Android 市场调查 http://goo.gl/pOHQ
PC World:Android与iPhone手机的五大战场 http://goo.gl/QEpZ
Android 2.2 for Intel 夏天公布 http://goo.gl/AveA
华硕将推"ARM架构+Android OS"上网本 http://goo.gl/DOFp
Intel:
MeeGo:开放源代码 Linux开发者蠢蠢欲动 http://goo.gl/wGXr
英特尔在智能手机处理器市场挑战ARM显劣势 http://goo.gl/cT4n
Android支持x86 Intel全力开发今夏亮相 http://goo.gl/8sw0
完成统一霸业! 凌动处理器性能全解析 http://goo.gl/BYKr
Apple:
第一篇详尽的 iPhone 4 评测 http://goo.gl/pzoE
传苹果欲再购一家处理器厂商 看好ARM架构 http://goo.gl/Os5G









