自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不会写博客

码农一枚,会写bug,爱吃清汤面。

  • 博客(154)
  • 资源 (2)
  • 收藏
  • 关注

原创 XML-BEANS compiled schema: Could not locate compiled schema

最近在打开报表项目的导出 Doc 和 Excel 功能,发现报错了看报错信息是无法定位已编译的模式资源,为什么找不到资源?只有缺少 jar 包或者 jar 版本不同的情况才会发生,那么先定位出 xmlbeans 是出自于哪个 jar 包接着检查一下 jar 包的版本,发现果真版本变了原来的版本 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-oox

2021-04-29 01:09:03 1961 3

原创 Relative Path Traversal

使用 StopBugs扫描了下代码发现提示“Relative path traversal”这个安全性的 bugok,打开右下方提示的地址:http://cwe.mitre.org/data/definitions/23.html看到这里大概就明白了代码这是通过传递相对路径的文件,达到可以查看遍历路径的文件内容,通过这种可以查看到一些配置文件的漏洞。Example 3 还是演示一个 Java Servlet的案例那么解决方案也很容易处理,直接过滤传参我这里其实是拼接文件路径的,也基本上确定是.

2021-04-28 23:17:41 1140 2

原创 Java Bean验证如何级联

需求:到当分组值为1时才要求必须填入分组字段,当然直接在controller层判断是最直接的,但这里为了代码简洁,使用分组来约束@Data@GroupSequenceProvider(FlagGroupSequenceProvider.class)public class Entity { @NotNull(message = "是否分组") private Integer groupFlag; @NotBlank(message = "分组字段不能为空", g

2021-04-24 19:19:21 353

原创 RestTemplate响应获取输入流InputStream

方式1:bytes[] res = rest.postForObject(url, paramObject, String.class);方式2:String res = rest.postForObject(url, paramObject, String.class);方式3:ResponseEntity<Resource> entity = rest.postForEntity(url, paramObject, Resource.class);InputStream i

2021-04-23 22:51:27 3573 1

原创 REST controller 如何提交表单

有时候请求的接口的 Body 参数是(multipart/form-data),那我们该怎么做呢?只需要在 requestMapiing 方法增加 consumes = FileUploadBase.MULTIPART_FORM_DATA 属性即可 @PostMapping(value = "/api/file/{path}", consumes = FileUploadBase.MULTIPART_FORM_DATA) AttachmentVo upload(@PathVariable

2021-04-23 00:23:45 429 2

原创 lombok annotation @RequiredArgsConstructor

lombok很多项目都在用,但是要做到熟悉不出错还是多翻下Lombok官网。最近在使用@RequiredArgsConstructor感觉有点费解查文档一目了然。With Lombokimport lombok.AccessLevel;import lombok.RequiredArgsConstructor;import lombok.AllArgsConstructor;import lombok.NonNull;@RequiredArgsConstructor(staticName =

2021-04-21 20:15:28 478

原创 使用 try-with-resources 语句替代 try-finally 语句

项目上看到很多地方还是使用try-finally 语句,不够优雅。我们都知道《Effective Java》书中第9条早已说明这点,但是却是没有做到(_)a栗子: // try-with-resources with a catch clause static String firstLineOfFile (String path, String defaultVal){ try (BufferedReader br = new BufferedReader

2021-04-21 11:22:15 512

原创 spring boot 与 ireport 整合

pom 文件依赖 <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.10.0</version> </dependency> <dependenc

2021-04-20 17:07:55 1548

原创 Mac Big Sur /data 根目录无法创建

项目里log日志输出路径为 /data/log, 发现无法创建目录 / >sudo mkdir /datamkdir: /data: Read-only file system ✘ > / 由于Mac默认有系统文件保护,所以无法在 / 下创建文件 Read-only file system 。官方建议使用 synthetic.conf。sudo vim /etc/synthetic.conf# 列之间使用 tab 进行分割,然后重启即可data /Users/xxx/data.

2021-04-20 14:09:04 1484

原创 spring @InitBinder注解使用

今天在xxl-job源码上看到这个,发现我从没用过,特意了解一下。如果controller有任何用@InitBinder注释的公共方法,那么这些方法将在处理每个请求之前由容器调用,并传递给WebDataBinder使用。这样做的最常见原因是,当您想要自定义Spring尝试将请求参数绑定到模型的方式时,例如,如果您的模型具有Spring无法开箱即用的自定义数据类型。您可以在WebDataBinder上注册PropertyEditor。一个简单的示例是,如果您在模型中使用JodaTime库,并且想要将时间

2021-04-20 00:25:56 353

原创 2020总结

年度总结工作内容:工作内容略过了,毕竟公司项目还是别写出来吧…工作中的困难与问题:线上发现的 Bug ,本地环境无法重现。考虑到当时情况比较紧急,处理方法是直接去现场处理。事后重新复盘一下:一个可以通过同步基础数据,如分类、用户等基础数据进行测试修复 Bug ;如果不行还可以采用另一个方法,就是借用第三方工具 Arthas 进一步进行线上问题的定位和诊断,使用它的好处是可以判断修改的代码有没有执行到、监控方法执行情况等等,像以前出来情况可能是,遇到一个 Bug 没有日志输出时,一般是重新添加日志

2021-01-03 19:37:15 193

原创 vim修改jar包

发现项目数据库配置不对,但是只有一个jar,没法重新编译,这里只是修改配置yml文件,采用直接方式修改:通过vim命令直接编辑jar vim xxx.jar该命令首先会列出全部文件,可以通过输入/abc来搜索,定位到对应的abc文件后回车进入配置文件内进行编辑,:wq保存。...

2020-09-01 17:31:26 4764

转载 史上最全的正则表达式-匹配中英文、字母和数字

转载于 https://blog.csdn.net/qq_28633249/article/details/77686976原地址 ???在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。1、匹配中文:[\u4e00-\u9fa5]2、英文字母:[a-zA-Z]3、数字:[0-9]4、匹配中文,英文字母和数字及下划线:1+$同时判断输入长度:[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}5、.

2020-09-01 17:19:28 1174

原创 mysql update 1093错误

1093错误为:修改一个表的时候子查询不能是同一个表解决办法:把子查询再套一层就可以了,例如:update my_table set field=null where id in( select id from (select id from my_table) temp ); 参考https://www.cnblogs.com/fazero/p/5998241.html...

2020-08-20 00:56:24 690

原创 Mysql必知必会

收集于《Java开发高频面试题全解析》,作者是「我是祖国的花朵」MySQL事务有哪些特性?事务是单个逻辑工作单元执行的一系列操作,是一个不可分割的工作单位。满足如下的四大特性:原子性(Atomicity):事务作为一个整体被执行 ,要么全部执行,要么全部不执行;一致性(Consistency):保证数据库状态从一个一致状态转变为另一个一致状态;隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行;持久性(Durability):一个事务一旦提交,对数据库的.

2020-08-17 00:16:41 174

原创 mac安装 redis desktop manage 、navicat premium 、idea、Afread

本文章仅供学习研究之用,请勿用于商业用途!商业用途请联系生产商购买正版,请支持正版!推荐地址如果不能下载安装包,可以试下本人搜索到的!redis desktop manage下载后,直接拖入应用安装设置中文navicat premium 安装安装包在这里找出来的 https://www.52pojie.cn/thread-867986-1-1.html密码是:xclient.info下载 汉化文件夹 放到 /Applications/Navicat Premium.app/.

2020-08-15 14:56:08 464

原创 idea debug 多线程实例

温习 idea debug 奇淫技巧在Intellij IDEA中使用Debug高效开发:IntelliJ IDEA天天用,这些Debug技巧你都知道吗?

2020-08-14 01:12:48 486

原创 常用日志框架Logback,Log4j2集成

在公众号看了一篇 Log4j,Logback,Log4j2性能比较的文章,知之甚少,遂复习下常用日志框架Log4j,Logback,Log4j2性能比较与日志门面SLF4J简介springboot整合logbackhttps://juejin.im/post/6844903641535479821springboot整合 log4j2https://www.cnblogs.com/keeya/p/10101547.html...

2020-08-12 23:04:27 225

原创 Java程序写入文件到 Mac /usr 目录下无权限问题

换新Mac,发现程序写入文件到 Mac /usr 目录下无权限问题,遂查找一番,得出两种方法:一、Mac /usr/local 文件夹权限问题修改文件夹权限sudo chown -R $(whoami) /usr/local/如果失败提示Operation not permitted 或其他权限不足,则需要关闭RootlessRootless 苹果从 OS X El Capitan 10.11 系统开始使用了 Rootless 机制,系统默认将会锁定 /system、/sbin、/usr 这三个目

2020-08-12 22:44:12 3856

原创 我的 Mac 常用快捷键

复制移动(剪贴)上面的鼠标操作你有没有觉得有那么一丁点繁琐?那么来吧。我们可以使用快捷键组合来达到相同的目的你只需选中目标文件,然后使用 Command+C 复制,然后用 Command +Option+V 将其移动到目标目录前往文件夹开发时经常进入如/usr/local/maven包时,可能使用终端查看有点不习惯,可以使用 Shift + Command + G...

2020-08-11 00:49:15 436

原创 mac配置Java,maven环境变量和处理环境变量失效

编辑 .bash_profile 文件输入一下内容:JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home"PATH=$JAVA_HOME/bin:$PATH:.export JAVA_HOMEexport PATHexport MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3export PATH=$PATH:$MAVEN_HOME/bin:wq

2020-08-11 00:17:49 2532 5

原创 Redis必知必会(二)

使用redis可能出现的问题?收集于《Java开发高频面试题全解析》,作者是「我是祖国的花朵」缓存雪崩:举例:缓存同一时间大面积的失效,这个时候又来的一波请求都到数据库上,导致数据库连接异常。解决办法:可以给缓存设置不同的缓存时间,更新数据使用互斥锁或者通过双缓存在避免缓存雪崩。缓存击穿:举例:redis中存储的是热点数据,当高并发请求访问redis中热点数据的时候,如果redis中的数据过期了,会造成缓存击穿的现象,请求都打到了数据库上。解决办法:使用互斥锁,只让一个请求去获取数据库数据

2020-08-09 17:15:07 69

原创 Redis必知必会(一)

redis有了解吗?redis(Remote Dictionary Server远程字典服务),是一款高性能的(key/value)分布式内存数据库,基于内存运行加粗样式并支持持久化的NoSQL数据库。因为数据都在内存中,所以运行速度快。redis支持丰富的数据类型并且支持事务,事务中的所有命令会被序列化、按顺序执行,在执行的过程中不会被其他客户端发送来的命令打断。redis都支持哪些数据类型?应用场景有哪些?redis支持五种数据类型作为其Value,redis的Key都是字符串类型的。stri

2020-08-09 01:28:35 184

原创 网络协议-入门(一)

OSI七层协议模型OSI七层模型包括应用层,表示层,会话层,传输层,网络层,数据链路层以及物理层。示意图如下所示:应用层: 由用户自己规定,规定各个应用之间消息传递的形式等,包括各机互访协议,分布式数据库协议等。常见的应用层协议有HTTP协议和FTP等。加粗样式 表示层:在满足用户需求的基础上,尽可能的节省传输费用而设置的,比如传输压缩文件,jpeg或者加密文件等格式。会话层: 用于建立和拆除会话。传输层: 负责将来自会话层的消息传递给网络层,常见的传输层协议有TCP和UDP等协议。网络层:

2020-08-08 01:19:40 208

原创 面试常考设计模式(一)

单例模式:单例模式是指在一个系统中,一个类有且只有一个对象实例。单例模式的实现:单例模式从创建方式上又分为饿汉式和懒汉式两种。饿汉式的单例模式实现如下:class Single{ private static final Single s = new Single(); private Single(){} public static Single getInstance(){ return s; } }饿汉式的单例模式在程序初始化的时

2020-08-07 00:48:17 806

原创 JVM常用内存调优命令

JVM在内存调优方面,提供了几个常用的命令,分别为jps,jinfo,jstack,jmap以及jstat命令。分别介绍如下:jps: 主要用来输出JVM中运行的进程状态信息,一般使用jps命令来查看进程的状态信息,包括JVM启动参数等。jinfo: 主要用来观察进程运行环境参数等信息。jstack: 主要用来查看某个Java进程内的线程堆栈信息。jstack pid可以看到当前进程中各个线程的状态信息,包括其持有的锁和等待的锁。jmap: 用来查看堆内存使用状况。jmap -heap pid

2020-08-06 01:07:22 599

原创 JVM内存机制

1. JVM中的内存是怎么划分的?(重点掌握)JVM中的内存主要划分为5个区域,即方法区,堆内存,程序计数器,虚拟机栈以及本地方法栈。下边是Java虚拟机运行时数据区示意图:方法区:方法区是一个线程之间共享的区域。常量,静态变量以及JIT编译后的代码都在方法区。主要用于存储已被虚拟机加载的类信息,也可以称为“永久代”,垃圾回收效果一般,通过-XX:MaxPermSize控制上限。堆内存: 堆内存是垃圾回收的主要场所,也是线程之间共享的区域,主要用来存储创建的对象实例,通过-Xmx 和-Xms 可以控

2020-08-04 23:45:20 465

原创 使用 webMagic 简单爬取维基百科国家对照表

描述记一次业务使用的国家代码不匹配问题。业务需求根据国家英文名称显示国家中文名称,原项目使用的不准确,不知道哪找来的。解决方案解决方案查找维基百科「国家代码对照表」,地址是 https://zh.wikipedia.org/wiki/%E5%9B%BD%E5%AE%B6%E4%BB%A3%E7%A0%81%E5%AF%B9%E7%85%A7%E8%A1%A8爬出当前表格代码对照表的内容出来...

2020-03-09 11:24:12 633 1

原创 如何快速写一个 Http Client

项目中快速完成一个 Http Client 可以参考以下Okhttp 使用https://square.github.io/okhttp/Hutool Http客户端-HttpRequest 使用https://www.hutool.cn/docs/#/http/Http%E8%AF%B7%E6%B1%82-HttpRequest...

2019-10-24 23:45:47 496

原创 Java 面试复习

一、Java 面向对象面向对象都有哪些特性以及你对这些特性的理解1)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。2) 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实...

2019-08-26 10:15:55 1100 2

原创 推荐几个Github项目,下半年好好学习

1、el-admineladmin基于 Spring Boot 2.1.0 、 Jpa、 Spring Security、redis、Vue的前后端分离的后台管理系统, 权限控制的方式为RBAC,项目支持数据字典与数据权限管理,支持一键生成前后端代码,支持前端菜单动态路由2、zheng基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:内容...

2019-08-09 23:47:27 1618

原创 秒杀常见问题解决思路

如何解决卖超问题在sql加上判断防止数据边为负数数据库加唯一索引防止用户重复购买锁机制优化-缓存redis永久缓存对象减少压力redis预减库存减少数据库访内存标记方法减少redis访问页面级缓存优化-订单处理队列请求先入队缓冲,异步下单,增强用户体验请求出队,生成订单,减少库存客户端定时轮询检查是否秒杀成功安全性设计秒杀接口隐藏数字公式验证码接口防刷限流...

2019-07-09 18:05:54 1917 3

原创 IDEA一些好用的插件

一些插件使用说明可以根据插件详情找到相应的git库地址进行查看,如下图AceJumpAceJump允许您快速地将插入符号导航到编辑器中可见的任何位置。AceJump使用快捷键“ctrl +;”,然后键入匹配的字符以进行Ace跳转。Background Image Plus设置编辑器背景图片,设置窗口:View -set Background Image。Alibab...

2019-07-03 12:30:19 1010

原创 MongoDB 复制(副本集)

复制原理安装配置前可以先通过菜鸟网了解一下https://www.runoob.com/mongodb/mongodb-replication.html安装部署选择三台服务器(虚拟机):192.168.100.216(主节点) 192.168.100.217(副本节点) 192.168.100.218(副本节点)虚拟机安装参考关闭防火墙下载mongodb: wget htt...

2019-07-01 18:16:08 419

原创 Docker MongoDB 开启权限认证下 无法创建用户

问题操作还原:启动容器docker run --name mymongodb -p 27017:27017 -v $PWD/configdb:/data/configdb -v $PWD/db:/data/db -d mongo:latest --auth进入容器操作docker exec -it <container_id> /bin/bashmongo...

2019-06-13 18:30:36 3641

原创 Java 操作 MongoDB runCommand接口

//连接到数据库 MongoDatabase saveDb = mongoClient.getDatabase("dbName"); MongoCollection<Document> saveDbCollection = saveDb.getCollection("test"); saveDbCollecti...

2019-06-13 00:29:38 5451

原创 Mongo DB 用户权限

用户权限生产库我们所做的所有的操作都必须用到用户角色权限。与使用Oracle、MySQL或者MSSQL时先需要用户名密码登录才可以操作不同,MongoDB中用户管理是针对一个一个库的,主要特点:1.MongoDB中的账号是在某一个库里边进行设置的,我们在哪一个库里边进行设置,就要在哪一个库里边进行验证。2.创建用户时,我们需要指定用户名、用户密码和用户角色,用户角色表示了该用户的权限。...

2019-06-06 17:58:02 237

原创 Spring Boot 操作 MongoCollection

查找集合中的所有文档 MongoCollection<Document> collection = mongoTemplate.getCollection(tableName); MongoDatabase saveDb = mongoTemplate.getMongoDbFactory().getDb("BACKUP_".concat(DateUtil.forma...

2019-06-06 17:34:33 909

原创 spring Boot 启动时候报错mongodb

报错信息控制台- 2019-06-06 17:03:23 [cluster-ClusterId{value='5cf8d6da9d85711dacf57154', description='null'}-localhost:27017] INFO o.m.d.cluster - Exception in monitor thread while connecting to server loc...

2019-06-06 17:20:59 3347

原创 死锁

死锁是指两个或者多个事务在同一资源上互相占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。当多个事务试图以不同的顺序锁定资源时,就可能会产生死锁。多个事务同时锁定同一资源时, 也会产生死锁。例如,设想下面两个事务同时处理 User 表://事务1START TRANSACTION;UPDATE User SET name = 'xiaofang' WHERE id = 4 and...

2018-12-13 23:21:25 292

提升SQL查询效率.docx

提升SQL查询效率

2020-08-09

Activiti-Demo

Activiti-Demo,这是一个入门的demo帮助加深对activiti工作流的认识。

2017-12-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除