Java基本语法
基础语法特性
forEach + Lambda语法
Java参数传递:值/引用
final关键字
场景 | 功能说明 |
---|---|
修饰类 | 该类不能被继承,防止被重写方法 |
修饰成员方法 | 方法不能被子类重写 |
修饰成员变量 | 必须静态初始化,不能被修改 |
修饰局部变量 | 仅能有一次赋值,后续不能再被修改 |
修饰函数参数 | 若参数为基本数据类型,该参数值不能被修改;若参数为引用类型,该参数不能指向其他实例对象,但指向的实例对象可以被修改 |
基本数据结构
时间戳
Collection
List
有序,可重复
ArrayIist
底层是数组结构,线程不安全,查询快,增删慢。
LinkedList
底层是链表结构,线程不安全,查询慢,增删快。
Vector
底层是数组结构,线程安全,效率低;
Stack
Set
无序,不可重复
SortedSet
有序;
HashSet
哈希表,存取快,线程不安全;
EnumSet
枚举类设计的集合类;
Queue
https://blog.csdn.net/oTengYue/article/details/88064009
Deque
双端队列。
Map
保存具有映射关系的数据,Map中保存两组值,一组是key值,另一组是value值;
Hashtable
哈希表算法。
HashMap
哈希表算法。
WeakHashMap
SortedMap
红黑树算法。
Java高阶用法
Reactor反应式编程
https://blog.csdn.net/get_set/article/details/79480172
https://blog.51cto.com/liukang/2093683
Flux
表示包含0到N个元素的异步序列;
Mono
表示包含0到1个元素的异步序列;
调度器
publishOn会影响链中的前后的操作符;
subscribeOn无论出现在什么位置,都只影响源头的执行环境。
Stream流式编程
整个流的过程当中,不会对原有流进行修改,修改的只是中间状态;
流式编程,将简单的运算过程化,并可以极容易的并发处理;
https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/index.html
流的产生
流的中间操作-延迟性
整个流的执行顺序是垂直执行的。
- filter操作
- map:将流中的对象转换为另一种类型,但只能将每个对象映射到另一个对象
- flatmap:一个对象转换为多个其他对象或者不做转换;能将流的每个元素,转换为其他对象的流;实现流的嵌套
- reduce:规约操作,可以将流的所有元素组合成一个结果
- 第一种将流中的元素规约成流中的一个元素;
- 第二种reduce方法接受标志值和BinaryOperator累加器;
- 第三种,标志值,BiFunction累加器和类型的组合器函数;其中组合器函数在并行流中执行;
流的终端操作
一旦一个流执行终端操作时,该流即被关闭;一个关闭的流不可以再进行复用。如果想重复使用一个具有相同中间过程的流,可以使用Supplier进行包装。
- collect:搜集器
- 供应器:supplier
- 累加器:accumulator
- 组合器:combiner
- 终止器:finisher
线程池
https://www.cnblogs.com/dolphin0520/p/3932921.html
https://blog.csdn.net/u011974987/article/details/51027795
http://yoting.github.io/blog/java/2016/06/09/java-thread02-future/
异常处理
reactor用法
同步互斥
https://www.cnblogs.com/dolphin0520/p/3923167.html
@PostMapping
@ResponseStatus
@RequestHeader
@RequestBody
Mono.just(...)
函数式接口
Function
只能接受一个参数,并返回值;
BiFunction
可以接受两个参数,并返回结果;
Supplier
函数式接口,并且该函数不带参数;
BinaryOperator
开发工具
Idea
编译Jar包
File->project structure->Artifacts->±>jar->from modules with dependencies->配置MainClass
Jar包运行
- 如果java定义了jar包的main class入口:java -jar myjar.jar
- 如果Java没有定义jar的main class入口:java -cp myjar.jar com.example.MainClass
框架
spring
对象的创建和销毁
- @PostConstruct/@PreDestroy初始化之前调用函数
注解
RequestMapping
-
既可以在类的级别进行注册,也可以在方法级别进行注册;
-
在类的级别上的注解会将一个特定请求或者请求模式映射到一个控制器之上。之后你还可以另外添加方法级别的注解来进一步指定到处理方法的映射关系。
-
一个ResquestMapping可以映射到多个URl
-
带参数的ResuestMapping
Java Profiler工具
工具
VisualVM
内存工具
https://www.jianshu.com/p/5d854245051d
- Aprof:githup链接
- Jmap:https://www.jianshu.com/p/a4ad53179df3
https://blog.csdn.net/m0_38110132/article/details/79652962 - https://www.thinbug.com/q/35924300
- http://blog.caoxudong.info/blog/2017/12/07/jvmti_reference#2.6.11.1
疑问
- Lamaba表达式中使用变量必须在表达式作用域外,重新定义该变量。