java

Springboot安全框架整合SpringSecurity实现方式

2021-09-13
目录 1.工业级安全框架介绍 2.建议搭建Spring Security环境 2.1在pom.xml中添加相关依赖 2.2创建Handler类 2.3创建简单的html和配置相关thymeleaf的路径 2.4最后再加个启动类,那么我们的整合测试就完成勒 2.5成果展示 用户名默认user,密码则随机生成的这串数字 3.进阶版使用 3.1用户名和密码自定义 3.2在config包下创建Encoder进行密码的校验和转码操作 3.3赋予账号角色权限 1.工业级安全框架介绍 Spring Secur

Java数据结构与算法之双向链表、环形链表及约瑟夫问题深入理解

2021-09-13
目录 一.双向链表 二.环形链表及其应用:约瑟夫问题 环形链表图示 构建一个单向的环形链表思路 遍历环形链表 约瑟夫问题 一.双向链表 使用带head头的双向链表实现 - 水浒英雄排行榜管理单向链表的缺点分析: 单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找. 单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们单链表删除节点时,总是找到temp,temp时待删除节点的前一个节点(认真体会). 分析双向链表的遍历,添加,修改,删除的操作思路 1.遍历

Java使用opencv识别二维码的完整步骤

2021-09-13
目录 前言 OpenCV的安装 开发环境配置 识别二维码 总结 前言 OpenCV的全称是Open Source Computer Vision Library,它是一个跨平台的计算机视觉库,由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用.OpenCV本身由C++语言开发,但也具有各种其他语言的接口,并支持windows.linux.ios.android等各种操作系统.本文将介绍如何使用OpenCV与Java语言进行二维码识别. OpenCV的安装 目前Op

Java设计模式之java原型模式详解

2021-09-13
目录 介绍 角色 Java语言提供的clone()方法 代码演示-克隆羊 结论 深浅拷贝 深浅拷贝探讨 实现深克隆的方式一 : 手动对引用对象进行克隆 实现深克隆的方式一 :序列化 原型模式对单例模式的破坏 优缺点 适用场景 原型模式在Spring中的应用场景 总结 介绍 原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.原型模式是一种对象创建型模式. 原型模式的工作原理很简单:将一个原型对象传给那个要发动创建的对象,这个要发动创建

Mybatis两种不同批量插入方式的区别

2021-09-13
目录 前言 测试 拼接 sql batch插入 数据对比 总结 前言 本文使用 Mybatis 进行批量插入,比较两种不同的插入方式的区别. 测试 批量插入注意事项: 1.连接数据库时添加参数 allowMultiQueries=true,支持多语句执行,批处理 2.数据库是否支持大量数据写入,设置 max_allowed_packet参数保证批次提交的数据量 拼接 sql public void batchDemo() { long start = System.currentTimeMill

Java设计模式之java迭代器模式详解

2021-09-13
目录 前言 介绍 角色 迭代器模式中的工厂模式 学院遍历的案例 分析 解决方案 基本介绍 原理类图 上面案例的类图 案例实现代码 案例总结 应用实例 Java集合中的迭代器模式 角色说明 Mybatis中的迭代器模式 优点 缺点 总结 前言 很早之前,我们的电视调节频道是需要用电视上的按钮去控制的,那时并没有遥控器,如果我们想要调台,只能一次又一次的拧按钮. 越来越高级的电视机相继出现,现在的电话机,我们有了电视遥控器,我们使用电视遥控器来调台,这个时候,无需直接操作电视. 我们可以将电视机看成

Spring IOC中的Bean对象用法

2021-09-13
目录 Spring IOC中的Bean对象 一.Bean是什么 二.Bean对象的三种构造方式 三.依赖注入 四.Bean的生命周期 Ioc中Bean的作用域 bean的作用范围和生命周期 Spring IOC中的Bean对象 一.Bean是什么 突然发现提到了好多次Bean,居然忘记了讲Bean是什么.没事,现在讲也不晚.Java中的Bean是一种规范,是一种特殊的java类.所以我们先来看看Bean的规范. Bean必须生成public class类. 所有属性必须封装,Bean类的属性都为

Spring框架的JdbcTemplate使用

2021-09-13
目录 JdbcTemplate 概述 对JdbcTemplate进行分步演示 1:测试数据源 2:为IoC容器配置一个JdbcTemplate 3:更新 4:批量插入 5:查询emp_id=5的记录,封装为一个Java对象返回. 6:查询salary>4000的记录,封装为List集合返回 7:查询最大的salary 8:使用具名参数SQL插入一条员工记录,并以Map形式传入参数值. 9:使用具名参数SQL插入一条员工记录,并以SqlparamSource传入参数值. JdbcTemplate

java工程师进阶之MyBatis延迟加载的使用

2021-09-13
目录 什么是延迟加载? 如何使用延迟加载? 1.在 config.xml 中开启延迟加载 2.将多表关联查询拆分成多个单表查询 什么是延迟加载? 延迟加载也叫懒加载.惰性加载,使⽤延迟加载可以提⾼程序的运行效率,针对于数据持久层的操作, 在某些特定的情况下去访问特定的数据库,在其他情况下可以不访问某些表,从⼀定程度上减少了 Java 应⽤与数据库的交互次数. 查询学⽣和班级的时,学生和班级是两张不同的表,如果当前需求只需要获取学shengsheng的信息,那么查询学 ⽣单表即可,如果需要通过学⽣

Java语法关于泛型与类型擦除的分析

2021-09-13
泛型与类型擦除 泛型,JDK 1.5新特性,本质是参数化类型(Parametersized Type) 的应用,即所操作的数据类型被指定为一个参数.这种参数类型可用在: 类 接口 方法 的创建中, 分别称为: 泛型类 泛型接口 泛型方法 在Java还没有泛型的版本时.只能通过: Object 是所有类型的父类 类型强制转换 两个特性协作实现类型泛化.例如,在哈希表的存取中,JDK 1.5之前使用HashMap的get() 方法,返回值就是个Object.由于Java语言里面所有的类型都维承于ja

使用springboot activiti关闭验证自动部署方式

2021-09-13
目录 springboot activiti关闭验证自动部署 SpringBoot2.0 activiti6.0自动部署流程图 1.修改yaml文件关于activiti的配置 2.在SpringBoot项目启动的时候自动执行部署方法 springboot activiti关闭验证自动部署 # spring-activiti # 自动部署验证设置:true-开启(默认).false-关闭 spring.activiti.check-process-definitions=false # async

Java设计模式之java模板方法模式详解

2021-09-13
目录 模板方法模式 介绍 角色 代码演示 模板方法模式总结 优点 缺点 适用场景 源码分析模板方法模式的典型应用 Servlet 中的模板方法模式 Hello World! Spring中的IOC容器启动-refresh()方法 参考文章 总结 模板方法模式 在程序开发中,经常会遇到这种情况:某个方法要实现的算法需要多个步骤,但其中有一些步骤是固定不变的,而另一些步骤则是不固定的.为了提高代码的可扩展性和可维护性,模板方法模式在这种场景下就派上了用场. 譬如制作一节网课的步骤可以简化为4个步骤:

详解Spring中使用@within与@target的区别

2021-09-13
项目里用到@within时,出现了一些问题,使用@target就可以解决,但又会出现一些新的问题,因此本文探讨了在spring中,使用@within和@target的一些区别. 背景 项目里有一个动态切换数据源的功能,我们是用切面来实现的,是基于注解来实现的,但是父类的方法是可以切换数据源的,如果有一个类直接继承这个类,调用这个子类时,这个子类是不能够切换数据源的,除非这个子类重写父类的方法. 模拟项目例子 注解定义: @Target({ElementType.METHOD, ElementTy

java中jdbcTemplate的queryForList(坑)

2021-09-13
jdbcTemplate 中的queryForList,你真的懂吗? 你想象中的queryForList是不是应该长成下面这种模样? String sql = "select * from person"; List<Person> persons = jdbcTemplate.queryForList(sql, Person.class); 然后,你很激动的点了run 程序跑出来一个,你做梦都想不到的东西,不是list吗?为什么expected是1? 我总共7条数据啊,为

HashMap的get()方法的NullPointerException问题

2021-09-13
目录 HashMap的get()方法的NullPointerException 看下面代码 NullPointerException的一种情况 我们会在后面加一个.toString()方法来强转 如果我们取到了一个空值很可能会报空指针异常 HashMap的get()方法的NullPointerException 今天写代码发现一个 bug,HashMap的 get() 方法一直报空指针异常,现记录一下. 看下面代码 private HashMap<Integer, Integer> cache

深入浅出讲解Java集合之Map接口

2021-09-13
目录 一.Map接口继承树 二.Map接口中的常用方法 三.源码分析 1. HashMap的底层实现原理? 2.LinkedHashMap的底层实现原理(了解) 四.Collections工具类 一.Map接口继承树 Map:双列数据,存储key-value对的数据 ---类似于高中的函数:y = f(x) A.HashMap:作为Map的主要实现类:线程不安全的,效率高:存储null的key和value a.LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历. 原因

Java中关于二叉树的概念以及搜索二叉树详解

2021-09-12
目录 一.二叉树的概念 为什么要使用二叉树? 树是什么? 树的相关术语! 根节点 路径 父节点 子节点 叶节点 子树 访问 层(深度) 关键字 满二叉树 完全二叉树 二叉树的五大性质 二.搜索二叉树 插入 删除 hello, everyone. Long time no see. 本期文章,我们主要讲解一下二叉树的相关概念,顺便也把搜索二叉树(也叫二叉排序树)讲一下.我们直接进入正题吧!GitHub源码链接 一.二叉树的概念 为什么要使用二叉树? 为什么要用到树呢?因为它通常结合了另外两种数据结

Java中关于线程安全的三种解决方式

2021-09-12
三个窗口卖票的例子解决线程安全问题 问题:买票过程中,出现了重票.错票-->出现了线程的安全问题 问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操作车票 如何解决:当一个线程a在操作ticket的时候,其他线程不能参与进来,知道线程a操作完ticket时,其他线程才可以开始操作ticket,这种情况即使线程a出现了阻塞,也不能被改变 在Java中,我们通过同步机制,来解决线程的安全问题.(线程安全问题的前提:有共享数据) 方式一:同步代码块 synchroniz

SpringBoot之Order注解启动顺序说明

2021-09-12
目录 Order注解启动顺序 order的规则 见下 它们的启动日志 @Order注解提供消费顺序 @org.springframework.core.annotation.Order Order注解启动顺序 order的规则 order的值越小,优先级越高 order如果不标注数字,默认最低优先级,因为其默认值是int最大值 该注解等同于实现Ordered接口getOrder方法,并返回数字. @Retention(RetentionPolicy.RUNTIME) @Target({Eleme

Java中的ArrayList容量及扩容方式

2021-09-12
目录 查看JDK1.8 ArrayList的源代码 1.默认初始容量为10 2.最大容量为 Integer.MAX_VALUE - 8 3.扩容方式: Java ArrayList() 扩容原理 先看下 ArrayList 的属性以及构造方法,这个比较重要 上看说的是初始化场景,下面看一下其他场景,也是相当简单 结论 查看JDK1.8 ArrayList的源代码 1.默认初始容量为10 /** * Default initial capacity. */ private static final