git
格式化日志
git log –graph –pretty=format:“%C(yellow)%s %Cblue%an %Cgreen(%cr)”
%C :上色
%s :subject 。commit 主题(提交信息)
%an : author name 作者名字
%cr: commitor date ,relative 提交时间(commit变化时会更新,如commit –amend,rebase,cherry-pick)
%ar: author date,最初提交者的时间,不会变化。
原生只支持%Cgreen、%Cred、%Cblue三种颜色,
如果要其他颜色需要用%()指定颜色,如 C(yellow)
关闭sqlSession
加了@Transational
Service方法共花费了1072毫秒
Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4ed4a7e4]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4ed4a7e4]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4ed4a7e4]
本次查询共花费了1539毫秒
相差467毫秒、509、358、457
不加
28ms/24/30/32
sql查询排序可能的问题
假设有表 t_order(id,user_id,type),t_type(id,type_name)
如果
select
t1.id,t1.user_id,t2.type_name
from
t_order t1 , t_type t2
where
t1.type = t2.id
order by
t1.type
limit
0,20
看似没有什么不对
但是如果相同type的数据比较多的时候,查询到的分页可能是不“稳定”的。
因为关系数据库的集合运算是对集合的运算,如果不做排序,或者排序后相同数据的数量比较多,会导致某些行一会出现在这一页,一会又出现在另外一页的灵异现象。
解决办法是,需要分页的时候,务必要选择一个合适的字段来排序,这个字段最好能覆盖全部的行。
Mysql查询数据库大小
查询表大小
查询数据库大小
select table_schema as '数据库',sum(table_rows) as '记录数',sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'from information_schema.tables where table_schema='数据库名称';
Redis
dbsize 查询数据总条数,不一定准确
scan 非阻塞式遍历,用于替代keys
SCAN cursor [MATCH pattern] [COUNT count]
The default COUNT value is 10.
其中 cursor 是一个数字字符串,用于表示当前遍历到的位置
从0开始遍历,如果返回cursor 是0,遍历已经遍历结束。
count表示一次遍历的位置
info [信息]
查看redis的基本信息,如server、cpu、slave等信息
Git登录不上问题/ssh失败排查
ssh [options] [user@]hostname [command]
查看ssh的过程
如:
ssh -v root@127.0.0.1
ssh -vvv root@127.0.0.1
linux查询文件夹大小
可以查看文件及文件夹的大小
du -h --max-depth=1 [path]
可以查看一级文件夹大小、使用比例、档案系统及其挂入点
df -h
Linux
清空某个文件的内容
第一种方法:
cat /dev/null > 文件路径
意思是清空该文件。
/dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。
在程序员行话,尤其是Unix行话中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。
第二种方法:
echo "" > 文件路径
需要注意的是echo "" >>
(两个大于号),则表示追加写入。
linux 免密登录其他主机
客户端设置:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
```
ssh-copy-id 用户@要远程登录的主机地址
输入密码,然后保存即可。
接下来就可以免密远程登录了
ssh 用户@要远程登录的主机地址
远程登录并执行命令
在ssh后添加要执行的命令即可。
ssh apps@10.10.1.101 "COMMANDS"
JVM调优
jstack(查看线程)、jmap(查看内存)、jstat(性能分析)
打印线程信息
jstack pid
导出堆快照(full gc)
生产要谨慎执行该操作,会导致应用挂起~ 会触发full gc ~
jmap -dump:live,format=b,file=/filename.dump pid
:live 表示dump出可达对象。体积相对于无:live dump会小一些。
jmap -dump:format=b,file=/filename.dump pid
打印堆信息
jmap -heap pid
打印堆对象信息(full gc)
这个命令在生产环境也需要小心, 会触发full gc
jmap -histo:live 19932 > /data/temp.txt
:live表示统计的是可达对象。
实时监控远程服务器jvm
可以采用jconsole实现、也可以使用Jprofile
首先,在需要被监控的java进程启动时加入以下启动参数:
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.202.121 -Dcom.sun.management.jmxremote"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/management/jmxremote.password"
根据选择,若需要密码文件、需要注意文件权限为600,另外,需要确保端口被开放。
打开本地jconsole客户端,用192.168.202.121:12345连接即可。
打印垃圾回收统计信息
注意:该统计信息指的是从应用程序启动到当前的信息。
jstat -gc pid
jstat -gcutil pid 1000 5
以上表示:1000ms内,打印5次gc信息。
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
查看某jvm进程启动参数
jcmd pid VM.flags
查看java默认启动参数
java -XX:+PrintCommandLineFlags -version
查看java全部默认参数
java -XX:+PrintFlagsFinal -version > flag.txt
若不需要输出文件则去掉> flag.txt
Redis
批量模糊删除keys
./redis-cli --scan --pattern "prefix:????????????????????????????????" | xargs -L 2000 ./redis-cli del
2000表示一次从scan的结果中取2000条数据来del。
redis的模糊操作
仅支持三种正则表达式
1. * 任意长度的任意字符
2. ? 任意单一字符
3. [xxx] 匹配方括号中的一个字符
redis慢查询
config set slowlog-log-slower-than [微秒]
config set slowlog-max-len [number]
slowlog get [number]
config get slowlog-log-slower-than
Maven
安装jar到本地仓库
mvn install:install-file -DgroupId=org.codehaus.mojo -DartifactId=sonar-maven-plugin -Dversion=3.4.1 -Dpackaging=jar -Dfile=maven-plugin-3.4.1.jar