查看Android应用占用内存情况

要查看指定app在手机上占用多少运行内存,首先将手机连接到电脑,然后在命令行执行下面的命令(其中com.my.package.name是app的包名):

adb shell dumpsys meminfo com.my.package.name

执行结果通常如下,其中Pss那一列的值(单位:kB)是我们主要需要关注的:

adb-dumpsys

参考链接:

adb shell dumpsys meminfo - What is the meaning of each cell of its output?

AndroidStudio无法在MIUI安装APK问题

现象

AndroidStudio 2.3,在小米4c搭载miui8真机上运行程序,提示下面的错误信息:

Installation error: INSTALL_CANCELED_BY_USER

 

解决方案

在MIUI开发者选项里,关闭“启用MIUI优化”选项。

关闭此选项时被要求重启,重启后暂时没有发现日常使用有什么变化。

Update: 关闭此选项后发现手机发热和耗电明显,应该是对后台应用的拦截失效导致的。

turn_off_miui_opt

参考链接:

Android Studio: Application Installation Failed

不守规矩的爬虫

在apache access log里看到很多一搜(现在好像叫“神马搜索”)的爬虫:

yisou

貌似完全不理会robots.txt啊:

User-agent: *
Disallow: 
Crawl-delay: 60

果断在tomcat的server.xml里禁掉IP段:

<Context ...>
<!-- 220.181.108.*, 123.125.71.*: baidu spider, 106.11.15*.*: yisou -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="" deny="106.11.15\d.\d+, 220.181.108.\d+, 123.125.71.\d+"/>
</Context>

看看效果:

yisou-forbid

参考资料:

Tomcat doc - Remote Address Filter

Linux中目录的x权限

直接放结论:

x权限对于目录来说是非常重要的,当用户对某个目录没有x权限时,则不管用户对该目录下的子目录拥有什么样的权限,都将无法对子目录进行任何操作。

举例:

通常/root缺省是没有x权限的,因此mysql导出文件(SELECT ... INTO OUTFILE)到/root下的任何目录都会提示无法写入,不论这个目录的owner是谁,也不论这个目录是否777权限:

ERROR 1 (HY000) at line 1: Can't create/write to file '/root/my/out.csv' (Errcode: 13)

而/home缺省是有x权限的,因此在这个目录下mysql用户的文件夹,是可以用于mysql导出到文件的。

linux-directory-x

ZooKeeper基本操作

进入zookeeper命令行,zookeeper默认端口号是2181:

$ bin/zkCli.sh -server 127.0.0.1:2181

Zookeeper命令行下的操作和文件系统比较接近。例如可以对指定目录进行列表(注意目录名必须以/开头):

ls /

创建一个znode,同时为这个znode设置一个数据(my_data),一个znode只能有一个数据:

create /zk_test my_data

更改znode上的数据(会覆盖之前设置的数据):

set /zk_test my_data_2

读取znode上的数据:

get /zk_test

删除znode:

delete /zk_test

参考资料:

Zookeeper Getting Started Guide

AndroidStudio加速

从1.0到现在的2.2,AndroidStudio使用起来经常卡顿,特别在build的时候,经常CPU 100%需要等待很长时间,体验很不好。用以下方法可以缓解:

增加可用内存

修改studio64.exe.vmoptions这个文件(Help -> Edit Custom VM Options),内容:

-Xms2048m
-Xmx2048m
-XX:MaxPermSize=2048m
-XX:ReservedCodeCacheSize=1024m

改完以后记得点一下File--Invalidate caches/restart这个,才能生效,不然关掉as再开就打不开了。(实测在2016.3社区版直接重启也能生效)

优化Gradle参数

在setting里搜索gradle,开启“offline”模式。

在setting里搜索compiler,开启“Compile independent modules in parallel”选项。

参考链接

Android Studio 使用起来很卡,你们是如何解决的?

Building and running app via Gradle and Android Studio is slower than via Eclipse