今天早上主要去配置了IDEA,VScode等termimal端用git-bash,linux命令会好过cmd命令,然后对于IDEA有一些规范配置,如不要使用tab代替空格,import排序,字符集用utf-8,sonarlint,checkStyle等代码规范检查工具插件的安装,在idea上开了vpn下载插件下载一部分会断掉,因此我从idea官方插件库下载插件,然后本地安装。今天下午和晚上,主要学习软件设计模式和java8的一些新特性,如函数式编程,Lamda表达式,Stream。对于设计模式,很抽象,不懂他们的应用场景和具体的实现,而对于Lamda和Stream也只是了解其概念,对于其应用不太熟念,而且对于其原理也不了解。
Idea setting搜索terminal,shell path改成D:\software\Git\bin\bash.exe
坑:我改成D:\software\Git\git-bash.exe,结果terminal弹出一个git-bash.exe,不在terminal窗口内显示git-bash.exe
文件 —— 首选项 —— 用户设置:setting.json文件中设置
"terminal.integrated.shell.windows": "D:\\software\\Git\\bin\\bash.exe"
找了很久,在文件->设置->核心设置->扩展包设置
platformio-atom-ide-terminal设置里面shell override改成"D:\software\Git\bin\bash.exe"
settings-》system settings-》updates下面的use secure connection去掉勾 ==》无效
能是index过程中出问题,[File]->[Invalidate Caches] 清掉缓存 ==>无效
重启 ==》ok
SonarLint,CheckStyle-IDEA插件,换行(\n),不要使用tab代替空格,import分组、排序规则
java基础开发规范
Ctrl+T(改):查看子类 Ctrl+U:查看父类 Shift+Alt+N:全局搜索Task Shift+Ctrl+Alt+N:symbol name:全局搜索类名 Alt+’:reformat code 格式化代码
Java的即时编译(Just In Time, JIT)及其优化
/ * * / 注释不能嵌套
0b或 0B:二进制数
Java7开始,可以为数字字面量加下划线,如1_000_000
千万不要使用未初始化的变量
if ( x = Double . NaN ) / / is never true if ( Double . isNaN ( x ) ) / / check whether x is " not a number " if ( x = 0 ) / /不能通过编译 int a; System.out.println(a);//编译错误在 Java 中可以将声明放在代码中的任何地方 。
double salary = 65000.0 ; System.out.println(salary) ; int vacationDays = 12 ; / / OK to declare a variable hereconst 是Java保留的关键字,但目前并没有使用。在Java中,必须使用 final定义常量 。
如果在数值计算中不允许有任何舍入误差 ,应该使用 BigDecimal类
strictfp:所声明的范围内JAVA的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。
史上最全设计模式导学目录(完整版)
首先看一个简单例子
public static void main(String[] args) { List<String> lst = Arrays.asList("bb", "aa", "dd", "cc", "ee"); // Lambda前 for (String a : lst) { System.out.println(a); } // Lambda后 lst.forEach(a -> System.out.println(a)); }Iterable中源码如下
default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } }函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
函数式接口可以被隐式转换为lambda表达式。
public static void main(String[] args) { List<String> lst = Arrays.asList("bb", "aa", "dd", "cc", "ee"); // Lambda前 Collections.sort(lst, new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.compareTo(o2); } }); // Lambda后 Collections.sort(lst, (o1, o2) -> { return o1.compareTo(o2); }); }lambda 表达式只能引用标记了 final 的外层局部变量,不能在 lambda 内部修改定义在域外的局部变量
隐性的具有 final 的语义:lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改
int num = 1; Converter<Integer, String> s = (param) -> System.out.println(String.valueOf(param + num)); s.convert(2);转载于:https://www.cnblogs.com/sufferingStriver/p/9403421.html
相关资源:你必须知道的495个C语言问题