自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

1024工场

新技术,新未来,尽在1024工场...

  • 博客(272)
  • 资源 (5)
  • 收藏
  • 关注

原创 Java:JSON解析工具-org.json

一、简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下。  二、准备 1.在使用org.json之前,我们应该先从该网址https://github.com/douglascrockford/JSON-java下载org.json源码,并将源码其加入到Eclipse中

2013-09-04 09:31:22 16271 2

原创 提高你的Java代码质量吧:在switch的default代码块中增加AssertionError错误

一、分析 switch后跟枚举类型,case后列出所有的枚举项,这是一个使用枚举的主流写法,那留着default语句没有任何作用,程序已经列举了所有的可能选项,肯定不会执行到default语句,看上去纯属多余!  二、场景 错了!这个default还是很有用的,以我们定义日志级别来举例说明,这是一个典型的枚举常量,如下所示: enum Log

2013-09-03 09:19:04 4187 1

原创 日积月累:ListView的属性详解和探究

在我们的日常开发中,ListView是一个最常用的组件,所以我们非常有必要对它的属性进行全面的了解。现在就以一个简单的实例,对ListView的属性做一个简单的讲解。  首先我们给出简单的布局文件,就一个简单的ListView列表: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a

2013-09-02 09:04:19 16132 9

原创 OC学习那些事:Block

1.Block Block封装了一段代码,可以在任何时候执行。 Block可以作为函数的参数,或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针类似,但是有区别:block是inline(内联函数)的,并且默认情况下它对具备变量是可读的。  苹果官方建议尽量多用block。在多线程、异步任务、集合遍历、集合排序、动画转场的很多。

2013-08-30 09:49:08 3819

原创 日积月累:ScrollView嵌套ListView只显示一行

在开发的过程当中,由于手机屏幕的大小的限制,我们经常需要使用滑动的方式,来显示更多的内容。在最近的工作中,遇见一个需求,需要将ListView嵌套到ScrollView中显示。于是乎有了如下布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http

2013-08-29 08:57:08 14241 2

原创 OC学习那些事:Protocol

1.Procotol 简单来说就是一系列方法的列表,其中声明的方法可以被任何类实现。这种模式一般称为代理(delegation)模式。  在iOS和OS X开发中,Apple采用了大量的代理模式来实现MVC中View(UI控件)和Controller(控制器的分离)。  2.Procotol的使用 @protocol Study

2013-08-28 09:17:09 2548

原创 提高你的Java代码质量吧:频繁插入和删除时使用LinkedList

一、分析 前面有文章分析了列表的表里方式,也就是“读”的操作。本文将介绍表的“写”操作:即插入、删除、修改动作。  二、场景 1.插入元素 列表中我们使用最多的是ArrayList,下面看看他的插入(add方法)算法,源代码如下: public void add(int index,E element){ /*检查下标是

2013-08-27 09:18:26 6948 1

原创 提高你的Java代码质量吧:不同的列表应该选择不同的遍历方法

一、分析 在Java中,RandomAccess和Cloneable、Serializable一样都是标识接口,不需要任何实现,只是用来表明其实现类具有某种特质的,实现了Cloneable表明可以被拷贝,实现了Serializable接口表明被序列化了,实现了RandomAccess则表明这个类可以随机存取。  ArrayList数组实现了RandomAccess接

2013-08-26 09:18:30 4521 4

原创 日积月累:android:layout_weight属性详解

在开发的过程中,为了布局更好的适配各种各样的屏幕,会经常使用android:layout_weight属性,按比例分配屏幕的空间。在很多资料和书籍中解释说,系统根据layout_weight比例分配占据空间的大小。但是这个解释在实际开发过程中,往往给我们带来许多困惑。  现在我们来看看具体场景如下:我们需要将三个TextView按照1:2:3的横向的比例显示。于是就有了如下代码

2013-08-23 09:02:39 3929 2

原创 你不知道的Eclipse的用法:使用Eclipse查看Android源码

在平时的开发和学习过程当中,为了更好的理解,为了更好的运用,我们通常希望查看相关类的源代码实现。在Eclipse中,使用Ctrl+鼠标(放在查看的类上,点击),会自动跳转到相关的源码中。 但是如果没有相关的配置,就会出现如下图情形,所以我们还要进行相关的配置。  在Eclipse中查看Andrid源码的配置步骤 下载相关版本的Android源

2013-08-22 18:18:54 4183

原创 OC学习那些事:Category

1.Category概念 OC提供了一种与众不同的方式—Category,可以动态的为已经存在的类添加新的行为(方法,不能添加成员变量)。 这样可以保证类的原始设计规模最小,功能增加在逐步扩展。 使用Category对类进行扩展时,不需要创建子类。 Category使用简单的方式,实现了类的相关方法模块化,把不同的类方法分配到不同的分类文件中。

2013-08-22 09:19:33 5555

原创 OC学习那些事:第一个OC应用程序

一、XCode创建开发环境步骤 1.Welcome to Xcode窗口,选择Create a new Xcode project。 Create a new Xcode project:创建一个新的Xcode项目。 Connect to a repository:代码库 Learn about using Xcode:查询Xcode的用户指...

2013-08-20 17:21:48 3173

原创 提高你的Java代码质量吧:避免基本类型数组转换列表陷阱(Arrays.asList())

一、分析 我们在开发的过程中经常会使用Arrays和Collections这两个工具类在数组和列表之间转换。 Arrays.asList()方法:输入一个变长参数,返回一个固定长度的列表。看源码: public static List asList(T... a){ return new ArrayList(a); } asList方法输入的

2013-08-20 09:07:22 4267 1

原创 OC学习那些事:内存管理

1.范围 任何继承了NSObject的对象,对基本数据类型无效。  2.原理 每个对象内部都保存了一个与之相关联的整数,称为引用计数器。 当使用alloc、new或者copy创建一个对象的时,对象的引用计数器设置为1。 给对象发送一条retain消息,可以使引用计数器+1。 给对象发送一条release消息,可以使引用

2013-08-19 09:48:32 3169

原创 OC学习那些事:@property和@synthesize

1.@property 只用在.h文件中@interface关键字中 当编译器遇见@property时,会自动展开成getter和setter方法的声明。 //等效 @property int age; -(int)age; -(void)setAge:(int)newAge; 注意:在XCode4.5环境下,检测到@property时,自动在

2013-08-16 09:12:45 2235

原创 OC学习那些事:self、自动释放、变量作用域

1.变量的作用域 变量必须定义的{}中 @public:全局都可以方法 @protected:只能在类的内部和子类中访问(默认) @private:只能在类的内部方法 @interface Student : NSObject { @public int _age; int _no; @priva

2013-08-15 09:06:16 2584 1

原创 提高你的Java代码质量吧:多种最值算法,适时选择

一、分析 对一批数据进行排序,然后找出其中的最大值或最小值,这是基本的数据结构的知识。在Java中我们可以通过编写算法的方式,也可以通过数组先排序再取值的方式来实现。  二、场景 1.自行实现,快速查找最大值,代码如下: public static int max(int[] data){ int max = data[0];

2013-08-14 09:20:36 4653 2

原创 日积月累:布局横竖向滑动需求的实现

在工作过程当中,出现这样一个需求。要求屏幕中的内容分为两个区域,我称为A区域和B区域,要求B区域可以竖直和横向滑动,A区域能随着B区域横向滑动(但不能竖直滑动),并且A区域位于屏幕的底部,B区域位于A区域的上部。效果图如下: 图片1:起始页面 图片2:B区域下滑,A区域不滑动 图片3:B区域横滑,A区域随之滑动

2013-08-13 00:59:19 1783

原创 提高你的Java代码质量吧:警惕数组的浅拷贝

一、分析 在日常工作中,我们会遇见很多数组的拷贝和复制的问题,但是在你使用系统提供的API进行编码的时候,无形中会留下浅拷贝的隐患。  二、场景 有这样一个例子,第一个箱子里面与赤橙黄绿青蓝紫7色气球,现在希望第二个箱子也放入7个气球,其中最后一个气球改为蓝色,也就是赤橙黄绿青蓝蓝七个气球。 来看实现: public class

2013-08-12 09:21:04 2709 1

原创 提高你的Java代码质量吧:性能考虑,数组是首选

一、分析 数组在实际的系统开发中使用的越来越少,我们通常只有在阅读一些开源项目时才会看到它们的身影,在Java中它确实没有List、Set、Map这些集合使用起来方便,但是在基本类型处理方面,数组还是占优势的,而且集合的底层也是通过数组实现。  二、场景 比如对一个数据集求和的计算: //对数组求和 public static int su

2013-08-08 09:13:29 3886 1

原创 提高你的Java代码质量吧:中文字符串排序的瑕疵

一、分析 在Java中一设计中文处理就会冒出很多问题来,其中排序也是一个让人头疼的课题。  我们知道Arrays工具类的默认排序是通过数组元素的compareTo方法来进行比较的,那我们来看String类的compareTo方法的主要实现: while(k < lim){ //原字符串的字符数组 char c1 = v1[k];

2013-08-07 09:10:34 6477 2

原创 提高你的Java代码质量吧:强烈建议使用UTF编码

一、分析 Java的乱码问题由来已久,有点开发经验的开发人员肯定遇到过乱码问题,有时从Web上接受乱码,有时是从数据库中读取乱码,有时是从外部接口中接收到的乱码。  先解释一下Java中的编码规则。Java程序涉及的编码包括两个部分: 1.Java文件编码 如果我们使用记事本创建一个.java后缀的文件,则文件的编码格式就是操作系统默认的格式

2013-08-06 09:30:11 3404 1

原创 日积月累:EditText软键盘的显示和隐藏

在工作过程中,常常会遇见需要根据自己的需求,控制文本框的键盘显示和隐藏。通过查阅Android文档,介绍可以通过在清单文件中元素中添加android:windowSoftInputMode属性来处理。  这个属性主要影响两件事情: 1.软键盘的状态—当Activity显示给用户的时候,它是显示还是隐藏。 2.主活动窗口的调整—它是否调整主窗体大小来给软键

2013-08-05 18:10:10 3032

原创 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式

一、分析 字符串的操作,诸如追加、合并、替换、倒序、分隔等,都是在编码过程中经常用到的,而且Java也提供了append、replace、reverse、split等方法来完成这些操作,它们使用起来确实方便,但是更多的时候,需要使用正则表达式来完成复杂的处理。  二、场景 统计一篇文章中的单词的数量,代码如下: public static v

2013-08-05 09:36:17 2757 1

原创 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择

一、分析 对于一个字符串进行拼接有三种方法:加号、concat方法、及StringBuiler或StringBuffer。  1."+"方法拼接字符串 str += "c";等效于:str = new StringBuffer(str).append("c").toString();  虽然编译器对字符串加号做了优化,它会用S

2013-07-29 15:55:43 4600 2

原创 提高你的Java代码质量吧:字符拼接位置的玄机

一、分析 Java对加号的处理机制:在使用加号进行计算的表达式中,只要遇到String字符串,则所有的数据都会转换为String类型进行拼接,如果是原始数据,则直接拼接,如果是对象,则调用toString方法的返回值拼接。  二、场景 看这样一段程序: public static void main(String[] args){

2013-07-26 09:18:12 2613 1

原创 提高你的Java代码质量吧:不要随便设置随机种子

一、分析 在加密、混淆数据等地方,我们经常期望获得一个唯一的、不可仿造的数字,以避免产生相同的业务数据造成混乱。  在Java项目中,通常是通过Math.random方法和Random类类获得随机数的。这两种方式获取随机数的原理是相同的,Math.random方法也是通过生成一个Random类的实例,然后委托newxDouble方法,没有差别。

2013-07-25 10:27:19 6992 2

原创 提高你的Java代码质量吧:优先使用整形池

一、分析 包装类型产生对象的两种方式: 1.new产生的Integer对象 new声明的就是要生成一个对象,没二话,这就是两个对象,地址肯定不相等。 2.装箱生成的对象 装箱动作是通过valueOf()方法实现的,我们阅读以下Integer.valueOf的实现代码: public static Integer valueOf(i

2013-07-24 19:04:16 2692 2

原创 提高你的Java代码质量吧:谨慎包装类型的比较

一、分析 基本类型可以比较大小,其所对应的包装类型都实现了Comparable接口此问题。  二、场景 代码如下: public class Client{ public static void main(String[] args){ Integer i = new Integer(100); Inte

2013-07-23 18:50:22 2633 1

原创 日积月累:使用EditText的TextChangedListener时StackOverflowError异常

在工作过程中,各种文本框的输入有各种特殊需求,如输入整数、字母等等需求。现公司业务需求,要求某文本输入框,只能输入整数,并且不能出现以“010”,数字出现以0开头的情形。 经过查询文档,发现EditText可以通过addTextChangedListener方法,添加文本变化的监听器。我们可以通过该监听器对以0开头的情形进行处理。 于是有如下代码: editTe

2013-07-22 18:06:29 9835

原创 提高你的Java代码质量吧:提防包装类型的null值

一、分析 Java引入包装类型(Wrapper Types)是为了解决基本类型的实例化问题,以便一个基本类型也能参与到面向对象的编程世界中。  而在Java5中泛型更是对基本类型说了“不”,如果想把一个整形放到List中,就必须使用Integer包装类型。 基本类型和包装类型都是可以通过自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)自由转换的

2013-07-22 09:54:16 4740 1

原创 OC学习那点事:构造方法和description方法

1.自定义的构造方法 Student.m文件: @interface Student : NSObject { int _age; int _no; } ... …(getter/setter) //自己写一个构造方法 -(id)initWithAge:(int)age AndNo:(int)no; @end  Student.h文件: 

2013-07-21 10:33:07 2478

原创 OC学习那些事:点语法

1.使用自定义的方法创建get/set方法 Person.h文件: #import @interface Person : NSObject { int age; } -(void)setAge:(int)newAge;//方法名是setAge: -(int)age;//方法名是age //-(void)setAge:(int)newAge AndN

2013-07-20 09:41:07 3685

原创 提高你的Java代码质量吧:不容忽视的四舍五入细节

一、分析 在许多数学计算的场景中,会用到近似取值的计算方法。常用的近似取值有四舍五入。 但是在某些金融行业或特殊场景中,四舍五入的方式就不太适宜。目前Java支持一下其中舍入方式: ROUND_UP:远离零方向舍入,向远离0的方向舍入,也就是说,向绝对值最大的方向舍入,只要舍弃位非0即进位。 ROUND_DOWN:趋向零方向的舍入,向0方向靠拢,也就是说,向

2013-07-19 10:45:03 7828 5

原创 提高你的Java代码质量吧:危险的边界

一、分析 在单元测试中,有一项测试叫做边界测试(也有叫做临界测试),它能避免出现:数字越界使检验条件失效。 如果一个方法接受的是Int类型的参数,那一些三个值是必须的:0、正最大、负最大、其中正最大和负最大是边界值,如果这三个值都没有问题,方法才是比较安全可靠的。 二、场景 某生产的电子产品非常畅销,需要提前30天预订才能抢到手,同时它还规定了一个会员可

2013-07-18 10:21:38 4378 4

原创 提高你的Java代码质量吧:不要让类型默默转换

一、分析 在Java运算中的类型转换,是先运算在进行类型转换的。具体场景如下。二、场景 在如下程序中: public class Client{ public static final int LIGHT_SPEED = 30 * 10000 * 1000; public static void main(String[] arg

2013-07-17 09:44:17 3041 1

原创 提高你的Java代码质量吧:用整数类型处理货币

一、分析 在计算机中,使用二进制表示数据,浮点数有可能是不准确的,它只能无限接近准确值,而不是完全精确。 如:0.4这个十进制小数,使用“乘2取整,顺序排列”法: 0.4*2=0.8   --->   取整是0 0.8*2=1.6   --->   取整是1 0.6*2=1.2   --->   取整是1 0.2*2=0.4   --

2013-07-16 11:15:52 3470 1

原创 提高你的Java代码质量吧:三元操作符的类型陷阱

一、分析 当你使用三元运算符,两边的操作数的类型不一致的时候,这就涉及到三元操作符的转换规则: 1.若果两个操作数不可转换,则不做转换,返回值为Object类型。 2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换。int类型转换为long类型,long类型转换成float类型。 3.若两个操作数中有一个是数字S,另外一个是表达式,

2013-07-15 10:15:22 13955 4

原创 OC学习那些事:第一个OC类

一、创建一个新的OC类: 1.点击File->New File,打开Choose a template for your new file窗口,选择Objective-C class,点击Next按钮。 2.Choose options for your new file窗口,在Class中输入Student类名,Subclass of中输入子类NSObje

2013-07-14 08:45:39 2345

原创 OC学习那些事:第一个OC应用程序

一、XCode创建开发环境步骤 1.Welcome to Xcode窗口,选择Create a new Xcode project。 Create a new Xcode project:创建一个新的Xcode项目。 Connect to a repository:代码库 Learn about using Xcode:查询Xcode的用

2013-07-13 12:36:37 3176 1

iPhone开发秘籍(第2版)

详细讲解了IOS开发的内容,并有实战例子讲解。

2013-03-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除