命令/知识点总结




  $echo "Did you know that:";whatis $(ls /bin | shuf -n 1)  #每日提示.
  $shuf -i 2000-65000 -n 1  #产生一个2000-6500的随机数;
  静默安装: #LD_LIBRARY_PATH=/vendor/lib:/system/lib pm install -r /sdcard/apk.apk
  shell启动apk: $am start -n com.nobody.appfilter/com.nobody.appfilter.ui.SplashScreen
  $sudo gedit ~/.profile $source ~/.profile   #修改配置文件,配置JAVA_HOME变量;
  $sudo gedit /etc/environment  #修改环境变量;   $source /etc/environment  #重启;
  $sudo gedit /etc/sudoers  #修改ubuntu安全路径;编辑secure_path
  $sudo apt-get update  更新软件包资源;
  $tar -cvf /home/www/images.tar /home/www/images    仅打包,不压缩
  $tar -zcvf /home/www/images.tar.gz /home/www/images   打包后,以gzip压缩
  $tar -zxvf /home/images.tar.gz  解压
  $chmod a+x  jdk.bin  $./jdk.bin    安装jdk。
  $sudo update-alternatives --install /usr/bin/java java /home/intelgb/ubuntu_64_backup/jdk1.6.0_45/bin/java 300   #修改路径。
  $grep "listViewStyle" -rn ./    #列出所有包含listViewStyle内容的文件名字和文件行。     
  $grep "listViewStyle" -rl ./    #列出所有包含listViewStyle内容的文件名字。
  $adb shell am start -n path of your activity    #然后闪退
  $which bash       $vim /ete/profile  #修改所有用户.   $. profile  #重启。
  $ibus-daemon -d -x -r     #启动 ibus
  $godir BrightnessListener.java      #跳转。
  $gpg --gen-key  #根据提示进行创建 #在Linux系统中,gpg程序可以实现非对称加密。
  $rm /var/lib/apt/lists/* -vf     #删除list。
  $sudo apt-get remove vim-common  #卸载软件,解决安装依赖问题。
  $find  ./   "abc"    #查文件名用find
  $grep  -R 'abc' ./    #查内容用grep   $godir PackageParser.java  #android的跳转。
  $find . -type f | xargs grep -l 'abc'      $find . -type f -exec grep -l 'abc' {} \;  #在当前目录下,查找所有内容包含‘abc'的文件
  $find -type f|xargs echo;  $find -type f -exec echo file {} \;  #做对比,前者一次,后者相当于执行了多此echo;
  $pwd   #显示当前目录。  $cat /proc/cpuinfo  #显示cpu信息。
  $cp -avx /home/* /mnt/newhome
  $sudo dmesg|tail -f   #打印最近一次信息 #检测和控制内核环缓冲。程序用来帮助用户了解系统的启动信息。
  $head -6 readme.txt   #displays the first 6 lines of a file.
  $tail -f /usr/tmp/logs/daemon_log.txt   #动态显示该log文件的动态更新。
  $tail -3 /etc/passwd|tac    #列出三个最新建的使用者帐号.
  $locate   命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。
  $aapt dump badging apk.apk  #解析出apk包的配置文件信息.
  $losetup  #循环设备可把文件虚拟成区块设备.
  $cat $(find ./ -name '*.java')|wc -l; #统计java代码行数   $find $PWD -name '*.java'; #当前目录的java文件.
  $su - intelgb  #切换身份.   $env | grep intelgb    #输出用户intelgb的环境配置,然后exit退出intelgb的环境。     $id  #输出当前用户,用户组信息
  $sudo apt-get remove ubuntu-one  #Ubuntu one云存储;由Ubuntu背后的公司Canonical所推出的一项网络服务;该服务能够存储你的文件,并允许你在多台电脑上同步,还可以与好友分享这些文件;
  命令模式下,按‘/’,然后输入要查找的字符,Enter。?和/的区别是,一个向前(下)找,一个向后(上)。按n查找下一个匹配单词,按N查找上一个匹配单词。
  $dx --dex --output=foo.jar Foo.class    #生成手机可执行的jar包。
  $make snode   #快速打包system.img    $adb shell dumpsys activity  #显示系统信息.
  $make update-api;make PRODUCT-sdk-sdk  #重新生成sdk.
  $adb push foo.jar /data/app  #保存到手机。
  $adb shell dalvikvm -cp /data/app/foo.jar Foo  #执行Foo.java中的main函数。
  $godir ViewRootImpl.java  #android打开文件所在目录。   $make  #编译整个系统。
  $croot  #android回到home目录。
  vim:Ctrl+d #将光标向下移到文件尾,通常每次移动12行;   Ctrl+u #向上;   ctrl+w两次 #与菜单切换;
  vim:跳转到函数、变量定义处:[+ctrl+i 跳转到函数、变量和#define; [+ctrl+d 跳转到#define处; ctrl+i 向前跳到前几次光标位置;ctrl+o 向后跳到后几次光标位置.
  vim:hjkl这是代替箭头键功能的,HML跳到屏幕的顶上/中间/下方.  CTRL-F向前一页; CTRL-B向后一页;   u撤销;
  vim: :sp [filename] #水平拆分;  :vsp [filename] #垂直拆分;  ctrl+w+hjkl或者ctrl+w+方向键  #切换当前活动的分屏;   
  vim:ctrl+w+c/q/o  #其中o表示只留下当前活动分屏,关闭其他的。而c和q则是关闭当前活动分屏,但是当只剩下一个分屏的时候ctrl+w c则会提示不能关闭,ctrl+w q则会退出程序;
  vim: yy,整行复制(将一行复制到寄存器);  3yy,多行复印(复制3行); yw,复制一个单词;
  vim: %,跳到与当前括号匹配的括号处,如当前在{,则跳转到与之匹配的}处;     #G:15G,跳转到15行。     ctrl+e:下滚一行。    gg:跳转到文件首。
  vim: 底行,set list  #空格,末尾现实$符号;  F2,显示函数列表;   ctrl+-,缩小;  ctrl+shift+-,放大;  ctrl+r,重做;
  vim注释多行:ctrl+v 之后,然后按j或者k,选择要注释的多行,然后按 I (注意大写),进入插入模式,然后写下//,然后按下ESC即可。
  vim替换命令:[range]s/pattern/string/[c,e,g,i]  eg: 20,23s#^#//#g    
  $ctags -R *    #在android源码根目录下。   $lunch 6  #aosp_flo-userdebug  $make -j4  #两个核build;在这之前,现在当前工程下mm一下检查语法错误。
  $fastboot oem unlock #解锁.    $fastboot flash recovery "TWRP的文件名".img #刷入Recovery包.
  CWM,CWR,ClockworkMod Recovery,谷歌安卓系统刷机软件;上下键选择方式;
  TWRP,TeamWin Recovery Project,国外android爱好者开发的一款工具;主要作用包括刷机(cm7/cm9/miui等),备份,恢复等;有触摸操作;
  fastboot包,其实是多个需要fastboot来刷在多个分区的分区镜像,以及刷分区镜像的脚本打包而成;
  $adb reboot bootloader  $fastboot devices   $fastboot reboot     $adb root   $adb remount   $make update-api;make PRODUCT-sdk-sdk  #重新生成sdk.  
  $fastboot flash boot boot.img     $fastboot flash recovery recovery.img    $fastboot flash system system.img    $fastboot flash userdata userdata.img #flash之前不需要erase;
  #新生成sdk,out/host/linux-x86/sdk/*.zip;镜像文件在/out/target/product/flo/*;
  $adb push out/target/product/flo/system/framework/framework.jar /system/framework/framework.jar
  $adb reboot    $adb logcat    $emulator -image system.img -data userdata.img -ramdisk ramdisk.img
  #mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system     #chmod 777 /system    $fastboot flashall -w
  $adb logcat -s *:E  #打印Error信息。   $adb logcat -s 2222:V *:E  #打印tag为2222的Verbose信息,和Error信息。
  $adb get-serialno  #打印设备序列号。   $adb usb    #restarts the adbd daemon listening on USB
  shell:Ctrl+Shift+C=复制,Ctrl+Shift+V=粘贴”
  cscope的强项,ctags不行。
  $out/host/linux-x86/sdk/android-sdk_eng.hlin74_linux-x86/platform-tools/fastboot     $cd out/target/product/flo/
  $adb pull /mnt/sdcard/appfilter/ appfilter   $adb shell rm /mnt/sdcard/appfilter/*.png  
  $adb shell rm /mnt/sdcard/appfilter/down/*.apk
  sqlite>.schema tableName  #显示创建语句.  sqlite>.table #显示所有表名.   sqlite>.h on #显示表字段命令.
  $ndk-build clean #清掉二进制文件 $ndk-build NDK_DEBUG=1 #可调试版的二进制文件  $ndk-build NDK_DEBUG=0 $编译为release版  $ndk-build V=1 #执行build且打印所执行的详细编译命令。
  $ndk-build #实质是对GNU Make的封装,它的目的是调用正确的NDK编译脚本,它等价于make -f $NDK/build/core/build-local.mk [参数]
  $update-alternatives --config java;#察看java的安装路径;
  $export no_proxy=*.intel.com;#设置无代理;   $ping jyin11-desk.ccr.corp.intel.com;#测试;
  $rcp file1 doc:/home/user;#将文件file1,拷贝到工作站doc路径/home/user之目录下;#rcp[-r]source hostname:destination;拷贝文件或目录至远端工作站;
  $rcp doc:/homeuser/user/file1 file2;#将工作站doc中,位于/home/user目录下之文件file1,拷贝到目前工作站之目录下,文件名改为file2;
  $ssh [email protected]; #Secure Shell;之后输入用户密码;
  $sudo losetup /dev/loop0 test.img; #设置循环设备;可把文件虚拟成区块设备,籍以模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用;
  $sudo kpartx -av /dev/loop0 #让Linux内核读取设备上的分区表,然后生成代表相应分区的设备;
  $sudo mount -o loop test.img  /mnt/cdrom; #挂载镜像;出现“您必须制定文件系统类型”是因为img镜像中有mbr,也就是有引导信息,以致于系统无法识别;所以需要绕过mbr;
  $unyaffs system.img; #提示Segmentation fault (core dumped),应该用$simg2img命令;
  $curl "http://115.28.61.1:8080/appfilter/api/91/list"  #黑白名单的get请求;
  $curl -d '{"imei":"testCurl","terminalModel":"XT890","apps":[{"appSysType":1,"versionName":"2.7.0","packageName":"com.youku.phone"}]}' http://115.28.61.1:8080/appfilter/app/getX86List  #优化post请求;
  $cat /proc/cpuinfo; #查看CPU信息;
  $sudo lshw; #显示当前硬件信息;
  $sudo dmidecode; #以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息;信息包括了硬件以及BIOS,既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等;
  $free -m |grep "Mem"; #显示当前内存大小;
  $wget http://www.baidu.com/img/bdlogo.gif; #下载文件;支持断点续传;
  $sudo gedit /etc/apt/sources.list; #apt-get列表源;  $sudo apt-get autoclean;
  $nano是一种单模式编辑器;编辑配置文件时加-w参数;
  $cat /etc/issue;  $cat /proc/version;  #查看系统/内核版本;   $lsusb; #查看usb信息;
  sql>.header on; #显示表结构;
  $vi 或 touch是创建文件的命令; cat也可以;
  $cat /sys/class/net/eth0/address;   $ifconfig -a;  $ip link show;   $ip address show; #linux查看mac地址;
  $cat /proc/net/arp;  查看连接到本机的远端ip的mac地址;
  $ls -l |grep "^-"|wc -l; 统计文件个数;
  $uptime; 获取主机运行时间和查询linux系统负载的;
  $top/free;  内存占用大的原因,结果中used已使用的内存表示总计分配给缓存(包含buffers与cache)使用的数量,但其中可能部分缓存并未实际使用;







  应用共享Bitmap的延时bug解决;界面全局刷新的bug解决; 状态显示与逻辑解偶; 状态的判断逻辑问题;
  腾讯老员工,不管涨跌,连续七年买股票,目前资产过亿;某上市国企老员工,同样,最终宝马换自行车。--> 坚持的前提是选择正确。看穿了得到了就淡然处之,看不穿亏欠了就泰然处之。
  和谐是软实力,发展是硬道理。
  root原理,三步过程: adb push su /system/bin ; adb push SuperUser.apk /system/app  ; adb shell chmod 4755 /system/bin/su
  DecorView,ViewRoot,WmS;
  Bridge桥梁模式,抽象化与实现化解耦;
  RTC(Real_Time Clock)实时时钟. RTC 是集成电路,通常称为时钟芯片。
  "adb没有那个文件或目录:64bit的系统,sdk只有32bit的程序,需要安装ia32-libs,才能使用。$sudo apt-get install ia32-libs  
  arm专,x86同。ARM的优势不在于性能强大而在于效率,ARM采用RISC流水线指令集,在完成综合性工作方面根本就处于劣势,而在一些任务相对固定的应用场合其优势就能发挥得淋漓尽致。奉行“够用就好”的原则。
  Android目前的ROOT的基本原理,是通过系统漏洞获取ROOT SHELL权限,然后往手机里面push 最核心的两个文件,su可执行文件和superUSer.apk。后者用于管理对应用的授权,而前者则真正用来提升权限至ROOT。
  “I'm Feeling Lucky”(谷歌中为“手气不错”)(另一个自然是“Search”),用户如果在搜索中选择按下这个按键,将会被直接带到Google认为“最准确”的搜索结果,节约你的搜索时间。用户将没有机会看到搜索序列旁的广告,从而点击为Google带来收入。
  Google开发了开放式的Android系统后,统一了ARM结构电脑的操作系统,使新推出基于ARM结构的电脑系统有了统一的、开放式的、免费的操作系统,为ARM的发展提供了强大的支持和动力。
  walkie talkie一种小型便携式无线电通话设备。它的特点是体积小、重量轻、输出功率小、耗电省、携带方便。一般采用单工无线电话工作方式,可手携、佩带或背负使用,发信机输出功率通常为数十毫瓦到数瓦,采用短小的鞭形天线,通信距离为数百米到数千米,军队中主要用于营以下分队。
  飞行模式替代关机闹钟.
  一般智能手机的硬件架构都是分为RF,BB,AP这三个部分,RF射频部分的功能主要是接收和发射射频,关机闹钟功能无需关注此模块。而AP部分就是应用程序处理器,即CPU模块;BB部分则是基带模块。
  通常手机关机都是AP模块完全断电,而BB模块虽然处在关机状态,但实际上闹钟和时间部分并没有断电。而当所设置闹钟到点时BB模块会自动给AP模块上电,这样系统也就能开机并激活闹钟功能了。所以一款手机是否支持闹钟功能,取决于BB模块功能和硬件设计。
  RF:RadioFrequency;
  UI线程:不要阻塞UI线程;只能在主线程操作UI。  非主线程更新UI,三种方式:Handler;View.post(Runnable);Activity.runOnUiThread(Runnable)。
  判断是否为主线程:if(Looper.myLooper()==Looper.getMainLooper()){****}
  ViewRoot::checkThread
  Android中,对系统中的所有窗口进行管理是窗口管理服务WindowManagerService的职责。
  Android中,同一时刻,只有一个Activity窗口是激活; 对于WindowManagerService服务来说,这并不意味着它每次只需要管理一个Activity窗口.
  在Android NDK(x86)中使用yasm编译器。
  linux平台下的GCC(MinGW2.95):由GNU之父Stallman所开发的linux下的编译器,全称为GNU Compiler Collection.目前可以编译的语言包括:C,C++,Objective-C,Fortran,Java,Ada,可以在其官方页面找到更加详细的信息.
  FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
  GPL,是General Public License的缩写,是一份GNU通用公共授权非正式的中文翻译。
  访问apk文件:new File(getPackageManager().getApplicationInfo("com.uc.addon.qrcodegenerator", 0).sourceDir);
  这样也行:  File fileApk = new File("/data/app/com.intel.appfilter-1.apk");
  系统 -> 系统管理 -> 语言支持,在列表中的Chinese条目打勾。
  去除广告:修改classes.dex文件中的广告地址;重新签名即可;
  当处理一些耗时的资源加载的时候需要做到以下几点,以使你的加载更快更平滑:1.适配器在界面主线程中进行修改;2.可以在任何地方获取数据但应该在另外一个地方请求数据 3.在主界面的线程中提交适配器的变化并调用notifyDataSetChanged()方法;
  houdini 是intel 研发的ARM binary translator。它的原理在于把ARM的二进制代码转译为X86指令集,使得可以在X86的CPU上执行。
  Intel是移动市场的新进者,最近出了几款面向移动市场的SOC,面对应用程序支持缺乏的问题,有两条路可以走:1.逐家拜访应用开发商,要求他们重新为intel的cpu编译一份应用;2.使用二进制转换,使得已有的应用可以运行在intel的cpu上;
  Null不能解析:properties-->C/C++General-->PathsAndSymbols-->GNUC-->android-ndk-r9b/platforms/android-14/arch-x86/usr/include/linux;
  连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。不可以对文件夹建立硬连接的,我们通常用的还是软连接比较多。
  软链接实际上只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理;相反,硬联接为文件开设一个新的目录项,硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。由于这个原因,硬链接不能连接两个不同文件系统上的文件。1,软连接可以 跨文件系统,硬连接不可以。2,关于I节点的问题 。硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加,只要结点的连接数不是 0,文件就一直存在,不管你删除的是源文件还是 连接的文件。只要有一个存在 ,文件就 存在 (其实也不分什么源文件连接文件的 ,因为他们指向都是同一个 I节点)。3,软连接可以对一个不存在的文件名进行连接。4,软连接可以对目录进行连接。
  GitHub是个网站,Git是个软件。
  vim是vi的升级版本,它不仅兼容vi的所有指令;vim优势,多级撤消,易用性,语法加亮,可视化操作,对vi的完全兼容;
  Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言。
  CPU频率,CPU信息:/proc/cpuinfo和/proc/stat.通过读取文件/proc/cpuinfo系统CPU的类型等多种信息。读取/proc/stat 所有CPU活动的信息来计算CPU使用率.
  主线程的ThreadId为1。加载类为dalvik.system.PathClassLoader*。获取UI线程mContext.getMainLooper().getThread()。mView.post(new Runnable(){**});
  在ViewRootImpl初始化时,mThread=Thread.currentThread();   ViewRootImpl.checkThread():if(mThread!=Thread.currentThread()){ ** }
  ctags是vim的一个非常有用的插件,可以大大提高程序编码(C、C++)的效率,比如快速调整到函数、变量定义处等等常用。
  分辨率对应DPI: "HVGA--mdpi";"WVGA--hdpi";"FWVGA--hdpi";"QHD--hdpi";"720P--xhdpi";"1080P--xxhdpi"。
  Eclipse无法调试:Window --> Preferences --> General --> Network connections, choose 'Native' as Acrive Provider.
  svn提交405错误: 方法一,删除问题文件,更新;方法二,删除父目录,更新;
  Ndk中,c调java方法,反射机制,调用静态方法/非静态方法有差别;
  NativeActivity中,使用了SurfaceView,把屏幕绘制过程交给c线程去处理。  截屏共享也使用了该方法。
  POSIX 表示可移植操作系统接口Portable Operating System Interface.
  android中c解码,用到pfnDecodeVideoThenRender;
  final的修饰的变量是不能修改的。
  反射的使用:获得类,直接newInstance();获取方法,通过方法invoke();
  ctrl+Q,返回上一次编辑地方;  alt+上下,上下移动行;  alt+左右,ctrl+F6,切换编辑窗口;   shift+alt+R,所有相关变量重命名;   ctrl+l,跳转到行;    
  ctrl+T,查看类的继承关系;  ctrl+shift+F,格式化;    ctrl+w,关闭当前窗口;    ctrl+g,在class中字符匹配查找。  ctrl+h,调出查找框。  
  ctrl+shift+p,括号匹配跳转;  ctrl+m,全屏/缩小;    ctrl+shift+r,打开资源;   ctrl+.及ctrl+1:下一个错误及快速修改;
  ctrl+shift+o,快速引用相应资源;   F3,打开的声明;   ctrl+shift+t,打开类型OpenType;  Shift+Alt+M,抽取方法;
  alt+1/2/3,切换shell窗口;     ctrl+alt+L,锁屏;
  DumpViewHierarchyForUiAutimator. 查看屏幕布局信息。
  CursorWindow <--> SQLiteCursor.  
  ffmpeg概念有:容器,流,帧,包。    
  telnet:TcpIp协议,是应用层协议;不是socket协议.
  给需求方看的日志;
  Linux底层的内存管理用伙伴分配器算法(buddy system);
  伙伴分配的实质就是一种特殊的“分离适配”,即将内存按2的幂进行划分。其优点是快速搜索合并(O(logN)时间复杂度)以及低外部碎片(最佳适配best-fit);其缺点是内部碎片,因为按2的幂划分块,如果碰上66单位大小,那么必须划分128单位大小的块。但若需求本身就按2的幂分配,比如可以先分配若干个内存池,在其基础上进一步细分就很有吸引力了。
  二维码共有40个尺寸(版本Version);Version1是21x21的矩阵,Version2是25x25的矩阵,每增加一个version,就会增加4的尺寸;公式是:(V-1)*4+21(V是版本号)最高Version 40,(40-1)*4+21 = 177,所以最高是177 x 177 的正方形。
  Enumeration的对象操作比List对象耗时,效率相差8倍.两个对象可以互相转换.
  WiDi(Intel WirelessDisplay)全称为无线高清技术,它是通过WiFi信号来实现电脑和显示设备的无线连接。
  su是最简单的身份切换命令.他可以进行任何身份的切换.  eg: $su - intelgb  #切换身份.   $su intelgb -c "echo loginSuccess"   #切换到intelgb用户执行echo命令.
  su命令和su -命令最大的本质区别:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。 su命令称之为半切换.
  System.identityHashCode(mObject);//取object对象的唯一标识,内存地址;//adapter中有进度条更新.
  android:gravity用于设置View组件的对齐方式(对内而言),而android:layout_gravity用于设置Container组件的对齐方式(对外而言)。
  dispatchDraw(); //本质是给不同子视图分配合适的画布.Tag挂上去的效果可以在此实现;挂上效果也可以通过FrameLayout调用addView方法实现;
  skia是个2D向量图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现.Chome浏览器和android采用了skia.
  单片机是芯片,控制弱,片内资源非常少;arm是一种处理器,运行精简指令集; intel也是一种处理器,运行复杂指令集.
  把某一个对象转换为final对象,该对象的堆内存不变;
  优化扫描速度:遍历Enumeration非常耗时,把枚举转换为ArrayList后遍历就非常快;提高8倍.
  ArrayList擅长遍历操作;HashMap擅长查找操作;map遍历mMap.keySet().iterator();遍历list时可同时执行删除操作,但遍历hashMap时不能执行删除操作,java.util.ConcurrentModificationException;
  IoC/DIP其实是一种管理思想:技术上,开关从依赖设备这种情况,变成了,设备反过来依赖于开关所定义的接口;生活中案例,交易过程中银行担保(证交所,淘宝);一个业务平台需要接入各种各样的业务系统,可采用依赖倒置和反转控制;
  coolshell,百度来的链接会弹出提示框,js代码var url=document.referrer,
  有些网站禁止复制,是通过js实现的,在安全里面把js禁用就可以复制了.
  HashMap/HashTable,ArrayList/Vector,StringBuilder/StringBuffer,前者不是线程安全的;后者线程安全,用synchronized方法
  HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序;HashMap非线程安全,TreeMap非线程安全;
  预安装,不能卸载:预安装应用放在系统目录下;/system/app/目录,无root权限就无法卸载;  /system/app/BaiduMusic.apk#系统定制应用,只显示停用,不显示卸载;
  预装到/system/app下的apk可以不是系统签名;  系统签名的应用可以sharedUserUid; root用户通过调Pm.java的方法;   (都可以实现静默安装)
  /system/framework/framework-res.apk #系统资源文件; /data/app/Dianping.apk#第三方应用; /mnt/asec/comp.petpest.pvz-1/pkg.apk #/mnt/asec是/mnt/sdcard/.android_sec挂载在不同地方;手机上安装在SD卡上的软件;
  安装应用的方式:通过Intent,调出系统PackageInstaller应用;直接调用mPackageManager.installPackage(*),系统应用申请到的权限;
  执行install命令,Runtime.exec(String[] args),Class.forName("android.os.Exec");执行cp / adb push命令。
  android属性,match_parent和fill_parent的是一样的,历史原因,值都是-1.
  android属性,windowSoftInputMode,调整布局与输入发的关系。
  应用自启动:监听boot_complete消息实现;
  android.graphics包下,PathEffect对象;  mPaint.setPathEffect(mPathEffect); canvas.drawPath(mPath,mPaint);
  mPackageManager.queryIntentActivityOptions(mIntent);//返回能够处理mIntent的应用信息列表.//显示在桌面上的icon.
  mPackageManager.getInstalledPackages();//Return a List of all packages that are installed on the device.//已经安装的应用.
  dip:device independent pixels(设备独立像素);dp:和dip是一样的; 屏幕的高分成480分,宽分成320分;比如你做一条160dip的横线,无论你在320还480的模拟器上,都是一半屏的长度.
  px:pixels(像素),不同的设备不同的显示屏显示效果是相同的,这是绝对像素,是多少就永远是多少不会改变;   sp:scaled pixels(放大像素).主要用于字体显示best for textsize。
  scale = context.getResources().getDisplayMetrics().density;      pxValue=(int)(dipValue*scale+0.5f);   dipValue=(int)(pxValue/scale+0.5f);
  备注:google推荐,像素统一使用dip,字体统一使用sp.
  HttpGet-->HttpRequestBase-->AbstractHttpMessage-->Object. //org.apache.http.impl.client包下.
  DefaultHttpClient-->AbstractHttpClient-->Object. //HttpResponse mHttpResponse = mHttpClient.execute(mHttpGet);
  HttpURLConnection-->URLConnection-->Object.  //java.net包下,属于jdk的. //android上,google推荐使用.
  cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用; MIT(开源软件许可协议).
  横屏,xml文件存放在res/layout-land/目录下.    
  横竖屏切换会调用Activity生命周期的onDestroy(),onCreate();也调用onSaveInstanceState()方法;  不销毁对象onRetainNonConfigurationInstance(),或者自己处理,配置manifest文件,重写onConfigurationChanged()方法.
  静音拍照:关键是伪装;eg,帧布局,SurfaceView隐藏在提示框下;
  为应用程序加锁:定时扫描,并执行检查,(ActivityManager)mContext.getSystemService("activity");//获取正在运行任务;   加锁程序不出现在最近任务列表,android:excludeFromRecents="true";
  广播接收者接收顺序,普适原则:同等优先级的动态接收器,先注册的先接收;同等优先级的静态接收器,接收广播的顺序与String[] java.io.File.list()顺序一致;
  非ordered广播:动态接收器高优先级 > 动态接收器低优先级 > 静态接收器高优先级 > 静态接收器低优先级.
  获取notification信息:$adb shell dumpsys notification;   运用正则表达式,Pattern mPattern = Pattern.compile("pkg=[^\\s]+");  
  root病毒程序修改su.db,一次root权限,永久使用:可通过sqlite3直接修改数据库.
  root,使应用不出现在launcher列表,$pm disable cn.eoe.wiki;   $pm enable cn.eoe.wiki
  mAdapterView.getCount();//The number of items owned by the Adapter associated with this AdapterView. (This is the number of data items, which may be larger than the number of visible views.)
  mAdapterView. getFirstVisiblePosition();//Returns the position within the adapter's data set for the first item displayed on screen.
  mViewGroup.getChildCount(); //Returns the number of children in the group. //当ListView中的 Item 比较少无需滚动即可全部显示时,二者是等价的;当Item个数较多getChildCount()<getCount();
  许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
  $ffmpeg -i video.avi;//获取视频的信息    $ffmpeg -f image2 -i image%d.jpg video.mpg;//将图片序列合成视频    $ffmpeg -i video.mpg image%d.jpg;//将视频分解成图片序列
  $ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3;//从视频抽出声音.并存为Mp3
  VNC (Virtual Network Computing)是虚拟网络计算机的缩写。VNC 是一款优秀的远程控制工具软件.
  版本Version,Release,Build和Edition的区别:Version,强调功能性;Release,强调软件由调试/内测阶段转为正式发布/发行阶段;Build,开发阶段;Edition,强调软件的目标受众,通常表示按特定对象/特定群体进行分类的软件版本。
  Android依据潜在风险(ProctectionLevel属性)把perssion划分四级,normal/dangerous/signature/signatureOrSystem;INSTALL_PACKAGES属于后两者,
  git分布式版本管理系统,它的版本提交标识为uuid; svn的版本提交记录为数字; git认证,有一个专门机构管理帐号,公钥/私钥方式; git只在根目录下建一个.git目录;
  $git init;#创建新的空的本地仓库   $git add .;#把全部文件添加到暂存区   $git commit -m 'project init';#创建提交  $git checkout master;#进入master分支 $git checkout -b <branchName>;#检出分支
  $git branch -a;#查看本地和远程分支-a   $git branch -d xxxxx;删除本地分支  $git checkout <fileName>;#放弃修改
  AOSP:"Android Open-Source Project",中文意为"Android开放源代码项目"
  Bionic C 核心思想,简单化;即C库应该只提供对内核功能的轻量级封装,不应该过于智能化,考虑太多的边界条件;和glibc相比,程序启动速度,提升近两个数量级;
  Syscall stub,每个系统调用函数都是用一段小型汇编码(即syscall stub)实现的,这些syscall stub是由tools/gensyscall.py通过读取SYSCALL.html生成的;
  SYSCALL.html包含要生成的syscall stub,相应的系统调用号(x86与arm不同),及相应的签名;
  如果你想修改SYSCALL.html,可以利用tools/checksyscalls.py来比较SYSCALL.html和Linux内核头文件;当发现无效的系统调用号时,就会报告错误;
  $mkyaffs2image **; #Android源码中的system.img文件的生成;
  安装提示INSTALL_FAILED_DEXOPT,dexopt不是一个单词,是dex和optimize的合成缩写; /data/app目录,/data/app-priviate目录,/data/data目录,/data/system目录的package.xml文件,Wipe Dalvik缓存;
  开机动画(显示android与shine):源码位置/frameworks/base/cmds/bootanimation/BootAnimation.cpp; 图片/frameworks/base/core/res/assets/images/android-logo-*.png;
  The ProGuard tool shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure names.
  dump.txt:Describes the internal structure of all the class files in the .apk file;//混淆后,apk的类文件组织结构;
  mapping.txt://映射关系;
  seeds.txt:Lists the classes and members that are not obfuscated;//没有混淆过的类;
  usage.txt:Lists the code that was stripped from the .apk;//没有被调用过的方法和变量;
  $retrace.bat -verbose mapping.txt obfuscated_trace.txt  #调试时,反映射;
  TPM安全芯片,是指符合TPM(Trusted Platform Module,可信赖平台模块)标准的安全芯片,它能有效地保护PC,防止非法用户访问;密钥实际上是存储于固化在芯片的存储单元中,即便是掉电其信息亦不会丢失;
  Little-Endian,小字节序/低字节序;BIG-ENDIAN,大字节序/高字节序,网络协议都是采用big endian传输,big endian称之为网络字节序;
  例如,int a=0x05060708;在BIG-ENDIAN存为,字节号 0 1 2 3,数据 05 06 07 08; 在LITTLE-ENDIAN存为,字节号 0 1 2 3,数据 08 07 06 05;
  final,修饰符(关键字);finally,异常处理;finalize,方法名,在垃圾收集器将对象从内存中清除出去之前做必要的清理工作,清理在单线程VM-wide,不要做堵塞操作;
  /dev/input目录的事件都是在驱动中调用input_register_device(struct input_dev *dev)产生; 与event对应的相关设备信息位于/proc/bus/input/devices;  #cat /proc/bus/input/devices; #查看event与设备对应关系;
  $adb push androidvncserver /data; $adb shell chmod 755 /data/androidvncserver; $adb shell /data/androidvncserver;
  $adb forward tcp:5900 tcp:5901;    $androidvncserver -t /dev/input/event0 -k /dev/input/event4
  LocalBroadcastManager类,比全局广播效率高/安全性高;
  卸载提示:写服务线程监听PackageInstaller应用的log;检测数据文件的变化;
  最早的Java建置方案是由一套转译程式interpreter;
  JIT Compiler(Just-in-timeCompiler)即时编译;当Java执行runtime环境时,每遇到新的类别(class:Java程式中的功能群组),此时会针对这个类别进行编译compile,经过编译后的程式,执行速度相当快;
  业界发展出动态编译器dynamiccompiler,针对较常被执行的程式码进行编译,其余部分仍使用转译程式来执行;根据"历史资料"做决策;
  android2.2开始使用JIT;在AndroidManifest.xml中把<application>的android:vmSafeMode属性设置true就可以对APK禁用JIT。
  拨号面板中输入:*#*#4636#*#*,就可查看到系统固件/实际的使用时间/软件运行次数;
  application的android:allowBackup属性,Whether to allow the application to participate in the backup and restore infrastructure.将数据备份到sd卡;
  Android里,context有很多用途,但更多的是加载和访问资源;避免内存泄露方法,1.将context带出它本身的作用域 2.使用Application上下文;
  Fragment生命周期7->5:onAttach() -> onCreate()  -> onCreateView()  -> onActivityCreated() -> onViewStateRestored() -> onStart() -> onResume();
    onPause() -> onStop() -> onDestroyView() -> onDestroy() -> onDetach();
  mFragment.isAdded();mFragment.isDetached();mFragment.isHidden();mFragment.isInLayout();mFragment.isRemoving();mFragment.isResumed();mFragment.isVisible();
  E/NotificationService(2112):Suppressing toast from package com.nobody.appfilter by user request. -->解决方案:应用程序管理->找到你的程序->勾选下“显示通知”
  OSGi技术,Open Service Gateway Initiative,面向Java的动态模型系统,是面向Java的动态模型系统;OSGi联盟已经开发了为例如象HTTP服务器/配置/日志/安全/用户管理/XML等很多公共功能标准组件接口;Android可结合OSGI实现插件化;
  res/layout-sw600dp/main.xml,设备短边的最小宽带为N,屏幕最小宽度大于等于600dp选择使用layout-sw600dp/main.xml文件作为布局,小屏幕会使用默认布局文件;
  升级SDK后,出现This Android SDK requires Android...update ADT to the latest version; 解决办法,修改android-sdk-windows\tools\lib\plugin.prop文件,版本号改为与所安装的ATD同版本号;
  屏幕大小适配,长宽尽量使用dp值,尽量不用px;pixel像素;sp,Scale-independent Pixel,可自定义大小;像素密度的单位dpi,Dots Per Inch;dip与dp相同;
  Messenger类,Reference to a Handler, which others can use to send messages to it. This allows for the implementation of message-based communication across processes, by creating a Messenger pointing to a Handler in one process, and handing that Messenger to another process.
  gen already exists but is not a source folder:解决办法,右键工程->属性->选择JavaBuildPath->打开source->点击AddFolder->添加gen;
  orc:Optical Character Recognition,光学字符识别;如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题;
  java中String类的replace(),replaceAll(),trim()区别:copies;正则表达式;两端空格;
  Android基于Linux2.6提供核心系统服务,eg.安全/内存管理/进程管理/网络堆栈/驱动模型;各层各尽其职,各层提供固定的SAP(ServiceAccessPoint);专业点可以说是高内聚/低耦合;
  Android是的虚拟机不是java虚拟机,不符合java规范;dx是对class文件的再次处理而得;
  数据库操作使用contentValue(内部也是组装拼接成sql语句执行操作),它能过防止数据库注入,即特殊字符的处理;直接使用sql语句的差别;
  StringBuffer线程安全的;StrinBuilder线程不安全;
  linux是可以运行c++的;编译器g++;
  ContentValue与map区别,ContentValue能够持久化,实现了Parcelable接口;ContentValue内部存储数据仍然使用Map;
 





 MIPS(Million Instructions Per Second):单字长定点指令平均执行速度,每秒处理的百万级的机器语言指令数。这是衡量CPU速度的一个指标。
  MIPS 科技公司(纳斯达克交易代码:MIPS)是全球第二大半导体设计IP(知识产权)公司和全球第一大模拟IP公司。
  内核里面谈EABI,OABI,其实相对于系统调用的方式,当然我们所说的系统限于arm系统。
  EABI:Embedded application binary interface, 即嵌入式应用二进制接口,是描述可连接目标代码,库目标代码,可执行文件影像,如何连接,执行和调试,以及目标代码生成过程.
  armeabi-v7a代码扩展了armeabi代码的cpu指令集,效率更高。
  IA-32(Intel Architecture,英特尔体系架构),属于X86体系结构的32位版本,即具有32位内存地址和32位数据操作数的处理器体系结构,从1985年面世的80386直到Pentium4,都是使用IA-32体系结构的处理器。
  NEON* 是一种 ARM* 技术,主要用于多媒体(智能手机和高清电视等)应用。 ARM* 表示其基于128位SIMD引擎的技术–ARM*Cortex*(一种串行扩展)—可提供比ARM*v5架构至少高3倍的性能,以及比 ARM* v6至少高2倍的性能。
  ARM® NEON™ 通用SIMD引擎可有效处理当前和将来的多媒体格式,从而改善用户体验。NEON 技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D 图形、游戏、音频和语音处理、图像处理技术、电话和声音合成),其性能至少为 ARMv5 性能的3倍,为ARMv6 SIMD性能的2倍。
  SIMD:(Single Instruction Multiple Data,单指令多数据流)能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。
  GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。
  Stack Overflow是一个与程序相关的IT技术问答网站。
  编程能力与编程年龄:年龄正态分布(高点在25岁左右,但是中点在29岁左右);能力和年龄分布图:程序员的能力在从25岁左右开始上升,一直到50岁后才会开始下降.
  陈皓对编程能力与编程年龄的感受:1. 国外牛B的IT公司的工程能力并不见得比国内的要强多少,但是国外那些NB的IT公司的架构和设计能力远远超过国内的公司,最可怕的是,那些有超强架构和设计能力的“老程序员们”还战斗在一线,这些战斗在一线的老鸟的能力绝对超过100个普能的新手。  2. 对年轻程序员的感受——国内新一代的程序员们太浮燥了。老实说,对于大多数人来说,如果你没有编程到30岁,你还不能成为一个“合格”的程序员。所以,并不是编程编到30岁就玩完了,而是编程编到30岁才刚刚入门。这些不合格的程序,整天BS这个不好,那个不好的,而且喜欢速成,好大喜功。  3.我是一个奔四的人了,编程就像登山一样,越往上爬人越少,所以,在我这个年纪还有想法,对编程还有热情的人不多了,基本上都是转Manager了。其实,什么职位,Title都是虚的,公司没了什么都没了,只有技术才是硬通货。而且,越是这个年纪还在玩编程玩技术的人,其实其经验和能力都是比较强的,都是中坚力量,如果还有其它这个年纪和我一样的人,求交往。
  陈皓对效率与加班的看法:跑得快vs跑得好;产品的发展是长跑,比的不是快,而比的是策略,比的是意志,目的是登顶。效率不是比谁干活多,是比谁干的活更有价值;十个需求只做三个来提高质量;
  flo是设备nexus7 2013 wifi的代号(codename);hammerhead是Nexus5的代号; Honami(保奈美)是SONY Xperia Z的代号; haswell是英特尔Core ix 4yyy系列的代号;Kitkat是Android 4.4的代号(注意Android的代号按着ABCD...顺序)
  x86版和x64版,86就是原来的32位操作系统,64就是现在比较新的64位操作系统;
  源码设计精美:松偶和,高内聚;OTA升级模块,控制反转;启动模块,配置项;Xposed框架设计;Binder的设计,aidl工具的使用;各个组件之间跳转,Uri;软引用;


发布了8 篇原创文章 · 获赞 7 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/liu31187/article/details/28860747
今日推荐