每日 leetcode
决定开始刷leetcode了
目标: 每天一道 如果每日一题是easy, 就加一道hard 如果每日一题是easy, 就加一道medium
目标: 每天一道 如果每日一题是easy, 就加一道hard 如果每日一题是easy, 就加一道medium
什么垃圾软件, 毁我人生!!
Spring框架,它最主要的功能就是管理一堆使App(应用)发挥功能的类,这些作为整个App的基石、主干的类,就叫做bean。
包 (Package)
是Java源文件的集合, 包含Class/Interface/Annotation的定义
与文件系统中的目录对应
主要目的是防止命名冲突
Jar (Java Archive File)
是编译后的Java代码(.class
)的压缩包
实际上是一个zip格式文件
对Jar的操作用jar
命令, 其语法类似Linux下的tar
创建Jar包: jar cvf test.jar test
解压Jar包: jar xvf test.jar
列举Jar包的内容: jar tvf test.jar
模块 (Module)
是Java语言内置的一种管理组件之间依赖关系的方法, 在Java 9被引入
Module 解决的问题:
在Java 9之前, 主要使用package作为封装方式,使用Jar作为模块, 封装方式由 package和访问修饰符 (private, protected, public,包私有) 控制
任何模块都能访问其他模块的public的代码,不同Jar下的同名包可以相互访问包私有的代码。
无法控制非平台开发者对平台内部包的访问,如应用代码可以访问sun.misc、com.sun.security这样和具体平台绑定的包。
没有明确的依赖信息,模块开发者无法设置必须的依赖,模块使用者不清楚该模块必须依赖哪些模块。只能使用外部的工具,如Maven、Gradle、OSGI等。
Module 的优势
明确的依赖配置,JPMS会在编译和运行之前检查当前环境是否满足依赖的要求。JPMS会检查版本冲突,即当有两个模块暴露了相同的包名时,系统会抛出异常。JPMS支持传递性依赖。
强大的封装,模块可以明确指定哪些包能暴露给哪些模块,JPMS不允许代码使用反射的方式访问不对外开放的包。
性能优化,JPMS完全清楚哪些模块是需要的,所以不需要的模块不会被JVM载入。
Module 的不足:
特点:
![](https://frezcirno.github.io/static/images/2020-12-04-java-module.jpg)