
后端
文章平均质量分 57
大画家DHJ
业精于勤荒于嬉,行成于思毁于随。
展开
-
Java对接HJ212协议设备
最近收到一个对接设备数据的任务,安排和我对接的人不懂技术,就给了一个HJ212协议文档。文档详细地说明了协议的各项细则,文档如下。通过协议文档,可以知道,使用该协议是环保设备数据传输的标准协议,数据的不是json格式,而是通过等号隔开的。我在网上找了半天没有找到关于对接HJ212协议设备的Java程序代码,大多都是讲 协议细则、对接说明、C++程序 等。找到的Java程序代码很凌乱,部分依赖没有,完全看不到。通过大致的浏览,可以确定,是通过Netty来接收数据,通过依赖的hj212插件来解析数据。原创 2022-10-09 11:29:06 · 6712 阅读 · 23 评论 -
EasyExcel自定义Converter解决LocalDateTime系列时间日期转换的问题
LocalDateTime系列是jdk8针对日期、时间处理提供的全新的操作类,相较于Date类有很大的提升,具体参考末尾的链接。所以,在项目对时间、日期的处理也逐渐用LocalDateTime取代。EasyExcel中自带了DateStringConverter用于Date的数据类型转换,但LocalDateTime系列没有,故写此自定义数据格式转换器。.........原创 2022-08-31 19:57:54 · 8620 阅读 · 2 评论 -
EasyCode介绍及自定义模板
EasyCode的安装与用法在此不做介绍,网上的文章已经很详尽了。具体可以参考官方文档。甚至还提供了官网视频教程,十分贴心。插件安装完成之后。你可以通过IDEA的来修改该插件的配置等。EasyCode对每一块配置都做了分组,你可以设置多个不同版本的配置。在了解EasyCode的配置功能之后,设置自定义模板,则是一件十分简单的事情。注意:这是我项目的针对性模板。大家需要根据各自的项目框架、代码习惯等做自定义修改。我这里仅供我自己参考和记录。##定义初始变量##设置回调$!$!##拿到主键#if(!......原创 2022-08-26 15:58:20 · 10196 阅读 · 8 评论 -
EasyExcel复杂表头导出(一对多)升级版
在之前写的EasyExcel复杂表头导出(一对多)的博客的结尾,受限于当时的能力和精力,留下一些问题及展望。现在写下此博客,目的就是解决之前遗留的问题。背景介绍,见上述链接指向的博客,这里主要通过自定义拦截器的形式来完美解决。......原创 2022-08-18 20:15:41 · 10886 阅读 · 12 评论 -
@MapKey用法说明
是MyBatis框架的注解,作用是将List结果集转换成key-value形式的Map结果集,方便快速从结果集中查询指定结果。原创 2022-07-18 19:27:57 · 19461 阅读 · 0 评论 -
EasyExcel复杂表头导出(一对多)
关于EasyPoi 框架的问题,在此不再赘述,参考我的另一篇博客,地址如下:EasyExcel复杂表头导入(一对多)_间歇性悲伤患者的博客-CSDN博客_easyexcel复杂表头实际上,官方文档和网上都没有详细的导出教程,需要自己参考官方去实现。我搞了半天只弄成功了一个半桶水的,十分惭愧,在此记录一下,方便回溯。说明:EasyExcel无法处理List里面嵌套List的情况,我采用的方案是通过表格合并的来实现。下面,先给出具体实现,然后再谈谈问题。Controller 层getDate方法原创 2022-06-16 16:26:12 · 8256 阅读 · 3 评论 -
nacos权限认证(三) nacos.core.auth.server.identity的作用
一、关于nacos权限校验原创 2022-06-02 18:26:09 · 31145 阅读 · 8 评论 -
nacos权限认证(二) 开启权限认证
直接设置下述属性为true,就可以避免 nacos权限认证(一) 中的问题。 这个时候再访问nacos页面,则会直接报错。因此,还需要再设置两个属性(数值可以随便填)。添加好这两个属性时页面就能正常访问了。注意:如果你遇到这种情况,只需要关闭提示,点击用户名,登出,然后重新登录即可。这个时候,如果你加修改直接启动其他服务,则其他服务无法正常连接nacos,也需要坐一番配置。需要再其他服务的配置文件中加上如下配置。 这样,其他服务就能正常连接nacos了。至此,nacos的权限漏洞问题就解决了。原创 2022-05-31 20:23:25 · 28970 阅读 · 0 评论 -
nacos权限认证(一) 问题复现
如果nacos没有开启权限认证,即如下属性设置为false。nacos.core.auth.enabled = false在这种情况下,通过一些请求就可以绕过nacos的权限认证。我找到了下述三种方式。一、/nacos/v1/cs/configs我们在浏览器中直接拼接 /nacos/v1/cs/configs请求,如下所示。http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=&group=&appName=&con原创 2022-05-31 10:43:28 · 11958 阅读 · 0 评论 -
kafka安装及使用
一、安装Apache Kafkahttps://kafka.apache.org/downloads.html1.1、去官网下载kafka的安装包,然后上传到 Linux。注意:kafka需要依赖于java环境。1.2、加压缩,并放到 /usr/local 目录## 解压缩tar -zxvf kafka_2.11-0.9.0.0.tgz## 移动到/usr/local目录mv kafka_2.11-0.9.0.0 /usr/local## 重命名cd /usr/loca.原创 2022-05-30 19:58:55 · 820 阅读 · 0 评论 -
nacos-version.txt文件的作用
在Nacos的官方项目中 nacos-version.txt 文件。该文件是用来在nacos控制台中显示nacos的版本号。其中,${project.version} 在根pom中。同时,还需要做如下配置。<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-co原创 2022-05-15 00:19:12 · 654 阅读 · 0 评论 -
使用Graphics2D给报警图片画框和提示信息
Graphics2D 是 Java Library 自带的类,无需引入其他依赖。一、程序import sun.misc.BASE64Encoder;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import j原创 2022-04-27 10:14:11 · 562 阅读 · 0 评论 -
Java 获取本周、本月的日期数组
方法/** * 根据日期类型获取日期范围 * * @param type day:当天 week:本周(默认) month:本月 * @return */private List<String> getFormatDate(String type) { Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");.原创 2022-01-12 20:28:30 · 1525 阅读 · 0 评论 -
Java 时间间隔格式化
将时间间隔的秒值转换成X天X时X分X秒例如:987654秒 等于 11天10时20分54秒/*** 将时间间隔的秒值转换成X天X时X分X秒,这里使用到的是递归的方法。* @param dateTime 秒值* return 格式化时间 X天X时X分X秒**/private static String durationConvert(Long dateTime){ if(dateTime > 60){ if(dateTime > 3600){ ...原创 2022-01-08 15:23:06 · 806 阅读 · 0 评论 -
EasyExcel复杂表头导入(一对多)
当前我使用过的导入导出框架有EasyPoi 和 EasyExcel,原创 2022-01-07 17:20:45 · 21284 阅读 · 14 评论 -
Redis生成时间戳流水号
@Resourceprivate RedisTemplate<String, Object> redisTemplate;/** * 获取序列号,生成复杂流水号,时间戳加末尾4位自增值,自增值每天都会重置为1,例如:OA_202112260001 */public String getIncrement(String key) { // 获取时间戳 String timeStamp = DateUtil.format(new Date(), "yyyyMMdd"); // 拼.原创 2021-12-30 10:09:09 · 1637 阅读 · 0 评论 -
EasyExcel 背景颜色枚举
编码说明我们在使用easyExcel做导入导出时,可以设置表头或内容的背景颜色。方法如下:@Data@ToString@EqualsAndHashCode// 表头高度@HeadRowHeight(30)// 内容高度@ContentRowHeight(20)// 列宽@ColumnWidth(15)// 设置表头颜色,这里的44即颜色编号,为浅蓝色@HeadStyle(fillForegroundColor = 44)public class User extends Ba原创 2021-12-28 19:42:25 · 6465 阅读 · 0 评论 -
海康SDK接入摄像头告警图片base64错误
最近遇到好几次接入三方硬件设备图片base64保存失败的情况。每次都没有吸取教训,花了较长时间处理,故在此记录一下。Java 通过SDK接收海康摄像头告警图片base64的时候,需要将空格转成“+”号。具体原因不清楚,值得注意的是base64索引中本身就不含有空字符。解决方案只需要将空字符替换成“+”即可。String imgBase64 = "/9j/4AAQSkZJRgA BAQAAAQ ABAAD/2wBD AAIBAQEB";// 将空格转换成+imgBase64 = img.原创 2021-12-22 17:32:49 · 1223 阅读 · 0 评论 -
java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0
RequestParam.value() was empty on parameter 0 问题解决_简单的技术博客_51CTO博客https://blog.51cto.com/thinklili/2566864在springcloud项目启动时候,突然fegin启动报错,百思不得其解,网上的答案大部分是@RequestParam String id 没有写 @RequestParam(“id”) String id,但是已有项目用了大量的@RequestParam,全部改造一遍成本过高,项原创 2021-08-24 19:50:35 · 7307 阅读 · 2 评论 -
低版本的idea搭配高版本的maven报错
最近在安装工作环境,idea使用的是我U盘里的2018.2.4版本,比较老。maven则是当前最新版3.8.1。修改maven仓库和阿里云镜像之后,在idea中加入maven,然后就报错了,项目无法引入依赖。Unable to import maven project: See logs for details反复检查修改了半天,都是徒劳。于是按照提示查看日志。找到错误日志,看半天也没有看懂。最终,想到可能是版本冲突,于是将maven的版本退回到以前正常使用的3.6.0版本...原创 2021-08-10 09:40:02 · 836 阅读 · 0 评论 -
十大经典排序算法(动图演示)
见大佬文章:https://www.cnblogs.com/onepixel/articles/7674659.html转载 2021-07-30 16:36:43 · 112 阅读 · 0 评论 -
爬取阿里云物联网平台设备的物模型数据
背景说明按项目经理的要求,需要导出阿里云物联网平台上所有设备的物模型数据到Excel上,方便后台导入、给客户演示和备份。但是,阿里云物联网平台没有这个功能,手动一个个处理不现实,因此只能写一个爬虫爬取所有数据,然后再导出excel。步骤1、分析请求URL获取该功能的所有XHR请求,挨个寻找到返回物模型数据的请求。找到对应的URL后,分析其参数,主要是确定遍历条件和鉴权参数等,判断是否能够做爬虫爬取数据。...原创 2021-07-17 15:40:54 · 5741 阅读 · 6 评论 -
二叉树、B树和B+树等数据结构模拟网站
推荐一个网站,地址如下:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html该网站可以模拟相当多种类的数据接口的插入、删除和查找步骤。下面,以B树为例做说明。原创 2021-07-12 22:19:13 · 2785 阅读 · 0 评论 -
Java Sleep的替换方法
https://www.jianshu.com/p/e233bb37d2e6原创 2021-07-12 19:48:47 · 1804 阅读 · 0 评论 -
JSONObject 和 HashMap转字符串的说明
简单比较说明本篇博客,不是详细分析JSONObject 和 HashMap的底层原理和区别,菜鸡一枚,没有这种能耐,仅是做一个采坑心得,并做简单比较总结。public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { // do something}public class JSONObject extends J原创 2021-05-08 15:42:29 · 1654 阅读 · 0 评论 -
FreeMarker模板制作
一、前言FreeMarker模板分为Word模板和Excel模板,制作方法都是相似,本篇博客将详细说明。二、Excel模板制作2.1 制作excel文档模板,选择新建 Microsoft Excel 工作表.xlsx 工作表2.2 文件---> 另存为,选择 XML电子表格2003(*.xml),生成后缀名为 .xml 的模板表格2.3 编辑器打开生成.xml模板表格,找到需要替换的内容,用FreeMarker语法代替和逻辑处理2.4 删除模板的行数和列..原创 2020-11-14 12:02:47 · 4803 阅读 · 1 评论 -
FreeMarker模板导出Word或Excel文件
一、前言Java开发中,常见的导入/导出插件是EasyPoi,简单易学,功能强大。如果我们希望导出的文件有复杂的样式的时,使用EasyPoi的POJO类处理显然就力不从心,因此就得使用EasyPoi模板。由于项目部署环境和打包框架等问题,代码中获取EasyPoi模板比较困难且容易导致NPE。因此,可以使用FreeMarker模板来做替换,该方法生成文件时只需要传入文档流即可。FreeMarker模板的制作,不在本篇博客讨论。见本人另一篇博客:二、导出功能实现1. Controller..原创 2020-11-13 21:22:25 · 709 阅读 · 0 评论 -
EasyPoi 模板导出报空指针问题处理
一、前言下图代码是SpringBoot项目controller层中的easypoi模板导出功能。在正常的开发测试过程中,并不会出现问题,但是当我们将其打成jar包放到Linux服务器上时,就会出现NPE(空指针异常),异常为第51行中的Excel模板找不到。主要原因有两点:Linux和Window文件系统环境不一致。 springBoot项目打jar包后文件资源加载方式不同,打包后Spring试图访问文件系统路径,但无法访问jar中的路径。Spring作者本人回答如下图,网址:https.原创 2020-11-13 17:32:45 · 5291 阅读 · 2 评论 -
SpringBoot2.x 使用多数据源
项目是SpringBoot项目,主数据源是MySQL数据库,另个数据源是SQL Server数据库。配置文件用的是yml,转properties也比较简单。原创 2020-11-13 14:36:38 · 440 阅读 · 1 评论 -
[SQL Server]Incorrect syntax near the keyword IF. (156) 解决方案
[SQL Server]Incorrect syntax near the keyword 'IF'. (156) 解决方案原创 2020-11-13 09:47:15 · 4640 阅读 · 0 评论 -
SpringBoot连接SQL Server数据库
一、POM文件中加入SQL Server JDBC依赖注意:很多博客中说引入的jar是Sqljdbc4,如果只引入该jar,程序启动会报错。经过多次测试是 mssql-jdbc。<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc --><dependency> <groupId>com.microsoft.sqlserver</groupId&g原创 2020-10-26 15:29:24 · 8847 阅读 · 3 评论 -
Linux在线安装MySQL5.7.24
说明:大佬文章,受益匪浅。拿过来加点自己的见解。本篇博客介绍的是在线安装方法,离线安装可以参考这篇文章:https://www.cnblogs.com/lingyao/p/11984091.html1、检查是否已安装过mariadb,若有便删除(linux系统自带的)。删除时替换成你自己的版本。[root@localhost /]# rpm -qa | grep mariadb[root@localhost /]# rpm -e --nodeps mariadb-libs-5.5...原创 2020-10-16 17:22:39 · 407 阅读 · 1 评论 -
富文本导出过滤样式
前言Java 后端的导出经常使用到的插件是EasyPoi,同时也偶有涉及导出图片和富文本的情况。关于EasyPoi导出图片,参考我下面这篇博客:https://blog.csdn.net/qq_41057885/article/details/108736913正文富文本的导出,需要对立面的样式进行过滤,主要是过滤HTML标签,CSS样式和转义字符。String htmlStr = "<h1>我是标题H1</h1><div style="color:r原创 2020-09-27 10:05:39 · 470 阅读 · 0 评论 -
@RequiresPermissions 设置多个权限
// 不能省略KEY@RequiresPermissions(value = {"aa:bb:cc", "dd:ee:f"}, logical = Logical.OR)Logical.OR:满足一个权限即符合条件Logical.ADD:需要同时满足这两个条件原创 2020-09-27 09:38:08 · 4477 阅读 · 2 评论 -
EasyPoi导出图片
aaa原创 2020-09-23 11:40:37 · 7607 阅读 · 15 评论 -
使用XShell通过Linux跳板机连接内网服务器
说明最近在维护一个项目,一共有两台Linux服务器,内网相连,用途不同。仅服务器A有外网地址,要求通过服务器A维护服务器B的项目。服务器A外网地址:220.178.21.57,内网地址:192.168.1.30。服务器B内网地址:192.168.1.30。端口号均为22。方法一...原创 2020-09-05 17:18:27 · 1335 阅读 · 0 评论 -
Java后台文件批量压缩下载
最近遇到一个需求,要求设计批量下载功能,即点击按钮即可将勾选的文件全部打包成压缩包,批量下载下来。页面如下,勾选对应的复选框,点击批量下载按钮,即可将复选框对应的附件批量压缩成一个zip压缩包,然后浏览器弹框下载。前端// 批量下载$("#downloadBtn").click(function () { // 获取复选选框对应的ID var ids = getIds(); if (ids == "") { top.layer.msg("请选择要原创 2020-08-28 09:31:29 · 63503 阅读 · 0 评论 -
@Async 注解无效的问题
@Async 注解作用 在Spring中,基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作。即可理解为,标注了@Async注解的方法,会被主线程交给子线程去完成。@Async注解用法 /** * 保存发送短信日志 * @param phone 手机号 * @param object 短信参数 * @return */ @Async ..原创 2020-07-03 16:03:47 · 854 阅读 · 0 评论 -
Linux CentOS7 离线安装Nginx
Linux在线安装Nginx的教程,在此不多说,具体百度。在此仅说明,Linux离线安装Nginx的步骤。网上的教程比较少且没有贴相应的资源,不是很全面,所以我来综合一下。环境和版本:Linux CentOS7.6、Nginx1.14一、安装环境包 gccLinux运行Nginx首先需要 gcc/gcc-c++ 环境,因此我们需要先安装这两个东西。链接:https://pan.baidu.com/s/1kKyXmAFjgN8XdkF2grqWXA提取码:8sz21. 将下载的g.原创 2020-06-17 17:34:44 · 362 阅读 · 0 评论 -
SpringBoot项目接入支付宝第三方登录
今年大四毕业,由于新冠肺炎疫情的原因,开学和毕业答辩的时间都进行了推迟,因此有较多的时间对毕设项目做修改和调整,便在项目中接入微信和支付宝的第三方登录。在此需要说明,微信和支付宝的开发者平台大体一致,但是接入功能审核条件不尽相同。对于微信开发者而言,申请第三方登录不但要求你要有自己的域名,还要填写《微信开放平台网站信息登记表》并盖章等,条件相对苛刻。对于支付宝开发者而言,申请第三方登录仅需要有个人...原创 2020-05-05 22:32:48 · 3722 阅读 · 4 评论