摘要: url编码又叫百分号编码现在的url编码十分混乱,都没有按照新标准来对汉字都按照不同的编码后再进行url编码2005年1月发布的RFC 3986,强制所有新的URI必须对未保留字符不加以百分号编码;其它字符要先转换为UTF-8字节序列, 然后对其字节值使用百分号编码。此前的URI不受此标准的影响。假如大家都按照这个标准来进行url编码,就不会出现各种乱码的问题了。现在来说说自己的苦恼:url编码标准规定,对于那些不安全字符(保留字符,不可打印字符)需要进行编码,编码的格式是%xx,就是百分号后面加上两个16进制的字符。对于汉字都是先转成特定编码格式如何gbk或者utf8格式。大家都知道gbk和 阅读全文
posted @ 2014-03-30 10:15 饮识止渴 阅读(1555) 评论(0) 推荐(0) 编辑
摘要: 在序列化时,有几点要注意的: 1:当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法和静态的成员变量。 2:如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存。 3:如果一个可序列化的对象包含对某个不可序列化的对象的引用,那么整个序列化操作将会失败,并且会抛出一个NotSerializableException。我们可以将这个引用标记为transient,那么对象仍然可以序列化 还有我们对某个对象进行序列化时候,往往对整个对象全部序列化了,比如说类里有些数据比较敏感,不希望序列化,一个方法可以用transient来标识,另一个方法我们可以在类里重写 阅读全文
posted @ 2014-03-04 15:42 饮识止渴 阅读(409) 评论(0) 推荐(0) 编辑
摘要: svn :trunk 日常开发branch 多版开发,或者修复bug,测试tag 开发到一阶段打一个tag,给外部使用属性externals:可以引用外部的公共工程。这个工程最好是稳定的,不改变的。。Peg Revision: SVN里的一个有趣的概念。一般情况下,我们指定SVN下的一个元素的一个版本,只需要使用path和版本号就可以了,但是某些特殊的情况下path加版本号是不能定位一个特定的版本的,因为有可能某个path会出现删除之后又被创建起来的情况,也就是说这个path可能对应多个不同的对象,这种情况下,仅仅指定一个版本号svn是不能定位的,必须再加上额外的信息。SVN于是定义了Peg 阅读全文
posted @ 2014-02-25 11:15 饮识止渴 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 无语无语啊。。。最近服务器采用https与android手机客户端进行通信,偶尔出现connection timeout...没办法只能抓个手机与服务器通信包,看看到底哪儿出问题了。。android手机转包方法:抓包准备1. Android手机需要先获得root权限。一种是否获得root权限的检验方法:安装并打开终端模拟器(可通过安卓市场等渠道获得)。在终端模拟器界面输入su并回车,若报错则说明未root,若命令提示符从$变#则为rooted;2. 如果Android手机尚未root,可通过superoneclick或其它方法进行root处理(需要先安装Microsoft .NET Frame 阅读全文
posted @ 2014-02-24 15:47 饮识止渴 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 在android项目中要实现一个需求为了性能的要求只能用c代码来实现功能。这样就牺牲了java跨平台性。通过加载.so的方式,把用c实现的模块集成到app中。android提供jni层,作为一个适配器。可以在java层调用c接口,在jni层可以通过java提供的反射机制调用java接口和创建java对象。最后需求完成了,自测也没问题,嘻嘻,自己也开心了一下,但是提交测试后,测试人员马上报了一个bug。出现local reference table overflow (max=512)这样的一个错误。我去,尽然出现了崩溃。google和百度了半天,才发现原来发生了jni层的内存泄露,导致了崩溃。 阅读全文
posted @ 2014-01-15 00:10 饮识止渴 阅读(7558) 评论(0) 推荐(1) 编辑
摘要: 最近在做一个项目中需要,在android对一个密码字段首先进行一次md5加密后再进行一次rsa加密,然后把加密的结果通过json协议传输给nginx服务器进行解密。在android中,可以直接使用java提供Cipher类来进行加密,nginx服务器使用openssl来进行解密。android客户端使用RSA加密的字段,要使nginx服务器能正常解密,这里需要客户端和服务器统一RSA加密所用的填充方式。RSA加密常用的填充方式有下面3种:1.RSA_PKCS1_PADDING 填充模式,最常用的模式要求:输入:必须 比 RSA 钥模长(modulus) 短至少11个字节, 也就是 RSA_si 阅读全文
posted @ 2014-01-02 10:37 饮识止渴 阅读(40626) 评论(0) 推荐(0) 编辑
摘要: 前一段日子,我在做rsa加密和通过http get方式获取验证码图片通过BitmapFactory创建bitmap出现了一系列的问题。通过一系列的调试,发现有些问题原来是在进行String 与Byte[]之间转换造成的。哎,android新手伤不起啊。。。。。java 默认String在内存中的编码是ucs-2编码。当你要把byte[]转换成String时,这里就涉及到了编码转换的问题,假如你不指定byte[]里面的编码,那可能在转换后会有问题。假如你没有指定byte[]里面所用到的编码,转换就会根据当前系统环境给你指定一个编码,在android系统中就会默认byte[]中的数据是用utf8编 阅读全文
posted @ 2013-12-30 16:08 饮识止渴 阅读(932) 评论(0) 推荐(0) 编辑
摘要: 前几天在android开发中做了一个loginHelper的单例。(不考虑多进程的情况)在初始化loginHelper单例时。做的一些初始化工作出现了问题。出问题的初始化工作:首先随机产生了rsa秘钥对。然后想把这个秘钥对保存在SharedPreference中。不论android的SharedPreference还是android的NSUserDefaults都是来存储用户对程序进行的一些偏好设置。在文件系统都是xml文件。错误表现:程序保存在xml文件中的秘钥对与程序产生的秘钥对,不吻合。分析问题:顿时,我在想为啥在单例模式下还出现了这个问题呢,最后发现,原来我用的单例模式的方法不是线程安 阅读全文
posted @ 2013-12-24 13:56 饮识止渴 阅读(368) 评论(0) 推荐(0) 编辑