摘要: 导读:今天,越来越多的人认识到,学习最重要的目标并不是掌握一些特定的知识,也不是那些可以很容易通过移动互联网借助"百度"、"谷歌"等工具搜索到的特定知识,而是发展自己的思维!在世界快速变化的时代,思维是最重要的核心职业胜任力和职业竞争力。那么,怎样进行思考?怎样提高自己的思维层次和水平?这个问题值得... 阅读全文
posted @ 2016-01-27 13:39 Leo.cheng 阅读(7916) 评论(3) 推荐(3) 编辑
摘要: 三色需求 人们的社会经济生活本身就是一个互相交换,价值传递的循环,但这个循环有一个核心,这个核心就是社会大众的需求,也可以称为市场需求,围绕这个需求产生了层级递进的需求关系。第一个层次是蓝色需求是最基础的社会大众的需求,也可以称为市场需求。这个需求可以是全体社会大众的,也可以是其中一部分人的需求,... 阅读全文
posted @ 2015-05-16 15:27 Leo.cheng 阅读(1934) 评论(0) 推荐(2) 编辑
摘要: 《你以为你以为的就是你以为的吗?2》《你以为你以为的就是你以为的吗?2》是思维大师朱立安 `巴吉尼继畅销书《你以为你以为的就是你以为的吗?》之后的又一部力作。这部具有颠覆性与挑战性的作品揭露了热门论战中的8种思维陷阱,破解了那些看似有理,实则糟糕的谬误言论。《你以为你以为的就是你以为的吗?2》中标举... 阅读全文
posted @ 2015-01-23 14:20 Leo.cheng 阅读(27517) 评论(2) 推荐(3) 编辑
摘要: 代码味道识别工具 (Code Smell Detection Tools, CSDT)既可以应用于软件开发阶段,也可以应用于软件维护阶段。目前大部分IDE都集成了自动或者半自动重构工具,但是根据国外研究人员的调查发现,真正在软件开发和维护中使用重构工具的人并不多,其中有一个很重要的原因是不知道... 阅读全文
posted @ 2015-01-08 11:08 Leo.cheng 阅读(2739) 评论(0) 推荐(0) 编辑
摘要: 1.何为重构? 重构是对软件内部结构的一种调整,它不是改变代码的功能,而是在不改变软件可观察行为的前提下,提高其可理解性,降低修改成本。 用比较通俗的话来说就是把代码从一个地方移动到另外一个地方,保持其简短、易读。2.为何重构? 如果没有重构,程序会逐渐腐败甚至变质。 当我们只为了短期的... 阅读全文
posted @ 2014-12-24 11:13 Leo.cheng 阅读(2545) 评论(0) 推荐(0) 编辑
摘要: EventBus 源码解析本文为Android 开源项目实现原理解析中 EventBus 部分项目地址:EventBus,分析的版本:ccc2771,Demo 地址:EventBus Demo分析者:Trinea,校对者:扔物线,校对状态:未完成1. 功能介绍1.1 EventBusEventBus... 阅读全文
posted @ 2014-12-23 13:53 Leo.cheng 阅读(915) 评论(0) 推荐(0) 编辑
摘要: 1. 架构总览2. 模块介绍2.1 协议封装与任务流程2.1.1 协议与任务的封装协议有协议头(协议头因为格式相同,被抽象出来)和协议体组成,协议有两类:请求协议(request)和回复协议(response);任务(action)由请求协议、回复协议和任务回调(callback)组成;callba... 阅读全文
posted @ 2014-12-23 10:05 Leo.cheng 阅读(1690) 评论(0) 推荐(0) 编辑
摘要: Abstract FactoryIntent:Provide an interface for creating families of related or dependent objects without specifying their concrete classes.Applicabil... 阅读全文
posted @ 2014-12-02 10:21 Leo.cheng 阅读(599) 评论(0) 推荐(0) 编辑
摘要: 由于本文引用了大量官方文档、图片资源,以及开源社区的Lib和相关图片资源,因此在转载的时候,务必注明来源,如果使用资源请注明资源的出处,尊重版权,尊重别人的劳动成果,谢谢!Material Design官方Material Design详细介绍文档:http://www.google.com/des... 阅读全文
posted @ 2014-11-04 16:27 Leo.cheng 阅读(3466) 评论(0) 推荐(1) 编辑
摘要: AppCompat V21:将 Materia Design 兼容到于5.0之前的设备本篇文章翻译自Chris Banes(就职于Google,是Android-PullToRefresh,PhotoView,photup的作者,GitHub地址:https://github.com/chrisba... 阅读全文
posted @ 2014-11-04 16:09 Leo.cheng 阅读(1204) 评论(0) 推荐(0) 编辑
摘要: UML图有很多类型,这里只讨论最重要也最常用的两种 - 类图和时序图。1. 类图 通过类图,我们可以很容易的了解代码架构,理清模块之间的关系, 包括继承(Inheritance),实现(realization),依赖(dependency),组合(Composition), 聚合(Aggregat... 阅读全文
posted @ 2014-11-04 15:07 Leo.cheng 阅读(2966) 评论(1) 推荐(1) 编辑
摘要: 序列图主要用于展示对象之间交互的顺序。 序列图将交互关系表示为一个二维图。 纵向是时间轴,时间沿竖线向下延伸。 横向轴代表了在协作中各独立对象的类元角色。 类元角色用生命线表示。 当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。 消息用从一个对象的生命线到另一个对... 阅读全文
posted @ 2014-11-04 15:05 Leo.cheng 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1.泛化(Generalization) 【泛化关系】:是一种继承... 阅读全文
posted @ 2014-11-04 15:03 Leo.cheng 阅读(1514) 评论(0) 推荐(0) 编辑
摘要: UML简介 统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。 它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制。 UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发... 阅读全文
posted @ 2014-11-04 14:56 Leo.cheng 阅读(2176) 评论(0) 推荐(0) 编辑
摘要: 三层系统的分层式结构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)业务逻辑层(BLL)数据访问层(DAL) 区分层次的目的即为了“高内聚,低耦合”的思想。表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见... 阅读全文
posted @ 2014-10-31 16:34 Leo.cheng 阅读(4337) 评论(0) 推荐(0) 编辑
摘要: 我们期待自己成为一个优秀的软件模型设计者,但是,要怎样做,又从哪里开始呢? 将下列原则应用到你的软件工程中,你会获得立杆见影的成果。1. 人远比技术重要 你开发软件是为了供别人使用,没有人使用的软件只是没有意义的数据集合而已。 许多在软件方面很有成就的行家在他们事业的初期却表现平平,因为他们那时侯... 阅读全文
posted @ 2014-10-29 15:43 Leo.cheng 阅读(4025) 评论(0) 推荐(1) 编辑
摘要: 敏捷软件开发是目前十分流行,并在业界逐步推广的软件开发模式。 不同与传统的软件开发模式,敏捷开发模式有着自己鲜明的价值和方法。 其中,敏捷测试部分也同以往的软件测试流程有所不同。这对测试人员提出了新的要求,带来了新的挑战。第一部分:敏捷软件开发简介敏捷软件开发(Agile Software De... 阅读全文
posted @ 2014-10-29 13:44 Leo.cheng 阅读(26692) 评论(5) 推荐(0) 编辑
摘要: 基于Java的全文索引/检索引擎——Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。 Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经... 阅读全文
posted @ 2014-10-24 15:02 Leo.cheng 阅读(4716) 评论(1) 推荐(0) 编辑
摘要: 在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程。 启动Android应用程序中的Activity的两种情景:其中,在手机屏幕中点... 阅读全文
posted @ 2014-10-03 22:06 Leo.cheng 阅读(937) 评论(0) 推荐(0) 编辑
摘要: 在Android系统中,有两种操作会引发Activity的启动,一种用户点击应用程序图标时,Launcher会为我们启动应用程序的主Activity;应用程序的默认Activity启动起来后,它又可以在内部通过调用startActvity接口启动新的Activity,依此类推,每一个Activi... 阅读全文
posted @ 2014-10-03 17:54 Leo.cheng 阅读(1257) 评论(0) 推荐(0) 编辑
摘要: 当Android项目越来越庞大的时候,应用的各个部件之间的通信变得越来越复杂,例如:当某一条件发生时,应用中有几个部件对这个消息感兴趣,那么我们通常采用的就是观察者模式,使用观察者模式有一个弊病就是部件之间的耦合度太高,在这里将会详细介绍Android中的解耦组件EventBus的使用。Even... 阅读全文
posted @ 2014-09-30 16:23 Leo.cheng 阅读(1907) 评论(0) 推荐(1) 编辑
摘要: 混淆器(ProGuard)混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比较小的.apk文件,该文件比较难进行逆向工程。因此,当你的应用程序对安全敏感(要求高),例如当你授权应用程序的时候,混淆器是一种重要的保护手段。混淆器被集成在androi... 阅读全文
posted @ 2014-09-28 14:17 Leo.cheng 阅读(882) 评论(0) 推荐(0) 编辑
摘要: 线程池简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间T2 在线程中执行任务的时间T3 销毁线程时间 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高... 阅读全文
posted @ 2014-09-19 22:26 Leo.cheng 阅读(1602) 评论(0) 推荐(0) 编辑
摘要: 软件开发中,分析和设计时,文档的编写和思想的交流,经常要绘制各种各样的图。 相对于人类的自然语言,描绘复杂结构,图具有直观和整体的特征,有着不可替代的表现力。 软件开发是创造性的劳动,开发人员几乎在每一分钟都要做出某些选择,每一个选择都好像决定着最后的结果。 绘图的时候也是如此,脑中有完整或不完整... 阅读全文
posted @ 2014-09-11 10:57 Leo.cheng 阅读(736) 评论(0) 推荐(0) 编辑
摘要: MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件。 不同厂家的 JVM 所生成的堆转储文件在数据存储格式以及数据存储内容上有很多区别,但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPROF 二进制堆存储文件,以及 IBM 的 PHD 堆存储文件等都能被很好的解析。... 阅读全文
posted @ 2014-08-29 19:41 Leo.cheng 阅读(1350) 评论(0) 推荐(0) 编辑
摘要: 1、dalvik的Heap和Stack这里说的只是dalvik java部分的内存,实际上除了dalvik部分,还有native。 下面针对上面列出的数据类型进行说明,只有了解了我们申请的数据在哪里,才能更好掌控我们自己的程序。2、对象实例数据实际上是保存对象实例的属性,属性的类型和对象本身的类型标... 阅读全文
posted @ 2014-08-28 18:45 Leo.cheng 阅读(5574) 评论(0) 推荐(1) 编辑
摘要: 1、Service的种类按运行地点分类:类别区别优点缺点应用本地服务(Local)该服务依附在主进程上,服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相应bindService会方便很多。主进程被Kill后,服务... 阅读全文
posted @ 2014-08-19 15:15 Leo.cheng 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 第一部分 个性化控件(View)主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、FlipV... 阅读全文
posted @ 2014-07-22 18:03 Leo.cheng 阅读(1640) 评论(0) 推荐(0) 编辑
摘要: 引子 这是一个很简单的模式,却被非常广泛的使用。 之所以简单是因为在这个模式中仅仅使用到了继承关系。 继承关系由于自身的缺陷,被专家们扣上了“罪恶”的帽子。 “使用委派关系代替继承关系”, “尽量使用接口实现而不是抽象类继承”等等专家警告,让我们大家对继承“另眼相看”。 其实,继承还是有... 阅读全文
posted @ 2014-06-28 20:21 Leo.cheng 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 引子 昨天在给新买的MP3充电的时候,发现这款MP3播放器只提供了USB接口充电的方式,而它所配备的充电器无法直接给USB接口充电,聪明的厂商为充电器装上了一个USB接口转换器解决了问题。 这个USB接口转接器正是今天要谈到的适配器。 而在软件开发中采用类似于上面方式的编码技巧被称为适配器模式... 阅读全文
posted @ 2014-06-28 19:56 Leo.cheng 阅读(574) 评论(0) 推荐(0) 编辑
摘要: 引子 还记得警匪片上,匪徒们是怎么配合实施犯罪的吗? 一个团伙在进行盗窃的时候,总有一两个人在门口把风——如果有什么风吹草动,则会立即通知里面的同伙紧急撤退。 也许放风的人并不一定认识里面的每一个同伙; 而在里面也许有新来的小弟不认识这个放风的。 但是这没什么,这个影响不了他们之间的通讯,... 阅读全文
posted @ 2014-06-28 17:03 Leo.cheng 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 引子 古人云:书非借不能读也。 现在IT书籍更新快、价格贵、质量水平更是参差不齐,实在不忍心看到用自己的血汗钱买的书不到半年就要被淘汰 更不想供养使用金山快译、词霸等现代化工具的翻译们。 于是去书店办了张借书卡,这样便没有了后顾之忧了——书不好我可以换嘛! 但是,借书也有不爽的地方,就是... 阅读全文
posted @ 2014-06-26 22:06 Leo.cheng 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 引子 前几天陪朋友去装机店攒了一台电脑,看着装机工在那里熟练的装配着机器。 作为装机工,他们不用管你用的CPU是Intel还是AMD,也不管你的显卡是2000千大元还是白送的,都能三下五除二的装配在一起。 一台PC就诞生了! 当然对于客户来说,你也不知道太多关于PC组装的细节。 这和建造模... 阅读全文
posted @ 2014-06-25 23:10 Leo.cheng 阅读(616) 评论(0) 推荐(0) 编辑
摘要: 版权所有, 禁止转载, 如有需要, 请站内联系.本文地址:http://blog.csdn.net/caroline_wendy/article/details/20845807 时间: 2014-03-09为了使开发人员与时俱进, 在这里给大家讲解一下Android Studio的安装步骤及设置.... 阅读全文
posted @ 2014-06-22 21:56 Leo.cheng 阅读(691) 评论(0) 推荐(0) 编辑
摘要: 引子 话说十年前,有一个暴发户,他家有三辆汽车——Benz 奔驰、Bmw 宝马、Audi 奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的: Benz 车后跟司机说“开奔驰车!上”,坐上 Bmw 后他说“开宝马车!”,坐上 Audi 说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!... 阅读全文
posted @ 2014-06-22 17:49 Leo.cheng 阅读(2078) 评论(0) 推荐(0) 编辑
摘要: 1、将LOGO图片的大小调整到合适尺寸(480x272)2. 使用GIMP2生成符合Linux要求的PPM图片文件启动GIMP2打开通过ACDSEE调整的图片-->通过菜单 图像模式索引设置图形索引最大颜色数为:2243. 保存为PPM格式4. 同时保存为ASCII数据格式这样,我们就做好了一张满屏... 阅读全文
posted @ 2014-06-22 17:26 Leo.cheng 阅读(735) 评论(0) 推荐(0) 编辑
摘要: 1.framebuffer接口层(fbmem.c)功能:给用户提供接口fbmem_init//入口函数/*1.申请主设备号,注册字符设备*/register_chrdev(FB_MAJOR(29),"fb",&fb_fops)/*2.创建一个设备类*/fb_class = class_create(... 阅读全文
posted @ 2014-06-22 17:22 Leo.cheng 阅读(1237) 评论(0) 推荐(0) 编辑
摘要: jni代码java调用jni的接口:1, 调用动态库static{System.loadLibrary("led_jni");// system/lib/libled_jni.so}2, 调用驱动方法名: public native int openDev(); 3, 直接去调用,不需要去实现ope... 阅读全文
posted @ 2014-06-22 15:52 Leo.cheng 阅读(958) 评论(0) 推荐(0) 编辑
摘要: $ . ./build/envsetup.sh // 每打开一个终端,就需要执行一次$ choosecombo// 选择产品Build for the simulator or the device?// 目标文件时运行在模拟上还是真实的开发板1. Device2. SimulatorWhich ... 阅读全文
posted @ 2014-06-22 15:51 Leo.cheng 阅读(1170) 评论(0) 推荐(0) 编辑
摘要: 内核启动流程第二阶段starte_kernel:|rest_init:|kernel_init|do_basic_setup(); // 加载驱动|do_initcalls();|for (fn = __early_initcall_end; fn busybox==>// 注意点: 最好在boo... 阅读全文
posted @ 2014-06-22 15:50 Leo.cheng 阅读(800) 评论(0) 推荐(0) 编辑