零散笔记
1.保留n位小数,并四舍五入
DecimalFormat df = new DecimalFormat ("#0.0");
System.out.println(df.format(1.4));
2.chrome添加扩展程序
a.chrome://extensions/
b.打开开发者模式
c.加载已经解压的程序 选目录
3.自动拆箱装箱涉及null值报错
Doubel a = 333D;
double b = a;
这段代码,涉及到封装类型和基本类型,所以Double向下转成double,反编译如下
Double a = 333D;
double b = a.doubleValue();
通过阅读源码可知,Double是强转成double的,所以当value是null时,null无法转成基本类型double,会报错。
public double doubleValue() {
return (double)value;
}
特别的,三目运算符中会隐藏这个错误。
Double a=Double.valueOf(333);
Float b=null;
String c="123";
a=c.equals("123")?b:a;
a是Double,b是Float。涉及不同类型,进行封装类型向基本类型转换。
Double a = Double.valueOf(333D);
Float b = null;
String c = "123";
a = Double.valueOf(c.equals("123") ?b.floatValue() : a.doubleValue());
所以变量b拆箱成了b.floatValue(),这也就是空指针异常的来源
4.数据库中sql
sum(colomn) 如果colomn 中有null ,那么null将忽略. 如果所有的都是null,那么得到的就是null
例如
tabel test
------------
one
+----------+
null
100
------------
select sum(one) from test;
结果:
sum
+------------+
100
-------------
5.查看pg里面正在run 的sql:
select * from pg_stat_activity where (state like '%idle%' or state like '%active%')
order by query_start;
6.我修改了a.txt,b.txt,c.txt,怎样使用git add将三个文件一次操作全部加入暂存区:
git add -u
将当前已跟踪且已修改文件更新
7.数据库中的join,除了连接表之外,还有数据过滤的作用。
a).先理解join:https://blog.csdn.net/qq1332479771/article/details/62104624
b).对过滤的理解:https://www.oschina.net/question/89964_65912 https://blog.csdn.net/u012861978/article/details/52203818
8.sql中的or:两者有一个真即可为真,不具备短路功能。oracle除外?
http://www.w3school.com.cn/sql/sql_and_or.asp
9.一般的,我们可以在sql中自己造一个异或: (:teacher is null and ...) or (:teacher is not null and ...) 形如这样,就可以通过teacher来对and后面的语句进行异或
10.在返回集字段中,这些字段要么就要包含在Group By语句的后面,
--作为分组的依据;要么就要被包含在聚合函数中。
11.char(n)与varchar(n)都可保存<n的字符串,char字符<n时,后面用空格填满,varchar(n)后面不用空格填满.
oracle/sqlserver/mysql等数据库的varchar(n),n表示字节数(一个汉字占两个字节)
postgres的varchar(n),n表示字符数(一个汉字就是一个字符)
12.配置java环境变量时,java_home要配置jdk的路径,因为javac在jdk中,而在jre中没有。一般的,在jdk1.5之后不需要加classpath。只需要java_home和path即可。
13.保留n位小数,并四舍五入
DecimalFormat df = new DecimalFormat ("#0.0");
System.out.println(df.format(1.4));
14.pg里面用双冒号 :: 来表示强转,而hibernate中版本高的可以用转义,版本低的必须用cast(a as b) 这个方法来实现类型转换
15.html中转义字符的意义:https://blog.csdn.net/txwtech/article/details/79955665
16.js操作select:https://www.cnblogs.com/yw-ah/p/5736177.html
17.table中元素垂直最高: valign=top 水平靠左: align = left
18.jquery动态获取选择器: var test=$("input[type='radio'][value='"+v+"']");//直接拼接字符串就可以了
19.系统对于js文件会做压缩处理,会去除多余空格和换行,所以js代码结束时要写分号
20.js删除元素:
尾部:pop()
首部:shift()
特定一个:var arr = ['1','2','3'];
var index = arr.indexOf('2');
if(index>-1){
arr.splice(index,1);
}
21.js jquery 获取元素(父节点,子节点,兄弟节点),元素筛选:https://www.cnblogs.com/ooo0/p/6278102.html
22.jQuery动态设置样式(style、css):https://blog.csdn.net/xiaoyuncc/article/details/70854925
23.让a标签实效,一种是href="javascript:void(0)",另一种是通过pointer-events: none 这个css属性,none是无效,auto可以为有效。
EV中,例子,jQuery("#img_announcementOrgs_16840").parent().css({"pointer-events":"none"});
博客:https://blog.csdn.net/tangxiujiang/article/details/75577894
24. js批量设置元素的style属性值:
firefox等可以使用 : document.getElementById("id").setAttribute("style","top:20px;left:20px;color:red;");
IE中则必须使用style.cssText : document.getElementById("id").style.cssText = "top:20px;left:20px;color:red;";
25.数据库distinct:先做排序,再把上下几列重复的去掉
26.用table布局时,tr下面必须跟td
27.sql优化: 使用join的时候,要Join的表 可以先dinstinct一下 ,即选出distinct 相应字段 后再去Join
join的表,用什么字段,可以join(select 字段 from 某表)别名 通过这样减少join的字段,还可以在字段后面加distinct以减少重复
28.join,简单理解的话,(nested loop)遍历某表,然后在后面附加上join表中"符合条件的记录"。而随着“条件”的不同,需要注意以下两种情况
第一种,on后面跟 select * from student on score.student_id = student.id
这样的,在student表中遍历时,“将符合条件的从score中筛选出来”,即,student表中id 是001的
,按照条件,只会从score中选出student_id是001的相关记录。
而student表中id是002,那么只会从score中选出student_id是002的记录
第二种,当 select * from student on score.student_id = 001 则在student中的每一条记录都会跟上scroe中student_id是001的记录,即使是null。
29.on where having和join:https://www.cnblogs.com/clphp/p/6256757.html
30.pg中,物化试图和普通试图的区别:
a.普通试图只是几条sql,但是物化试图是会成为真实存在的表
b.基础表发生了变化,普通试图会自动刷新,而物化试图则需要手动刷新
31.sql中null/null或者null/常数 都还是null
32.
usage: git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]
or: git reset [-q] <tree-ish> [--] <paths>...
or: git reset --patch [<tree-ish>] [--] [<paths>...]
-q, --quiet be quiet, only report errors
--soft reset only HEAD
--mixed reset HEAD and index
--hard reset HEAD, index and working tree
--merge reset HEAD, index and working tree
--keep reset HEAD but keep local changes
-p, --patch select hunks interactively
-N, --intent-to-add record only the fact that removed paths will be added later
33.git reset head^ --soft 将版本库的代码回退到之前的版本,同时将提交的代码放回index区。
git reset head^ --mixed 将版本库的代码回退到之前的版本, 将提交的代码放回index区,再放回working tree
34. throws和throw的区别(面试题)
throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
35.基本数据的封装类最好不要用==来判断是否相等,要通过equals()。
36.int -> Integer 调用的是Integer的static方法:valueOf();
Integer -> int 调用的是Integer的方法intValue();
Integer类型初始化
Integer a = 3;
Integer b = new Integer(3);
Integer c = new Integer("3");
Integer d = Integer.valueOf(3);
a == b false;
a == c false;
a == d true; (由于a调用的valueOf自动装箱,所以,考究valueOf()的内容,发现当-128<= a <= 127时,指向常量池。而在其他的范围,指向堆);
b == c false;
b == d false;
c == d false;
实际上,为true的时候有且仅有一种情况.a==d 且 -128<= a <= 127
当然了,java还有点人性,Integer和int 的 == 是符合人类正常思维的:
public class test {
public static void main(String[] args) {
int aa = 333;
Integer a = 333;
Integer b = new Integer(333);
Integer c = new Integer("333");
Integer d = Integer.valueOf(333);
System.out.println(aa == a);
System.out.println(aa == b);
System.out.println(aa == c);
System.out.println(aa == d);
}
}
结果: true
true
true
true
而,一旦a,b,c,d进行四则运算时候,就会拆箱,变成int,就为true了
b == (c - c + b) true;
吐血总结:
1)包装类就是普通的类,用 == 比较,比较的是地址,所以,相互之间 == 运算都是false。但是!在-128<=a <= 127之间,
为了某种不可告人的秘密,自动装箱就指向了常量池,所以a==d为true;
2)涉及到与基础类型 == 时候,就为true
3)四则运算自动拆箱后变成了基本类型,所以 == 时候,true
37.注意,Integer、Short、Byte、Character、Long这几个类的valueOf方法的实现是类似的。
Double、Float的valueOf方法的实现是类似的。(永远不指向常量池)
另外,boolean值和Boolean 的"==" 符合正常人类思维
public class Main {
public static void main(String[] args) {
Boolean i1 = false;
Boolean i2 = false;
Boolean i3 = true;
Boolean i4 = true;
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}
结果:true
true
38. &&,||都是短路逻辑运算符, &,|不短路,是位运算符
39.查询某个字段在哪个表
select * from information_schema.columns
where column_name = 'index_field';
40.java中
floor:向下取整
ceil: 向上取整
round:四舍五入(+0.5 再floor)
41.git stash: https://blog.csdn.net/andyzhaojianhui/article/details/80586695
42 模态框居中:https://blog.csdn.net/vop444/article/details/79537300
43.git切换分支,要严格大小写.例如,本项目,原本有Suite_Oracle, 不小心从其他分支checkout suite_oracle, 那么大写的Suite_Oracle将会消失。如果不慎从suite_oracle push到远程时,远程会建立新的分支,suite_oracle。到时候,在本地拉取代码时,git会迷失自己,不知道该从哪里拉。
当然了,也有解决方案,就是删除远程分支的小写suite_oracle,让git不再困惑
44.转义: \\\" 解析:\\ 表示 \, \" 表示 " 看转义要两个两个分开看
java中,用一些特殊符号作为分隔符,但是呢,现实生活中也会用他们原来的意思,所以转义的意义在于,告诉计算机,这个字符目前不会用作分隔符,请按
照他原来的样子对待它
45.eclipse导包:https://blog.csdn.net/czbqoo01/article/details/72803450
eclipse导入jdk:https://blog.csdn.net/qq_29028175/article/details/54708367
46. git stash save 'expamle message' 储藏全部文件, save无法储藏指定文件
git stash push -m 'example message' push, 可以储藏全部文件
git stash push example/example.txt -m 'example message' push, 可以储藏指定文件
stash好文:http://www.softwhy.com/article-8628-1.html
强烈推荐:蚂蚁部落 www.softwhy.com
47. modal里面的button点击后自动消失,是因为有这个属性: data-dismiss="modal", 去掉就好了
48. onclick,click,on()的优先关系:onclick>click>on();
onclick和click绑定的事件,彼此之间遵守事件冒泡规则,从内到外触发;
on()绑定的事件,总是晚于onclick和click绑定的事件触发;
由此可以得到,使用on()绑定的事件与onclick和click绑定的事件,判断触发先后顺序时,不能只考虑事件冒泡规则。
49. html布局https://blog.csdn.net/superman__007/article/details/77951401
50. java新手项目,前端等:https://www.cnblogs.com/ys-wuhan/p/5832279.html
51. $(window).height()代表了当前可见区域的大小,
$(document).height()则代表了整个文档的高度,可视具体情况使用.
https://www.cnblogs.com/avivaye/p/7908669.html
52.为nodepad++ 更改快捷键https://jingyan.baidu.com/article/e52e36157026fd40c70c5148.html
53. jq on() 事件处理https://www.cnblogs.com/lst619247/p/8574080.html
https://www.cnblogs.com/golddemon/p/7594954.html
https://blog.csdn.net/xuxu_qkz/article/details/78343352
历史进程 https://blog.csdn.net/muzidigbig/article/details/81010317
54.OOD:https://www.codeproject.com/Articles/93369/How-I-explained-OOD-to-my-wife
https://www.cnblogs.com/bluedream2009/archive/2011/01/25/1945000.html
55.菜鸟教程上有desigh pattern文章http://www.runoob.com/design-pattern/design-pattern-tutorial.html
56.merge,如果不是快速合并,会生成新的提交记录。遇到冲突时,需要解决冲突,然后add,commit.
rebase,不会生成新的提交。遇到冲突,解决,add,不需要提交, 而是rebase --continue.就可以了
一般而言,如果本地有master ,dev两个分支,
首先进入master,git pull,拉取远程仓库最新代码
再进入dev分支,git rebase master.将dev分支处理好
最后进入master分支,git merge dev 进行快速合并,这样就不会产生无意义的提交
如果本地有只有一个分支,git pull --rebase.即可。遇到冲突,解决,add,然后rebase --continue就好了。
如果本地只有一个分支,用stash的方式也可以,工作区间代码不提交(注意,上文中的工作区间修改都需要提交),stash起来,然后,git pull.
然后运用stash, 遇到冲突(没冲突的自动放到index区间,有冲突的留在工作区间待解决),解决,add, 最后提交
57.String中加号和concat的区别:
1).+ 可以连接 null,连接时将null视为一个字符串连接,concat连接中出现null,会造成空指针错误。
2).+号编译后就是使用了StringBuiler来拼接,所以使用+的语句就会创建一个StringBuilder,多条+语句会创建多个StringBuilder对象,这就是建议
使用StringBuilder的原因。
58.反射:https://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html#%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E4%BE%8B%E5%AD%90
59. static https://www.cnblogs.com/dolphin0520/p/3799052.html
60. 类加载顺序https://www.cnblogs.com/leiqiannian/p/7922824.html
61. git cherry-pick:https://www.jianshu.com/p/c787fa885ffd
git cherry-pick [commit id]
单个commit只需要git cherry-pick commiti
多个commit 只需要git cherry-pick commitid1..commitid100 注意,不包含第一个commitid
如果想搞成[]区间,使用 git cherry-pick A^..B 相当于[A B]包含A
62.https://blog.csdn.net/sinat_38259539/article/details/71799078