好记性不如烂笔头
1.group_concat
功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。
2.长单词或其他字符自动换行 word-wrap: break-word;
3.keyup中正则校验--replace(/正则表达式/,'');
nowVal.replace(/^(0+)|[^\d]+/g,''); //只能输入正整数
nowVal.replace(/^\./g,""); //去掉数字开头的小数点
nowVal.replace(/\.{2,}/g, "."); //去除连续的小数点 仅保留一个
nowVal.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); //把第一个小数点留下 其他去除
nowVal.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数
// ^匹配输入字行首!!
aa.replace(/\-/g,"$#$") //替换所有-为$#$
aa.replace(/^\-/g,"$#$") //首字符是-时替换为&#&
aa.replace(/^\-/g, "$#$").replace(/\-/g, "").replace("$#$", "-") //把第一个-留下 其他去除
aa.replaceAll("[^0-9\.\-]", "") //去除所有非数字、负号、小数点的字符
4.vim打开文件后,非编辑状态(不是i之后)下命令
d 删除
dd 删除整行
y 复制 (默认是复制到"寄存器)
p 粘贴 (默认从"寄存器取出内容粘贴)
v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。
V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。
u 撤销上一次操作
5.CSV防注入,tab防御方式,可以加英文逗号绕过防御= =那么就把逗号变成中文逗号
6.MessageFormat.format()处理包含单引号的字符串替换参数不成功,需要转换成双单引号
7.img图片元素的width和height为0
浏览器异步运行非常快,图片未加载完成时获取不到宽和高,使用onload方式避免此情况
xxImg.onload=function(){};
8.第一次加载img不进入onload方法
图片已经存在的情况下,不需要load,可直接调用回调方法
if(xxImg.complete){
callback();
return; //直接回调,不需要再判断onload
}else{
//onload判断放在下面
xxImg.οnlοad=function(){
callback();
}
}
9.控制台输入Scanner两种方式
Scanner sc = new Scanner(new BufferedInputStream(System.in));
Scanner sc = new Scanner(System.in);
解决while(sc.hasNext()){}死循环,可以加上一个且条件来限制输入个数
int k = 0;
while(sc.hasNext() && k<=5){
// TODO
k++;
}
或者设置一个终止符:while (!sc.hasNext("0")) {}
10.protect修饰的类成员变量,不同包的子类可访问+同一个包的类可访问
不同包子类:不在同一个包中但是继承了父类的类可以访问父类成员
11. 在linux中,&和&&,|和||介绍如下:
& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1' && echo '2'
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail"
12.int型转byte
byte x=(byte) 128; //x=-128
int数值(4字节,32位)转换成byte型(单字节,8位)会仅保留后八位为1000 0000,
二进制最高位0表示正数,1表示负数,所以1000 0000表示-128(计算数值时最高位也参与计算)
byte y =(byte)-129; //y=127
-129的是负数,负数以补码形式存于内存,负数的补码为绝对值的二进制取反再加一
129原码:1000 0001,取反:0111 1110,加一:0111 1111,最终结果是127
13.Collections.nCopies n个重复元素列表,不可变列表,多个相同内容仅占用一个内存空间
List obj =Collections.nCopies(10,"xxx");
System.out.println(obj);
14.Arrays.asList是通过泛型实现的,而java 8个基本数据类型不能泛型化,int[]的内容被当做一个整体元素处理了
int[] intList = {1,2,3,4,5};
Integer[] integerList = {1,2,3,4,5};
List list = Arrays.asList(intList); //list.size()=1
list = Arrays.asList(integerList); //list.size()=5