JDK8特性-Stream流
函数式编程-Stream流1. 概述1.1 为什么学?
能够看懂公司里的代码
大数量下处理集合效率高
代码可读性高
消灭嵌套地狱
12345678910111213141516171819//查询未成年作家的评分在70以上的书籍 由于洋流影响所以作家和书籍可能出现重复,需要进行去重List<Book> bookList = new ArrayList<>();Set<Book> uniqueBookValues = new HashSet<>();Set<Author> uniqueAuthorValues = new HashSet<>();for (Author author : authors) { if (uniqueAuthorValues.add(author)) { if (author.getAge() < 18) { List<Book> books = author.getBooks(); ...
JUC相关知识点
1、进程和线程进程:把一个静态代码装载到内存中运行即可得到一个进程
线程:在进程中的执行单元,进程是最小的资源分配单元,线程是最小的执行单元
Java默认两个线程,一个Main线程,一个GC回收线程
Java实际上并不能开启线程,Thread.start方法最后调用native本地方法开启线程
并发编程:并发、并行
并发(多线程操作同一个资源)
CPU 一核 ,模拟出来多条线程,天下武功,唯快不破,快速交替
并行(多个人一起行走)
CPU 多核 ,多个线程可以同时执行; 线程池
12345678//获取CPU核数public class Test1 { public static void main(String[] args) { // 获取cpu的核数 // CPU 密集型,IO密集型 System.out.println(Runtime.getRuntime().availableProcessors()); }}
线程的几种状态(6种)
1234567891011121314public enum State ...
设计模式代码实现
单例模式
懒汉式单例
12345678910public class Hunger { //构造方法私有 private Hunger(){} //私有静态变量 private static final Hunger INSTANCE = new Hunger(); public static Hunger getInstance(){ return INSTANCE; }}
这种单例模式消耗资源,占用内存
饿汉式单例
1234567891011121314public class Lazy { private Lazy() { System.out.println(Thread.currentThread().getName() + "ok"); } private static Lazy INSTANCE; public static Lazy getInstance() { ...
IDEA远程调试Tomcat部署代码
1.在%CATALINA_HOME%\bin\catalina.bat中找到
1set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
注释替换为
1set "JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
debug端口为8888
2.在IDEA配置远程debug
总结
总结基础
修饰符范围
修饰符
范围
private
只允许本类访问
缺省(default)
允许本类,同包访问
protected
允许本类,同包,子类访问
public
允许本类,同包,子类,全局访问
包装类型的缓存
Byte,Short,Integer,Long存在[-128,127]的缓存,Character存在[0,127]的缓存,Boolean直接返回True、False
自动拆箱装箱
12Integer i = 10 //等价于 Integer i = Integer.valueof(10)int n = i //等价于 int n = i.intValue()
静态变量、成员变量、局部变量
静态变量:被static修饰的成员变量,全局只有一份(指的内存分配),所有实例共享,只分配一次内存,类加载时分配
成员变量:成员变量如果被static修饰则为静态变量属于类,反之属于实例,实例化时分配内存,存放在堆中,可以被public,private,static 等修饰符所修饰
局部变量:局部变量则存在于栈内存,局部变量不能被访问控 ...
Docker相关知识点
Docker实用篇0.学习目标1.初识Docker1.1.什么是Docker微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。
分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。
在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题
1.1.1.应用部署的环境问题大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:
依赖关系复杂,容易出现兼容性问题
开发、测试、生产环境有差异
例如一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。
1.1.2.Docker解决依赖兼容问题而Docker确巧妙的解决了这些问题,Docker是如何实现的呢?
Docker为了解决依赖的兼容问题的,采用了两个手段:
将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
将每个应用放到一个隔离容器去运行,避免互相干扰
这样打包好的应用包中,既包含应用本身,也保护应用所需要的Libs、Deps,无需再操作 ...