
java
伟大的豪哥
程序员一直在路上,不是在找bug的路上,就是在解决bug的路上。
展开
-
mybatisPlus打印sql(yaml配置)
mybatisPlus打印sql语句(yaml配置)原创 2022-12-12 16:25:09 · 682 阅读 · 1 评论 -
CSV文件导入导出和敏感词过滤
1.特殊字符问题CSV上传文件因为是BOOM表头 所以存在特殊字符/uFEFF 如果用作敏感词过滤 包含特殊字符的内容无法进行过滤//去除空格str.replace(" ", “”);//csv特殊字符处理上传csvstr.replace(“\uFEFF”, “”);2.导入时乱码问题判断是否乱码/*** 判断字符串是否是乱码** @param strName 字符串* @return 是否是乱码/public static boolean isMessyCode(S原创 2022-03-31 13:54:08 · 739 阅读 · 0 评论 -
mysql删除重复数据,保留id最大的行数据
举例:场景:多条件删除购物车表由于之前未做并发处理导致的重复数据问题DELETEFROMums_cartWHEREid IN (SELECTidFROM(SELECT*FROMums_cart aWHERE( a.umsUserId, a.smsSpecId ) IN ( SELECT umsUserId, smsSpecId FROM ums_cart GROUP BY umsUserId, smsSpecId HAVING count() > 1 )) t)原创 2021-08-17 17:02:35 · 954 阅读 · 0 评论 -
nacos配置不生效的解决方法
1,在取配置值处加上 @RefreshScope注解2,重启nacos原创 2021-07-30 10:15:32 · 1530 阅读 · 0 评论 -
IDEA启动spring boot项目时Error running
IDEA启动spring boot项目时报错 Error running ‘ApplicationRun’: Command line is too long. Shorten command line for ApplicationRun or also for Spring Boot default configuration.如何解决打开项目文件夹找到该文件xxxxxxxxxxxxxxx/.idea/workspace.xml在文件这个内容内加入下面代码,表示动态Java编译路径...原创 2021-01-06 10:14:07 · 2178 阅读 · 1 评论 -
Redis的缓存穿透、缓存击穿、缓存雪崩
一.缓存穿透条件:访问一个不存在的数据说明:当访问一个不存在的数据时,因为缓存中没有这个key,导致缓存形同虚设.最终访问后台数据库.但是数据库中没有该数据所以返回null.隐患:如果有人恶意频繁查询一个不存在的数据,可能会导致数据库负载高导致宕机.总结:业务系统访问一个不存在的数据,称之为缓存穿透.二.缓存击穿条件:当缓存key失效/过期/未命中时,高并发访问该key说明:如果给一...原创 2018-09-19 19:48:13 · 1342 阅读 · 0 评论 -
java使用流将文件上传至浏览器
// 使用字节流将文件上传至浏览器public static void exportExcelAfter(ByteArrayOutputStream os, HttpServletResponse response, String fileName)throws Exception {byte[] content = os.toByteArray();InputStream is = new ByteArrayInputStream(content);// 设置response参数,可以打开下载页原创 2020-08-07 16:22:44 · 613 阅读 · 0 评论 -
JAVA根据文件路径在浏览器下载文件
import io.swagger.annotations.ApiOperation;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestContr原创 2020-07-15 15:47:16 · 1768 阅读 · 1 评论 -
解决hibernate建表字段乱序问题
在本项目中创建一个和源码类一样的包结构和一样名字的类把源码中的所有代码复制到你建的类中 就可以对你创建的类进行修改了 修改好之后启动项目 程序走的就是你创建的类,数据库的所有字段都是和实体类排序一样的了,修改后代码如下://// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package org.hibernate.cfg;import java.原创 2020-07-07 14:47:47 · 774 阅读 · 0 评论 -
Java反射赋值
Entity entity= new Entity();String field = “我是要被赋值进去的”;Field name = entity.getClass().getDeclaredField(“fieldName”);name.setAccessible(true);name.set(excelData, field);原创 2020-07-06 10:23:03 · 369 阅读 · 0 评论 -
根据文件路径删除文件
/*** 根据文件路径删除文件* @param filePathAndName* String 文件路径及名称 如 D:\test\Template20200622103338135.xlsx* @return boolean*/public static void delFile(String filePathAndName) {try {java.io.File myDelFile = new java.io.File(filePathAndName);myDel原创 2020-07-06 10:18:24 · 1311 阅读 · 0 评论 -
Java解析CSV文件
1导入依赖net.sourceforge.javacsvjavacsv2.02 方法//传入文件地址public List<String[]> readCSV(String csvFilePath) {List<String[]> csvFileList = new ArrayList<>();try {// 创建CSV读对象 CsvReader(文件路径,分隔符,编码格式);CsvReader reader = new CsvReader(cs原创 2020-07-03 10:23:43 · 508 阅读 · 0 评论 -
Java验证邮箱(正则)
验证邮箱 :\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*原创 2020-07-01 10:36:59 · 875 阅读 · 0 评论 -
解决Mysqll查询不区分大小写
1.创建表时,直接设置表的collate属性为utf8_general_cs或者utf8_bin;2.如果已经创建表,则直接修改字段的Collation属性为utf8_general_cs或者utf8_bin。3.直接修改sql语句,在要查询的字段前面加上binary关键字。select count(0) from model where binary model_type = ‘order’...原创 2020-07-01 10:24:12 · 233 阅读 · 0 评论 -
截取路径中的文件名(不带后缀)
String fileName = path.substring(path.lastIndexOf("\")+1,path.indexOf("."));原创 2020-06-30 10:13:19 · 1842 阅读 · 0 评论 -
Springboot中mybatis分页插件pagehelper
1导入依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.0</version> </dependency> <dependency> <group原创 2020-06-28 19:50:04 · 282 阅读 · 0 评论 -
本地时间转UTC国际化时间
Date time = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss+08:00”);simpleDateFormat.format(time);原创 2020-06-28 19:39:29 · 340 阅读 · 0 评论 -
tomcat配置通过域名直接访问项目
改默认80端口隐藏项目名 直接贴配置文件配置文件地址:apache-tomcat-9.0.36\conf\server.xml<?xml version="1.0" encoding="UTF-8"?> <!--The connectors can use a shared executor, you can define one or more named thread pools原创 2020-06-24 09:55:16 · 600 阅读 · 0 评论 -
SpringBoot项目如何打War包部署到tomcat
更改pom.xml文件1.修改打包方式:war2.去除内嵌tomcat,添加servlet-api 的依赖org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-tomcat javax.servlet javax.servlet-api 3.1.0 provided3.修改启动类@SpringBootApplic原创 2020-06-23 18:55:46 · 336 阅读 · 0 评论 -
java判断数组中有无空值
1.导入java工具类cn.hutoolhutool-all4.6.22.调用方法//这是我现在的方法中的使用方式,根据自己的需求使用public int test(List<String[]> data) {for (int i = 0; i < data.size(); i++) {if (StrUtil.hasBlank(data.get(i))) {//进入这里面代表数组中有空值}}}...原创 2020-06-23 10:57:10 · 2319 阅读 · 0 评论 -
JSON返回对象属性值为NULL时不显示
之前写法public ResultDetail insertObj( JSONObject obj){String data=obj.toJSONString();}返回对象属性值为NULL的都无显示修改后public ResultDetail insertObj( JSONObject obj){String data=JSONObject.toJSONString(obj, SerializerFeature.WriteMapNullValue);}返回对象属性值为NULL的也有显示原创 2020-06-18 14:01:05 · 1812 阅读 · 0 评论 -
springboot使用Mybatis查询数据时,数据映射失败原因
正确写法@Select(“select * from fields_header”)@Results(id = “baseResultMap”, value = {@Result(property = “id”, column = “id”),@Result(property = “fileName”, column = “file_name”),@Result(property = “filePath”, column = “file_path”),@Result(property = “cr原创 2020-06-17 17:19:28 · 1431 阅读 · 0 评论 -
java的for循环异常时不中断循环继续遍历
在for循环内加try catch 抛出异常,可确保不中断循环for() {try {//代码块}catch(){//异常时解决方法}}原创 2020-06-15 15:41:06 · 4448 阅读 · 0 评论 -
Excel解析时时间变成数字的解决方法
//解决时间是数字的代码块case NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {Date theDate = cell.getDateCellValue();return simpleDateFormat.format(theDate);} else {return NumberToTextConverter.toText(cell.getNumericCellValue());}//完整方法代码块private String getC原创 2020-06-11 15:43:22 · 1255 阅读 · 0 评论 -
Spring容器中@Component的作用
@component (把普通pojo实例化到spring容器中,相当于配置文件中的 )泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们可以使用@Component来标注这个类。...原创 2018-12-14 13:38:34 · 536 阅读 · 3 评论 -
RestFul规范
RESTful风格用来包装HTTP协议,并用json或xml格式实现数据交互。URL命名原则1、 URL请求采用小写字母,数字,部分特殊符号(非制表符)组成。2、 URL请求中不采用大小写混合的驼峰命名方式,尽量采用全小写单词,如果需要连接多个单词,则采用连接符“_”连接单词。GET – 返回一个新的order POST- 创建一个新的order,从post请求携带的内容获取值...原创 2018-11-28 10:14:49 · 330 阅读 · 0 评论 -
SpringCloud 请求方式注意事项
1.必须去掉consumstype配置 consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,否则会报Type错误。我同时去掉了consums和produces,至于produces是否需要去掉有待测试。2.@RequestParam(value = “created”) String created) 需要在参数前面添加@RequestParam注...原创 2018-11-21 19:43:28 · 606 阅读 · 0 评论 -
springCloud跨域调用服务
SpringCould跨域调用服务端已经配好的情况下最主要需要注意客户端的调用流程,主要有两点:1,在客户端Controller添加@RequestMapping,@RequestMapping,@ResponseBody注解@RequestMapping(value = “”, method = RequestMethod.POST, consumes = MediaType.APPLICA...原创 2018-11-20 20:27:33 · 612 阅读 · 0 评论 -
springBoot定时器以及@Scheduled cron表达式
操作步骤1,创建一个定时任务类(根据业务加注解)2,在启动类内加注解(@EnableScheduling)3,定时器类添加到定时器管理器中4,通知定时管理器启动定时任务(这个方法必须在最后调用)...原创 2018-11-20 20:16:51 · 376 阅读 · 0 评论 -
SpringBoot中Excel文件数据导出至数据库关键代码
Controllertry {//判断文件是否有数据,如果没有返回参数为空if (multipartFile != null ){infoService.readInfo(multipartFile);result.setRespCode(10000000);result.setRespMessage(“新增成功”);}else{throw new MsgException(“参数...原创 2018-11-02 14:58:10 · 182 阅读 · 0 评论 -
Eureka的自我保护模式与心跳
默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳, Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险了-因为微服务本身其实是健康的,此时本不应该注销这个微服务。Eureka通过“自我保护模式”来解决这个问题-当Eureka Server节点在短时间内丢失...原创 2018-11-02 14:46:45 · 168 阅读 · 0 评论 -
@RequestMapping注解的六个属性以及作用
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。RequestMapping注解有六个属性,下面分成三类进行说明。value, methodvalue: 指定请求的实际地址,指定的地址可以是具体地址、可以RestFul动态获取、也可以使用正则设置;method: 指定请求的method类...原创 2018-11-02 14:35:30 · 35036 阅读 · 0 评论 -
SpringCloud中feign调用易忽略的问题
服务调用前,先查看、确认Eureka中的已注册应用,服务可能存在两个,一个是自己部署的最新版本,另一个是其他人部署的其他版本,若未配置url,则服务调用会轮询调用两个应用,这会导致有时调用最新功能失败。该情况可通过配置FeignClient注解-url属性解决。...原创 2018-12-11 13:41:15 · 1435 阅读 · 0 评论 -
java1.8新特性之流式处理
一. 流式处理简介在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个新的List返回,那么在java8之前,我们需要通过如下代码实现:List evens = new ArrayList<>();for (fi...原创 2018-12-17 19:53:33 · 637 阅读 · 0 评论 -
mybatis传入Integer类型的0,If判断条件失效
mybatis传入Integer类型的0,到sql中被认为是空字符串解决方法:去掉 if中的!=’ '的判断即可原创 2019-09-09 17:56:00 · 614 阅读 · 0 评论 -
@PathVariable和@RequestParam之间的区别
@PathVariable获取的是请求路径中参数的值@RequestParam获取的是请求参数,一般是url问号后面的参数值原创 2019-07-23 14:53:13 · 115 阅读 · 0 评论 -
Sql 语句中 IN 和 EXISTS 的区别及应用
https://blog.youkuaiyun.com/wqc19920906/article/details/79800374转载 2019-07-23 15:16:42 · 230 阅读 · 0 评论 -
@RequestMapping 和 @GetMapping @PostMapping 区别(简述)
@RequestMapping 和 @GetMapping @PostMapping 区别@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。...原创 2019-07-23 14:18:20 · 270 阅读 · 0 评论 -
微服务的超时、断路器、舱壁概念
超时:如果等待太长时间决定调用失败,整个系统会被拖慢,如果超时太短,会将一个可能还在正常工作的调用认为是失败的,如果没有超时,一个宕掉的的下游服务可能会让整个系统挂起。所以给所有的跨进程调用设置超时,设置一个默认超时时间,当超时事件发生,查看日志,根据实际情况进行相应的调整。断路器:断路器是跨服务调用的一种保护手段,使用断路器时,当下游资源请求发生一定数量的失败达到一定的阈值时,断路器会打开...原创 2019-07-01 12:32:40 · 431 阅读 · 0 评论 -
动态拼写sql方法模糊查询,需要concat拼接一下,concat(‘%‘,#{name},‘%‘)
{"<script>", "select name from tablename where 1=1 ", "<if test=\"name != null and name != ''\">", "and name like concat('%',#{name},'%') ", "</if>",...原创 2019-07-02 16:28:24 · 7851 阅读 · 1 评论