java

浅谈Java类的加载,链接及初始化

2021-06-19
一 类生命周期 Loading Linking(Verification.Preparation.Resolution) Initializing 二 类加载器 1 图解 2 代码 package jvm; public class T002_ClassLoadLevel { public static void main(String[] args) { System.out.println(String.class.getClassLoader()); System.out.println(

mybatis配置对象包含对象以及List的方式

2021-06-19
mybatis配置对象包含对象及List 这里隐藏get set方法 public class BatchManagerViewVo implements Serializable{ /** * @Description: serialVersionUID : TODO */ private static final long serialVersionUID = 1L; private List<ResourcesItemDto> resourceItem; private List<

详解SpringBoot异常处理流程及原理

2021-06-19
异常处理流程 执行目标方法,目标方法运行期间有任何异常都会被catch捕获,并标志当前请求结束,dispatchException抛出异常 进入视图解析流程,并渲染页面,发生异常时,参数mv为空,传入捕获的异常dispatchException 处理handler发生的异常,处理完成返回ModelAndView (1)遍历所有的HandlerExceptionResolvers,找到可以处理当前异常的解析器来解析异常 (2)调用resolveException解析异常,传入request和res

Java8新特性:函数式编程

2021-06-19
首先需要清楚一个概念:函数式接口:它指的是有且只有一个未实现的方法的接口,一般通过FunctionalInterface这个注解来表明某个接口是一个函数式接口.函数式接口是Java支持函数式编程的基础. 1 Java8函数式编程语法入门 Java8中函数式编程语法能够精简代码. 使用Consumer作为示例,它是一个函数式接口,包含一个抽象方法accept,这个方法只有输入而无输出. 现在我们要定义一个Consumer对象,传统的方式是这样定义的: Consumer c = new Consum

Mybatis如何自动生成数据库表的实体类

2021-06-19
第一步引入jar 第二步,配置文本文件 # 数据库驱动jar 路径 本地创库的包 drive.class.path=C:/Users/Administrator/.m2/repository/mysql/mysql-connector-java/5.1.30/mysql-connector-java-5.1.30.jar # 数据库连接参数 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://192.168.1.188:3306/sxh

教新手使用java如何对一个大的文本文件内容进行去重

2021-06-19
目录 有内存溢出风险的写法: 总结 有内存溢出风险的写法: public static void distinct() { File ff = new File("G://password/all.txt"); File distinctedFile = new File("G://password/all-distinced.txt"); PrintWriter pw = null; Set<String> allHash = null; FileRe

Java 汉字获取拼音或首字母工具类代码分析

2021-06-19
本文主要介绍Java中,将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的示例代码. 1.Maven依赖配置(pom.xml) <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> 2.工具类代码

SpringBoot部署到Linux读取resources下的文件

2021-06-19
SpringBoot工程在Linux上运行读取resources资源文件夹下的文件 背景 平时的业务开发中,我们通常会将一些固定不变的资源文件放到resources文件夹下,使用时通过相对路径获取文件,看是非常简单的一个功能 其中似乎也有一些小坑,例如获取到的文件内容乱码亦或者文件读取不到. 读取乱码 这个很简单哈,在maven插件中指定后续要获取的文件不进行编译,原样打进包内 <plugin> <groupId>org.apache.maven.plugins</group

SpringAop日志找不到方法的处理

2021-06-19
SpringAop日志找不到方法 错误截图: 显示没有找到该方法,于是我找到对应的类和对应的方法: 这里我用了反射来获取方法名和参数: 错误打印的结果显示方法名获取没有错误,于是我查看参数的类型是否有错 结果一个都对不上- int类型反射得到的class: Integer反射得到的Class: -终于知道之前错误里的Ljavexxxx是哪里来的了- 由于model是一个接口 model反射的Class得到的是他的子类org.springframework.validation.support.B

Java Optional&lt;Foo&gt;转换成List&lt;Bar&gt;的实例方法

2021-06-19
1.转换方法代码 public List<Bar> get(Optional<Foo> foo) { return foo.map(x -> x.getBazList() .stream() .map(Baz::getBar) .collect(Collectors.toList())) .orElse(Collections.emptyList()); } 或 public List<Bar> get(Optional<Foo> foo) { ret

SpringBoot集成Redis,并自定义对象序列化操作

2021-06-19
SpringBoot项目使用redis非常简单,pom里面引入redis的场景启动器,在启动类上加@EnableCaching注解,项目启动会自动匹配上redis,这样项目中就可以愉快地使用了, 使用方法:要么使用@Cacheable一类的注解自动缓存,要么使用RedisTemplate手动缓存. (前提是你的本机或者是远程主机要先搭好redis环境) 虽然SpringBoot好用,但这里也有好多坑,SpringBoot和MySQL一样,易学难精,阳哥说的对,练武不练功,到老一场空. 下面,我将

如何使用Spring自定义Xml标签

2021-06-19
目录 前言 正文 自定义NameSpaceHandler 自定义schema Parser Decorator 总结 前言 在早期基于Xml配置的Spring Mvc项目中,我们往往会使用<context:component-scan basePackage="">这种自定义标签来扫描我们在basePackae配置里的包名下的类,并且会判断这个类是否要注入到Spring容器中(比如这个类上标记了@Component注解就代表需要被Spring注入),如果需要那么它会帮助我们

Java编程中的4种代码块详解

2021-06-19
在Java编程中,代码块就是指用"{}"括起来的代码.下面看一下这四种代码块. 1.普通代码块 就是指类中方法的方法体. public void xxx(){ //code } 2.构造块 下面用"{}"括起来的代码片段,构造块在创建对象时会被调用,每次创建对象时都会被调用,并且优先于类构造函数(包括有参和无参的)执行. 构造块中定义的变量是局部变量. public class Client { {//构造代码块 System.out.println("执

详解Java策略模式

2021-06-19
一.策略模式到底是什么? 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 简单的说,策略模式代表了一类算法的通用解决方案,你可以在运行时选择使用哪种解决方案. 策略模式的重心 策略模式的重心不是如何实现算法, 而是如何组织.调用这些算法, 从而使得程序结构更加灵活,具有更好的维护性和扩展性. 算法的平等性 策略模式一个很大的特点就是各个策略算法的平等性.对于一系列具体的

mybatis 如何判断list集合是否包含指定数据

2021-06-19
需求 1.在mybatis脚本中想要判断list中是否含有某个字符串. 2.动态使用list中的属性,添加到数据库crud字段. 网上也没搜到类似的案例,配置choose功能,可以方便做写动态sql拼装,所以记录下. 准备 之前脚本中用的最多的list函数就是size和遍历了.那么mybatis脚本中是不是又包含函数了.首先我们要清楚list的类型.写个简单的测试用例. <select id="test" parameterType="java.util.Map&quo

SpringBoot与Postman实现REST模拟请求的操作

2021-06-19
前言 Postman是一款Http请求模拟工具.它可以模拟各种Http Request,使用起来十分的方便. 使用背景 利用Spring Boot 快速搭建一个Web应用,利用相同的url,不同的请求方式来调用不同的方法.最后利用Postman工具模拟实现. 实现方法 利用IDEA快速构建应用环境 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artif

Mybatis结果集映射一对多简单入门教程

2021-06-19
Mybatis 一对多 简单入门 易懂 搭建数据库环境 student 表 DROP TABLE IF EXISTS `student_2`; CREATE TABLE `student_2` ( `id` int(10) NOT NULL, `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `tid` int(10) NULL DEFAULT NULL, PRIMARY KEY (`

Java运行时数据区域(内存划分)的深入讲解

2021-06-19
1. 程序计数器(线程私有) 程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器(切换线程后,能恢复到正确的执行位置). 2. Java虚拟机栈(线程私有) (1) 概念   虚拟机栈描述的是Java方法执行的内存模型 : 每个方法执行的同时都会创建一个栈帧用于存储局部变量表.操作数栈.动态链接.方法出口 等信息.每一个方法从调用直至执行完成的过程,就对应一个栈帧在虚拟机栈中入栈和出栈的过程.声明周期与线程相同. 关于栈帧的理解: 创建启动一个线程,就创建了一个虚拟机

druid升级后sql监控页面为空白的解决

2021-06-19
druid升级后sql监控页面为空白 说明 springboot项目,集成druid,之前版本是1.1.10,后来直接升级成1.1.22 出现问题 sql监控为空: 数据源filter也为空: 解决过程 网上查询得知,filter类名应为com.alibaba.druid.filter.stat.StatFilter. 借助ide,找到了stat过滤器加载的关键信息. 在com.alibaba.druid.spring.boot.autoconfigure.stat.DruidFilterCon

Jackson库中objectMapper的用法

2021-06-19
Jackson库中objectMapper用法 ObjectMapper类是Jackson库的主要类.它提供一些功能将转换成Java对象与SON结构互相转换,在项目中遇到过,故记录一下. 在 pom.xml 加入依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>