ARTS第十三周

ARTS是什么?

Algorithm:每周至少做一个leetcode的算法题;
Review:阅读并点评至少一篇英文技术文章;
Tip/Techni:学习至少一个技术技巧;
Share:分享一篇有观点和思考的技术文章。

Algorithm

题目:242. Valid Anagram

解题思路

这道题目还是比较简单的,讲两个思路:一是把字符串排序,然后比较两个字符串是否一致,这种方法的时间复杂度是O(nlogn);二是把字符串放入map,然后比较map内容是否一致,这种方法的时间复杂度是O(n);下面的代码采用第二种方式。

代码

 public boolean isAnagram(String s, String t) {
        Map<Character,Integer> sm = new HashMap();
        for (char c : s.toCharArray()) {
            if (sm.get(c) == null){
                sm.put(c,1);
            }else{
                Integer count = sm.get(c);
                count++;
                sm.put(c,count);
            }
        }

        Map<Character,Integer> tm = new HashMap();
        for (char c : t.toCharArray()) {
            if (tm.get(c) == null){
                tm.put(c,1);
            }else{
                Integer count = tm.get(c);
                count++;
                tm.put(c,count);
            }
        }

        return sm.equals(tm);
    }

Review

spring boot的宽松绑定规则 Relaxed Binding

spring boot使用一些宽松的绑定规则来绑定Environment属性到标记了@ConfigurationProperties的bean上,Environment属性名字和bean属性名不需要完全匹配。常见的例子包括中划线“-”(context-path绑定到contextPath)和大小写(PORT绑定到port),其他还有驼峰、下划线共四种写法都可以正常绑定。

Tip/Techni

spring boot自动配置原理
spring boot的自动配置是一个对开发者很方便的功能,在方便的使用这个功能的时候我们也要搞懂它背后的原理,以便更好的使用它,或是什么时候想要自己手动配置bean了知道该怎么做。今天我们就来探究一下spring boot是如何实现自动配置的。

一般,我们会在项目启动类上加上@SpringBootApplication注解,默认情况下,加了这个注解就开启了自动配置,为什么这个注解会有这个效果了,我们可以去翻下这个注解的源码,它定义上面实际上包含了 @EnableAutoConfiguration注解,而 @EnableAutoConfiguration注解的定义上面又包含了@Import(EnableAutoConfigurationImportSelector.class)注解,最终spring在初始化bean的时候会去spring.factories文件查看有哪些类开启了自动配置功能,然后把开启了自动配置的类中符合条件的bean自动初始化好放入容器。整个过程的顺序如下:

@SpringBootApplication -> @EnableAutoConfiguration -> @Import(EnableAutoConfigurationImportSelector.class) -> SpringFactoriesLoader(spring工厂加载器) -> spring.factories(工厂配置文件) -> @Configuration(spring.factories中配置的类上面标了这个注解,自动初始化符合条件的bean)

Share

分享一篇耗子叔介绍vim的文章简明 VIM 练级攻略,在看这篇文章之前我只会一些简单的vim命令,如:hjkl上下左右移动、/搜索、$移动到行尾等,不知道其他还有很多很强大的命令。一次偶然的机会看到了耗子叔的这篇文章,把我的另一支脚也拉进了vim的大门,见识了五彩斑斓的vim世界,可以使用vim及插件实现各种强大的文本功能,如果你也有了一点对vim的好奇,赶紧打开这篇文章认识一下这个传说中的编辑器之神吧。

参考

  1. 那些离了就活不了的 VIM 插件
  2. 扔掉鼠标,开始键盘流编程
  3. 如何大幅度提高 Mac 开发效率
posted @ 2019-03-18 18:11  陈海翔  阅读(148)  评论(0编辑  收藏  举报