JAVA个人笔记

简介: JAVA个人笔记

第三讲

  1. try-with-resources

        jdk7之后异常处理的一个新方法,在try()中声明的资源,不用再finally中手动释放,而是系统自动会调用close()方法
        
  2. copy-on-write

        读写分离,读的时候不上锁,add元素的时候先拷贝一份,添加完成后再修改之前的final变量应用
    

第十三讲

public class VIPCenter {
    private Map<User.TYPE, ServiceProvider> providers;
    void serviceVIP(T extend User user) {
        providers.get(user.getType()).service(user);
    }
}

interface ServiceProvider{
    void service(T extend User user) ;
}

class SlumDogVIPServiceProvider {
    void service(T extend User user){
        // do somthing
    }
}
class RealVIPServiceProvider{
    void service(T extend User user) {
        // do something
    }
}

上面的示例,将不同对象分类的服务方法进行抽象,把业务逻辑的紧耦合关系拆开,实现代码的
隔离保证了方便的扩展。

第二十三讲

Java 8 以前各种类加载器的结构

启动类加载器(Bootstrap Class-Loader),加载 jre/lib 下面的 jar 文件,如 rt.jar。它是
个超级公民,即使是在开启了 Security Manager 的时候,JDK 仍赋予了它加载的程序
AllPermission。

# 指定新的 bootclasspath,替换 java.* 包的内部实现
java -Xbootclasspath:<your_boot_classpath> your_App
# a 意味着 append,将指定目录添加到 bootclasspath 后面
java -Xbootclasspath/a:<your_dir> your_Ap
p# p 意味着 prepend,将指定目录添加到 bootclasspath 前面
java -Xbootclasspath/p:<your_dir> your_A

使用最常见的 “/p”,既然是前置,就有机会替换个别基础类的实现

扩展类加载器(Extension or Ext Class-Loader),负责加载我们放到 jre/lib/ext/ 目录下
面的 jar 包,这就是所谓的 extension 机制。该目录也可以通过设置 “java.ext.dirs”来覆
盖。

java -Djava.ext.dirs=your_ext_dir HelloWord

应用类加载器(Application or App Class-Loader),就是加载我们最熟悉的 classpath 的
内容。这里有一个容易混淆的概念,系统(System)类加载器,通常来说,其默认就是 JDK
内建的应用类加载器,但是它同样是可能修改的,比如:

java -Djava.system.class.loader=com.yourcorp.YourClassLoader HelloWorld

**在 JDK 9 中,由于 Jigsaw 项目引入了 Java 平台模块化系统(JPMS),Java SE 的源代码被划
分为一系列模块**

    前面提到的 -Xbootclasspath 参数不可用了。API 已经被划分到具体的模块,所以上文中,

利用“-Xbootclasspath/p”替换某个 Java 核心类型代码,实际上变成了对相应的模块进行
的修补,可以采用下面的解决方案:
首先,确认要修改的类文件已经编译好,并按照对应模块(假设是 java.base)结构存放, 然
后,给模块打补丁:

java --patch-module java.base=your_patch yourApp

扩展类加载器被重命名为平台类加载器(Platform Class-Loader),而且 extension 机制则
被移除。也就意味着,如果我们指定 java.ext.dirs 环境变量,或者 lib/ext 目录存在,JVM
将直接返回错误!建议解决办法就是将其放入 classpath 里。
部分不需要 AllPermission 的 Java 基础模块,被降级到平台类加载器中,相应的权限也被更
精细粒度地限制起来。
rt.jar 和 tools.jar 同样是被移除了!JDK 的核心类库以及相关资源,被存储在 jimage 文件
中,并通过新的 JRT 文件系统访问,而不是原有的 JAR 文件系统。虽然看起来很惊人,但幸
好对于大部分软件的兼容性影响,其实是有限的,更直接地影响是 IDE 等软件,通常只要升
级到新版本就可以了。

1.@TableField(exist=false)
entity中属性加上这个注解可以使entity返回不属于表中的字段,sql查询的时候直接写那个字段就可自动注入

2.配置扫描包

<context:component-scan base-package="controller" />
<context:component-scan base-package="serviceimpl"/>  
<context:component-scan base-package="model"/>  

3.同一接口不同实现类
@Autowired
@Qualifier("myService1") //名称是service注解上写的名称

4.数据库datetime类型,在mybatis的xml中不能用

<if test="( null !=addTime and  addTime != '' )">

之类进行判断,不然会报错

Caused by: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
相关文章
|
14天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
160 37
|
14天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑】设计模式——原型模式
对比原型模式和传统方式的实现思路、代码方案、优缺点,阐述原型模式的使用场景,以及深拷贝、浅拷贝等相关概念,并扩展原型模式在Spring源码中的应用。
【Java笔记+踩坑】设计模式——原型模式
|
1天前
|
JSON Java Maven
关于使用Java-JWT的笔记
这篇文章介绍了使用Java-JWT库来生成和验证JSON Web Tokens (JWT) 的方法。文中解释了JWT的组成,包括头部、载荷和签名,并提供了如何使用java-jwt库生成和验证token的示例代码。此外,还提供了Maven依赖和一些关于token的标准声明和自定义声明的解释。
关于使用Java-JWT的笔记
|
15天前
|
Java 开发者 数据格式
【Java笔记+踩坑】SpringBoot基础4——原理篇
bean的8种加载方式,自动配置原理、自定义starter开发、SpringBoot程序启动流程解析
【Java笔记+踩坑】SpringBoot基础4——原理篇
消息中间件 缓存 监控
74 0
|
15天前
|
运维 Java 关系型数据库
【Java笔记+踩坑】SpringBoot基础2——运维实用
SpringBoot程序的打包与运行、临时配置、多环境配置、日志
【Java笔记+踩坑】SpringBoot基础2——运维实用
|
15天前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
15天前
|
SQL Java 数据库连接
【Java笔记+踩坑】MyBatisPlus基础
MyBatisPlus简介、标准数据层开发CRUD、业务层继承IService、ServiceImpl、条件查询、LambdaQueryWrapper、id生成策略、逻辑删除、乐观锁@Version、代码生成器、ActiveRecord
【Java笔记+踩坑】MyBatisPlus基础
|
15天前
|
前端开发 Java 数据库连接
【Java笔记+踩坑】SpringBoot——基础
springboot三种配置文件及其优先级、多环境配置、springboot整合junit,mybatis、ssmp综合图书案例
【Java笔记+踩坑】SpringBoot——基础
|
15天前
|
Java 数据库连接 Maven
【Java笔记+踩坑】Maven高级
分模块开发、依赖传递与冲突问题、 可选依赖和排除依赖、聚合和继承、属性、多环境配置与应用、私服安装和使用
【Java笔记+踩坑】Maven高级