- 博客(79)
- 收藏
- 关注
原创 Android编程规范摘要6 (Bitmap、Drawable 与动画)
Bitmap、Drawable 与动画其它相关文章: Android编程规范摘要1 (资源文件命名与使用) Android编程规范摘要2 (基本组件) Android编程规范摘要3 (UI与布局) Android编程规范摘要4 (进程、线程与消息通信) Android编程规范摘要5 (文件与数据库) Android编程规范摘要6 ...
2018-04-02 00:47:03
327
原创 Android编程规范摘要5 (文件与数据库)
文件与数据库其它相关文章: Android编程规范摘要1 (资源文件命名与使用) Android编程规范摘要2 (基本组件) Android编程规范摘要3 (UI与布局) Android编程规范摘要4 (进程、线程与消息通信) Android编程规范摘要5 (文件与数据库) Android编程规范摘要6 (Bitmap、Drawa...
2018-04-02 00:44:04
429
原创 Android编程规范摘要4 (进程、线程与消息通信)
进程、线程与消息通信其它相关文章: Android编程规范摘要1 (资源文件命名与使用) Android编程规范摘要2 (基本组件) Android编程规范摘要3 (UI与布局) Android编程规范摘要4 (进程、线程与消息通信) Android编程规范摘要5 (文件与数据库) Android编程规范摘要6 (Bitmap、D...
2018-04-02 00:40:39
323
原创 Android编程规范摘要3 (UI与布局)
UI与布局其它相关文章: Android编程规范摘要1 (资源文件命名与使用) Android编程规范摘要2 (基本组件) Android编程规范摘要3 (UI与布局) Android编程规范摘要4 (进程、线程与消息通信) Android编程规范摘要5 (文件与数据库) Android编程规范摘要6 (Bitmap、Drawab...
2018-04-02 00:28:51
289
原创 Android编程规范摘要2 (基本组件)
Android基本组件Android 基本组件指Activity 、Fragment 、Service 、BroadcastReceiver 、ContentProvider 等等。其它相关文章: Android编程规范摘要1 (资源文件命名与使用) Android编程规范摘要2 (基本组件) Android编程规范摘要3 (UI与布局) And...
2018-04-01 02:51:25
466
原创 Android编程规范摘要1 (资源文件命名与使用)
Android 资源文件命名与使用其它相关文章: Android编程规范摘要1 (资源文件命名与使用) Android编程规范摘要2 (基本组件) Android编程规范摘要3 (UI与布局) Android编程规范摘要4 (进程、线程与消息通信) Android编程规范摘要5 (文件与数据库) Android编程规范摘要6 (B...
2018-04-01 02:48:22
405
原创 Effective Java读书笔记二六(Java Tips.Day.26)
TIP 74 谨慎地实现Serializable接口序列化 将一个对象编码成一个字节流,称作对象的序列化。 相反的过程则是反序列化。
2017-07-20 16:20:13
437
原创 Effective Java读书笔记二五(Java Tips.Day.25)
TIP 71 慎用延迟初始化除非绝对必要,否则就不要这么做。大多数情况,正常的初始化要优先于延迟初始化。如果要使用延迟初始化,就要使用同步访问方法。如果出于性能考虑,而需要对静态域使用延迟初始化,就使用懒汉holder class模式。public class Test1 { private static FieldType getField(){ return F
2017-06-07 01:04:16
391
原创 Effective Java读书笔记二四(Java Tips.Day.24)
TIP 68 executor 和 task 优先于线程使用Java 1.5提供的Executor Framework,代替Thread来执行并发任务。如果执行多线程任务,还可以开启缓存线程池。如果负载较重,可以开启固定线程数的线程池。尽量不直接使用线程,使用executor service 执行任务。 可以使用 ScheduledExecutorService代替 jav
2017-06-06 01:20:48
416
原创 Effective Java读书笔记二三(Java Tips.Day.23)
TIP 67 避免过度同步与TIP 66 不同,本条目讨论相反的问题。过度同步可能会导致性能降低、死锁、甚至不确定的行为。为了避免活性失败和安全性失败,在一个被同步的方法或代码块中,永远不要放弃对客户端的控制。不要调用设计成要覆盖的方法,因为你无法确定最终调用的是哪个子类或父类的实现。不要调用以函数对象提供的方法,包括以接口回调形式传入的匿名类。来看看实例:public class Forwa
2017-05-27 17:15:27
402
原创 Effective Java读书笔记二二(Java Tips.Day.22)
TIP 66 同步访问共享的可变数据关键字synchronized可以保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块读或写一个变量是原子的,除非这个变量的类型是long或者double
2017-05-27 01:18:11
373
原创 Effective Java读书笔记二一(Java Tips.Day.21)
TIP 60 优先使用标准的异常一般来说,你无需实现新的异常类型。JDK提供了一组基本的未受检的异常,满足绝大多数API的异常抛出需要。其中包括: IllegalArgumentException IllegalStateException NullPointerException IndexOutOfBoundsExceptio
2017-05-25 00:10:08
431
原创 Effective Java读书笔记二十(Java Tips.Day.20)
TIP 71 慎用延迟初始化除非绝对必要,否则就不要这么做。大多数情况,正常的初始化要优先于延迟初始化。如果要使用延迟初始化,就要使用同步访问方法。如果出于性能考虑,而需要对静态域使用延迟初始化,就使用懒汉holder class模式。public class Test1 { private static FieldType getField(){ return F
2017-05-24 01:11:58
413
原创 Effective Java读书笔记十九(Java Tips.Day.19)
TIP 51 当心字符串连接的性能不要对字符串用+连接,这个大家都懂的,String是不可变对象,每次连接都会额外创建一个对象,造成不必要的开销。如果连接数量很多,性能就会显著下降。请使用StringBuffer或StringBuilder来处理这类需求。如果在多线程并发的环境下,请使用StringBuffer类,因为它是线程安全的。如果你能确定运行环境是单线程,可以使用StringBuilder。
2017-05-22 01:55:29
449
原创 Effective Java读书笔记十八(Java Tips.Day.18)(长文预警)
TIP 49 基本类型优于装箱基本类型Java类型系统由两部分组成:基本类型和引用类型。每个基本类型都有一个对应的引用类型,称作装箱基本类型。基本类型与装箱基本类型之间的区别:基本类型只有值,而装箱基本类型则具有与他们的值不同的同一性。比如,两个装箱基本类型的值可以相同,而同一性不同,使用 == 表达式会返回false。基本类型只有功能完备的值,而装箱基本类型还有个非功能值:null。基本类型
2017-05-21 01:52:29
538
原创 Effective Java读书笔记十七(Java Tips.Day.17)
TIP 45 将局部变量的作用域最小化最佳方法:在第一次使用局部变量的地方声明。你无须在方法一开始就声明局部变量,这是一种旧习——你out了。 几乎每个局部变量的声明都应包含一个初始化表达式。try-catch语句块的情况有点特殊。如果一个变量被一个方法初始化,而这个方法可能抛出一个受检的异常(check exception), 那么该变量必须在try块的内部初始化。在循环中,允许声明一个循
2017-05-19 18:40:21
351
原创 Effective Java读书笔记十六(Java Tips.Day.16)
TIP 42 慎用可变参数在需要定义参数熟不定的方法时,可变参数方法时一种很方便的方式,但他们不应该被滥用。这里有几个通常的建议:如果可能,请将第一个参数定义为int类型,表示数组长度。使用可变参数会带来额外的性能开销。因为每次调用时,都会进行一次数组分配和初始化。如果不想承受额外的性能开销,可以重载方法,每个重载版本的参数数量分别为1, 2, 3,最后再提供一个可变参数的版本。因为使用超过4
2017-05-19 17:13:06
320
原创 Effective Java读书笔记十五(Java Tips.Day.15)
TIP 40 谨慎设计方法签名本条目会帮助你设计更好的API请遵循标准的命名习惯名称应易于理解,而且与同一个包中的其它名称风格一致 选择与大众认可的名称相一致,或者自然语言中相同含义的词汇作为名称不要过于追求提供便利的方法不要过于追求提供便利的方法对于类和接口所支持的每个动作,都提供一个功能齐全的方法。每个方法应该尽其所能,不要设计太多太散的方法,否则难以学习、使用、文档化、测试和
2017-05-19 00:47:34
443
原创 Effective Java读书笔记十三(Java Tips.Day.13)
TIP 36 坚持使用Override注解用IDE写代码的同学可能见怪不怪了,无论是实现接口,还是实现父类的abstract方法,IDE会自动在这些方法前加上这个注解。不过,我们还是来看看如果不用这个注解,会有什么情况发生:/** * 一个表示双字母组的类。 */public class Bigram { private final char first; private fi
2017-05-11 02:08:49
415
原创 Effective Java读书笔记十二(Java Tips.Day.12)
TIP 34 注解优先于命名模式命名模式的问题文字拼写错误会导致失败,且没有任何提示。无法确保它们只用于相应的程序元素上。它们没有提供将参数值与程序元素关联起来的好方法。注解可以很好地解决这些问题。假设想要定义个注解类型来指定简单的测试,它们自动运行,并在抛出异常时失败:/** * 只能用于无参的静态方法. */@Retention(RetentionPolicy.RUNTIME)@
2017-05-10 02:08:16
529
原创 Effective Java读书笔记十一(Java Tips.Day.11)
TIP33 用接口模拟可伸缩的枚举原书表达的太绕口了,还是直接上代码吧,这样直观:public interface Operation { double apply(double x, double y);}public enum BasicOperation implements Operation{ PLUS("+"){ @Override pu
2017-05-09 01:26:53
363
原创 Effective Java读书笔记十(Java Tips.Day.10)
TIP32 用EnumSet替代位域看看下一段代码: public class Text{ public static final int STYLE_BOLD = 1<<0; public static final int STYLE_ITALY = 1<<1; public static final int STYLE_UNDERLINE =
2017-05-01 19:51:41
344
原创 Effective Java读书笔记九(Java Tips.Day.9)
TIP30 用enum代替int常量也许我们常常会写以下类似的代码: public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2;这种方法称为int枚举模式,它们在类型安全和使用方便
2017-05-01 18:02:56
406
原创 Effective Java读书笔记八(Java Tips.Day.8)
TIP29 优先考虑类型安全的异构容器今天要结束泛型这个部分,所以只有一个tip。不过这个tip涉及到的知识很多,而且是平时可能用的很少的类型相关的只是,最好多多回味,融会贯通。泛型最常用于集合,比如set,map以及单元素的容器,如ThreadLocal和 AtomicRefrence。 在这些用法中,容器是被参数化的,这样就限制你每个容器只能有固定数目的类型参数。例如,Set、List、只有一
2017-04-11 01:02:05
474
原创 Effective Java读书笔记七(Java Tips.Day.7)
TIP27 优先考虑泛型方法实现一个合并两个Set容器的方法无泛型参数的方法```public static Set union(Set s1, Set s2){ Set result = new HashSet(s1); result.addAll(s2); return result;}```这个方法可以编译,但会有两个uncheck警告。参考TIP.24,我
2017-04-09 02:34:45
586
原创 Effective Java读书笔记六(Java Tips.Day.6)
消除非受检警告尽可能的消除每一个unchecked警告。 如果无法消除警告,同时可以证明引起警告的代码是类型安全的,才可以用注解@SuperessWarnings(“unchecked”)注解来禁止这条警告。每当使用这个注解时,一定要写注释说明为什么此处的代码是安全的。列表优先于数组先看下面的代码片段:Object[] objectArray = new Long[1];objectArray[
2016-12-29 18:33:29
462
原创 Effective Java读书笔记五(Java Tips.Day.5)
TIP21.用函数对象表示策略如果一个类仅仅导出一个方法,而这个方法执行其它对象上的操作,那么这个类的实例实际上等同于一个指向该方法的指针。这样的实例被成为函数对象。函数指针的主要用途就是实现策略模式。通常用匿名类声明并实现一个具体的策略类,如果这个策略类是设计用来重复使用的,通常就应该被实现为私有的静态类以便重复使用。具体请参考java.util中的Comparator接口,以及容器类中的排序策略
2016-12-28 16:55:33
440
原创 Effective Java读书笔记四(Java Tips.Day.4)
TIP17.要么为继承而设计,并提供文档说明,要么就禁止继承对于专门为了继承而设计的类,首先,文档必须精确的描述覆盖每个方法带来的影响,必须说明它可覆盖的方法的自用性。对于每个public或protected的方法或构造器,必须指明它们调用哪些可覆盖的方法,是以什么顺序调用的,每个调用的结果又是如何影响后续的处理过程的。类必须通过某种形式的钩子,以便能进入它的内部工作流程中,一
2016-11-30 16:02:51
607
原创 Effective Java读书笔记三(Java Tips.Day.3)
TIP13.使类和成员的可访问性最小化(封装)实例域决不能是公有的不应当具有公有的静态final数组域,或者返回这种域的方法。作为替代,你可以使公有数组变成私有的,并增加一个公有的不可变列表:private static final Thing[] VALUES[] = {...};public static final List<Thing> VALUES = Collections.un
2016-11-18 17:16:17
683
原创 Effective Java读书笔记二(Java Tips.Day.2)
Tip6. 消除过期的对象引用只要类自己管理内存,就应该警惕内存泄漏问题。一旦元素被释放,则该元素中包含的任何对象引用都应该被清空。缓存对象的管理不当,可能会导致内存泄漏。监听器和其它回调。应当在合适的时候注销掉已注册的回调监听器,或者只保存它们的弱引用。Tip7. 避免使用终结方法请务必合理的使用终结方法。Java语言规范不仅不保证终结方法会被及时地执行,而且根本就不保证它们会被执行。而且
2016-11-18 11:13:30
830
原创 Effective Java读书笔记一(Java Tips.Day.1)
Tip1. 考虑用静态工厂方法替代构造器优势静态工厂方法有名称,能够确切的描述正被返回的对象。当一个类需要多个相同签名的构造器时,用静态工厂方法替代它们。静态工厂方法不必在每次调用它们的时候都创建一个新对象。这可以用于实现实例受控的类,包括单例、FlyWeight模式、不可变类的实例equals问题、枚举类等等。静态工厂方法可以返回原返回类型的任何子类型的对象。这样的接口可以返回对象,又不会
2016-11-16 10:20:14
4286
翻译 掌握AndroidAnnotations进行快速Android开发
开源项目androidannotation使用项目地址:猛烈戳我 介绍1 目标我们希望使编写和维护代码更便利.我们相信意图清晰、简明的代码,是达到这一目标的最佳途径.Robert C. Martin 这样说道: 阅读代码所花费的时间,相比编写代码要超过10倍. 因为使代码容易阅读,将使它更容易编写.当我们潜心于开发android应用时,我们常常惊讶于:为毛我们经常需要写一些重
2016-03-21 15:17:26
449
原创 GreenDao使用入门
GreenDao使用入门她是一个ORM框架。 常见的一些ORM框架: - ORMLite - GreenDao - ormndroid - andrormORM(Object Relation Mapping):对象关系模型。用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。ORM作为项目中间件形式实现数据在不同场
2015-11-16 16:11:07
476
原创 [读书笔记]代码的坏味道---何时重构
这是一本好书,。除了重构,它也讲述了怎样构建更易于理解、维护的代码。当闻到坏味道,就可以考虑重构那些让你不舒服的代码了。这并没有精确的概念,然而由各种迹象带来的直觉,往往就是在提示你需要做些事情了。一,重复代码。(Duplicated Code)随处复杂粘贴代码并不是一个好习惯。当我们需要一个功能,去搜索引擎、论坛、或其它项目找到我们需要的代码时,最好组织一下再使用,而不是直接co
2015-08-31 15:22:50
674
原创 手把手教你使用jni双向调用
一、需求: 项目为cocos2d-X开发的游戏,需要为android版本添加微信分享, 具体是在游戏界面中添加一个分享按钮,点击该按钮即可分享。 最终考虑通过jni,在C/C++层通过jni调用微信AnroidSDK。 在分享成功后,在java层调用C++层使角色复活.二、本地(native)调用java代码:分享按钮应该是在游戏中,也就是C
2014-02-24 10:52:43
1239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅