- 博客(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
1344
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
854
5
翻译 java虚拟机是如何处理异常的
异常的基本概念Throwable所有异常都是Throwable或者是Throwable的子类实例;ExceptionException涵盖程序可能需要捕获的异常,除了RuntimeException以外,其他类型的异常都需要显示的捕获或throws;Error当触发Error时,表示执行状态已无法恢复,需要终止线程或终止虚拟机;RuntimeException&Error这两个异常都属于非检查型异常,其他的异常都属于检查型异常,Java中所有的检查型异常都需要显示的捕
2022-04-06 15:57:14
755
原创 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
1400
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
1721
原创 JAVA获取堆栈信息
1. 通过Throwable获取StackTraceElement[] stackTrace = new Throwable().getStackTrace();2. 通过Thread获取StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
2021-08-31 16:35:52
3328
原创 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
705
1
原创 BeanFactoryPostProcessor(Beans定义处理器)
BeanFactoryPostProcessor:Beans定义处理器(一个接口)在Bean定义之后Bean实例创建之前,可以通过BeanFactoryPostProcessor.postProcessBeanFactory方法对所有的Bean定义进行修改或者是增加Bean定义。BeanFactoryPostProcessor代码@FunctionalInterfacepublic interface BeanFactoryPostProcessor { /** * Modif.
2021-02-05 13:34:41
234
原创 生成微信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
379
原创 分布式会话解决方案: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
1127
原创 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
6004
原创 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
1256
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
557
原创 构造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
2329
原创 SpringMvc拦截器
核心接口:HandlerInterceptor核心方法: preHandle(前置拦截器,在调用真实Controller方法之前执行,该方法是boolean类型返回值,如果返回false,会终止Controller方法的执行); postHandle(在Controller方法执行之后、视图渲染之前执行); afterCompletion(在Controller方法执行之后、视图渲染之后执行)。 异步请求拦截:AsyncHandlerInterceptor核心方法.
2021-01-06 19:34:02
232
原创 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
613
原创 JacksonJson反序列化:@JsonDeserialize、JsonDeserializer
@JsonDeserialize通过这个注解配置反序列化相关的信息,该注解可以作用于:类、‘setter’、字段、形参;作用于类的时候:对整个类实例进行反序列化;作用于字段、形参、setter方法的时候:对该字段值进行反序列化;示例:@JsonDeserialize(using=MyDeserializer.class)JsonDeserializer这是一个抽象类,继承该类可以自定义反序列化逻辑,该类中有一个抽象方法方法deserialize,该方法由子类实现从而实现反序列化
2021-01-05 17:32:20
5657
1
原创 SpringFu(jafu):集成R2dbc-MySql
上一篇文章地址:https://blog.youkuaiyun.com/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
368
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
894
原创 @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
442
原创 JacksonJson反序列化:@JsonComponent、StdDeserializer
业务代码/*** 业务数据类*/@Data@Builder@AllArgsConstructor@NoArgsConstructorpublic class BusinessData {/*** id*/private String id;/*** 金钱*/private Money money;}/*** 金钱类*/@Data@AllArgsConstruc...
2020-12-29 13:55:09
1419
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
2004
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
635
原创 阿里云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
1936
原创 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
950
原创 推荐一个好用的数据库管理工具:tablePlus
推荐理由:1. 轻松管理多个数据库连接,从右边选择一个连接即可进入数据库管理页面2. 轻松选择要管理的库和表3. SQL预览4. 筛选数据5. 数据列表和表结构一键切换6. 搜索数据库中的任何文件(表、视图、存储过程、等)7. 历史SQL执行记录(按日分类)...
2020-12-22 18:43:14
1619
原创 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
1909
1
原创 mybatis的Generator生成重复的sql
解决方案一:url连接增加参数:nullCatalogMeansCurrent=true<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/testdb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDa
2020-11-17 15:32:50
381
原创 容器时间和宿主机时间相差8小时(阿里云K8S)
编辑容器,在“启动后处理”填写下面命令即可["/bin/bash","-c",“cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone”]
2020-10-29 16:45:06
1503
原创 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
3387
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
10878
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人