![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
LC超人在良家
记录一下平时的工作
展开
-
关于使用fastjson返回结果出现$ref引用的情况
ref 表示这个元素的数据和元素5的数据一样,解决方法是指定序列化的类型SerializerFeature.DisableCircularReferenceDetect。原创 2023-05-19 11:25:45 · 1045 阅读 · 0 评论 -
使用RestTemplate在服务之间进行MultipartFile格式文件的传递
MultipartFile是Spring框架中提供的一种用于文件处理的接口,一般用于前端进行文件的上传,后端使用MultipartFile类型来进行文件的接收;当使用RestTemplate的post方法进行来传递接收到的MultipartFile类型文件时,由于RestTemplate中并没有对应的转化器(Converter),无法将文件对象打包进body中,所以会抛出异常。办法:先将MultipartFile类型的对象转化为File类型,一下为转换的方法。原创 2023-03-23 17:41:40 · 1756 阅读 · 0 评论 -
数据库中存储数组的两种格式(带不带[])的解析
就像devices字段这样从数据库中取出成数组是。原创 2023-03-15 11:15:24 · 588 阅读 · 0 评论 -
LinkedList + 链表
Lin可的List的底层是链表原创 2023-03-03 10:25:51 · 127 阅读 · 0 评论 -
git安装和常用命令汇总
冰河亲自整理的Git命令汇总(建议收藏)原创 冰河 冰河技术 昨天大家好,我是冰河~~Git目前是各大互联网公司使用的版本控制工具,进大厂,必须要学会Git的基本使用。这不,最近就有很多小伙伴私信我:冰河,可以帮我整理下Git的使用命令吗?网上的太零散了,买书看又没时间。我:可以啊!于是乎,我熬夜整理了这篇文章。这篇文章主要是汇总讲解Git的使用命令。点击上方卡片关注我Git的安装通过 https://git-scm.com/downloads ,git官网下载需要的版本,一路下一步安装即可原创 2021-12-15 09:03:34 · 214 阅读 · 0 评论 -
NumberFormat以及其子类的使用
从上面的结构图可以看出来,Format类是最根本的父类;原创 2022-10-26 14:51:47 · 427 阅读 · 0 评论 -
EnumMap的使用-当key是enum枚举
如果作为key的对象是enum类型,那么,还可以使用Java集合库提供的一种EnumMap,它在内部以一个非常紧凑的数组存储value,并且根据enum类型的key直接定位到内部数组的索引,并不需要计算hashCode(),不但效率最高,而且没有额外的空间浪费。因为HashMap是一种通过对key计算hashCode(),通过空间换时间的方式,直接定位到value所在的内部数组的索引,因此,查找效率非常高。原创 2022-08-25 13:18:31 · 940 阅读 · 0 评论 -
对视频和图像的处理
spring:servlet:multipart:enabled: true # 开启文件上传max-file-size: 300MB #限制文件上传大小max-request-size: 300MB # 限制文件流大小原创 2022-08-05 13:23:33 · 749 阅读 · 0 评论 -
springboot结合aop和pagehelper实现分页筛选排序功能
/***统一封装onComplete,简化调用方代码*@return*/}/***分页返回**@return*/>list){}/***统一封装onError,简化调用方代码*@return*/}}/***当前记录起始索引*//***每页显示记录数*//***排序列*//***排序的方向"desc"或者"asc".*//***分页参数合理化*//*****分页数据。.........原创 2022-07-27 14:35:13 · 1554 阅读 · 0 评论 -
客户端工具类+类型转换器+字符集工具类+字符串格式化+字符串工具类+sql操作工具类
请求头获得数据原创 2022-07-05 09:22:45 · 170 阅读 · 0 评论 -
idea实现远程调试
1.项目开启远程调试在-jar 后面配置 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8327 (8327是远程调试的端口号,注意不要和项目端口号冲突)nohup java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8327 newsell-0.0.1-SNAPSHOT.jar >/dev/null 2>&原创 2022-05-18 16:51:57 · 4151 阅读 · 0 评论 -
工作遇到的小问题
1.接口响应给前端,响应头里面的返回参数的接受限制有时候相对返回的返回给前端的数据做一些请求头显示的限制需要添加这么一段response.addHeader(“Access-Control-Expose-Headers”, “想让前端可以接受到header里面的字段,比如flag”);自定义响应头参数:response.addHeader(“falg”,“y”);...................................................................原创 2022-05-10 11:51:51 · 1458 阅读 · 0 评论 -
如何减少使用第三方接口调用是token的获得
我们开发经常会遇到要使用第三方的接口,且这些接口都需要在请求头上带上Authorization - Bearer token这样的验证信息;假如我们每次都获取token那会导致每次都会生成新的token,增加了调用次数;减少调用次数的办法:在登录的时候获取token(这个时候类中就赋值token),再把token存储进redis(判断过期)步骤:1.定义获取第三方token的类,定义一个属性为sxtoken;2.在获取第三方token的类中定义获得token的方法,然后赋值给属性sxtoken原创 2022-05-05 17:37:09 · 1370 阅读 · 0 评论 -
windows解决tomcat的端口被占用问题
方法一,删除占用端口的服务https://blog.csdn.net/LC_Liangchao/article/details/124499367方法二,修改tomcat的启动端口打开tomcat安装文件夹下的conf文件夹中的”server.xml“文件,以记事本的形式打开。找到下图的这部分,吧8080改成9999就可以了,再次启动tomcat启动tomcat...原创 2022-04-29 16:48:45 · 785 阅读 · 0 评论 -
windows端口被占用的解决方法
方法一:命令窗:cmd输入”netstat -ano"或者“netstat -ano|findstr 8080”指令(注意不包含引号),查看所有的活动连接,找到端口8080对应的pid然后输入指令“taskkill/pid 7544" (7544是pid)结束这个进程。但这样可能会出现一个错误:错误: 无法终止 PID 为 7544 的进程。原因: 拒绝访问。方法二:打开任务管理器–>详细信息找到PID为端口8080对应的那个PID(7544)的进程,单击右键–>结束任务。原创 2022-04-29 16:45:00 · 8331 阅读 · 0 评论 -
自定义审批流程设计
一个审批流程要支持一下这个基本的要求:单人单人多级审批多人审批多人多级审批单人多级跳跃审批多人多级跳跃审批同一节点多人审批要解决这些问题我做了如下的数据库设计:审批流程图:...原创 2022-04-27 14:15:08 · 5923 阅读 · 0 评论 -
压缩的工具类
package com.orderplus.pom.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/**@author liudong 2020/7/27 18:30*/原创 2022-04-25 18:02:07 · 129 阅读 · 0 评论 -
实体类内嵌类
fastjson 解析报错 com.alibaba.fastjson.JSONException: create instance error…报错原始代码public class A{undefined private String haha; private int gogo; private B bb; public class B {undefined private String原创 2022-04-15 16:18:10 · 2658 阅读 · 0 评论 -
UML概述和使用
一、什么是UMLUML是一种可视化的面向对象建模语言。UML描述了一个系统的静态结构和动态行为。UML用图形方式表现典型的面向对象系统整个结构。UML从不同的角度为系统建模,并形成系统的不同视图。UML的基本构造块——事物、关系、图二、UML中的事物2.1 结构事物1、类(class):类是对一组具有相同属性、方法、关系和语义的对象描述。2、接口(Interface):接口描述了一个类或构件的一个服务的操作集。3、协作(collaboration):协作定义了一个交互,它是由一组共同工原创 2022-03-29 13:37:36 · 1224 阅读 · 0 评论 -
通过自定义的key进行加密解密
1.依赖 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.60</version> </dependency>2.工具类package com.zykj.zyc原创 2022-03-21 13:14:37 · 1789 阅读 · 0 评论 -
idea导入外部包
一、对于web项目首先,在WEB-INF下面建立一个lib目录然后将包放在lib目录下:File->project structure->libraries-> 修改项目的配置选中这个工程下面的jar包-》OK-》ok原创 2022-03-17 11:20:08 · 2719 阅读 · 0 评论 -
Google guava工具类的使用
Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections]缓存 [caching]原生类型支持 [primitives support]并发库 [concurrency libraries]通用注解 [common annotations]字符串处理 [string processing]I/O 等等。使用引入gradle依赖(引入Jar包)compile 'com.google.guava:guava:26.0-jre'&l原创 2022-02-08 14:07:07 · 375 阅读 · 0 评论 -
性能指标:QPS、TPS、系统吞吐量
一、QPS,每秒查询QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。二、TPS,每秒事务TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使转载 2022-02-08 13:41:36 · 978 阅读 · 0 评论 -
分支合并ForkJoin
ForkJoin在jdk1.7出现的,并行执行任务,提高效率1.把大任务拆成小任务,然后汇总结果2.特点:工作窃取(A,B两个线程,A执行完会把B的某些任务投过去执行)3.底层:双端队列4.使用第一步:通过forkjoinpool来执行第二步:计算任务forkjoinpool第三步:计算类要继承ForkJoinTask的子类public class ForkJoinDemo extends RecursiveTask<Long> { private Long statrt;原创 2022-02-08 10:34:35 · 271 阅读 · 0 评论 -
try-finally的详解
先看两端代码,猜测一下结果代码一:public static int test1() { int x = 1; try { return x; } finally { x = 2; }}代码二:public static int test2() { int x = 1; try { return x; } finally { x = 2; return x;原创 2022-01-21 14:38:52 · 3271 阅读 · 1 评论 -
企业中休眠的使用
我们最开始学习java的试试,休眠可能就是Thread.sleep();但是在实际使用中不会使用这个,更多的是使用瞎买你这个方法:TimeUnit.DAYS.sleep();TimeUnit.SECONDS.sleep();原创 2022-01-19 16:33:55 · 275 阅读 · 0 评论 -
怎么将第三方jar包转成maven的jar包
在cmd中输入:mvn install:install-file -Dfile=C:\Users\Administrator\Desktop\QRCode.jar -DgroupId=QRCode -DartifactId=QRCode -Dversion=3.0 -Dpackaging=jar -DgeneratePom=true-Dfile的后面输入的为你下载的第三方jar包的本地文件路径。-DgroupId的后面输入的为你转maven jar包后groupId的标签内容QRCode。-Dart原创 2022-01-18 09:37:26 · 431 阅读 · 0 评论 -
Arrays.asList、ArrayList的subList的坑
Arrays.asListArrays.asList方法可以在一些简单的场合使用,比如快速声明一个集合,判断某个值是否在允许的范围内:但声明后不要再调用add等方法修改集合,否则会报java.lang.UnsupportedOperationException异常。ArrayList.subListArrayList.subList返回的是bookList中索引从fromIndex(包含)到toIndex(不包含)的元素集合。使用起来很简单,也很好理解,不过还是有以下几点要注意,否则会造成程序错误或原创 2022-01-18 09:10:01 · 257 阅读 · 0 评论 -
Hibernate-Validator框架完成数据校验
Hibernate Validator是Hibernate提供的一个开源框架,使用注解方式非常方便的实现服务端的数据校验。官网:http://hibernate.org/validator/Bean校验的注解常用注解如下:注意,导入的包import javax.persistence.*;Constraint详细信息@Valid被注释的元素是一个对象,需要检查此对象的所有字段值@Null被注释的元素必须为 null@NotNull被注释的元素必须不为 nu.原创 2022-01-13 11:03:35 · 162 阅读 · 0 评论 -
枚举 代替常量类
首先,我们需要知道枚举是JDK5的新特性,是引用类,也是一种特殊的类。jdk5以前是使用常量类 public class DayDemo { public static final int MONDAY =1; public static final int TUESDAY=2; public static final int WEDNESDAY=3; public static final int THURSDAY=4;原创 2022-01-11 11:22:02 · 122 阅读 · 0 评论 -
RabiitMQ如何保证消息的可靠性呢?(分三方面(发送者,MQ,接收者))
我们都知道RabbitMQ是最近常用的消息中间件,那如何保证消息在传递过程中不会丢失呢?这就是这篇文章要说的了。流程图操作提供者:有两种方式确认,一种是开启rabbitmq的事务,但是这样太耗性能了,所以用下面你这种。首先,将信道channel设置程confirm模式,此时,所有的信道发送的消息都会有一个唯一ID,一旦消息到队列或者写入到磁盘中,信道就会返回一个带有这个唯一ID的确认消息,假如失败这是返回nack(not ackonwledged)消息RabbitMQ:对于rabbi原创 2022-01-10 11:34:05 · 547 阅读 · 0 评论 -
对于集合对象 通过方法后 对象值的变化
以list为例假如我new了一个list对象,通过一个返回void的方法,此时有两种情况第一种 调用集合的方法 - 里外对象一致比如 list.add()以list的方法往list里面您添加数据的时候,此时list的地址值没有发生变化,离开方法后,list对象里面还是有加进去的值。第二种 通过new或者sql得到的集合数据 - 里外对象不一致我们通过其他(非集合方法)方式获得的数据会重新生成一个对象,即时是直接把传入进来的对象接受这些数据,也是会指向另一个地址值。看下图:通过sql获得数据赋原创 2022-01-10 11:32:47 · 166 阅读 · 0 评论 -
Validator框架-springboot的参数校验器
Validator框架,,它的出现就是为了解决开发人员在开发的时候减少代码的,提升开发效率。它专门用来做接口的参数校验,比如:密码长度、是否为空等等。在默认情况下:SpringBoot会引入hibernate validation机制来支持JSR-303验证规范。SpringBoot的validator校验框架支持如下特征:JSR303特征:JSR303是一项标准,只提供规范不提供实现。规定一些校验规范即校验注解。比如:@Null、@NotNull、@Pattern。这些类都位于:javax.va原创 2022-01-10 11:26:47 · 351 阅读 · 0 评论 -
记录一个@Postmapping和@RequestParam的坑
我们在开发中经常会用到 @PostMapping、@GetMapping、@RequestParam、@RequestBody、@PathVariable;但是我们得注意使用情况:@GetMapping 配合 @RequestParam、@RequestBody、@PathVariable;@PostMapping 配合 @RequestBody (使用@RequestParam很有可能debug失效或者获取不到参数数据)@RequestParam:对包装类,基本类型,String等通过属性va原创 2022-01-10 11:25:44 · 7392 阅读 · 1 评论 -
最终版本的JWT的使用
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>io.jsonwebtoken&原创 2022-01-08 23:02:39 · 1214 阅读 · 0 评论 -
String和StringBuilder以及StringBuffer之间的注意事项
我们得知道为何会出现String,StringBuilder,StringBuffer(1)String 字符串常量 (每次都会创建对象)(2)StringBuilder 字符串变量(非线程安全)(3)StringBuffer 字符串变量(线程安全)从上面可以看到String 因为每次创建的时候都会创建对象,太消耗内存了,所以就有了StringBuilder,但是StringDuilder是线程不安全的,所以就有了StringBuffer。基本来说都是在性能上都是 StringBuilder &g原创 2022-01-08 23:02:20 · 466 阅读 · 0 评论 -
重写和重载、<<和>>和^的作用、位数值、++和--和&&和&和||和|、a-z对应的数值、byte类型、变量、单位、进制和码
JDK的基础认知JDK java development kit java开发工具JVM java virtual machine java虚拟机,真正运行java程序的地方JRE java java runtime enviroment java运行环境那JDK,JVM,JRE之间的关系又是如何的呢?请看下图由图我们可以知道,JDK>JRE>JVM(且是包含关系);那java的跨平台性(一次编译,处处运行),就是因为JVM,不同平台安装不同的JVM关键字和标志符.原创 2022-01-08 23:01:24 · 527 阅读 · 0 评论 -
解决HttpServletRequest InputStream(错误提示Request body missin )只能使用一次的问题
通常我只定义一个拦截器,对请求参数处理的时候,尤其是对post需要用到流,那这样处理完后跑到控制器那边就会报request body missing错误提示:流已经关闭,因为如果通过过滤拦截器读取流的话,IO流关闭只能读取一次, 即使不关闭的话,流有个read标志位,后续控制器会从read标志位开始读,读过流之后就读取不到数据了,除非利用void reset()方法,把pos位置位开始,重新读,但是不是任何流都可以使用,所以我们写通用的方法时候,读取完流中数据之后,需要进行包装request,将流重新写原创 2022-01-08 23:01:09 · 1389 阅读 · 0 评论 -
Jar包打成maven依赖
目标位置:D:\maven\repository\com\oracle\ojdbc6\11.2.0.3要安装jar包位置:F:\ojdbc6-11.2.0.3.jar命令:mvn install:install-file -Dfile=F:\ojdbc6-11.2.0.3.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar原创 2022-01-08 23:00:56 · 158 阅读 · 0 评论 -
对于字符串1.0转换成数值的问题
Integer.parseInt(“1.0”); x 报错Long.parseLong(“1.0”); v 成功Integer.parseInt(“1.0”); x 报错Long.parseLong(“1.0”); v 成功Integer.parseInt(“1.0”); x 报错Long.parseLong(“1.0”); v 成功Integer.parseInt(“1.0”); x 报错Long.parseLong(“1.0”); v 成功Integer.pars原创 2022-01-08 23:00:09 · 659 阅读 · 0 评论