java

Java Integer对象的比较方式

2021-09-16
目录 Java Integer对象的比较 自动装箱 自动拆箱 Integer初始化 Integer对象之间的比较 Integer类型变量比较问题 代码1 代码2 代码3 代码4 关于这种现象,查了下资料,总结如下 Java Integer对象的比较 Integer对象之间的比较要考虑到对象初始化的不同情况,初始化又涉及到对象包装器类的自动装箱特性 . 自动装箱 Integer是一种对象包装器类.对象包装器类是不可变的,也就是说,一旦完成了构造,包装在其中的值就不可以再被更改了.包装器类有一种特性

Effective Java 在工作中的应用总结

2021-09-16
目录 一  创建和销毁对象篇 1  若有多个构造器参数时,优先考虑构造器 2  通过私有构造器强化不可实例化的能力 二  类和接口篇 1  最小化类和成员的可访问性 2  使可变形最小化 三  泛型篇 1  列表优先于数组 四  方法篇 1  校验参数的有效性 2  谨慎设计方法签名 3  返回零长度的数组或者集合,而不是null 五  通用程序设计篇 1  如果需要精确的答案,请避免使用float和double 2  基本类型优先于装箱基本类型 六  异常 1  每个方法抛出的异常都要有文档

教你如何用好 Java 中的枚举

2021-09-16
目录 1.概览 2.自定义枚举方法 3.使用 == 比较枚举类型 4.在 switch 语句中使用枚举类型 6.EnumSet and EnumMap 6.1. EnumSet 6.2. EnumMap 7. 通过枚举实现一些设计模式 7.1 单例模式 7.2 策略模式 8. Java 8 与枚举 9. Enum 类型的 JSON 表现形式 10. 补充 1.概览 enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承java.lang.Enum类,更多内容可以自行查看其官方文档

解决spring boot环境切换失效的问题

2021-09-16
目录 spring boot环境切换失效 概述 解决 springboot多环境配置文件无效 springboot配置文件无效 spring boot环境切换失效 概述 最近在使用-Dspring.profiles.active=te 来切换spring-boot的环境时,发现日志打印的是: ...ApplicationStartUp - The following profiles are active: de 也就是说,参数失效了. debug调试时,发现spring-boot读取的也是de

Mybatis Plus 增删改查的实现(小白教程)

2021-09-16
目录 前言 什么是 mybatis-plus? 快速开始 准备环境: 准备数据表 IDEA中配置 maven 创建 spring boot 应用 创建mapper接口 添加@MapperScan 扫描 Mapper 文件夹 配置 mybatis 日志 CRUD 基本用法 insert 操作 update 操作 delete 操作 select 操作 前言 在持久层框架中 mybatis 应用比较多,而且比重在逐渐的上升.通常项目的组合是 SSM.mybatis 之所以火,是因为他的灵活,使用方便

Java try()语句实现try-with-resources异常管理机制操作

2021-09-16
目录 Java try()语句实现try-with-resources异常管理机制 不使用try-with-resources时,使用的资源要在finally中进行释放 使用try-with-resources时 自定义AutoCloseable实现 try-with-resources语句优雅的关闭资源 在java1.7以前,我们关闭资源的方式如下 我们先直接上一个demo,方便理解 反编译之后我们可以看见 源码里面有解释 总结 Java try()语句实现try-with-resources

springboot + mybatis + druid + 多数据源的问题详解

2021-09-16
目录 一. 简介 二. sql脚本 三. 工程搭建 3.1 目录结构图 3.2 pom.xml文件 3.3 application.yml 3.4 数据源配置类 3.5 Controller 3.6 Service 3.7 serviceImpl 3.8 mapper 3.9 mapper.xml 3.10 entity 3.11  启动类 四. 测试 一. 简介 俩个数据库db1,db2, db1数据库的mapper.xml和db2数据库的mapper.xml分别放到不同的目录下, 通过给不同

Java中关于二叉树层序遍历深入了解

2021-09-16
前言 大家好,我是bigsai,在数据结构与算法中,二叉树无论是考研.笔试都是非常高频的考点内容,在二叉树中,二叉树的遍历又是非常重要的知识点,今天给大家讲讲二叉树的层序遍历. 这部分很多人可能会但是需要注重一下细节. 前面介绍了二叉排序树的构造和基本方法的实现,遍历也是比较重要的一环,并且二叉树的层序遍历也是bfs的最简单情况,这里我就将二叉树的层序遍历以及常考问题给大家分享一下. 在了解二叉树的遍历之前,需要具备数据结构与算法有队列.递归.栈.二叉树,这些内容咱们前面都有讲过,有这方面知识欠

springboot项目配置swagger2示例详解

2021-09-16
swagger简介 Swagger是一款RESTful接口的文档在线自动生成.功能测试功能框架.一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的呈现. 当我们在后台的接口修改了后,swagger可以实现自动的更新,而不需要人为的维护这个接口进行测试. 一.swagger2中常用的注解作用 注解 作用 @Api 修饰整个类,描述Controller的作用 ,表示标识这个类是swagger的资源 @ApiOperation 描述

Java修改Integer变量值遇到的问题及解决

2021-09-16
目录 Java 修改Integer变量值 下面我尝试了两种方法去改变Integer的整型值 看看源码 Integer值比较需要注意的问题 原因 解决办法 Java 修改Integer变量值 对于Integer变量来说,比较变量值常见情形如下: Integer a = 1000; Integer b = 1000; Integer c = 100; Integer d = 100; System.out.println(a == b); System.out.println(c == d); "=

基于@PostConstruct注解的使用,解决向静态变量注入值

2021-09-16
目录 @PostConstruct注解的使用,向静态变量注入值 说说思路 @PostConstruct和静态变量注入和spring初始化 执行顺序 关于spring初始化操作 @PostConstruct注解的使用,向静态变量注入值 今天在编写工具类时遇到了一个问题,一般在定义工具类方时,我们会将工具类中的方法定义成static类型,使用时可以通过类名.方法名获取该方法,无需实例化出对象才能使用其内部方法,但是当有些参数在配置文件中定义时,我们需要拿到这些参数就需要在工具类方法使用@Value注

spring boot org.junit.jupiter.api不存在的解决

2021-09-15
目录 org.junit.jupiter.api不存在 解决方案 新建Springboot项目默认test包下的测试类报错缺少org.junit.jupiter.api 报错如下 原因分析 解决方案 org.junit.jupiter.api不存在 解决方案 spring boot2.2之后和之前的测试类编写方法不一致 修改为: // A code block import org.junit.Test;import org.junit.runner.RunWith; import org.sp

实践讲解SpringBoot自定义初始化Bean+HashMap优化策略模式

2021-09-15
策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 传统的策略模式一般是创建公共接口.定义公共方法-->然后创建实体类实现公共接口.根据各自的逻辑重写公共方法-->创建一个行为随着策略对象改变而改变的 context 对象-->根据不同的传参,调用不同的接口实现类方法,达到只改变参数即可获得不同结果的目的. 但是也可以明显发现,这种策略模式的实现方式,代码量较大,而且还要自定义要传递的参数,可能会引入一定数量的if/else,有一定的优

HashMap在JDK7与JDK8中的实现过程解析

2021-09-15
HashMap的实现原理 首先有一个每个元素都是链表(可能表述不准确)的数组,当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后面,他们在数组的同一位置,但是形成了链表,同一各链表上的Hash值是相同的,所以说数组存放的是链表.而当链表长度太长时,链表就转换为红黑树,这样大大提高了查找的效率. 当链表数组的容量超过初始容量的0.75时,再散列将链表数组扩

Java数据机构中关于并查集的详解

2021-09-15
目录 概念 实现 初始化并查集 判断是不是同一个组 查找当前节点的代表节点 合并操作 本期文章源码:GitHub 一文彻底搞懂<并查集>! 概念 并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并.查).比如说,我们可以用并查集来判断一个森林中有几棵树.某个节点是否属于某棵树等. 具体的用法,我们会以下一篇文章<图的相关算法>中,有一个克鲁斯卡尔算法,用于生成最小生成树,会用到并查集. 并查集的主要作用是求连通分支数(如果一个图中所有点都存在可达关系(直

maven配置本地仓库的方法步骤

2021-09-15
目录 1.下载apache-maven-3.6.3-bin.zip 2.配置环境变量 3.测试 4.配置本地仓库 5.输入命令 本文主要介绍了maven配置本地仓库,分享给大家,具体如下: 官网http://maven.apache.org/download.cgi 1.下载apache-maven-3.6.3-bin.zip 然后解压放在本地盘(我放在了C盘,重命名为maven).然后再新建一个文件夹,命名为:maven-repository,作为本地仓库. 2.配置环境变量 在系统属性-环境

Spring security如何重写Filter实现json登录

2021-09-15
Spring security 重写Filter实现json登录 在使用SpringSecurity中,大伙都知道默认的登录数据是通过key/value的形式来传递的,默认情况下不支持JSON格式的登录数据,如果有这种需求,就需要自己来解决,本文主要解决此问题: JSON登录 上面演示的是一种原始的登录方案,如果想将用户名密码通过JSON的方式进行传递,则需要自定义相关过滤器,通过分析源码我们发现,默认的用户名密码提取在UsernamePasswordAuthenticationFilter过滤

Java 模拟真正的并发请求详情

2021-09-15
java中模拟并发请求,自然是很方便的,只要多开几个线程,发起请求就好了.但是,这种请求,一般会存在启动的先后顺序了,算不得真正的同时并发! 怎么样才能做到真正的同时并发呢? 是本文想说的点,java中提供了闭锁 CountDownLatch, 刚好就用来做这种事就最合适了. 只需要: 开启n个线程,加一个闭锁,开启所有线程: 待所有线程都准备好后,按下开启按钮,就可以真正的发起并发请求了. package com.test; import java.io.BufferedReader; imp

spring boot实现在request里解密参数返回

2021-09-15
目录 spring boot在request里解密参数返回 前言 代码块 最后 Spring boot配置Aop获取controller里的request中的参数及其返回值 首先在你的Maven的pom文件里加入aop的依赖 下面为我所有被请求到的controller加上Aop的功能 spring boot在request里解密参数返回 前言 有个业务需求,一个请求来源web,一个请求来源APP,web需求验证签名,APP的参数是经过加密,所以出现了两个Controller,除了解密获取参数方式

关于@PostConstruct、afterPropertiesSet和init-method的执行顺序

2021-09-15
目录 @PostConstruct.init-method.afterPropertiesSet() 执行顺序 @PostConstruct 标注的方法在何时被谁调用 init-method.afterPropertiesSet() 的调用 顺序的确定 @PostConstruct.init-method.afterPropertiesSet() 执行顺序 想要知道 @PostConstruct.init-method.afterPropertiesSet() 的执行顺序,只要搞明白它们各自在什