- 博客(110)
- 资源 (2)
- 收藏
- 关注
原创 linux服务器,磁盘满了导致服务崩溃
长期而言,还是得找到服务配置把日志文件存到相对大的磁盘上。对于一些大的日志文件的清理,可用。某磁盘主要存放日志文件,用。查看使用率100%。
2024-10-30 14:01:29
241
1
原创 vue3使用select2,@change失效
基于vue3的网页中引入select2库用于下拉框的筛选,发现@change方法不起作用,而原生select可以。select2库影响了原生select的事件监听。
2024-10-30 10:52:17
487
原创 MQTT broker搭建并用SSL加密
系统为centos,基于emqx搭建broker,流程参考。安装好后,用ssl加密。进入,可以看到分别为。
2024-09-04 18:12:19
1019
原创 docker pull失败:x509: certificate has expired or is not yet
安装了docker,拉取镜像时却出现错误:x509: certificate has expired or is not yet valid.
2024-04-28 18:49:07
586
原创 SpringBoot启动失败:java.lang.ClassNotFoundException: javax.servlet.ServletOutputStream
项目在idea直接运行报这个错误,打包却没问题。深层的原因没有查究了,这样改有作用,记录一下。
2024-04-02 14:29:42
475
原创 java按顺序读取docx文件中的内容(包括图片)
方法得到所有图片,但失去了段落和图片之间的顺序。这样遍历就可以按顺序读取docx文件的内容了。可以对元素进行遍历,获取内容(段落和表格)发下此遍历不能读取到图片,只能通过。
2024-01-05 14:14:56
1180
1
原创 java程序卡死排查
把以上命令得到的结果输出到文件,再把线程id(即第2步得到的)转为16进制,这里30049即0x7561,在文件中搜索。不出意外是能看到线程信息的。在服务器部署了java程序,看日志像是中断了。这里就能看到此线程的运行状态,对cpu占用过高排查是有帮助的。这一步会看到占用cpu最高的线程id,类似于。PS:此次发现是这个线程进入死循环…
2023-09-20 17:13:32
870
原创 常见的Jedis方法
返回值为1表示设置成功,0表示字段已存在。返回值为1表示设置成功,0表示键不存在或没有设置过期时间。:检查指定键是否存在,返回值为true表示存在,false表示不存在。:设置键的过期时间,单位为秒。返回值为1表示设置成功,0表示键不存在。:设置键值对,如果键已经存在,则覆盖原有值。:删除哈希表中一个或多个字段,返回值为成功删除的字段数量。:批量获取哈希表中指定字段的值,返回值为List类型。:获取有序集合中指定区间的成员,返回值为Set类型。:删除键值对,返回值为删除成功的键的数量。
2023-05-15 18:57:47
1191
原创 jdbctemplate查出key-value的列表转map
使用Stream API将List转换为Map,在toMap()方法中,第一个参数是key的提取函数,第二个参数是value的提取函数。
2023-04-06 10:02:35
629
原创 dom未加载导致undefined报错
中有个图表,通过$refs控制。发现打开drawer之后可以通过$refs找到,但未打开drawer之前$refs则会报出猜想原因应该是抽屉打开之前,其上的组件没有被加载,故不能通过$refs找到。
2022-11-25 15:52:50
436
原创 mysql不锁表加索引
mysql的某些表由于前期设计不周,导致数据量变大后查询/更新速度变慢。对于mysql 5.6以上版本数据库,提供了无所加索引方式。执行此语句即可,很快就能添加好索引,且不影响线上服务。这种比直接加索引速度要快,但仍需要停止服务。想要加索引,线上又不能停。
2022-11-03 19:46:34
3779
原创 从.frm和.ibd文件恢复InnoDB引擎的数据
因为操作不当会导致mysql数据的丢失,但磁盘上数据还存在.这里记录InnoDB存储的数据恢复的步骤.主要参考这里找到数据存储位置在mysql配置文件my.cnf(怎么找my.cnf?可以updatedb后locate my.cnf)中找到datadir=/xxx/xxx就是数据数据存储路径在数据目录下会看到所有数据,每个数据库有其自己的文件夹InnoDB存储引擎的数据库,每张表会以.frm(存储表结构)和.ibd(存储表数据)的形式存储.恢复数据的思路是:根据frm文件读取表结构,建
2022-03-15 17:24:12
1923
原创 vue:多重嵌套的子组件调用父组件方法
vue中子组件调用父组件一般用emit方式,如下:父组件:methods:{ fathermethod(param){ console.log(param) }}子组件:this.$emit("fathermethod",param)对于多层嵌套的父子组件,用emit会无效.可使用provide/inject方式:父组件: data () { return { } }, methods: { XXXX(param){ } },
2022-01-06 19:44:45
1988
转载 jar包启动/停止脚本
#!/bin/bash#这里可替换为你自己的执行程序,其他代码无需更改APP_NAME=XXXX.jar#使用说明,用来提示输入参数usage() { echo "Usage: sh 脚本名.sh [start|stop|restart|status]" exit 1}#检查程序是否在运行is_exist(){ pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` #如果不存在返回1,存在返回0 i
2021-12-27 19:11:17
888
原创 nginx配置反向代理无效
nginx配置了反向代理,访问时却报404错误.查看nginx日志,发现如下错误:2021/12/27 17:17:11 [crit] 126352#126352: *2 connect() to 127.0.0.1:8090 failed (13: Permission denied) while connecting to upstream, client: 192.168.4.197, server: _, request: “POST /user/login HTTP/1.1”, upstre
2021-12-27 17:47:59
2953
转载 Java HashMap按照value值排序的方法
HashMap的value值没有排序功能,若要进行较轻松的排序,可改写Comparator接口方法compare进行排序,代码如下:Map<String, Integer> map = new HashMap<String, Integer>();map.put("d", 2);map.put("c", 1);map.put("b", 1);map.put("a", 3);List<Map.Entry<String, Integer>> infoI
2021-11-23 16:00:29
3858
原创 shell脚本:根据jar包名重启jar包
#!/bin/bash#时间#PID=$(jps -l|grep offline-analysis-1.0.jar|awk '{print $1}')#用jps不知道为什么不成功time=$(date "+%Y-%m-%d %H:%M:%S")echo "${time}"#找pid#grep xxxxx 找到该jar包名#grep -v xjar排除xjar中出现的jar包名#grep -v grep 排除grep进程中出现的jar包名# awk '{print $2}') 取出第2
2021-09-02 11:26:28
452
原创 An attempt was made to call a method that does not exist.
本地运行没问题的应用,打包后放到tomcat运行出现以下错误:大致意思就是com.google.common.collect.FluentIterable.toList()方法不存在,而FluentIterable这个类可在phoenix-client-4.14.1-HBASE-1.3.jar和guava-20.0.jar中找到。判断是依赖冲突问题。用mvn dependency:tree > tree.log命令查看依赖树。发现是springfox-swagger2用到了guava:20.
2021-08-23 18:15:40
644
原创 vue 项目部署后刷新出现404
为了去掉路径中的"#",把Vue项目的mode从"hash"改成"history","#"消失了,却有了新的问题:部署后刷新就转到404页面。在网上找到解决方法:配置nginx,参见这里。location / { root ... index ... try_files $uri $uri/ /index.html; ---解决页面刷新404问题} 于是去修改配置。服务器是Ubuntu 18.04版本,在/etc/nginx路径下找到配置文件nginx.conf,打开一看却没有serv
2021-04-27 10:23:06
753
原创 crontab 任务不执行或部分执行
问题:配置crontab定时执行脚本,发现并未执行。而手动去执行脚本,却可以执行。原因:crontab中的环境变量与用户登录shell时的不一样,对于shell中能识别的命令,crontab不能识别。解决:脚本中命令配置为全路径。...
2021-04-27 10:09:32
632
原创 springboot 日志没有记录异常
背景springboot项目,放到服务器上跑,定时任务运行过程中中断,查看日志却发现没有报错。在本地跑,发现控制台能打印报错信息,而日志也没有记录报错。经排查,发现是因为报错出现在线程池中,没有在日志中记录。原先使用线程池:ExecutorService executorService = Executors.newFixedThreadPool(15);解决新建类继承ThreadPoolExecutor,重写afterExecute方法。@Slf4jpublic class TaskE
2021-04-07 16:04:00
4029
1
原创 java 打印数组
常有这样的需求,要查看数组内容,打印出来却是一个如I@19469ea2这样的引用。笨方法就是遍历打印,但可以用Arrays.toString()方法直接转化成字符串打印。例: int[] array = new int[]{1, 2, 3}; System.out.println(Arrays.toString(array));结果:[1, 2, 3]对于多为数组,发现这样调用打印出的还是引用: int[][] array = new int[]
2021-03-02 11:00:27
280
原创 linux 查看java线程数
jps命令找到java线程pidps -T -p pid只查看线程数可用:ps -T -p 171989| wc -ljstack pid查看线程详细信息
2021-02-05 15:27:19
3104
原创 接受32960报文遇到TCP粘包\拆包问题及解决
接受32960协议的报文,服务端使用Netty。报文协议如下:可知每帧报文之间是以0x23,0x23(即##)分割的。对于TCP粘包/拆包问题,一开始使用DelimiterBasedFrameDecoder解码获取每帧报文,如下: pipeline.addLast( new DelimiterBasedFrameDecoder(64 * 1024, Unpooled.copiedBuffer("##".getBytes())) );实际测试过程中发
2021-01-28 14:18:02
1728
3
转载 Linux查看cpu、内存信息及文件个数统计
总核数 = 物理CPU个数 X 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores"| uniq查看逻辑CPU的个数cat /proc/cpuinfo| grep "processor"| wc -l.
2021-01-20 15:46:07
164
原创 java 上传文件到ftp服务器
使用apache的commons-net库。导入依赖 <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.7.2</version> </dependency>Ftp工具类
2020-12-09 16:35:15
275
1
原创 在Ubuntu18.04 安装和配置FTP服务
这里用Vsftpd,使用root权限(非root用户请自行sudo)。安装可直接通过命令安装。apt-get install vsftpd -y安装后,可以启动以及设置开机启动。systemctl start vsftpdsystemctl enable vsftpd创建ftp用户及路径创建vsftp用户adduser vsftp创建目录,修改权限mkdir /home/vsftp/ftpchown nobody:nogroup /home/vsftp/ftpchmod a-
2020-12-09 15:44:54
1034
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人