Android Studio 快捷键整理

Android Studio 快捷键整理分享

Alt+回车 导入包,自动修正

Ctrl+N 查找类

Ctrl+Shift+N 查找文件

Ctrl+Alt+L 格式化代码

Ctrl+Alt+O 优化导入的类和包

Alt+Insert 生成代码(如get,set方法,构造函数等)

Ctrl+E或者Alt+Shift+C 最近更改的代码

Ctrl+R 替换文本

Ctrl+F 查找文本

Ctrl+Shift+Space 自动补全代码

Ctrl+空格 代码提示

Ctrl+Alt+Space 类名或接口名提示

Ctrl+P 方法参数提示

Ctrl+Shift+Alt+N 查找类中的方法或变量

继续阅读“Android Studio 快捷键整理”

nginx目录设置 alias 和 root

使用nginx设置root时要注意一个问题,就是如果该root设置的前端目录不是根目录,那么在写root的绝对地址时,要把前端目录的部分省略掉。
我们用设置虚拟目录指向的alias来和root比较一下就非常明显了

alias

location /abc/ {
    alias /home/html/abc/;
}

在这段配置下,http://test/abc/a.html就指定的是 /home/html/abc/a.html。这段配置亦可改成

root

location /abc/ {
    root /home/html/;
}

可以看到,使用root设置目录的绝对路径时,少了/abc,也就是说,使用root来设置前端非根目录时,nginx会组合root和location的路径。

另外,使用alias时目录名后面一定要加“/”

Maven中-DskipTests和-Dmaven.test.skip=true的区别

在使用mvn package进行编译、打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳过测试,会使用参数-DskipTests和-Dmaven.test.skip=true,这两个参数的主要区别是:
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。

mac下eclipse快捷键

Command + O:显示大纲
Command + 1:快速修复
Command + D:删除当前行
Command + Option + ↓:复制当前行到下一行
Command + Option + ↑:复制当前行到上一行
Option + ↓:当前行和下面一行交互位置
Option + ↑:当前行和上面一行交互位置
Option + ←:前一个编辑的页面
Option + →:下一个编辑的页面
Option + Return:显示当前选择资源的属性
Shift + Return:在当前行的下一行插入空行
Shift + Control + Return:在当前行插入空行
Control + Q:定位到最后编辑的地方
Control + M:最大化当前的Edit或View(再按则最小化)
Control + /:注释当前行,再按则取消注释
Control + Command + /:注释多行(/*……*/形式)
Control + Command + \:取消注释多行(/*……*/形式)
Command + T:快速显示当前类的继承结构
Command + W:关闭当前Editer
Command + K:参照当前选中的Word快速定位到下一个
Command + E:快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Command + L: 定位到具体的某一行代码(Enter Line Number)
Option + /:代码助手完成一些代码的插入(俗称“智能提示”)
Command + Shift + E:显示管理当前打开的所有的View的管理器
Command + J:正向增量查找(按下Command + J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在Stutes Line中显示没有找到了)
Command + Shift + J:反向增量查找
Command + Shift + W:关闭所有打开的Editer
Command + Shift + X:把当前选中的文本全部变为大写
Command + Shift + Y:把当前选中的文本全部变为小写
Command + Shift + F:格式化当前代码
Command + Shift + P:定位到对于的匹配符(譬如{})(从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)
Command + Shift + G: 查看对当些方法或当前的变量的全部引用
Command + Shift + O: 导入所需要的全部包并删除无用的包
Option + Command + S:可以快捷地选择创建如(Setter和Getter方法,构造方法,重写方法,格式化代码等),相当于右键选择“Source”
Option + Command + R:重命名(尤其是变量和类的Rename效果比较明显)
Option + Shift + M:抽取方法(这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Option + Command + C:修改函数结构(有N个函数调用了这个方法,修改一次就搞定)
Option + Command + L:抽取本地变量(可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Option + Shift + F:把Class中的Local变量变为Field变量(比较实用的功能)
Option + Command + Z:重构的后悔药(Undo)

nginx日志切割

原文

第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。

第二步向nginx主进程发送USR1信号。

nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。

重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。

工作进程立刻打开新的日志文件并关闭重名名的日志文件。

然后你就可以处理旧的日志文件了。

#nginx日志切割脚本

#!/bin/bash
#设置日志文件存放目录
logs_path="/usr/local/nginx/logs/"
#设置pid文件
pid_path="/usr/local/nginx/nginx.pid"

#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log

#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`

crontab 设置作业

0 0 * bash /usr/local/nginx/nginx_log.sh
这样就每天的0点0分把nginx日志重命名为日期格式,并重新生成今天的新日志文件。

Android Proguard混淆打包经验总结

作为一名Android开发,应该了解并尝试给自己的项目进行Proguard混淆打包。项目经过Proguard混淆打包后,会发现apk包体积会变小,也就是混淆可以使得apk瘦身;并且反编译apk的时候会发现, 项目中的源码都被处理过,进一步保障了apk的安全;这就是我所理解的Proguard混淆打包的两个优点。不过,想要真正给自己的项目进行Proguard混淆打包,可不是一件容易的事情,真正尝试去做了,才会发现有好多问题需要去解决,毕竟,混淆打包是针对特定的项目,每个项目需要混淆的代码都是有区别的。不过,所有apk混淆打包,也有一些通用的规则处理,像这些规则,就可以自己记录下来,这样其他项目混淆打包的时候就可以复制粘贴使用混淆代码了。好了,进入正题,如何给自己的项目量身定制一套Proguard混淆代码了?

关于Proguard混淆,给APP瘦身,Google官方也给出了文档给了大致解释,大家有兴趣可以看看,纯英文(够呛),不过怎么在Android Studio配置Proguard混淆,还是可以看懂的:

https://developer.android.com/studio/build/shrink-code.html

我们可以从这些方面对apk瘦身:

1)冗余的代码,比如多余的jar包代码;

2)未使用的静态代码;

3)资源代码的冗余;

4)native code

5)图片资源的优化和压缩

ProGuard混淆打包,解决的问题主要针对第一点,一般项目进行ProGuard混淆打包后,apk的体积会减小200-500KB左右。

继续阅读“Android Proguard混淆打包经验总结”

使用proguard混淆android代码

保留选项(配置不进行处理的内容)

-keep {Modifier} {class_specification} 保护指定的类文件和类的成员
-keepclassmembers {modifier} {class_specification} 保护指定类的成员,如果此类受到保护他们会保护的更好
-keepclasseswithmembers {class_specification} 保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。
-keepnames {class_specification} 保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)
-keepclassmembernames {class_specification} 保护指定的类的成员的名称(如果他们不会压缩步骤中删除)
-keepclasseswithmembernames {class_specification} 保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)
-printseeds {filename} 列出类和类的成员-keep选项的清单,标准输出到给定的文件

压缩

-dontshrink 不压缩输入的类文件
-printusage {filename}
-whyareyoukeeping {class_specification}

优化

-dontoptimize 不优化输入的类文件
-assumenosideeffects {class_specification} 优化时假设指定的方法,没有任何副作用
-allowaccessmodification 优化时允许访问并修改有修饰符的类和类的成员

继续阅读“使用proguard混淆android代码”

ubuntu禁止apache开机自启动

# 移除apache2自启动脚本,
# 参数-f是为了解决 update-rc.d: /etc/init.d/apache2 exists during rc.d purge的问题

sudo update-rc.d -f apache2 remove
 
# 同时也可以方便的恢复自启动脚本
sudo update-rc.d apache2 defaults
 
# 或者编辑文件 /etc/default/apache2 设置内容中的 NO_BOOT 值为 1.