还是专门搞个Tips,用来记录遇到的一些琐碎的知识点。想到什么写什么。

    • int类型不能为null,但是Integer可以
    • python中的非是not,不要再写!了,老在这chubug
    • linux系统,千万要注意写命令时的路径,特别是修改系统配置时,要么在最前面加上/ ,要么先cd /
    • 中序遍历和二叉搜索树是好哥们
    • IDEA修改完pom,添加完保存命令:右上角有个刷新按钮,也可以通过快捷键操作

    image.png

    • 虚拟机开了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,它是有序的,它的方法主要是:

    image.png
    其中removeEldestEntry则可以在size大于容量的情况下选择是否删除最不常用的键值对
    image.png
    getOrDefault这个是Map接口的方法:
    即如果key存在则返回value,否则返回传递到默认值
    image.png

    • 为什么所有的 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};

    1. // int[] 转 List<Integer>
    2. List<Integer> list1 = Arrays.stream(data).boxed().collect(Collectors.toList());
    3. // Arrays.stream(arr) 可以替换成IntStream.of(arr)。
    4. // 1.使用Arrays.stream将int[]转换成IntStream。
    5. // 2.使用IntStream中的boxed()装箱。将IntStream转换成Stream<Integer>。
    6. // 3.使用Stream的collect(),将Stream<T>转换成List<T>,因此正是List<Integer>。
    7. // int[] 转 Integer[]
    8. Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);
    9. // 前两步同上,此时是Stream<Integer>。
    10. // 然后使用Stream的toArray,传入IntFunction<A[]> generator。
    11. // 这样就可以返回Integer数组。
    12. // 不然默认是Object[]。
    13. // List<Integer> 转 Integer[]
    14. Integer[] integers2 = list1.toArray(new Integer[0]);
    15. // 调用toArray。传入参数T[] a。这种用法是目前推荐的。
    16. // List<String>转String[]也同理。
    17. // List<Integer> 转 int[]
    18. int[] arr1 = list1.stream().mapToInt(Integer::valueOf).toArray();
    19. // 想要转换成int[]类型,就得先转成IntStream。
    20. // 这里就通过mapToInt()把Stream<Integer>调用Integer::valueOf来转成IntStream
    21. // 而IntStream中默认toArray()转成int[]。
    22. // Integer[] 转 int[]
    23. int[] arr2 = Arrays.stream(integers1).mapToInt(Integer::valueOf).toArray();
    24. // 思路同上。先将Integer[]转成Stream<Integer>,再转成IntStream。
    25. // Integer[] 转 List<Integer>
    26. List<Integer> list2 = Arrays.asList(integers1);
    27. // 最简单的方式。String[]转List<String>也同理。
    28. // 同理
    29. String[] strings1 = {"a", "b", "c"};
    30. // String[] 转 List<String>
    31. List<String> list3 = Arrays.asList(strings1);
    32. // List<String> 转 String[]
    33. String[] strings2 = list3.toArray(new String[0]);
    34. }

    } ``` 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即可
    • image.png
    • String的方法,记住,这个按字典序比较的 | int | [compareTo](#compareTo(java.lang.String))([String](String.html) anotherString) | 按字典顺序比较两个字符串。 | | —- | —- | —- | | int | [compareToIgnoreCase](#compareToIgnoreCase(java.lang.String))([String](String.html) str) | 按字典顺序比较两个字符串,忽略大小写差异。 |