java

解读java try catch 异常后还会继续执行吗

2022-11-23
目录 java try catch异常后还会继续执行吗 小结下 try-catch块捕获异常三种情况 第一种情况 第二种情况 第三种情况 java try catch异常后还会继续执行吗 catch中如果你没有再抛出异常,那么catch之后的代码是可以继续执行的,但是try中,报错的那一行代码之后 一直到try结束为止的这一段代码 , 是不会再执行的. //代码1 public static void test() throws Exception  {     throw new Except

SpringBoot整合Mybatis-plus案例及用法实例

2022-11-23
目录 一.mybatis-plus简介: 二.springboot整合mybatis-plus案例 mybatis plus强大的条件构造器queryWrapper.updateWrapper 总结 一.mybatis-plus简介: Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生.这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网.那么它是怎么增强的

Nacos配置中心搭建及动态刷新配置及踩坑记录

2022-11-22
目录 一.Nacos配置中心介绍 二.配置中心搭建 1.配置中心启用 2.创建配置文件 3.工程配置 三.试验结果 四.踩坑经历 五.总结 近期有用到阿里的开源配置中心及注册中心nacos,特此记录并分享一些学习笔记及配置踩坑点. 一.Nacos配置中心介绍 从架构图上可以知道,Nacos提供了两种服务,一种是用于服务注册.发现的Naming Service,一种是用于配置中心.动态配置的Config Service,而他们底层均由core模块来支持. 外层提供OpenAPI供客户端使用,并提供

Spring EnableAsync注解异步执行源码解析

2022-11-22
目录 概述 @EnableAsync 分析 ProxyAsyncConfiguration 分析 AsyncAnnotationBeanPostProcessor 分析 AsyncAnnotationAdvisor 分析 Advice 构建 Pointcut 构建 AnnotationAsyncExecutionInterceptor 分析 AsyncTaskExecutor 查找 Callable 任务封装 doSubmit 异步执行方法 总结 概述 基于 Spring Framework v

一文详解Java如何创建和销毁对象

2022-11-21
目录 一.介绍 二.实例构造(Instance Construction) 2.1 隐式(implicitly)构造器 2.2 无参构造器(Constructors without Arguments) 2.3 有参构造器(Constructors with Arguments) 2.4 初始化块(Initialization Blocks) 2.5 构造保障(Construction guarantee) 2.6 可见性(Visibility) 2.7 垃圾回收(Garbage collect

Java利用TreeUtils工具类实现列表转树

2022-11-21
目录 一.序言 二.实战编码 1.引入坐标 2.编写DO 3.创建BO 3.调用TreeUtils工具类 4.效果展示 三.小结 一.序言 在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单.多级目录.多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身,提高开发效率. 本文将基于Java8的Lambda 表达式和Stream等知识,使用TreeUtils工具类实现一行代码完成列表转树这一通用型需求.本文有配套视频,传送门直达. 需要说明的是,本T

基于Spring-AOP实现自定义分片工具详解

2022-11-20
目录 1.背景 2.Spring-AOP 3.功能实现 3.1 MethodPartAndRetryer 3.2 RetryUtil 3.3 RetryAspectAop 4.功能使用 4.1 配置文件 4.2 代码示例 5.小结 1.背景 随着数据量的增长,发现系统在与其他系统交互时,批量接口会出现超时现象,发现原批量接口在实现时,没有做分片处理,当数据过大时或超过其他系统阈值时,就会出现错误.由于与其他系统交互比较多,一个一个接口去做分片优化,改动量较大,所以考虑通过AOP解决此问题. 2.

Nacos配置中心的配置文件的匹配规则及说明

2022-11-20
目录 Nacos配置中心配置文件的匹配 1.配置微服务配置中心文件 2.常用细节 3.从一个配置中心加载多个配置集 Nacos配置中心配置不成功问题 1.扫描包 2.关于配置nacos 3.为何没有热加载? 4.配置好为何还是没有热加载? 5.另一个坑 6.如何打开项目中的nacos Nacos配置中心配置文件的匹配 详情见nacos的官方文档 1.配置微服务配置中心文件 在 Nacos Spring Cloud 中,数据集(Data Id) 的配置完整格式如下: ${prefix}-${spr

Java搜索与图论之DFS和BFS算法详解

2022-11-20
目录 DFS和BFS简介 DFS数字排序 DFS皇后排序 DFS树的重心 BFS走迷宫 BFS八数码 BFS图层次 本次我们介绍搜索与图论篇中DFS和BFS,我们会从下面几个角度来介绍: DFS和BFS简介 DFS数字排序 DFS皇后排序 DFS树的重心 BFS走迷宫 BFS八数码 BFS图层次 DFS和BFS简介 首先我们先来介绍一下DFS和BFS: DFS:深度优先遍历算法,我们在进行算法运算时,优先将该路径的当前路径执行完毕,执行完毕或失败后向上回溯尝试其他途径 BFS:广度优先遍历算法,

Spring数据库连接池实现原理深入刨析

2022-11-20
目录 Spring事务管理 环境搭建 标准配置 声明式事务 总结 SqlSessionFactory XML中构建SqlSessionFactory 获得SqlSession的实例 代码实现 作用域(Scope)和生命周期 SqlSessionFactoryBuilder(构造器) SqlSessionFactory(工厂) SqlSession(会话) Spring事务管理 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序

Java中的异步与线程池解读

2022-11-19
目录 初始化线程的4种方式 1.继承Thread 2.实现Runnable 接口 3.实现Callable 接口+ FutureTask (可以拿到返回结果,可以处理异常) 4.线程池 创建线程池(ExecutorService) 1.Executors 工具类创建 2.原生方法创建线程池 3.线程池的运行流程 线程池创建 4. 四种常见的线程池 为什么要使用线程池 CompletableFuture 异步编排 1.创建异步对象 2.计算完成时(线程执行成功)回调方法 3.handle 方法(可

Java嵌入式开发的优势及有点总结

2022-11-19
使用 Java 为嵌入式设备开发应用程序,除了最好的语言质量外,还可以保证减少用于项目创建的时间和成本,这要归功于各种用途和现有支持.那么,让我们看看为什么应该将 Java 用于嵌入式系统的其他一些原因: 上市时间很重要,提供更少的开发时间:Java 具有理想的内存管理,更容易检测错误(并修复它们); 推荐用于 5 屏以上的 GUI 项目; 从第一个版本开始的坚固性(由于包装概念.设计模式和 SOLID 原则); 简单; 可移植到不同的 CPU 或操作系统(无需重写代码); 安全性,支持加密敏感

Java @GlobalLock注解详细分析讲解

2022-11-18
目录 GlobalLock的作用 全局锁 为什么要使用GlobalLock 工作原理 GlobalLock的作用 对于某条数据进行更新操作,如果全局事务正在进行,当某个本地事务需要更新该数据时,需要使用@GlobalLock确保其不会对全局事务正在操作的数据进行修改.防止的本地事务对全局事务的数据脏写.如果和select for update组合使用,还可以起到防止脏读的效果. 全局锁 首先我们知道,seata的AT模式是二段提交的,而且AT模式能够做到事务ACID四种特性中的A原子性和D持久性

Java BeanMap实现Bean与Map的相互转换

2022-11-18
目录 bean转Map map转Bean beanMap实现以及高性能的原因 net.sf.cglib.beans.BeanMap用法 bean转Map @Data public class Student { private int id; private String name; private Integer age; } Student student = new Student(); BeanMap beanMap = BeanMap.create(student); 此时的beanM

Java迭代器遍历list的方法及代码分析

2022-11-18
Java迭代器遍历list的方法是什么?动力节点小编来告诉大家.迭代器可用于遍历ArrayList.如果ArrayList中有更多元素,则hasNext()方法返回true,否则返回false.next()方法返回ArrayList中的下一个元素,如果没有下一个元素,则引发异常NoSuchElementException. 演示该程序的程序如下. import java.util.ArrayList; import java.util.Iterator; public class Demo {

Java工具类实现高效编写报表

2022-11-17
目录 为什么使用java代码写报表 遇到的问题 工具类 CollectionDataStream 如何使用 MyCollectors 组合使用的实现 优势 本文中的工具类和demo的代码仓库 为什么使用java代码写报表 对于报表数据大部分情况下使用写sql的方式为大屏/报表提供数据来源,但是对于某些复杂情况下仅仅使用sql无法实现,或者实现起来困难的时候,会采取通过代码实现复杂的逻辑最终将结果返回. 遇到的问题 对于相对复杂的报表,经常需要做数据的连接即表与表的join,分组,计算等操作.sq

Springboot使用Logback实现日志配置与异常记录

2022-11-17
目录 概述 logback配置详解 logback配置 异常情况 概述 默认情况下,SpringBoot内部使用logback作为系统日志实现的框架,将日志输出到控制台,不会写到日志文件.如果在application.properties或application.yml配置,这样只能配置简单的场景,保存路径.日志格式等.复杂的场景(区分 info 和 error 的日志.每天产生一个日志文件等)满足不了,只能自定义配置文件logback-spring.xml或者logback.xml.本篇文章主

我总结的几种@Transactional失效原因说明

2022-11-15
目录 总结几种@Transactional失效原因 非public方法 自调用问题 异常相关问题 抛出非运行时异常 传播机制配置错误 @Transactional事务失效场景类内部调用实测 demo1 demo2 demo3 demo4 总结几种@Transactional失效原因 非public方法 spring事务是通过动态代理的方法来实现的,有两种实现动态代理的方式,jdk动态代理方式是将目标对象放入代理对象内部,通过代理对象来访问目标对象:cglib字节码生成是通过生成目标对象的子类,通

一文带你搞懂Java中Get和Post的使用

2022-11-15
目录 1 Get请求数据 1.1 Controller 1.2 Service 1.3 Application 1.4 Postman 2 Post接收数据 2.1 Controller 2.2 Service 2.3 Application 2.4 Postman 3 Post发送数据 3.1 Controller 3.2 Service 3.3 ResponseResult 3.4 Config 3.5 Application 3.6 Postman 1 Get请求数据 项目地址:https

java如何给对象按照字符串属性进行排序

2022-11-15
目录 给对象按照字符串属性进行排序 三种方法实现字符串排序 排序方法概述 键索引计数法 低位优先的字符串排序(LSD) 高位优先的字符串排序(MSD) 三向字符串快速排序 给对象按照字符串属性进行排序 在java中对象进行排序,排序的属性是string,我们只需要实现Comparator接口,然后实现比较的方式. public class StringSort { public static void main(String[] args) { test1(); } // 方式1: public