
工作总结
文章平均质量分 72
工作总结
Abner G
怀揣“空杯”,期待满载而归
展开
-
开发工作记录
工作记录异常feign.FeignException: status 500 reading异常feign.FeignException: status 500 reading解决:被远程调用的方法或是使用远程调用方法的方法存在异常参考博客原创 2021-07-06 16:27:17 · 910 阅读 · 0 评论 -
SpringBoot 项目上传文件异常【java.io.IOException: Stream closed】
项目场景:SpringBoot 项目上传文件接口异常。原创 2022-12-28 17:16:02 · 1744 阅读 · 5 评论 -
【TransmittableThreadLocal】源码分析理解
上一篇博客【InheritableThreadLocal】搭配线程池使用存在问题,实际开发中遇到,阿里开源类解决这个问题,本文目的是探究一下TTL的原理;transmittable-thread-local方法是 创建时调用,默认创建一个 WeakHashMap。方法是创建子线程Thread 调用 init 方法,会调用ThreadLocal.createInheritedMap(parent.inheritableThreadLocals),创建ThreadLocalMap调用childValue官原创 2022-07-09 18:35:04 · 1272 阅读 · 0 评论 -
【InheritableThreadLocal】搭配线程池使用存在问题
服务中多接口报空指针异常,以报错邮件中的接口参数调用接口时,接口调用正常;推断(A接口报空指针,邮件使用的接口信息为B接口信息)能接收到报错邮件,肯定是有空指针异常;报错邮件是根据log4j抓取的异常触发。接口信息使用过滤器在接口请求时,将接口信息存放在MDC中。报错的接口中都是使用的多线程处理,在几个接口处理异常时都打印具体异常标识,重新发版之后;多接口异常信息都指向同一个处理异常处理点;异步调用,异常处理方法可以看到异常处理机制是使用从线程池中拿到的子线程进行异常处理。那就看一下为什么子线程中存放原创 2022-07-09 15:05:44 · 1597 阅读 · 0 评论 -
【Mysql】online 数据批量处理
因迭代版本升级,Mysql数据存储发生改变,需要批量处理旧版本数据。🎯创建更新数据SQL脚本将上一步生成的SQL脚本,执行🎯比对数据对比备份表和正式表数据量原创 2022-07-08 17:44:18 · 282 阅读 · 0 评论 -
解耦不同Service实例代码实践
项目场景:对不同数据进行资源整合,规划同一接口返回相同数据结构,底层需要调用不同服务接口来获取数据,基本写法为不同调用服务写各自的方法,再用switch,case,将不同方法整合。问题描述实际开发多人处理不同数据的情况下,代码极容易冲突,解决冲突浪费时间如果调取服务较多,switch,case代码没那么美观简洁解决方案:使用抽象类,规定同一方法,将不同数据调取服务做不同实现,由Spring统一管理,根据bean名称来获取不同数据的不同实例。SpringContextUtil 工原创 2022-03-21 23:58:52 · 214 阅读 · 0 评论 -
JAVA时间工具类【DateTimeFormatter】
☁️前言:【踩坑日常】–SimpleDateFormat,在SimpleDateFormat中踩坑之后,使用DateTimeFormatter改进JAVA时间工具类JDK 版本1.8以上🏆代码:支持 获取开始结束时间区间的【月,季,半年,年】时间List支持 获取指定日期的【月,季,半年,年】开始结束日期获取日期之间的【天,月,年】时间差package test;import java.time.Duration;import java.time.LocalDate;impo原创 2022-03-10 23:34:17 · 2872 阅读 · 0 评论 -
Spring Boot 接口使用rome实现RSS 订阅
Spring Boot 入门 接口使用rome实现RSS 订阅首次接口实现RSS订阅RSS是什么环境参考博客版本问题遇到的坑正文实现结果首次接口实现RSS订阅公司数据对接国内某知名股票机构,需要提供接口按Rss方式返回结果,开始首次尝试实现。RSS是什么Really Simple Syndication 简易信息聚合(也叫聚合内容)是一种基于XML的标准。简单来说就是网站提供按Rss方式返回结果的接口,方便RSS订阅器订阅;将一些自己关注的信息整合在一起【个人理解】环境SpringBoot 2.原创 2021-05-08 20:00:51 · 1855 阅读 · 0 评论 -
【踩坑日常】--SimpleDateFormat
项目场景:很多接口需要入参有时间,为了验证时间格式的正确性,在工具类中写了静态工具类验证,在入参时调用静态方法验证问题描述在单机测试接口接口完全没有问题,但是在并发的情况就会报接口异常明显是验证方法存在并发问题。原因分析:SimpleDateFormat 不是线程安全的查看源码日期格式不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一个格式,它必须是同步的。查看parse 方法,底层还是使用 calendar,SimpleDateFormat为static变量原创 2022-03-08 00:06:07 · 323 阅读 · 0 评论 -
【JDK 1.8】 stream 操作
【JDK 1.8】 stream 操作前言中间过程结果集测试类前言Stream 翻译称为 “流”,是 Java8 的新特性之一。 Stream 将要处理的元素看作是流,这时可以借助 Stream API 对流中的元素进行中间操作,比如:筛选、排序、排序等。中间过程/** * 过滤 */log.warning("过滤");projectList.stream().filter(a->a.getProjectCount()!=null).forEach(System.out::pri原创 2022-03-06 23:41:43 · 625 阅读 · 0 评论 -
数据库连接工具---DBeaver
数据库连接工具---DBeaver☁️前言⭐️下载安装????下载????安装????连接Clickhouse✨快捷键☁️前言在工作中使用DataGrip,发现创建Clickhouse表语句设置了字段注释,但是创建完之后,注释消失。发现是客户端工具的问题。(有大佬知道怎么解决,请留言!)果断换用新的客户端DBeaver,开源,不用破解,支持的数据库类型全。⭐️下载安装????下载官网地址????安装安装很简单,一直点下一步就好了。????连接Clickhouse输入连接串,原创 2022-02-15 22:26:47 · 1708 阅读 · 4 评论 -
vmware 安装windows10环境
vmware 安装windows10环境前言和LInux环境区别步骤操作系统不同选择windows官方下载的镜像二、使用步骤1.引入库2.读入数据总结前言 安装windows10环境步骤大致和安装Linux环境一致,个别步骤有区别和LInux环境区别步骤操作系统不同选择windows官方下载的镜像二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimpo原创 2022-02-12 15:51:03 · 1308 阅读 · 0 评论 -
SQL 开窗函数
SQL 开窗函数⭐️前言????开窗函数--Mysql???? 建表语句✌ ROW_NUMBER()????定义???? SQL???? 说明✌ RANK()????定义???? SQL???? 说明✌ DENSE_RANK()????定义???? SQL???? 说明✌ NTILE(n)????定义???? SQL???? 说明☀️总结⭐️前言在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL原创 2022-01-20 20:02:14 · 1038 阅读 · 0 评论 -
Clickhouse--AB表切换
AB表切换☀️定义⭐️工作使用????资料以下内容为资料内容,方式2 未验证????利用 RENAME 语法????利用 EXCHANGE TABLES 语法☀️定义AB 表切换的使用场景应该说还是很广泛的,比如历史表归档、批量抽数的时候都可以采用 AB 表切换的思路来实现。比如有这样一个场景,test_a 是面向终端查询的数据表,数据每天定点全量更新。为了减少数据更新对查询的影响,这里准备用 AB 表切换的思路进行。Clickhouse对于更新删除数据支持不友好,对于数据的更新采用整体更新AB表原创 2022-01-13 22:29:57 · 1462 阅读 · 0 评论 -
JAVA时间工具类
JAVA时间工具类时间工具类时间工具类支持 指定日期的【月,季,半年,年】开始结束时间【yyyyMMdd】格式支持 获取开始结束时间区间的【月,季,半年,年】时间List支持 将【月,季,半年,年】字符串转为年,月Listimport org.apache.commons.lang.StringUtils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.*;/**原创 2022-01-13 21:29:20 · 8421 阅读 · 0 评论 -
Clickhouse--时区,年,季度,半年
Clickhouse--时区,年,季度,半年SQL 年,季度,半年时区默认设置Linux下修改系统时间SQL 年,季度,半年-- 月度SELECT concat(toString(toYear(now())),'年',toString(toMonth(now())),'月');-- 季度SELECT concat(toString(toYear(now())),'年',if(toMonth(now())/6>1,if(toMonth(now())/3>3,'4季度','3季度'),i原创 2022-01-10 23:42:19 · 3150 阅读 · 0 评论 -
kettle API调用Clickhouse插件
kettle API调用Clickhouse插件背景解决参考博客背景kettle目前版本没有clickhouse驱动,需要自定义插件。使用Kettle工具连接Clikchouse正常连接,但是使用Java调用Kettle时,报【database type with plugin id [Clickhouse] couldn’t be found!】这样的报错。解决需要在执行ktr的时候,设置变量。 String KETTLE_PLUGIN_BASE_FOLDER = sourceFi原创 2021-12-08 10:46:20 · 3267 阅读 · 4 评论 -
Java POI实现ppt&pptx转换为pdf文件
Java POI实现ppt&pptx转换为pdf文件背景区别参考博客代码依赖工具类背景需求使用ppt&pptx 上传文件转换为PDF文件,方便前端展示区别PPTPPTXMS Office PowerPoint2003之前版本MS Office PowerPoint2007之后的版本生成基于二进制的文件pptx是基于xml文件POI 中HSLFSlideShow处理POI 中XMLSlideShow处理参考博客java 实现 ppt或ppt原创 2021-11-30 20:04:37 · 1785 阅读 · 3 评论 -
Mysql字符串,时间函数,空间数据函数(持续更新。。。)
Mysql字符串,时间函数字符串函数字符串拼接字符串截取从左开始截取字符串从右开始截取字符串按长度截取字符串字符串替换时间函数时间类型转字符串字符串类型转时间转换类型函数字符串函数字符串拼接select concat('1','2','3','4'); -- 1234字符串截取从左开始截取字符串select left('2021年第01季度', 4); -- 2021 说明:left(被截取字段,截取长度)从右开始截取字符串select right('hello',2); -原创 2021-10-20 09:21:06 · 272 阅读 · 0 评论 -
Java 浮点数运算【BigDecimal】
Java 浮点数除法【Decimal】一级目录二级目录三级目录一级目录二级目录三级目录float/double在工程运算中使用的比较多,在商业计算中使用Decimal类型的比较多。(注:在《Effective Java》这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal,另外,我们如果需要精确计算,要用String来够造BigDecimal。在《Effective Java》一书中的例子是用String来原创 2021-09-09 21:22:14 · 1170 阅读 · 0 评论 -
接口优化【缓冲,异步】
接口优化【缓冲,异步】需求二级目录三级目录需求在150万数据的表中(日增50万),按照不同维度进行字段统计数据。接口返回。接口响应时间差不多6秒以上。二级目录三级目录原创 2021-08-12 21:29:14 · 463 阅读 · 0 评论 -
Kettle 数据抽取【Version 6.1】
Kettle 数据抽取【Version 6.1】背景简述安装使用安装设置系统变量(KETTLE_HOME)使用首先创建一个“工作”,建立一个简单的工作流表输入注意点文本文件输出注意点循环设置参数循环job注意点java代码java代码注意点压缩文件压缩文件注意点邮件控件背景需要按一定规则从数据库抽取量比较大的数据。使用ETL工具完成。简述Kettle是国外开源的ETL工具,Java编写。后来改名PDI转换(transformation)和工作(job)的区别:转换是数据流,工作是步骤流,作业的每原创 2021-08-05 22:12:57 · 965 阅读 · 6 评论 -
JAVA使用JTS 判断坐标点是否在坐标多边形内部
JAVA使用JTS 判断坐标点是否在坐标多边形内部思路Geometry之间的关系API及参考博客代码依赖工具类测试类思路判断坐标点是否在坐标多边形内部,首先不能直接计算坐标点,是需要字符串坐标点转化为地理空间数据Geometry,然后使用JTS包中提供得API判断Geometry几何图形的关系Geometry之间的关系相等(Equals):几何形状拓扑上相等。脱节(Disjoint):几何形状没有共有的点。相交(Intersects):几何形状至少有一个共有点(区别于脱节)接触(Touch原创 2021-07-26 10:39:19 · 5801 阅读 · 1 评论 -
springboot项目中使用线程池,CountDownLatch
springboot项目中使用线程池背景思路代码线程池配置拒绝策略实现参考博客背景对接客户,使用接口抽取全量数据。而且数据对象的一些属性不在同一个数据库中思路大表查出全量数据的LIst遍历取对象,启动多个线程查不同的库补充空白属性代码线程池配置package com.fang.industry.service.config;import org.springframework.context.annotation.Bean;import org.springframework.c原创 2021-07-21 17:13:45 · 2071 阅读 · 0 评论 -
【高并发】变量线程安全问题(实际案例)
【高并发】变量线程安全问题(实际案例)背景错误代码测试案例结果错误正确结论背景处理excel导出数据需求,需要每条数据做处理,然后追加在Excel中(Workbook对象中)错误代码()(左边错误)错误代码最大区别在于ExportExcelPoiUtil类中声明了静态变量Workbook,然后在调用此工具类中的方法时,对Workbook进行追加数据,然后使用流导出。修改之后Workbook声明使用局部变量测试案例package com.fang.industry.service.commo原创 2021-07-06 16:00:22 · 429 阅读 · 0 评论 -
Springboot使用RestTemplate发送Post请求postForEntity (application/x-www-form-urlencoded)
Springboot使用RestTemplate发送Post请求postForEntity[application/x-www-form-urlencoded] 背景思路正文ServiceRestTemplate 使用 postForEntity 请求接口基于xml系列注解解析XML返回值XML的一些基本常识实体类与xml文件对应实体代码参考博客背景对接请求为(application/x-www-form-urlencoded),返回XML格式接口。思路ServiceRestTemplate 使用原创 2021-06-29 22:18:17 · 11078 阅读 · 3 评论 -
文件流下载网络文件
JAVA用文件流下载网络文件背景需求思路环境正文ServiceController背景需求需要对外提供下载文件的API接口,为了安全对外接口下载接口使用流形式(平时我们会将文件服务器的文件URL返回前端使用)思路文件地址生成 本地File文件,流转换之后删除本地文件,响应前端。环境SpringBoot 2.1.2.RELEASEJDK 1.8Maven 3.5.0正文Servicepackage com.fang.industry.service.exce.impl;impo原创 2021-06-23 18:41:39 · 187 阅读 · 0 评论 -
EasyExcel实现 动态数据库表Excel导出,并上传文件服务器
EasyExcel实现 动态数据库表Excel导出,并上传文件服务器背景参考博客正文环境依赖工具类注意参数格式与excel内容对应背景和这篇文章的背景一样,POI实现 动态数据库表Excel导出,并上传文件服务器看来个人的感觉真的不行,哈哈哈,本文来使用EasyExcel实现。参考博客EasyExcel使用说明正文环境SpringBoot 2.1.2.RELEASEJDK 1.8Maven 3.5.0依赖 <dependency> <groupId>原创 2021-06-17 14:01:15 · 4535 阅读 · 0 评论 -
Java 同环比计算相关逻辑
Java 同环比计算相关逻辑相关概念背景实现思路具体代码SQL实现方式[Mysql]按月进行分组同比 2022年/2020年各月数据同比按月进行分组同比 各月数据环比相关概念「同比」与历史「同时期]比较,例如2011年3月份与2010年3月份相比,叫「同比」。同比是“同期”的比较,中间有可能跨了若干个统计周期,或者没有跨越一个统计周期。跨越了若干个统计周期的同比与环比不一样,而一个统计周期也没有跨越的同比实际上与环比是一样的同比是“同期”的比较,中间有可能跨了若干个统计周期,或者没有跨越一个统计原创 2021-05-25 21:35:12 · 2292 阅读 · 1 评论 -
POI实现 动态数据库表Excel导出,并上传文件服务器
/** * 【你的 access_key】 */ private static final String AWS_ACCESS_KEY = "T749Z4ZU5LVE7S4DPYBB"; /** * 【你的 aws_secret_key】 */ private static final String AWS_SECRET_KEY = "cl42ZeW"; /** * 【你 bucket 的名字】 # 首先需要保证 s3 上已经原创 2021-05-25 21:04:56 · 1599 阅读 · 0 评论