还是专门搞个Tips,用来记录遇到的一些琐碎的知识点。想到什么写什么。
- int类型不能为null,但是Integer可以
- python中的非是not,不要再写!了,老在这chubug
- linux系统,千万要注意写命令时的路径,特别是修改系统配置时,要么在最前面加上/ ,要么先cd /
- 中序遍历和二叉搜索树是好哥们
- IDEA修改完pom,添加完保存命令:右上角有个刷新按钮,也可以通过快捷键操作
- 虚拟机开了net模式没网,可能是因为设置了静态ip,但是主机是动态的
- 现在好像gradle要代替maven,所以框架这一块会用就好,不用专精,专精基础
- C++主要是C/S,java主要是B/S,所以C++的GUI开发是很强的
- Arrays.asList(),Arrays提供了很多api,主要包括排序,填充元素,生成列表,查找,比较等
- s.substring(start,end)切分子串也挺常用的
- spring创建对象默认是单例模式,这里需要注意
- spring的bytype是通过set方法实现设置对象的,但注解形式不走set
- spring注解形式:1、先在xml中配置扫描 2、然后在要用的类和属性上加上相应的注解,注意DI来关联
- spring数据库:主要是通过工具类jdbcTemplate实现。通常的方式是让dao的实现类实现JdbcDaoSupport父类,然后写properties配置文件,把属性 = 值写进去,然后在xml中配置context空间和p空间读取。数据库操作的rowMapper是结果映射,它需要通过匿名内部类来进行结果装配。
- LinkedHashMap双向链表,使用见:146. LRU Cache,它是有序的,它的方法主要是:
其中removeEldestEntry则可以在size大于容量的情况下选择是否删除最不常用的键值对
getOrDefault这个是Map接口的方法:
即如果key存在则返回value,否则返回传递到默认值
- 为什么所有的 POJO 类属性必须使用包装数据类型?
看下边的一个例子,当我一个user表中的id是int时,new user:
User{id=0, username=’null’, nickname=’null’, password=’null’, userPhone=’null’, loginTime=null, loginIp=’null’, createTime=null}
但是我不希望,这个id有值,因为要跟数据库通信的
当id为Integer时:
User2{id=null, username=’null’, nickname=’null’, password=’null’, userPhone=’null’, loginTime=null, loginIp=’null’, createTime=null}
- StringBuffer,StringBuilder中的deleteCharAt(int index)是常用的删除,而deleteCharAt(s.length()-1)则是常用的删除最后一个字符的命令
- 记清楚equals和==的区别,而且整数常量池只到 128,所以会导致129 ==129是false,而之前的是true
对于 == :
作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
作用于引用类型的变量,则比较的是所指向的对象的地址;
对于 equals:
equals方法不能作用于基本数据类型的变量;
如果没有对Object中equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址,反之则比较的是内容
- 泛型就是我还不知道啥类型,等待传入是什么类型就是什么类型,且只在编译前有效,编译后就锁定为传入的那个类型了,不像Object还是Object,使用泛型可以加载类,方法,接口上,多个泛型用逗号隔开即可。
- xxx.class.getResource(“文件名”)可以快速的获取一个文件的url,用来其他操作
- new Comparator 中,如果return的是 a - b那么是升序,因为如果 a < b那么返回的是负数,如果return的是b - a,那么是降序排列
- spring的动态代理还不懂,学习一下。
- map的getOrDefault真的棒棒,然后是map的遍历要好好掌握哪几种方式。
- 随机访问某一元素:
nums.get((``**int**``) (Math.random() * nums.size()))
即可实现 - List和[]数组的转换: ```java import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;
public class Main { public static void main(String[] args) { int[] data = {4, 5, 3, 6, 2, 5, 1};
// int[] 转 List<Integer>
List<Integer> list1 = Arrays.stream(data).boxed().collect(Collectors.toList());
// Arrays.stream(arr) 可以替换成IntStream.of(arr)。
// 1.使用Arrays.stream将int[]转换成IntStream。
// 2.使用IntStream中的boxed()装箱。将IntStream转换成Stream<Integer>。
// 3.使用Stream的collect(),将Stream<T>转换成List<T>,因此正是List<Integer>。
// int[] 转 Integer[]
Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);
// 前两步同上,此时是Stream<Integer>。
// 然后使用Stream的toArray,传入IntFunction<A[]> generator。
// 这样就可以返回Integer数组。
// 不然默认是Object[]。
// List<Integer> 转 Integer[]
Integer[] integers2 = list1.toArray(new Integer[0]);
// 调用toArray。传入参数T[] a。这种用法是目前推荐的。
// List<String>转String[]也同理。
// List<Integer> 转 int[]
int[] arr1 = list1.stream().mapToInt(Integer::valueOf).toArray();
// 想要转换成int[]类型,就得先转成IntStream。
// 这里就通过mapToInt()把Stream<Integer>调用Integer::valueOf来转成IntStream
// 而IntStream中默认toArray()转成int[]。
// Integer[] 转 int[]
int[] arr2 = Arrays.stream(integers1).mapToInt(Integer::valueOf).toArray();
// 思路同上。先将Integer[]转成Stream<Integer>,再转成IntStream。
// Integer[] 转 List<Integer>
List<Integer> list2 = Arrays.asList(integers1);
// 最简单的方式。String[]转List<String>也同理。
// 同理
String[] strings1 = {"a", "b", "c"};
// String[] 转 List<String>
List<String> list3 = Arrays.asList(strings1);
// List<String> 转 String[]
String[] strings2 = list3.toArray(new String[0]);
}
} ``` toArray方法转换出来的都是泛型的,所以不能直接用来转换为int[]
- 双指针对于排序过的两个集合是很适用的,所以看见两个集合的时候,不妨考虑双指针
-
List<String> wordList = Arrays.asList("hot", "dot", "dog", "lot", "log", "cog");
学会 - String - 》char[] :
String.toCharArray()
-
HashSet<String> wordSet = new HashSet<>(wordList);
可以直接传List,会自动转换 - 需要注意,各个集合之间的相互转换方法
- Arrays.sort不支持自定义int[]类型的比较器,支持T[]类型。你把int[]转成Integer[]然后再用Arrays.sort也行的,但是这样返回值还要再转回int[],所以使用Collections.sort
- 位运算还是不熟悉,再看看,主要是不会用
- idea中希望在 service 中运行application启动项而不是在run中:在里面选取上springBoot即可
-
- String的方法,记住,这个按字典序比较的
|
int
|[compareTo](#compareTo(java.lang.String))([String](String.html) anotherString)
| 按字典顺序比较两个字符串。 | | —- | —- | —- | |int
|[compareToIgnoreCase](#compareToIgnoreCase(java.lang.String))([String](String.html) str)
| 按字典顺序比较两个字符串,忽略大小写差异。 |