了解GC和内存分配,有助于我们排查各种内存溢出、内存泄露问题。当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 继续阅读
《深入理解Java虚拟机》读书笔记——内存
对于Java程序员,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,且不容易出现内存泄露和内存溢出问题。 继续阅读
越狱iOS开发环境Theos搭建
以OS X 10.9.3为例,手机系统为iOS 5.1.1。
准备工作
1.Mac上需安装常规开发的工具(git、make、perl等),还需要iOS的SDK。
2.iPhone中安装OpenSSH服务器。 继续阅读
Android编译平台搭建与TaintDroid源码编译
TaintDroid是一个自定义的Android ROM,通过数据流的跟踪技术实时地对用户的隐私数据进行监控。要获得带有TaintDroid功能的Android系统,需要下载Android与TaintDroid代码进行编译。
本文基于2013年1月22日发布的TaintDroid。 继续阅读
Linux下NAT转发的三条命令
1 2 3 |
# iptables -A INPUT -i eth1 -j ACCEPT # echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE |
-i为入口,-s为源IP,-o为出口。 继续阅读
《Java编程思想》读书笔记——Java I/O系统
序列化的控制
默认的序列化机制并不难操纵。然而,如果有特殊的需要那又该怎么办呢?例如,也许要考虑特殊的安全问题,而且你不希望对象的某一部分被序列化;或者一个对象被还原后,某子对象需要重新创建,从而不必将该子对象序列化。
在这些特殊情况下,可通过实现Externalizable接口——代替实现Serializable接口——来对序列化过程进行控制。这个Externalizable接口继承了Serializable接口,同时增添了两个方法:writeExternal()和readExternal()。这两个方法会在序列化和反序列化还原的过程中被自动调用,以便执行一些特殊操作。 继续阅读
解决Java写入UTF-8文件中文乱码问题
最近需要从Java中输出UTF-8编码的XML文件,遇到了两次中文乱码问题。一是奇数个汉字出现乱码,二是写入文件的实际编码与XML声明的编码不符。经过几番折腾,终于解决这两个问题,也对Java的字符编码加深了了解。 继续阅读
《Java编程思想》读书笔记——数组
数组与其他种类的容器之间的区别有三方面:效率、类型和保存基本类型的能力。
P433 继续阅读
《Java编程思想》读书笔记——泛型
简单泛型
有许多原因促成了泛型的出现,而最引人注目的一个原因,就是为了创造容器类。
一个只能持有单个对象的类,这个类可以明确指定其特有的对象类型。
不过,这个类的可重用性就不怎么样了,它无法持有其他类型的任何对象。 继续阅读
《代码的未来》读书笔记——多核时代的编程
什么也不用考虑,随着时间的推移CPU自然会变得越来越快,这样的趋势也快要接近极限了。长期以来,软件开发者一直受到硬件进步的恩惠,即便不进行任何优化,随着计算机的更新换代,同样的价格所能够买到的性能也越来越高。不过,现在即便换了新的计算机,有时也并不能带来直接的性能提升。要想提升性能,则必须要积极运用多核以及CPU的新特性。
最近,GPGPU(General Purpose GPU,即将GPU用于图形处理之外的通用编程)受到了越来越多的关注,由于GPU与传统CPU的计算模型有着本质的区别,因此需要采用专门的编程技术。 继续阅读