java
java脱坑指南
爱刘温柔的小猪
气忌躁,言忌浮,才忌满,学忌浅。
展开
-
根据ip限制接口访问次数
我们利用redis去实现这个功能,redis的天然高并发和内存单线程速度拉满,非常适合做这个场景。为了可用性,我们把它封装成注解形式,哪个接口想被根据ip限制接口访问次数,直接标注上注解即可。原创 2024-05-14 22:45:00 · 342 阅读 · 0 评论 -
java后端远程调用文件上传接口(multipart/form-data类型)的方法
multipart/form-data是一种用作传输多个文件/表单项的数据格式。原创 2024-01-29 21:30:00 · 1234 阅读 · 0 评论 -
从redis中获取各个属性值拼装成对象列表的优化
我的目标是根据名称,从Redis缓存中获取一些值,并将它们封装到KnowBaseArgDto对象中,然后将这些对象添加到一个列表中返回给前端。原创 2023-11-24 20:00:00 · 206 阅读 · 0 评论 -
高性能高可用的全能httpclient方法封装
废话不多说,直接干代码一、http请求配置/** * HttpClientConfig http请求配置 */public class HttpClientConfig { /** * 连接时间 ms */ protected int CONNECT_TIMING_OUT = 300000; /** * 请求响应时间 ms */ protected int RESPONSE_TIMING_OUT = 300000;原创 2023-11-21 18:15:00 · 242 阅读 · 0 评论 -
springboot远程执行服务器指令
本例是java远程连接到服务器,去抓取查询kubesphere中的etcd日志,并返回。2、编写连接命令工具类KubeSphereSSHUtils。1、在工程中引入下方依赖。原创 2023-09-18 19:30:00 · 257 阅读 · 0 评论 -
springboot调用webservice简便方式
webservice接口时使用,比较吃内存。仅在管理系统后台中,或者是用户量少时可以采用此取巧方案。原创 2023-08-08 20:45:00 · 466 阅读 · 0 评论 -
MySQL优化循环插入变成批量插入
Mysql 每次插入一条数据,循环插入的效率很低,可采用批量插入,一次插入500条来提升效率。原创 2023-03-16 15:43:20 · 525 阅读 · 0 评论 -
MySQL生产环境死锁处理
1、查看当前运行的所有事务(有时并非是锁,也有可能是事务执行的时间太长,比如同一事务插入了大量的数据,所用的时间较长)查询到相对应的进程 === 然后 kill id。当找到死锁的线程后,kill 掉(风险操作,谨慎些)。原创 2023-02-21 21:15:00 · 202 阅读 · 1 评论 -
企业级用户登录流程及代码实现
主体逻辑:用户点击登录,进入认证服务的接口,认证服务的接口远程调用会员服务登录的接口,如果会员服务校验账号密码通过,则进入首页,未通过,则携带错误信息回到登录页面。注意:有哪里看不懂的或者是想看完整的注册、验证、登录、第三方登录等流程和代码,请查看本专栏文章。1、编写认证服务调用会员服务的service.package com.atguigu.***.auth.feign;import com.atguigu.common.utils.R;import com.atguigu.***.aut.原创 2022-01-26 20:15:00 · 1063 阅读 · 0 评论 -
thymeleaf请求跳转页面,每一个请求都需要写一个controller的空方法return回页面的解决办法
正常thymeleaf使用中,前端发送的请求如果单纯想跳转页面的话,需要在controller写一个方法去return回页面,例如:如果请求多,且都只是单纯跳转页面的话,每一个都这么写实在是太难受了。解决方案就是实现springmvc的WebMvcConfigurer接口,重写addViewControllers方法,将请求html页面映射过来;不需要写空方法。写一个配置类即可:package com.***.***.auth.config;import org.springframework.原创 2021-07-19 19:47:08 · 2091 阅读 · 0 评论 -
短信验证码/邮箱验证码的发送及防刷校验
一、发送短信验证码及接口防刷1、前台注册或登录页面调用的后端接口(防刷,并利用openfeign调用另一个服务发短信):@ResponseBody @GetMapping("/sms/sendcode") public R sendCodeForSms(@RequestParam("phone") String phone){ //防刷校验防刷(防止60秒内再次发送验证码) String redisCode = redisTemplate.opsForVa原创 2021-07-03 15:06:41 · 1477 阅读 · 0 评论 -
idea复制多份springboot项目,使用不同端口运行
1、右键项目名,点击copyConfiguration。2、换个名字,并指定一个新端口号。在运行即可。原创 2021-05-14 19:49:15 · 1132 阅读 · 0 评论 -
idea一键启动多个微服务并设置每个服务的占用内存,优化空间
1、首先点击Edit Configurations进入修改配置页面,如下图:2、在弹出的页面中点击左上角加号,选中Compount。3、选中创建出来的Compount,点击右侧加号,将微服务都加入进来。(我这已经是加入完的了,因此只显示了几个测试类。正常的是像图片中的GulimallOrderApplication那样的。)4、添加进来自己想要一键启动的微服务之后如下图显示,记得修改一下名字方便记忆。5、修改服务的占用内存大小。首先点击笔一样的图标,进入修改单个微服务设置页面。6、设置原创 2021-01-23 18:07:38 · 7295 阅读 · 9 评论 -
当实体类中某个属性经过逻辑处理后为空时,返回的实体类去掉该空属性
在实体类的对应属性上使用注解@JsonInclude(JsonInclude.Include.NON_EMPTY)即可。如图:记录一下,防止以后用到忘记!原创 2020-12-29 20:37:45 · 817 阅读 · 0 评论 -
java定义全局统一返回类
全局统一返回类,可以返回各种实体数据,状态码,成功失败信息等,实现了全局返回值类型统一的功能。代码很简单,复制拿去用就好。有不少开源项目使用的都是这套全局返回,基本没什么区别。如果有更好的方式或者哪里不规范欢迎指正。package com.cgh.common.utils;import org.apache.http.HttpStatus;import java.util.HashMap;import java.util.Map;/** * 返回数据 * */public clas原创 2020-12-24 21:50:02 · 4305 阅读 · 3 评论 -
SSM程序打jar包解决方案
SSM程序打jar包解决方案1、删除Java文件AppWebWithTomcat.java(因为这个是为了使用war方式发布,用jar包发布会出错,所以使用jar包发布的时候需要删除)。2、注释AppWebTest.java中的所有错误信息(如果没有报错,请忽略此步骤)。3、如果工程中有第三方jar包,不是通过maven引入的,则需要pom文件中追加如下代码,才能把第三方Jar包打入到Jar...原创 2020-04-02 10:13:49 · 4051 阅读 · 1 评论 -
idea创建maven工程,yml文件不变叶子,并且右键项目没有maven选项,及右边maven工具栏该项目显示灰色的解决方案
问题现象:新建一个maven工程,main文件夹下的java文件夹和resources文件夹没有图标,并且新建application.yml没有绿色叶子图标,也没有提示。右键项目没有maven选项,屏幕右边maven工具栏该项目显示灰色。解决方案(按步骤排查):1、确认idea是否安装yaml插件,ctrl+alt+s,弹出setting窗口,选择plugins,在上面输入框中输入yaml,查看是否安装插件。如果没有安装,则安装yaml插件,并重启idea。2、查看pom文件是否报错。3、点击fi原创 2020-10-27 23:38:45 · 2493 阅读 · 0 评论 -
String转String数组转int数组转List「Integer」
String ids = "1,2,3,4,5,6";String[] iidsStrings = ids.split(",");//转成String数组int[] array = Arrays.stream(iidsStrings).mapToInt(Integer::parseInt).toArray();//转int数组List<Integer> list2 = Arrays.stream(array).boxed().collect(Collectors.toList());//转原创 2020-07-25 13:45:49 · 7185 阅读 · 0 评论 -
Fri Jun 26 00:00:00 CST 2020时间格式转换成yyyy-MM-dd时间(java)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date startDate = tContract.getcContractStartDate(); Date endDate = tContract.getcContractEndDate(); String stDate= sdf.format(startDate); //开始时间格式化成yyyy-MM-dd格式的时间字符串 String enDate= sdf.for原创 2020-07-19 16:24:54 · 14485 阅读 · 7 评论 -
Mybatis模糊搜索参数有英文单引号解决方案
当模糊查询自动触发时,用户如果使用打字法输入汉字还没输入完,默认发送到后台的参数是以拼音加单引号的形式,这时mybatis模糊查询会报错。环境:mybatis、oracle原语句:<select id="findPhotoInfoList" resultType="cn.it.ssm.domain.auto.PhotoInfo"> SELECT id, ...原创 2020-05-23 12:54:05 · 1206 阅读 · 2 评论 -
building workspace(sleeping)解决方案
由于sts卡死,从任务管理器中清掉sts后,再次打开sts,就一直在building workspace(sleeping)闪烁。并且springboot项目报错:Description Resource Path Location Type The project was not built due to "Could not delete ’ 如果直接运行,会报找不到主类。方法1:点击Pr...原创 2020-05-07 22:13:23 · 1217 阅读 · 4 评论 -
springboot报错: 找不到或无法加载主类
首先右键项目 run as—maven clean然后project—clean选中报错的项目点击ok,然后等待清理完成,重新运行项目即可。原创 2020-05-23 19:54:21 · 254 阅读 · 0 评论 -
maven clean报错Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean
出现这个错误一般是有另一个java进程或者是tomcat启动占用了资源,杀死占用资源的进程就可以。如果实在不行,必杀技重启电脑即可!原创 2020-04-19 22:07:28 · 203 阅读 · 0 评论 -
springboot工程word转pdf并打jar包完全版攻略,支持linux
一、说明有两种方法,第一种方法非常简便,是利用documents4j,它是基于office组件的,linux如果没有office组件,则不支持linux系统。第二种方法是基于aspose-words,功能强大,在linux上可以完美使用。缺点就是是付费的,如果条件允许建议忽略下方的license.xml去使用正版。二、方法一(基于documents4j)首先pom依赖如下: <dependency> <groupId>com.documents4j</group原创 2020-08-06 20:29:00 · 2446 阅读 · 5 评论 -
java去除数据库中带html标签的工具类
public class StrUtil {public String parseHtml(String html,int length) { if(html == null || html == "") { return html = "空"; }else { if(html.length()<length){ return html; }else { /*原创 2020-07-06 20:10:33 · 223 阅读 · 2 评论 -
springboot实现定时发送邮件(可带附件)
首先在pom文件添加如下依赖<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!--定时器--> <dependency>原创 2020-06-09 21:28:17 · 970 阅读 · 2 评论 -
java枚举类常规写法
/** * package cn.it.ssm.common.constants.enums;/** *枚举 * * @author chenggh * */public enum SupplierEnum { /** 某庄园 */ S_LAVENDER("S1", "某庄园", 1,"1"), /** 某世界 */ S_DISCOVERYKD("S2", "某世界", 2,"2"), /** 新增景区 **/ S_NEWSHOP("S3", "新增景区", 3,"3"原创 2020-06-08 19:08:52 · 564 阅读 · 0 评论 -
bootstrap-table前后端完整交互(后端PageHelper处理分页)
1、html代码如下关键的代码是:<table id="userTable"></table><!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"><head> ...原创 2020-05-31 15:29:09 · 2213 阅读 · 0 评论 -
继承(抽象类/普通类)类与实现接口的区别
一、继承(抽象类/普通类)类与实现接口的区别1、继承抽象类,必须重写抽象类中所有抽象方法。2、继承普通类,可以重写也可以不重写父类的方法。3、实现接口则必须实现接口中的所有方法。(接口中的方法均为抽象方法)。二、抽象类、接口的区别1、类要被子类继承,接口要被子类实现。2、接口里不能定义普通变量,而抽象类中可以,接口只能定义公共的静态常量。3、抽象类里可以没有抽象方法,可以有普通方法,...原创 2020-05-24 12:42:25 · 3964 阅读 · 0 评论 -
springboot实现redis生成手机验证码并校验的demo
这个demo是用了jedis操作的redis,springboot2.0之后,对redis连接的支持默认采用了lettuce。所以首先在pom文件中加入如下依赖。 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>yml配置如下:ser原创 2020-05-23 22:50:46 · 500 阅读 · 0 评论 -
bootstrap-table点击列名获取一整行的数据
换句话说就是根据唯一的id或者其他属性,获取该行的数据。注意:要写在表格铺完数据之后,例如写在$ExTable.initTable($userTable, settings);之后。首先通过表格的id绑定一个唯一的列字段属性名(不是title后面的,是field后面的属性名)。这里我们指定id为唯一列字段,因为这个id是数据库中的自增主键,不会重复。 $('#userTable').boo...原创 2020-05-11 22:37:20 · 2642 阅读 · 0 评论 -
表单提交并上传附件(异步)
业务场景是填写表单并选择需要上传的附件,在选择附件的时候,就将附件上传,然后将附件的名称回显在表单中并带有删除按钮,可以删除。点击表单提交,将包含附件信息的表单一起提交,表单信息入库表单信息表并返回当前入库表单信息数据的自增id,通过自增id附件信息入库附件信息表并与表单关联,形成一对多关系。html关键代码如下:<div class="unit"> <div class=...原创 2020-05-10 12:40:53 · 1043 阅读 · 0 评论 -
poi导出Excel完整版
采用的poi版本依赖如下:<properties> <poi.version>3.13</poi.version></properties><!-- poi --> <dependency> <groupId>org.apache.poi</gr...原创 2020-04-21 21:50:00 · 280 阅读 · 0 评论 -
List、Map、Set
一、List接口继承于Collection接口,是集合的一种,存放的是有序的元素,并允许有重复元素,元素索引从0开始。实现List接口的集合主要有:ArrayList、LinkedList、Vector。1.1 ArrayListArrayList本质上是一个动态数组,查找和遍历的效率高,在指定位置插入删除效率低。每一个ArrayList都有一个初始容量,会随着存的元素数量变化而变化。Ar...原创 2020-04-10 14:43:14 · 66 阅读 · 0 评论 -
springboot带参数的文件上传
这个工程是在内网环境进行开发,u口也被封住了,所以不能把代码拷贝出来,于是把业务部分进行脱敏处理,核心代码手写一遍如下:一、html关键代码<form id = "createForm" method="post" enctype="multipart/form-data"><div class="form-group"><div class="col-xs-3...原创 2020-04-03 16:03:24 · 3578 阅读 · 0 评论 -
springboot下bootstrap-fileinput上传、修改、删除图片(前端+后端)
一、在properties文件中添加图片要上传和回显的路径上传的路径:#本地环境路径image.uploadLocation=uploaded/image#Linux环境路径#image.uploadLocation=/usr/local/img回显的路径:#本地环境路径image.virtualLocation=file:///F:/works/STSWorkSpace/loc...原创 2020-04-02 14:32:29 · 5303 阅读 · 0 评论 -
SpringBoot中MySQL数据库改造Oracle方法
SpringBoot中MySQL数据库改造Oracle方法1.复制Oracle驱动jar。(我使用的是oracle8.jar)。首先将下载好的oracle8.jar复制到D盘根目录下(自己工程在哪个盘里就复制在哪个盘根目录,不然可能导致一系列问题)2.在CMD中执行Oracle驱动jar命令:mvn install:install-file -DgroupId=com.oracle -Dar...原创 2020-04-02 09:15:14 · 1627 阅读 · 0 评论