自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 MyBatis-Plus实现SQL执行前统一处理添加只读标识等注释

利用MyBatis-Plus官方提供的能力,在sql执行前拦截,然后拼接我们想添加的任何注释内容。

2024-04-01 09:08:46 535 2

转载 tomcat异常处理-IllegalArgumentException Invalid character found in the request target

tomcat8.0以上版本遵从RFC规范添加了对Url的特殊字符的限制,url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~四个特殊字符以及保留字符(!# [ ] ) (26*2+10+4+18=84)这84个字符,请求中出现了{}大括号或者[],所以tomcat报错。

2023-05-30 23:19:43 258

原创 JPA查询实体的部分属性值

JPA查询实体的部分属性值

2022-12-09 16:47:00 760 1

原创 List<User>和List<Map>转Map

List或List转为Map形式

2022-12-09 15:32:05 767

转载 重写HttpServletRequestWrapper ,解决getInputStream()只能获取一次数据流的问题

Java重写HttpServletRequestWrapper ,解决getInputStream()只能获取一次数据流的问题

2022-11-28 14:07:16 1296

原创 引用Geoip实现由IP地址获取国家城市等信息

利用开源组件Geoip实现由ip地址获取ip所属的国家城市等详细信息

2022-07-26 19:10:48 1153

原创 win10正确安装PostgreSQL数据库和PostGIS插件

win10快速安装PostgreSQl数据库以及安装PostGIS插件

2022-07-15 09:50:12 1317 1

原创 SQLException: Before start of result set

背景用惯了mybatis,今天用原生的jdbc获取链接,查询数据时,取数据报错。问题代码片段Connection conn = getConnection();PreparedStatement preparedStatement = conn.prepareStatement("SELECT max(version) as cur_version FROM test_version ");ResultSet resultSet = preparedStatement.executeQuery();

2022-02-14 17:27:05 554

原创 MySql利用SUBSTRING_INDEX函数实现按指定字段的任意部分排序

背景业务返回字段格式如下:book_1,book_10,book_11,book_2 等样式的,表格内容如下:如果我们按照普通的 order by 排序的话,会返回如下:SELECT * FROM test_sort ORDER BY name;但是我们需要按照 _ 后面的数字进行升序排序,-20,-1,1,2,3,10 的顺序解决利用 MySql 的 SUBSTRING_INDEX(str,delim,count) 函数进行截取字符串。函数参数解释:str: 待截取字符串(可以为列

2022-01-14 18:19:32 828

转载 利用谷歌浏览器截取长屏幕(全屏幕截图)

打开想要截图的网站按下键盘上 “F12”打开 开发者工具栏按下 “Ctrl+Shift+P” 快捷键,出现如图内容输入“Capture full size screenshot” ,敲击回车则把整个网页完全截成png图片下载。

2021-06-21 16:43:48 884

原创 Swagger3配置接收List类型参数

问题正常如下面这样写的话在 swagger2.x 版本中会自动识别 List 类型参数,然后页面可传入多个内容,但是使用 swagger3.0 版本后这样配置的话,swagger页面识别不出类型,导致只能传入单个值解决利用 @ApiImplicitParam 注解在方法上注释,并设置 dataType/dadaTypeClass 属性 dataType=“java.util.List” 或者 dataTypeClass=List.class 即可。@ApiImplicitParam(name =

2021-06-17 16:11:40 6727 1

转载 CentOS7中yum命令无法使用且resolv.conf重启后失效

背景新安装的CentOS7系统,之后进行 yum install -y vim 安装vim命令时发现,所有的链接都是404状态导致vim无法正常安装,错误如下:One of the configured repositories failed (Unknown),and yum doesn't have enough cached data to continue. At this point the onlysafe thing yum can do is fail. There are a fe

2021-05-06 10:01:11 876 2

转载 IDEA配置javap命令及字节码表查看

IDEA中设置javap命令在setting 中如下设置设置完成后后再需要执行 javap 命令的源码文件上右键即可看到如下,点击执行即可。如果提示找不到指定的类,说明源码还未进行编译,需要先进行编译再执行。在控制台即可看到对应字节码命令字节码指定表参考:https://segmentfault.com/a/1190000008722128字节码助记符指令含义0x00nopNone0x01aconst_null将null推送至栈顶0x02

2021-04-30 09:39:54 311

原创 postman能正常请求但java程序请求返回400

问题背景程序需要调用第三方的接口通过http方式,调用方式及为post请求方式传入json串的格式,通过程序调用后发现是http1.1格式的,然后返回400状态码。以为是参数json有问题,但同样的参数拷贝后拿到postman之行则可以成功。问题复线问题代码如下:public static void testHttp(String json){ HttpClient client= new DefaultHttpClient(); HttpPost request = new

2021-04-13 21:12:41 5339

原创 maven环境变量配置错误致gradle中mavenLocal()失效问题

背景新项目是以 gradle 构建的,但是以前都是 maven 项目,既然 gradle 可以引用 maven 的仓库,那就直接配置 mavenLocal() 复用就好,结果我们配置了,依然不走 maven 默认仓库。问题发现查询 gradle 官网中关于配置 mavenLocal() 的说明时才恍然大悟,官网上有一段如下的话:大概意思是说使用 mavenLocal() 配置 maven 的本地仓库后,如果仓库在 setting.xml中设置后则gradle默认会使用本地仓库。关于 gradle

2021-01-12 18:40:32 1962 2

原创 docker run -e传递环境变量问题记录

背景由于项目采用的是镜像以host网络模式部署,默认暴露端口是80,显然80端口很容易被占用,即便 默认暴露一个不容易被占用的端口也不是最终办法,限制了镜像拿到任意机器上部署,因此我们需要在容器启动的时候指定想要暴露的端口。解决解决思路很简单,就是通过 docker run 的时候将想要暴露的端口传递进容器,然后修改nginx默认监听端口。传递方式有一下两种。方式一:通过 docker run -e 的方式指定环境变量,容器内部再去处理这个环境变量(推荐)方式二:在 docker run 的最后

2021-01-12 14:30:15 7401

原创 The conda.compat module is deprecated and will be removed in a future releas错误记录

背景安装完 anaconda 后,每次执行命令都会出现如下警告信息:WARNING: The conda.compat module is deprecated and will be removed in a future release.解决执行 conda --version 后查看版本为 4.6.11。网上都说这个错误是这个 conda 版本的独有 bug,那我们就升级 conda 即可。执行命令自动升级 conda,在process处选择y,让其继续更新,更新完再查看conda --

2021-01-10 13:32:49 4758

原创 Chrome浏览器87端口限制问题

背景项目需要指定暴露端口,考虑到80容易被占用,就临时采用的87端口,但是服务启动后发现通过谷歌浏览器是打不开的,此时通过机器的命令行模式是可以请求的,而且通过Edge浏览器也是可以的,遂定位问题为谷歌浏览器问题。解决查找一圈后,发现不少人都被这个端口问题坑过,如果通过设置开放端口问题虽然可以解决自己访问问题,但是不能要求每个客户自己设置。所以我们还是妥协了,最简单的方式就是更换端口为了以后再出现类似端口问题,记录一下谷歌浏览器预留限制的端口列表如下附录:Google Chrome 默认非安全端口

2021-01-08 09:58:00 1477

原创 20210101奥森版玫瑰花

距离上次走奥森版中国地图已经有些时日了,干好碰上新年元旦,当即决定再走一个奥森版玫瑰花,希望在新的一年里健健康康,快快乐乐,最好再能碰上让我送出这多玫瑰花的人吧????。这次走轨迹比上次中国地图轨迹简单的许多,原因大概就是这次走的全程大路,长一点儿的路还可以用跑的,所以全程下来也就3个小时。唯一不足的就是我地图路线看错了,走了一半发现少走了一个花瓣,遂返回去补上那个花瓣,为此付出的代价就是这次走的总里程超过了13.14公里,达到了13.86公里。先放一张最终效果图吧,诺,还挺像的吧????。下面几张

2021-01-01 18:31:45 1143

原创 京郊经典路线之香八拉反穿游记

2020年11月21日,北京大面积迎来了入冬的第一场雪,今年的雪比往年来的更早一些。所以待雪停后的周日,就打算去看所谓的“西山晴雪”,临时跟随组织就来了个17公里的香八拉反穿,从八大处上山,一直走到了植物园去北京最大的水杉林看了看结束行程。首先八大处上山头一个就会经过虎头山,为什么叫虎头山呢?我实在是有些想不通,因为我看着它更像是“猩猩山”,也可能是由于我是背部观山吧。可能是由于刚下过雪,把空气中的杂粒子都包裹进雪中一并降落,北京随着这一场雪的到来结束了长达一周的雾霾天气,随着登山时间的推移,空气的中的

2020-11-24 14:06:18 456

原创 奥森版中国地图

作为一个小白搬砖人当然要保持身体的健康啦,所以利用周六日出门走走还是不错的,这不,上周六我就去奥林匹克森林公园(奥森)徒步了一波。俗话说:前人栽树,后人乘凉,所以我也跟随大佬的轨迹进行的初次轨迹作图挑战。先给大家看一下我的徒步作品:路程不算长,也就九公里,心想着我初次就算走的再慢,四五个小时也够了吧,然后周六我就无所顾忌的睡了个懒觉,九点钟才起床洗漱,收拾收拾出门到奥体也就将近十点了,然后就开启我悲催的行程了。一开始就觉得开启定位走就完了呗,但是事情并没有这么简单,走了几次之后我发现定位居然会漂移

2020-11-21 16:01:09 2343 2

原创 记LambdaUpdateWrapper的带乐观锁update失败问题

背景由于项目集成了Mybatis-Plus,所以更新语句就自然采用了LambdaUpdateWrapper来构造更新条件,使用 update(T entity, Wrapper<T> updateWrapper)执行更新语句。由于此处逻辑借用CAS思想,利用乐观锁版本号来滚动更新。但是代码部署后发现滚动了3次更新都失败了。问题复现问题代码逻辑如下:LambdaUpdateWrapper<People> updateWrapper = Wrappers.lambdaUpdate

2020-11-16 16:09:11 9672

原创 Lambda中forEach提前结束循环方案

背景在项目中发抽用lambda的forEach,对于普通的for循环我们可以通过break等关键字提前跳出for循环,但是在lambda中的forEach使用时发现并不能终止for循环。结论anyMatch来替代forEach以达到提前结束的效果解决问题复现在lambda的forEach中break关键字不可使用,而return的作用并不是终止for循环,而是continue的作用。例子:List<String> list2 = new ArrayList<String&g

2020-11-06 17:30:14 2634

原创 Mybatis-Plus中正确使用sum聚合函数

由于 LambdaQueryWrapper 并不支持使用sum等求和的聚合函数。所以只能退而求其次使用 QueryWrapper 来进行构建查询语句。简单的例子如下://求某人的成绩和。QueryWrapper<People> queryWrapper = new QueryWrapper<>();queryWrapper.select("IFNULL(sum(score),0) as totalScore") .eq("user_name", us

2020-11-03 15:52:26 41164 13

原创 OpenJDK利用jstack命令打印堆栈信息

背景程序需要对一个大文本进行处理,最后发现一直在处理中,cpu占用率一直为100%,大概能猜想出问题所在,只是借用 jstack 打印堆栈信息用以佐证。jstack佐证执行 top 找出占用cpu最高的java进程id //10执行 top -Hp pid 找出该进程内最耗费CPU的线程 //执行 top -Hp 10 得到167执行 printf “%x\n” pid 得到对应线程id对应的十六进制值 //a7执行 jstack [进程id]|grep -A 50 [线程的16进

2020-09-05 11:09:18 6557

原创 MyBatisPlus中使用or()和and()小坑

在项目中使用MyBatisPlus中的or()查询时由于误用,导致查询数据不对,仅作记录。写法一:LambdaQueryWrapper<Task> queryWrapper = new QueryWrapper<Task>().lambda(); queryWrapper .eq(Task::getUserId, "15") .eq(Task::getStatus, 2)

2020-08-25 16:31:36 4879 1

原创 Java转义字符常见坑之\u000a\u0022

众所周知,转义字符在java中有着特殊的地位,java对Unicode转移字符不会进行任何特殊的处理,只是简单的将其替换成相应的字符。 稍有不慎就会出现意想不到的效果,因此有建议在编写java程序时不要轻易使用这类转义字符。最常见的坑货当属下面几个:Unicode转义字符含义\u000a换行符 /n\u007d大括号右半部 }\u007b大括号左半部 {\u0022双引号半边 "\u002b加号 +事例一:public static void

2020-07-26 09:58:32 5664

原创 SpringBoot配合logback达到日志切割管理通用配置

SpringBoot项目中需要用到logback做日志切割,以下是项目中 logback-spring.xml 文件内容日常项目中引用了 lombok 都可正常使用,因为 lombok 中已经引用了相关的日志组件。<?xml version="1.0" encoding="UTF-8"?><!--scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫

2020-07-23 16:33:16 894

原创 Mac下 NVM 的安装与使用

背景由于想着学习前端只是,想着先安装个 node.js ,了解到不同的框架对 node.js 的版本要求不一致,所以先安装个 nvm 管理 node.js 的版本。类似于 Anaconda 对 python 版本的控制管理一样方便。安装nvm 的安装简单的超乎想象,可以点击链接直接查看 github 官方说明来安装 https://github.com/nvm-sh/nvm/blob/master/README.md执行下面命令进行安装curl -o- https://raw.githubus

2020-07-03 16:51:24 1204

转载 IDEA常用快捷键分类梳理【mac版】

Mac键盘符号和修饰键说明⌘ Command⇧ Shift⌥ Option⌃ Control↩︎ Return/Enter⌫ Delete⌦ 向后删除键(Fn+Delete)↑ ↓ ← → 上/下/左/右箭头⇞/⇟ Page Up(Fn+↑)/Page Down(Fn+↓)Home /End Fn + ← / Fn + →⇥/⇤ 右制表符(Tab键)/左制表符(Shift+Tab)⎋ Escape (Esc)Editing(编辑)⌃Space //基本的代码补全(补全任何

2020-06-19 18:06:39 265

转载 shell脚本执行错误 $\r:command not found

存现这种错误是因为 shell 脚本是在 win 下编写的,每行结尾是 \r\n 的 Linux 结果行是 \n 所以在 Linux 下运行脚本会任务 \r 是一个字符,所以运行错误。使用以下两种方式修改:方法一:sed -i 's/\r//' kill_pid_test.sh方法二:yum -y install dos2unixdos2unix 脚本名...

2020-06-04 16:45:12 166

原创 利用策略模式彻底消除if-else

背景项目一开始需要针对两个功能添加终止功能,因为只涉及两个功能,所以就偷懒直接用if-else模式处理了,心想着以后有机会在重构吧,没想到来的这么突然,又需要对几个功能点添加终止功能,就利用这个契机索性对代码进行重构了。解决由于项目原因,需求我们用(利用不同code值选择不同音频设备处理实际需求)代替。话不多说,我们直接勺代码。项目结构图各类代码TypeEnum枚举public enum TypeEnum { MP3(0,"我是mp3"), MP4(1,"我是mp4"

2020-05-28 23:05:13 905

原创 COUNT(列名)、COUNT(常量)和COUNT(*)之间的区别

背景面试中问及MySQL时逃不过的COUNT函数的用法,经常忘记,留作记录。结论COUNT(常量) 和 COUNT(*)表示的是直接查询符合条件的数据库表的行数。而COUNT(列名)表示的是查询符合条件的列的值不为NULL的行数。在InnoDB中COUNT(*)和COUNT(1)实现上没有区别,而且效率一样,但是COUNT(字段)需要进行字段的非NULL判断,所以效率会低一些。在MyISAM中会直接把表的总行数单独记录下来供COUNT(*)查询。因为COUNT(*)是SQL92定义的标准统计行

2020-05-14 15:26:37 688

原创 Springboot2.x后台国际化实现_i18n方式

背景项目做到尾声,临时需要添加国际化内容,开始只是前台展示的页面添加了国际化支持,后来发现一些后台提示很不友好,遂也选择进行国际化处理。实现Springboot对国际化支持的很好,我们就用自带的i18n实现国际化就行。application.properties配置文件指定messages位置spring.messages.basename=i18n.messagespring.messages.encoding=UTF-8通过查看源码我们可以知道,如果不进行配置,默认读取resourc

2020-05-12 10:16:48 1811 2

转载 docker宿主机agetty进程CPU占用100%

问题背景在宿主机执行top命令,可以看到agetty进程CPU占用率100%。引起这个问题的原因是在使用"docker run"运行容器时使用了 “/sbin/init"和”–privileged"参数,即使容器不存在了,这个进程一直会保留。问题解决在宿主机和容器执行下述命令,容器不存在了只在宿主机执行即可。systemctl stop getty@tty1.servicesystem...

2020-04-27 11:44:35 719

原创 conda install速度很慢解决

背景使用conda install 安装各种包的时候速度很慢解决修改conda镜像路径执行如下命令,更换仓库径路为清华镜像路径conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/在自己用户目录C:\Users<你的用户名>下生成一个文件,名字为:.cond...

2020-04-17 16:26:57 3694 3

原创 find命令简单实现tree命令的功能

tree命令可能在你的服务器上/虚拟上上没有,但是又想以树形结构查看,那么我们可以用find命令去代替tree命令,实现树形结构查看文件层级。命令:find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'...

2020-04-17 11:19:30 949

转载 一次性了解Java 垃圾回收

什么是垃圾回收垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。Java 语言出来之前,大家都在拼命的写 C 或者 C++ 的程序,而此时存在一个很大的矛盾,C++ 等语言创建对象要不断的去开辟空间,不用的时候又需要不断的去释放控件,既要写构造函数,又要写析...

2020-04-16 17:46:31 157

原创 可视化学习Git基础知识及commit规范

文章目录Git存储结构git addgit commitGit分区工作问题彩蛋Git存储结构git add首先我们创建两个文件交给git管理git initecho 'aaa'>a.txtecho 'bbb'>b.txtgit add *.txt执行完上述几条命令后,git会将整个数据库储存在.git/目录下,此时我们可以查看.git/objects目录,会发现多了...

2020-04-12 17:45:20 266

转载 python中安装了redis模块但是import失败

问题描述在python中有用到redis,由于是Anaconda管理的python,所以直接执行了conda install redis,此时发现redis模块成功下载了,但是在项目中import redis 依然报无法引用。解决python环境用Anaconda安装的,redis模块并不能直接安装redis使用的安装redis-py,我们直接再进行redis-py的安装即可,conda i...

2020-04-07 11:12:05 2217

空空如也

空空如也

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

TA关注的人

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