自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shining的专栏

java开发者

  • 博客(163)
  • 收藏
  • 关注

原创 ListUtils用法:对于集合取交集、并集等

package listDemo;import org.apache.commons.collections4.ListUtils;import java.util.ArrayList;import java.util.List;public class ListUtilsDemo { public static void main(String[] args) {...

2022-05-24 22:09:00 703

原创 责任链模式-以SpringMVC中DispatcherServlet的HandlerExecutionChain为例

责任链模式的定义:责任链模式为请求创建了一个接收者对象的链,在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。在SpringMVC中DispatcherServlet的HandlerExecutionChain也应用了这一设计模式的思路(可能并不是太典型,这个最后总结):protected void doD...

2022-04-12 21:53:00 159

原创 @ConfigurationProperties 放在类上和方法上两种应用

@ConfigurationProperties作用首先看一下源码中的解释: * Annotation for externalized configuration. Add this to a class definition or a * {@code @Bean} method in a {@code @Configuration} class if you want to bin...

2022-04-10 11:29:00 1392 1

原创 java 设置系统参数(VM option)和设置main方法参数

一、使用idea设置参数idea配置如下:如图分别为ParamDemo这个带main方法的类,设置VM Options为-DvmParam="hello",设置Program arguments为a b c。public class ParamDemo { public static void main(String[] args) { //获取系统参数 ...

2022-04-08 22:48:00 4662

原创 java工具类记录

获取服务器系统信息package hutoolDemo;import cn.hutool.system.OsInfo;import cn.hutool.system.SystemUtil;public class OsDemo { public static void main(String[] args) { OsInfo osInfo = System...

2022-03-29 22:45:00 224

原创 spring-boot-starter-parent的作用

我们SpringBoot项目pom文件中都会引入spring-boot-starter-parent这样一个依赖,如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLS...

2022-03-22 22:29:00 7421

原创 SpringBoot 自动化配置,以quartz为例

总结来说:SpringBoot的自动化配置是这样实现的,启动时会去加载jar包(一般是spring-boot-autoconfigure-2.1.1.RELEASE.jar)中如下路径的“META-INF/spring.factories”内容,如下:org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfigur...

2022-03-21 22:19:00 611

原创 图片转base64工具类

hutool包和spring工具包中都有图片文件转base64的实现,例子如下:package imageDemo;import cn.hutool.core.codec.Base64Encoder;import cn.hutool.core.io.FileUtil;import org.springframework.util.Base64Utils;public class ...

2022-03-03 22:26:00 711

原创 Spring Boot starter的典型例子

Spring Boot starter 可以快速引入某个组件(比如redis、pagehelper等),他主要作用是:在pom文件中导入所要引入组件的依赖信息;这里边最重要的依赖是这个组件的自动配置类;其他依赖就比如组件的jar或者组件依赖的jar。下面以pagehelper组件(一个mybatis的优秀分页插件)为例来介绍starter的结构:1、pagehelper-sprin...

2022-02-22 22:12:00 295

原创 SpringBoot集成Redis后配置如何查找

当使用SpringBoot自动化集成各个组件时,各个组件的配置应该如何方便查找呢,下面以redis为例说明:首先到spring-boot-autoconfigure-2.1.1.RELEASE.jar的META-INF下找到spring.factories文件,文件内容如下,是SpringBoot自动集成各个组件的配置类:org.springframework.boot.autoconfi...

2022-02-17 21:41:00 601

原创 方法参数中注入spring管理的bean

在日常开发中使用做多的是通过@Autowired的方式注入属性,如下:@RestController@RequestMapping("/system/config")public class SysConfigController extends BaseController{ @Autowired private ISysConfigService configSer...

2022-01-26 23:31:00 529 5

原创 List经过stream操作再次聚合的List已经不是同一个对象

看以下例子:package stream;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;public class Demo { public static void main(String[] args) { List<Per...

2022-01-18 22:16:00 913

原创 Spring Security 认证应用及执行流程

一、应用流程此处以若依框架的用户认证部分来分析Spring Security的认证应用。登录的Controller:/** * 登录方法 * * @param loginBody 登陆信息 * @return 结果 */ @PostMapping("/login") public AjaxResult login(@Re...

2022-01-12 21:38:00 257

原创 quartz 中的线程池

书接上回:https://www.cnblogs.com/silenceshining/p/15390887.html定时器要调度多个定时任务,就得有一个线程池来进行任务的并发处理,那来看下quartz中的线程池情况。 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = ...

2022-01-05 22:06:00 1212

原创 spark 实现HDFS小文件合并

一、首先使用sparksql读取需要合并的数据。当然有两种情况,  一种是读取全部数据,即需要合并所有小文件。  第二种是合并部分数据,比如只查询某一天的数据,只合并某一个天分区下的小文件。val df: DataFrame = spark.sql("sql")二、将读取到的数据写入临时文件中。此处需注意使用coalesce方法对文件进行合并。df.coalesce(1).wri...

2022-01-04 22:20:00 1867

原创 spring security 配置说明

以下为若依框架中SecurityConfig对于spring security配置的说明:/** * anyRequest | 匹配所有请求路径 * access | SpringEl表达式结果为true时可以访问 * anonymous | 匿名可以访问 * denyAll ...

2021-12-17 21:38:00 207 1

原创 sparksql insert 语句注意事项

我们在使用mysql进行插入操作时,可以使用如下语法:INSERT INTO 表名 (列1,列2,列3...)VALUES(值1,值2,值3...)列的数量是可变的,是可以指定的。但使用spqrksql进行插入操作时,不能指定任意数量的列,必须插入包含全部列的记录,sparksql官网中(https://spark.apache.org/docs/latest/sql-ref-synt...

2021-12-16 21:50:00 2524

原创 使用BigDecimal来解决float、double计算时的精度丢失问题

首先看一个例子:package BigDecimalDemo;public class Demo { public static void main(String[] args) { double d1 = 0.05; double d2 = 0.02; System.out.println(d1 - d2); }}输...

2021-12-10 21:08:00 452

原创 Druid 数据库连接池如何根据url加载Driver

获取数据库连接首先从getConnection开始:DruidDataSource.class @Override public DruidPooledConnection getConnection() throws SQLException { return getConnection(maxWait); }第二步进入getConnection(ma...

2021-12-10 20:46:00 202

原创 java 线程池参数

创建线程池的构造函数如下:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit ...

2021-12-01 22:13:00 27

原创 为何推荐使用线程池而不是显式创建线程原因之一—至少让线程有范围和限制...

下面首先举两个例子来分别展示显式创建线程和使用线程池创建线程:显式创建线程:package threadLocalDemo;public class NewThreadDemo { public static void main(String[] args) { for (int i = 0; i < 10; i++) { new...

2021-11-23 23:12:00 1188

原创 select in 查询结果无顺序及解决办法

现有如下mysql表:mysql> select * from in_demo;+----+-----+| id | num |+----+-----+| 1 | 8 || 2 | 7 || 3 | 6 |+----+-----+3 rows in set按如下sql查询结果如下:mysql> SELECT * FROM in_demo ...

2021-11-19 22:49:00 1834

原创 ThreadLocal应用示例

ThreadLocal从字面意思来看是线程本地(变量),有什么作用呢?存放在ThreadLocal中的变量值只在当前线程中可见及使用。那仅在当前线程可用,自然就不存在多线程并发冲突问题,是一种空间(每个线程单独存储变量)换时间的解决多线程并发问题的方式。下面举例说明:package threadLocalDemo;import java.util.concurrent.Executo...

2021-11-16 22:13:00 214

原创 java quartz 设置定时任务串行执行

下面以一个简单的quartz定时任务为例说明如何设置定时任务串行执行(在很多场景下我们是想让一个定时任务跑完后再跑下一个任务的),首先看默认的定时任务如何执行:Job类:package quartzDemo;import cn.hutool.core.date.DateUtil;import org.quartz.Job;import org.quartz.JobExecution...

2021-10-10 21:54:00 921

原创 java stream peek的使用

peek用于处理集合中元素(对象)的某个属性的值,但不改变元素(对象)的类型(区别于map操作),举例如下:package listDemo;import org.apache.commons.lang3.StringUtils;import java.util.ArrayList;import java.util.List;import java.util.stream.Col...

2021-09-26 21:26:00 1015

原创 java List转String

经常遇到需要将List转为字符串的场景,如下举例两种使用:使用逗号分隔拼接。以及直接将List中的元素拼接。——此种方式经常使用。package listDemo;import org.apache.commons.lang3.StringUtils;import java.util.ArrayList;import java.util.List;public class...

2021-09-14 22:40:00 5812

原创 Java打jar包后如何获取resource中的文件

假设有如下目录结构的代码,现在想要获取test.txt文件中的内容,test.txt中的内容为hello world。问题代码如下:package mvnDemo;import org.apache.commons.io.FileUtils;import org.apache.commons.lang3.StringUtils;import java.io.File;import...

2021-09-10 22:56:00 998

原创 ImmutablePair和ImmutableTriple的使用

场景当我们调用某个方法,需要有超过一个值的返回时,我们通常会怎么做,比如现在需要调用方法返回姓名和年龄两个属性(假如姓名为张三,年龄为12)。方式一:使用Map,将Map中分别放入name为key,张三为value;age为key,12为value。缺点是需要定义key值,且书写语法比较繁琐。优点是定义明确。方式二:直接定义一个Person对象,定义name和age两个属性。...

2021-09-09 23:02:00 616

原创 mvn打jar包示例:依赖打入jar包和依赖打到外部文件夹

使用maven打包java的jar包时,通常有两种情况:将依赖打到外部文件夹,将源码单独打jar包运行;将依赖和源码一起打到jar包中运行。下面举例说明这两种情况:建立如下测试类,依赖一个common-lang包(用于测试外部依赖):package mvnDemo;import org.apache.commons.lang3.StringUtils;public class...

2021-08-31 23:33:00 1167

原创 mysql group by 和 max同时使用出现的问题

有以下数据表:select * from group_by_and_max_demo;+----+-----------+-----+-----------+| id | name | age | city |+----+-----------+-----+-----------+| 1 | xiaozhang | 20 | beijing || 2 ...

2021-08-13 23:13:00 521 1

原创 mysql开启慢查询日志

一、查看慢查询日志是否开启:show VARIABLES LIKE '%slow_query%';+---------------------+-------------------------------------------------------------------+| Variable_name | Value ...

2021-08-10 22:55:00 21

原创 mysql 语句的书写顺序和执行顺序

书写顺序SELECT DISTINCTFROMJOIN ONWHEREGROUP BYHAVINGORDER BYLIMIT执行顺序FROMONJOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMIT

2021-08-05 23:22:00 59

原创 Spring中Environment的使用

在Spring中当我们想拿到配置文件(不管是yml格式还是.properties格式)中的配置信息时,有很多种方式,采用Environment去获取是其中一种,优势是:可以通过getProperty这种比较通用的api来根据key获取value。当存在多份配置文件(比如SpringBoot应用jar包中有application.yml文件,外部也有application.yml文件),能取...

2021-08-04 23:24:00 901

原创 equalsIgnoreCase的使用

当进行string类型变量的相等比较时,一般采用StringUtils.equals这个方法,此方法比较时是区分大小写的,即abc和AbC之间比较是不相等的。但有些时候我们比较的时候并不关心大小写,只要字母相同即可,此时就可以使用StringUtils.equalsIgnoreCase这个方法。下面举例说明:package stringDemo;import org.apache.com...

2021-08-02 22:54:00 277

原创 CompletionService的应用场景

如下场景:我们在一个线程池中提交了多个任务,多个任务的执行时长不一样,而且我们想按执行时间的长短(先拿到执行时间短的任务的结果,再拿执行时间长的任务的结果)来依次获取任务的返回结果。那可以应用CompletionService来方便的处理这个场景。示例代码如下:package completionServiceDemo;import java.util.Date;import ja...

2021-07-29 23:31:00 92

原创 DateUtils 新增年月日时分秒

应用DateUtils实现在指定的时间后分别新增1年、1月、1天、1小时、1分钟、1秒的示例如下:package timeDemo;import org.apache.commons.lang3.time.DateUtils;import java.text.ParseException;import java.util.Date;public class TImeDemo {...

2021-07-22 22:36:00 325 1

原创 Spring中@Primary的应用

首先看一下在Spring中这个注解的解释 Indicates that a bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one 'primary' bean exists among the...

2021-07-19 22:56:00 78

原创 Runtime.getRuntime().addShutdownHook()

示例如下:package shutdownHookDemo;public class Demo { public static void main(String[] args) { System.out.println("hello world"); Runtime.getRuntime().addShutdownHook(new Thread(...

2021-07-02 22:57:00 30

原创 springboot如何一步步启动内置的tomcat(工厂模式的典型应用)

下面跟随源码一步步找到如何启动内置的tomcat(springboot版本为2.1.2):1、启动类@EnableTransactionManagement@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })public class RuoYiApplication{ public st...

2021-06-23 23:03:00 163

原创 mysql AES加密的使用

建表如下:CREATE TABLE `aes_demo` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_bin DEFAULT NULL, `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT ...

2021-06-21 22:14:00 575

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除