- 博客(36)
- 问答 (1)
- 收藏
- 关注
原创 在Java的Map中通过key进行模糊查询的方法
Map不管是HashMap还是LinkedHashMap等等都是通过Key拿到对应的value值,通常key都是字符串,匹配都是全匹配,有的时候可能需要进行模糊查询public class HashMap<K, V> extends HashMap<K, V> { /**自定义get()*/ public List<V> likeGet(String key) { List<V> list = null; li
2021-03-12 10:20:43
4443
原创 logstash配置日志kafka采集报Error connecting to node java.net.UnknownHostException
logstash可以将日志采集发送到kafka,写完logstash的配置文件,配置好input和output之后,却发现logstash下的logs文件夹中的logstash-plain.log文件一直在报Error connecting to node ls-bi-test-vm-172-84:6667 (id: 1019 rack: /default-rack)java.net.UnknownHostException: ls-bi-test-vm-172-84 at java.n
2021-03-12 09:56:07
1157
原创 Mysql查看实际使用字段的最大长度
之前遇到了mysql表的行长度超过限制的问题,需要把一些varchar类型的字段长度改小,需要看看数据库里实际数据的最大长度是多少查看实际使用字段的最大长度sql:select max(length(字段名)) from 表名;...
2021-03-02 09:58:00
1404
原创 Row size too large. The maximum row size for the used table type, not counting BLOBs , Mysql 行 长度超长
问题:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBsMysql的每行长度是有限制的,varchar类型的长度加起来不能超过65535解决:1.把一些长度很长的va
2021-03-02 09:45:57
9597
原创 springboot动态代理的实现---JDK和cglib,解决aop使用getSignature().getParameterNames()获取参数名为null问题
问题描述:springboot版本 1.5 ,使用aop中的环绕通知,代理service层的实现类,需要获取目标方法的参数名,正常使用pjp.getSignature().getParameterNames(),通过ProceedingJoinPoint这个对象获取目标方法的信息,但却发现获取的参数名数组一直是null原因:在springboot中生成代理对象有两种实现,一种是jdk原生的Proxy,这种方式需要目标类实现接口.另一种是使用cglib来生成代理对象,这种方式不需要实现接口,原理是使用
2021-03-01 14:52:48
1692
4
原创 Mysql按照指定顺序查询排序,结果按照传参顺序展示,使用order by field自定义排序规则
需求:sql使用in关键字的时候比如select name from table where id in (3,2,1),使用mybatis基本是把in中的id使用一个list进行传递,但是这时结果集的顺序并不是按照我们传入的顺序展示,这可能导致一些场景不是很方便.方法:使用order by field 指定根据哪个字段进行自定义排序写法如下:select name from table where id in (3,2,1) order by field(id, 3, 2, 1);括号中第一
2021-02-24 09:10:19
1345
原创 SpringBoot中SpringMVC的相关配置项及各配置项的解释
# SPRING MVC (WebMvcProperties)#异步请求超时时间(单位为毫秒)spring.mvc.async.request-timeout=#是否使用请求参数〔默认参数为format")来确定请求的媒体类型 spring.mvc.contentnegotiation.favor-parameter=false #是否使用URL中的路径扩展来确定请求的媒体类型spring.mvc.contetnegotiation.favor-path-extension=false#设置
2020-12-09 13:58:21
771
原创 在一个过滤器中打印一次完整的请求响应,解决RequestBody和ResponseBody只能获取一次的问题
1.需求描述首先说一下我的需求,在前后端分离的项目中,由于后台不需要渲染页面,只返回Json串,所以可以在一个过滤器中将一次完整的请求和响应都打印在一条log日志里面,并且使用json的格式,这样在之后查找日志时可以通过请求的Id很方便的在一条日志中看到完整的请求和响应2.问题这里主要涉及两个问题,就是如果想在过滤器中就获取完整的请求和响应,就必须获取RequestBoby和ResponseBody,但是由于这两个是流的形式,只能够获取一次,这就相当于如果在过滤器中读取这两个流,那么原来应该给后续业务
2020-12-09 11:58:45
948
1
原创 Java使用xerces和easyPoi大批量导入导出Excel
需求描述:首先说一下我遇到的需求场景,需要将一个条数大概60多万条的Excel表格其中的用户手机号码一列,根据特定的规则生成userId之后,在写入到一个新的Excel表格中,这个新的Excel表格除了要有新增的userId的信息之外,还需要包含之前旧的Excel表格的所有信息,要用代码实现大概是这么一个逻辑,要先将这旧的Excel表格通过工具解析,将表格数据读入内存,获取每条的手机号转化为userId之后,再将一条一条的数据转化为一个个的对象,将一条信息对应的完整的数据都封装进对象的属性,再使用工具写出
2020-11-17 10:08:25
878
原创 服务器报:HttpMediaTypeNotSupportedException: Content type ‘text/plain;charset=UTF-8‘
最近使用postman调试springboot项目出现HttpMediaTypeNotSupportedException: Content type ‘text/plain;charset=UTF-8’,查了一下资料发现是因为,postman的请求头设置的不对,原来的是这样:可以看到Content-Type是text/plain类型的,将Content-Type改为application/json就可以或者在body栏下的中的最右面的选项中选择JSON格式:...
2020-11-09 09:47:10
1173
原创 Java代码中执行shell脚本和命令
简介:最近在项目中需要在一个接口中,传入shell命令作为参数,然后通过java来执行这个命令.查了下资料发现可以使用Runtime.getRuntime().exec();这个方法来执行,下面是具体的代码.Controller代码: @GetMapping("/exeShell") @ResponseBody public Result exeShell(String param, String command) { /** * 这里是简单的接口参数的校验
2020-10-29 11:25:19
887
3
原创 Springboot整合Cas单点登录注销后,跳转指定的页面
cas单点登录在注销成功之后默认跳转的是cas自带的注销成功的页面,正常情况下在注销之后会跳转到特定页,如重新进入登录页.首先,需要在Cas单点登录的服务端server的properties配置文件中声明cas.logout.followServiceRedirects=true开启注销后的重定向之后,很重要的在客户端一侧的Cas单点登录的配置类中的casLogoutFilter的组件中,设置注销的跳转路径,之前找了很多资料,都是基于xml配置文件的方式配置的跳转路径,在使用springboot的
2020-10-16 17:13:13
1188
原创 Linux查看,终止,杀死一个进程
使用kill命令kill 22060 (22060是pid)在使用kill结束不掉时,可以使用 kill -9命令,但使用时要注意结束该进程对其余进程有没有影响,可以使用pstree -up用树状图的形式直观的获取进程间的父子关系在kill之前要获取进程的pid,需要获取进程的信息Linux查看进程信息的命令:ps命令PS命令语法:ps [选项]命令属性-f全格式-h不显示标题-l长格式-w宽输出-a显示终端上地所有进程,包括其他用户
2020-10-16 16:28:16
245
原创 Linux查看java进程命令
命令:ps -ef|grep java其中grep后的字符可更改,例如查询redis进程ps -ef|grep redis,查询zookeeper进程ps -ef|grep zookeeper等等参考地址:http://www.xuexila.com/diannao/xitong/linux/3590171.html
2020-10-16 15:48:10
651
原创 Linux将程序放在后台运行,关闭终端继续执行
最近使用shell脚本的形式运行任务,结果发现运行之后就一直在程序界面,ctrl+c退出后程序终止,关闭终端后程序也退出,需要将程序交给linux去管理和执行,查询了下资料:使用:nohup命令,具体如下后台执行build.sh脚本nohup ./build.sh & #(test.sh的打印信息会输出到当前目录下的nohup.out中)其他的命令也可以使用这个nohup执行参考文章:https://blog.csdn.net/ruiyelp/article/details/801
2020-10-16 15:05:09
554
原创 Linux关闭,退出,终止正在运行的程序
1.Ctrl + C 终止2.Ctrl + D 退出3.Ctrl + S 挂起4.Ctrl + Q 解挂5.Ctrl + Z 强制结束
2020-10-16 14:53:41
1294
原创 linux查找文件命令
1.按名字精确查找find / -name 文件名 #在根目录下查找文件,在整个硬盘查找find /etc -name 文件名 #在/etc目录下文件2.模糊查找find /etc -name '*srm*' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件参考地址:https://blog.csdn.net/xxmonstor/article/
2020-10-16 14:51:31
139
原创 计算当天0点和昨天0点的时间戳
当天// 先获取当前毫秒值long current = System.currentTimeMillis();// 再获取当日的0点毫秒值long zero = current-(current+TimeZone.getDefault().getRawOffset())%(1000*3600*24);昨天//有了今天的毫秒值,昨天的很好算,在原来的基础上减去一整天的毫秒值就行了// 先获取当前毫秒值long current = System.currentTimeMillis();//
2020-09-24 11:15:29
919
1
原创 Oracle分页查询写法
1.不需要排序时 分页,一页10条数据,查询第二页11~20条数据 select * from ( select rownum , e.* from emp where rownum <= 20 ) where rownum > 102.需要排序时根据员工的工资排序,分页,一页10条数据,查询第二页11~20条数据select * from ( select rownum rn , e.* from ( select * from emp order by sal
2020-09-06 10:41:29
481
原创 Mybatis无法转换为内部表示
这个问题大部分是,数据库字段的数据类型,和java实体类的字段的类型不匹配的原因,比如实体类里的字段Id是int类型,数据库中是varchar,而且varchar中有非数字的字符,无法转换成数字,就会出现这个问题...
2020-09-04 18:12:32
729
原创 Echarts图表X轴数据每隔指定数量显示
Echarts图表X轴数据每隔指定数量显示在使用Echarts图表时,有时候数据量很大,在X轴上的单位非常多,可能有上百条的数据,X轴放不下,Echarts会自动的在X轴隐藏部分数据,间隔一定的数据量显示X轴的单位,但有时自动设定的间隔数量不满足我们的需求,需要自定义间隔的数量,很简单,找到xAxis这个属性,在里面加上axisLabel:{ interval:间隔数量 }// 找到xAxis属性xAxis: { type: 'category', boundaryGap: fal
2020-09-04 18:06:32
15311
1
原创 JS将时间戳转换到自定义字符串的方法
JS将时间戳转换到自定义字符串的方法 // 日期转换函数 function timestampToTime(timestamp) { var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 var Y = date.getFullYear() + '-'; var M = (date.getMonth()+1 < 10 ? '0'+(
2020-09-04 17:50:30
203
原创 Random生成在指定范围的随机数
使用Random生成指定范围的随机数Random r = new Random();int max=500;//最大500 最大最小数可调int min=400;//最小400 最大最小数可调int ran= r.nextInt(max)%(max-min+1) + min;
2020-09-04 17:44:52
3289
2
原创 Oracle获取昨天一整天的数据(从昨天0点到24点)和昨天0点到今天当前系统时间的数据
1.获取昨天一整天的数据SELECT 字段名 FROM 表名 WHERE creat_time(时间字段) BETWEEN to_date(to_char(sysdate, 'yyyy-mm-dd') , 'yyyy/MM/dd HH24:mi:ss') - 1 AND to_date(to_char(sysdate, 'yyyy-mm-dd') , 'yyyy/MM/dd HH24:mi:ss') + (其他条件字段)说明to_char() Or
2020-09-04 17:23:29
7737
原创 SpringBoot集成easypoi快速入门(Excel导入导出工具)
easypoi是一款Excel快速导入导出的工具,最近有所使用,结合了网上的一些用法和官方文档的介绍,在在这里总结一下最简单的esaypoi导入Excel的实现,网上很多教程都已经封装了工具类,虽然方便,但第一次接触easypoi可能看的不是清晰,现在总结一下最为直观的SpringBoot集成easypoi快速入门.
2020-08-08 17:34:08
796
原创 插值查找算法的公式和实现
主要思路和解决的问题:1.插值查找类似二分查找,不同的是插值查找不在是简单的每次区中间的数进行比较,插值查找每次从自适应mid处开始查找,使用一个公式来进行下标的定位,通过这个公式可以较为精确的在一个顺序的数组中大概的定位到要查询元素的位置.2.插值查找主要解决的问题就是:比如一个[1,2,3,4,5,6,7,8]这样的顺序数组,我如果想找的元素是1,那么我通过二分查找需要比较查找3次,反而比传统的遍历,比较的次数还多,插值查找主要就是解决这种问题3.插值查找通过将一个公式,这个公式是结合要查找的值,
2020-08-06 22:38:45
974
原创 二分查找的递归和非递归的实现
主要思想1.使用二分查找需要在一个顺序的数组中进行,进行查找的数组是有序的2.主要思想是在查询时不是简单的从头遍历,而是从中间开始,比较要查找的值和数组中间的数值的大小,由于数组是有序的(假设是升序),如果要找的值比中间值小,那么下一次就直接从中间值的左边找,这样就缩小了查找的范围,下次再从左边的范围进行二分查找,继续比较缩小范围.代码实现一.递归public class BinarySearch { /** * 二分查找 * 思路: * 将一个有序
2020-08-06 22:03:46
131
原创 递归获取一个文件夹下的所有文件的路径包括子目录的文件
简介获取一个文件下的所有文件的路径名,包含子目录的文件,不包含本身文件夹的路径实现public class FilePath { /** * 把所有的文件的路径的名加入到list集合中 * 思路: * 首先获取当前路径的所有的文件的File的list集合 * 遍历集合 * 如果是文件就放入传入的list集合中 * 如果不是文件是文件夹 * 就递归调用自己,把该当前找到的文件夹在再传入方法,继续判断当前文件夹 *
2020-07-17 11:53:47
1011
3
原创 迷宫问题的分析和回溯法解决
问题描述来搜这个问题的肯定是对这个问题有一定的了解,在这里就简单讲一下什么是迷宫问题.就是可以用一个二维数组来描绘一个迷宫,其中数字1(或者其他数字都可以,这个无所谓)代表四周的边界和迷宫中的障碍物,这个二维数组类似下图:图中1表示的部分就是墙和障碍物,0都是可以通行的现在给定一个起点和终点,来寻找起点到终点之间的路径,例如从arr[1][1]到arr[7][7],就是从左上方到右下方.问题分析要走迷宫就要先制定一个计划或者说是规则,要告诉计算机我们先往哪个方向进行寻找,如果走不通再向哪个方
2020-07-11 20:54:32
1859
原创 约瑟夫问题的分析和单向链表解决
单向环形链表解决约瑟夫问题1.问题描述这种问题的描述有很多,比如:一堆猴子都有编号,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。设编号为1,2,……n得n个人围坐一圈,约定编号为k(k大于等于1并且小于等于n)的人从1开始报数,数到m的那个人出列。它的下一位继续从1开始报数,数到m的人出列,依次类推,直到所有人都出列为止。由此产生一个出队编号的序列。等等诸如此类的问题都叫
2020-07-06 20:35:43
334
1
原创 单向链表的原理和基本实现(Java实现)
单向链表的原理和基本实现(Java实现)基本原理链表是一种数据存储结构。在Java原生JDK中对于链表也进行了相应实现。单向链表是链表的其中一种,其主要原理是:链表是以节点(Node)的形式存储数据,节点对象中存储了要保存的数据。单向链表中的每一个节点中都持有下一个节点的引用(Node next),通过上一个节点就可以找到下一个节点,依次串联,所以想要遍历整个单向链表就需要找到第一个节点。链表不同于数组,在内存中不一定是连续的空间,由于是节点存储,可以利用内存中零散的空间进行保存,只需持有下一
2020-07-04 23:46:32
449
空空如也
是选择南京的事业编制,还是继续做程序员?
2021-05-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人