1、用的是apache的httpclient包,发现发送POST请求后,报一个异常:
SocketException: Bad file number
造成这个的原因是,过早地执行了HttpPost.about();这个方法应当是在响应完全结束,不再需要之后才能调用
2、android自带一个layoutopt命令,可以对xml布局文件提出一些优化的建议
3、“面向对象”开发,只是“结构化”开发的延伸。结构化开发封装了一些公共的操作,称为函数。而“面向对象”则对数据也进行了封装,所以可以说是“结构化”开发方法的更进一步。
当然现在“面向对象”的开发思想是主流,但是也并不是绝对可以替代结构化开发,比如说对以下的代码
public void method(int i){
switch(i){
case 类型1:{}
case 类型2:{}
case 类型3:{}
default:{}
}
}
public void method2(int i){
switch(i){
case 类型1:{}
case 类型2:{}
case 类型3:{}
default:{}
}
}
这个就是典型的结构化编程
public class 类型1 extends 基类{
public void method(){
// TODO 做一些操作
}
public void method2(){
// TODO 做一些操作
}
}
public class 类型2 extends 基类{
public void method(){
// TODO 做一些操作
}
public void method2(){
// TODO 做一些操作
}
}
这个是面向对象的编程
这2种方式其实各有好处,要看具体的场景。
如果是需要增加一个类型的话,那么结构化编程就不方便了,因为在method1()和method2()里都需要加入类型判断的语句,增加一个类,需要改动N个地方(如果有N个方法的话),在这种情况下,当然是面向对象的编程方式要好很多,只需要增加一个子类就可以了
但是如果是需要增加一个方法的话,反而是面向对象的编程方法更麻烦。因为在结构化编程中,只需要增加一个method3()就可以满足需求了,只有一个地方需要改动。而在面向对象编程中,每一个子类都需要改动。
所以,并不能说面向对象一定比结构化就好,因为面向对象不是银弹,只是结构化编程思想的延伸。具体优劣,取决于具体的场景
4、Json中的元素,是JsonElement,又具体分为JsonObject、JsonArray、JsonPrimitive和JsonNull
在JAVA中,JsonObject对应于对象和Map数据结构,JsonArray对应List、Collection、Set、[]等数据结构。JsonPrimitive就是基本数据类型,包括String、int、double等,JsonNull就对应null
5、把字段和getter方法隔离确实是有好处的。这次项目中,本来有一个字段叫做name,对应的getter方法就是getName()。可是后来为了json解析方便的需要,要把name改成siteName,如果没有getter方法的话,那所有的地方都要改动,那就太糟糕了。幸好有getter方法,只需要在方法内部改成
return this.siteName;
则所有的地方都不用改。最简单的getter方法,在这个时候就显得非常有用了
6、很多开源框架,都是在一个工程里开发编译,然后对外发布jar包的时候,拆分成多个jar包发布。比如logback,发布了logback-core.jar和logback-classic.jar;spring更是这样,拆分了10多个jar包出去