863 views
# 杂七杂八的学习笔记 ###### tags: `blog` - docker 安装 angr 先安装docker,然后: ```shell= # pull the docker image sudo docker pull angr/angr # run it sudo docker run -it angr/angr ``` - 查看apk的签名: ``` keytool -list -printcert -jarfile app.apk ``` - x86有8个通用寄存器,x86-64(amd64)有16个,ARM有16个(x86-64就是amd64); - Java的Array和ArrayList的区别:Array的长度固定,ArrayList自动扩容; - Java的clone默认是浅拷贝: 1. If the class has only primitive data type members then a completely new copy of the object will be created and the reference to the new object copy will be returned. 2. If the class contains members of any class type then only the object references to those members are copied and hence the member references in both the original object as well as the cloned object refer to the same object. - Java的Comparator和Comparable的区别:Comparator是外部的比较器,用法是sort(list, MyComparator);Comparable是内部比较器,sort(list)时,list的元素的类实现了该接口; - Java的 == 和 equals():当且仅当A和B引用了同一个对象时,A==B 是true, Object.equals()的实现默认返回 == 的结果,String重写的equals进行逐个字符的值的比较; - Java对象实例的内存分配在堆中,但对象的引用本身的内存分配在栈中; - StringBuffer vs StringBuilder: 前者是线程安全的,因此效率更低,后者效率更高,但不线程安全; - String str1 = "abc"; String str2 = new String("abc"); String str3 = "a" + "bc", str1 == str3 != str2; 因为str1和str3的值在编译时就能确定,直接指向常量池中同一个字符串常量对象,而str2的值需要在运行时才能决定,str2这个引用指向的是堆中的一个String类型的对象,这个对象使用的也是和str1和str3同样的那个常量池中的字符串常量. 同样的字符串, 在常量池中永远都只有一个; - StringBuffer和StringBuilder的append比String的+操作的效率更高的原因是, String的char[]是final的,每次+操作都需要创建一个新的String对象,而StringBuffer和StringBuilder的char[]不是final的,不需要每次都创建新的对象,而是直接返回this; - Android多进程架构中,一个进程有一个独立的Application对象;新的进程启动时,会创建自己特有的一个Application对象; - C 语言文件打开模式 > r: 读 > w: 写 > a: 追加 > t: 文本文件,可省略不写 > b: 二进制文件 > +: 读和写 > >| 文件打开方式 | 意义 >|:------------------|--------------------- >| r | 只读方式打开文本 >| rb | 只读方式打开二进制文件 >| r+ | 读写方式打开文本文件,文件不存在时不自动创建 >| r+b | 读写方式打开二进制文件,文件不存在时不自动创建 >| w | 只写方式打开文本文件,文件不存在时自动创建 >| wb | 只写方式打开二进制文件,文件不存在时自动创建 >| w+ | 读写方式打开文本文件,文件不存在时自动创建 >| w+b | 读写方式打开二进制文件,文件不存在时自动创建 >| a | 只写方式打开文本文件,写时追加,文件不存在时不自动创建 >| ab | 只写方式打开二进制文件,写时追加,文件不存在时不自动创建 >| a+ | 读写方式打开文本文件,写时追加,文件不存在时不自动创建 >| a+b | 读写方式打开二进制文件,写时追加,文件不存在时不自动创建 - Linux 文件类型 >[Linux 文件类型](http://linux-wiki.cn/wiki/zh-hans/%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B_(%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F)) >|文件类型|表示符号|英文|备注 >|:- >|普通文件|-|Regular file >|目录文件|d|Directory file >|块特殊文件|b|Block special file|块设备文件 >|字符设备文件| c|Character special file|字符设备文件 >|先进先出|p|FIFO|named pipe,命名管道,用用于进程间通信 >|套接字文件|s|Socket >|符号链接|l|Symbolic link|软链接 DF_ERR_FILE_OR_PROCESS_NO_CHANGE