自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 简单使用(搭建)SpringFu(jafu)

官方网址:https://spring.io/blog/2018/10/02/the-evolution-of-spring-fugithub:https://github.com/spring-projects-experimental/spring-fu官方示例github:https://github.com/spring-projects-experimental/spring-fu/tree/master/samples会持续更新......所需环境:SpringBoot2..

2020-12-30 16:52:36 1270 5

原创 POI、JAVA、Excel,通过URL创建WorkBook

从文件的网络路径创建Workbook ,直接上代码,不清楚的可以留言创建workBook的入口方法,方法内部调用的代码片段已经贴在下面。// filePath是文件的网络路径,比如:http://hahaha.com/template.xlsxprotected static WorkBook createWorkBook(String filePath, String fileName) throws IOException { InputStream inputStream = F

2020-09-14 17:47:53 747 5

翻译 java虚拟机是如何处理异常的

异常的基本概念Throwable所有异常都是Throwable或者是Throwable的子类实例;ExceptionException涵盖程序可能需要捕获的异常,除了RuntimeException以外,其他类型的异常都需要显示的捕获或throws;Error当触发Error时,表示执行状态已无法恢复,需要终止线程或终止虚拟机;RuntimeException&Error这两个异常都属于非检查型异常,其他的异常都属于检查型异常,Java中所有的检查型异常都需要显示的捕

2022-04-06 15:57:14 523

原创 Snipaste(截图工具)

官方网址:https://zh.snipaste.com推荐原因 截取多张图并且置顶;

2021-09-08 11:07:27 467

原创 JAVA中double四舍五入保留两位小数点

使用org.apache.commons.lang3.math.NumberUtils/*** doubleVal:要保留小数点的数值* 2:保留两位* RoundingMode.HALF_UP:使用四舍五入的方式保留小数*/NumberUtils.toScaledBigDecimal(doubleVal, 2, RoundingMode.HALF_UP).doubleValue();...

2021-09-07 10:55:31 1272 1

原创 JAVA调用方法统一打印日志和try/catch

需求:避免编写重复的代码,如何把下面的两个需求抽取成公共逻辑; 1. 调用其他方法时打印被调用方法的路径、入参、以及执行耗时情况; 2. 调用方法遇到异常时,灵活控制是否要捕获异常或者抛出异常;实现思路使用函数式编程;1.1. 创建一个接口(用来获取函数真实的调用路径和方法)package com.xxx.utils.function;import java.io.Serializable;import java....

2021-09-01 10:19:47 1590

原创 JAVA获取堆栈信息

1. 通过Throwable获取StackTraceElement[] stackTrace = new Throwable().getStackTrace();2. 通过Thread获取StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();

2021-08-31 16:35:52 3191

原创 FactoryBean(自定义Bean的实例化逻辑)

官方网址:https://docs.spring.io/spring-framework/docs/4.0.0.RELEASE/spring-framework-reference/html/beans.html#beans-factory-extension-factorybeanFactoryBean接口是Spring IoC容器Bean实例化逻辑的一个扩展点,如果有复杂的初始化Bean逻辑,则可以选择创建自定义FactoryBean,在该类中编写初始化逻辑,然后把自定义FactoryBean注.

2021-02-05 14:30:39 609 1

原创 BeanFactoryPostProcessor(Beans定义处理器)

BeanFactoryPostProcessor:Beans定义处理器(一个接口)在Bean定义之后Bean实例创建之前,可以通过BeanFactoryPostProcessor.postProcessBeanFactory方法对所有的Bean定义进行修改或者是增加Bean定义。BeanFactoryPostProcessor代码@FunctionalInterfacepublic interface BeanFactoryPostProcessor { /** * Modif.

2021-02-05 13:34:41 181

原创 生成微信JS-SDK使用权限签名

微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62 通过appId和appSecret调用微信的地址获取token; 通过拿到的token调用微信的地址获取ticket; 通过ticket和要授权的url生成签名。 生成签名代码示例@Slf4jpublic class SignatureUtils { public static final S.

2021-02-01 17:05:20 286

原创 分布式会话解决方案:spring-session-data-redis

官方文档:https://docs.spring.io/spring-session/docs/2.2.0.RELEASE/reference/html5/支持的存储介质 Redis MongoDB JDBC 实现原理 通过HttpServletRequest定制HttpSession对象 调用org.springframework.session.web.http.SessionRepositoryFilter#doFilterInternal方法进行.

2021-01-26 16:26:57 993

原创 RedisTemplate:通过RedisTemplate获取字节数组(byte[])

调用RedisTemplate的execute方法,方法内传入对象RedisCallback(并实现doInRedis方法),在doInRedis方法内进行编写获取字节数组数据的逻辑。方法1. 使用lambda表达式public byte[]get(byte[] key) { // 使用了lambda表达式return redisTemplate.execute((RedisConnection redisConnection) -> { // 传入by...

2021-01-19 10:06:58 5482

原创 RestTemplate使用进阶

官方文档:https://docs.spring.io/spring-framework/docs/5.0.0.RELEASE/spring-framework-reference/integration.html#rest-resttemplate-uri通过RequestEntity设置请求格式、请求体、Headers代码示例1:使用RequestEntity设置请求方式、请求体、请求格式、header等,然后调用restTemplate的exchange方法进行请求,从而得到Reque.

2021-01-11 17:01:56 967 3

原创 使用RestTemplate

创建RestTemplate(默认情况下,Spring没有自动创建RestTemplate,,所以我们需要手动创建)1. 使用new创建@Beanpublic RestTemplate restTemplate() { return new RestTemplate();}2. 使用builder创建@Beanpublic RestTemplate restTemplate(RestTemplateBuilder builder) {return bui...

2021-01-11 13:33:00 464

原创 构造URI:使用UriComponentsBuilder、ServletUriComponentsBuilder、MvcUriComponentsBuilder构造URI

官方网址:https://docs.spring.io/spring-framework/docs/5.0.0.RELEASE/spring-framework-reference/web.html#mvc-uri-building使用UriComponentsBuilder构造1. 构造普通uriURI uri = UriComponentsBuilder.fromUriString("http://laoxian.com/test/data/get").build().toUri()..

2021-01-08 18:15:40 2093

原创 SpringMvc拦截器

核心接口:HandlerInterceptor核心方法: preHandle(前置拦截器,在调用真实Controller方法之前执行,该方法是boolean类型返回值,如果返回false,会终止Controller方法的执行); postHandle(在Controller方法执行之后、视图渲染之前执行); afterCompletion(在Controller方法执行之后、视图渲染之后执行)。 异步请求拦截:AsyncHandlerInterceptor核心方法.

2021-01-06 19:34:02 96

原创 SpringMVC:全局异常处理(@ExceptionHandler)

官方文档:https://docs.spring.io/spring-framework/docs/5.0.0.RELEASE/spring-framework-reference/web.html#mvc-exceptionhandlers使用注解设置MVC全局的异常解析:@ExceptionHandler@ExceptionHandler注解作用范围: Controller、RestController ControllerAdvice、RestControlle...

2021-01-05 18:53:09 536

原创 JacksonJson反序列化:@JsonDeserialize、JsonDeserializer

@JsonDeserialize通过这个注解配置反序列化相关的信息,该注解可以作用于:类、‘setter’、字段、形参;作用于类的时候:对整个类实例进行反序列化;作用于字段、形参、setter方法的时候:对该字段值进行反序列化;示例:@JsonDeserialize(using=MyDeserializer.class)JsonDeserializer这是一个抽象类,继承该类可以自定义反序列化逻辑,该类中有一个抽象方法方法deserialize,该方法由子类实现从而实现反序列化

2021-01-05 17:32:20 5135 1

原创 SpringFu(jafu):集成R2dbc-MySql

上一篇文章地址:https://blog.csdn.net/weixin_42600999/article/details/111993779增加pom信息(r2dbc、MySql的依赖)<dependency> <groupId>dev.miku</groupId> <artifactId>r2dbc-mysql</artifactId> <scope>runtime</scope></dep..

2021-01-04 13:33:24 293 2

原创 SpringBoot上传文件(MultipartFile)

支持的请求类型:multipart/form-data接收参数对象类型:MultipartFile参考代码:@PostMapping(path = "/", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)@ResponseBodypublic void uploadFile(@RequestParam("file") MultipartFile file) {if (file.isEmpty()) { return;...

2020-12-30 15:03:17 799

原创 @ModelAttribute

能否请你动动手指,留下你的一键三连。官方文档:https://docs.spring.io/spring-framework/docs/5.0.0.RELEASE/spring-framework-reference/web.html#spring-web@ModelAttribute注解的两种使用方式 在方法上使用; 在方法的参数上使用。 ...

2020-12-30 11:42:15 382

原创 JacksonJson反序列化:@JsonComponent、StdDeserializer

业务代码/*** 业务数据类*/@Data@Builder@AllArgsConstructor@NoArgsConstructorpublic class BusinessData {/*** id*/private String id;/*** 金钱*/private Money money;}/*** 金钱类*/@Data@AllArgsConstruc...

2020-12-29 13:55:09 1274 3

原创 JacksonJson序列化:@JsonComponent、StdSerializer

业务代码/*** 业务数据类*/@Data@Builder@AllArgsConstructor@NoArgsConstructorpublic class BusinessData {/*** id*/private String id;/*** 金钱*/private Money money;}/*** 金钱类*/@Data@Builder@AllArgsConstr...

2020-12-29 13:08:26 1822 4

翻译 Tomcat内存溢出(OutOfMemoryError)

下面内容翻译自tomcat内存溢出的错误文件。可能引起的原因:1.系统的物理RAM或交换空间不足;2. 在32位JAVA模式下,达到了进程大小限制。可能的解决方案:1. 减少系统上的内存负载;2. 增加物理内存或交换空间;3. 检查交换后备存储是否已满;4. 在64位操作系统上使用64位Java;5. 减少Java堆大小(-Xmx / -Xms);6. 减少Java线程数;7. 减少Java线程堆栈大小(-Xss);8. 使用-XX:ReservedCodeCacheS..

2020-12-28 15:30:23 560

原创 阿里云k8s配置节点亲和性/Session会话保持

1.路由页面:配置路由的注解;2.配置: 注解名称 描述 可选值 nginx.ingress.kubernetes.io/affinity 关联的类型,将此设置为cookie以启用会话关联 cookie nginx.ingress.kubernetes.io/session-cookie-name 亲和模式定义会话的粘性。使用balanced缩放荚或者重.

2020-12-28 10:56:11 1763

原创 TablePlus:快捷键(Windows版)

打开新的SQL标签页:Ctrl+ E关闭标签页:Ctrl + W格式化SQL:Ctrl + i丑化SQL:Ctrl + Shift + i执行一行SQL:Ctrl + Enter执行全部SQL:Ctrl +Shift + EnterSQL另存为:Ctrl +Shift + S全局搜索:Ctrl + P打开新的连接:Ctrl +Shift + K打开新的库:Ctrl + K在数据列表页打开搜索框:Ctrl + F...

2020-12-23 14:28:51 781

原创 使用TablePlus:创建表

打开数据库,使用鼠标右键单机侧边栏,依次选择:New -> Table使用左下方的**+**按钮

2020-12-23 10:44:31 1080

原创 推荐一个好用的数据库管理工具:tablePlus

推荐理由:1. 轻松管理多个数据库连接,从右边选择一个连接即可进入数据库管理页面2. 轻松选择要管理的库和表3. SQL预览4. 筛选数据5. 数据列表和表结构一键切换6. 搜索数据库中的任何文件(表、视图、存储过程、等)7. 历史SQL执行记录(按日分类)...

2020-12-22 18:43:14 1380

原创 FastJson自定义对象的反序列化逻辑

对要反序列化的类使用注解@JSONType,deserializer 属性表示自定义的反序列化对象@JSONType(deserializer = BusinessDataDeserializer.class)public class BusinessData { private String id; private Stirng name;}反序列化对象需要实现接口:ObjectDeserializerimport com.alibaba.fastjson.parser.deseriali

2020-12-15 10:40:50 1726 1

原创 mybatis的Generator生成重复的sql

解决方案一:url连接增加参数:nullCatalogMeansCurrent=true<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/testdb?useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDa

2020-11-17 15:32:50 324

原创 容器时间和宿主机时间相差8小时(阿里云K8S)

编辑容器,在“启动后处理”填写下面命令即可["/bin/bash","-c",“cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone”]

2020-10-29 16:45:06 1350

原创 Unable to evaluate the expression Method threw ‘net.sf.json.JSONException‘ exception.

Unable to evaluate the expression Method threw ‘net.sf.json.JSONException’ exception.JSON中存储的值是null,通过get()方法获取到值后,为空判断得到的结果居然是false对于不了解的同事来说:这个很坑… public static void main(String[] args) { String str = "{\"Content\":null}"; JSONObject j

2020-09-25 19:26:45 3099 2

原创 sheet.getRow(0)获取的row为null?

new SXSSFWorkbook(new XSSFWorkbook(inputStream));这种方式创建的Workbook,使用sheet.getRow(0)获取的row为null;原因是new SXSSFWorkbook(new XSSFWorkbook(inputStream))的时候,SXSSFWorkbook对象内部会维护一个HashMap(反编译后的名称为_xFromSxHash);当使用workBok.getSheetAt(0)的时候,其实是从_xFromSxHash中获取新创建的S

2020-09-15 13:23:44 9635 3

空空如也

空空如也

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

TA关注的人

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