自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FlowingRiver

The Lord is my shepherd, I shall not be in want.

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

原创 MQTT broker搭建并用SSL加密

系统为centos,基于emqx搭建broker,流程参考。安装好后,用ssl加密。进入,可以看到分别为。

2024-09-04 18:12:19 640

原创 文件md5计算

【代码】文件md5计算。

2024-08-14 11:15:14 288

原创 nginx配置stream代理

nginx代理tcp服务

2024-07-02 11:13:35 655

原创 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 468

原创 SpringBoot启动失败:java.lang.ClassNotFoundException: javax.servlet.ServletOutputStream

项目在idea直接运行报这个错误,打包却没问题。深层的原因没有查究了,这样改有作用,记录一下。

2024-04-02 14:29:42 344

原创 jquery 文本框赋值踩坑

具体原因未知,遇到类似情况都试试看哪种可行吧。一个老项目,用到jQuery给文本框赋值。,发现这种方式不能赋值。

2024-03-27 16:59:35 262

原创 EventSource数据一次性出来,并未流式输出的原因

EventSource

2024-03-08 15:04:01 1513

原创 java按顺序读取docx文件中的内容(包括图片)

方法得到所有图片,但失去了段落和图片之间的顺序。这样遍历就可以按顺序读取docx文件的内容了。可以对元素进行遍历,获取内容(段落和表格)发下此遍历不能读取到图片,只能通过。

2024-01-05 14:14:56 806

原创 java程序卡死排查

把以上命令得到的结果输出到文件,再把线程id(即第2步得到的)转为16进制,这里30049即0x7561,在文件中搜索。不出意外是能看到线程信息的。在服务器部署了java程序,看日志像是中断了。这里就能看到此线程的运行状态,对cpu占用过高排查是有帮助的。这一步会看到占用cpu最高的线程id,类似于。PS:此次发现是这个线程进入死循环…

2023-09-20 17:13:32 654

原创 常见的Jedis方法

返回值为1表示设置成功,0表示字段已存在。返回值为1表示设置成功,0表示键不存在或没有设置过期时间。:检查指定键是否存在,返回值为true表示存在,false表示不存在。:设置键的过期时间,单位为秒。返回值为1表示设置成功,0表示键不存在。:设置键值对,如果键已经存在,则覆盖原有值。:删除哈希表中一个或多个字段,返回值为成功删除的字段数量。:批量获取哈希表中指定字段的值,返回值为List类型。:获取有序集合中指定区间的成员,返回值为Set类型。:删除键值对,返回值为删除成功的键的数量。

2023-05-15 18:57:47 1113 1

原创 jdbctemplate查出key-value的列表转map

使用Stream API将List转换为Map,在toMap()方法中,第一个参数是key的提取函数,第二个参数是value的提取函数。

2023-04-06 10:02:35 523

原创 nginx tcp负载均衡

nginx tcp负载均衡

2023-02-17 11:08:11 247

原创 dom未加载导致undefined报错

中有个图表,通过$refs控制。发现打开drawer之后可以通过$refs找到,但未打开drawer之前$refs则会报出猜想原因应该是抽屉打开之前,其上的组件没有被加载,故不能通过$refs找到。

2022-11-25 15:52:50 365

原创 zsh历史命令消失

重新ssh连接历史命令消失

2022-11-07 10:58:05 1374

原创 mysql不锁表加索引

mysql的某些表由于前期设计不周,导致数据量变大后查询/更新速度变慢。对于mysql 5.6以上版本数据库,提供了无所加索引方式。执行此语句即可,很快就能添加好索引,且不影响线上服务。这种比直接加索引速度要快,但仍需要停止服务。想要加索引,线上又不能停。

2022-11-03 19:46:34 3374

原创 Netty入门案例

netty demo

2022-09-22 16:06:55 116

原创 搭建gitlab服务

linux搭建gitlab

2022-08-26 17:11:16 433

原创 上传文件时参数变成[object object]

js文件上传

2022-08-15 15:49:01 6516 1

原创 从.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 1872

原创 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 1890

转载 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 854

原创 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 2848

原创 css position

relative :相对于同级元素的位置absolute:相对于父元素的位置fixed:相对于浏览器窗口的位置

2021-12-09 18:01:31 190

转载 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 3812

原创 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 428

原创 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 609

原创 SQL JOIN概括

SQL JOIN

2021-08-13 16:35:36 105

原创 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 710

原创 crontab 任务不执行或部分执行

问题:配置crontab定时执行脚本,发现并未执行。而手动去执行脚本,却可以执行。原因:crontab中的环境变量与用户登录shell时的不一样,对于shell中能识别的命令,crontab不能识别。解决:脚本中命令配置为全路径。...

2021-04-27 10:09:32 573

原创 springboot 日志没有记录异常

背景springboot项目,放到服务器上跑,定时任务运行过程中中断,查看日志却发现没有报错。在本地跑,发现控制台能打印报错信息,而日志也没有记录报错。经排查,发现是因为报错出现在线程池中,没有在日志中记录。原先使用线程池:ExecutorService executorService = Executors.newFixedThreadPool(15);解决新建类继承ThreadPoolExecutor,重写afterExecute方法。@Slf4jpublic class TaskE

2021-04-07 16:04:00 3942 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 237

原创 linux 查看java线程数

jps命令找到java线程pidps -T -p pid只查看线程数可用:ps -T -p 171989| wc -ljstack pid查看线程详细信息

2021-02-05 15:27:19 2811

原创 接受32960报文遇到TCP粘包\拆包问题及解决

接受32960协议的报文,服务端使用Netty。报文协议如下:可知每帧报文之间是以0x23,0x23(即##)分割的。对于TCP粘包/拆包问题,一开始使用DelimiterBasedFrameDecoder解码获取每帧报文,如下: pipeline.addLast( new DelimiterBasedFrameDecoder(64 * 1024, Unpooled.copiedBuffer("##".getBytes())) );实际测试过程中发

2021-01-28 14:18:02 1512 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 138

原创 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 231 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 967

原创 Ubuntu安装Tengine

记录下Ubuntu系统Tengine的安装步骤(使用root用户,其他用户请自行sudo)。获取源码wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz解压:tar -zxvf tengine-2.3.2.tar.gz进入解压后的文件夹,会如下:安装依赖./configure会告诉你是否满足编译条件,我遇到的是缺少以下库:gccPCRESSLzlib可用以下命令安装:apt-get updateapt-

2020-12-07 15:50:27 698

原创 removeIf方法

有这样的需求:从列表中筛选出符合条件的保留,不符合的删除。不能直接遍历删除,可以用迭代器删除,可见这里。但jdk1.8为我们提供了更简便的方式,就是Collection接口提供的default boolean removeIf(Predicate<? super E> filter)方法。举个????:有学生类:class Student{ String name; double score; // 分数 ...}有列表:List<Student> s

2020-12-01 11:03:24 1193

原创 zip命令

把xxx文件夹打包成xxx.zip,-r表递归zip -r xxx.zip xxx

2020-11-25 09:44:23 183

原创 非spring组件中使用autowired(避免空指针异常)

有类SpringComponent,属于spring组件:@Componentclass SpringComponent{ void xxMethod();}现有一个需要new的类NonSpringComponent,其中要用到SpringComponent的实例。如果直接@Autowired引入,会报空指针异常。class NonSpringComponent{ @Autowired SpringComponent springComponent; void yyMethod(

2020-11-20 16:07:21 1288

longwallpaper.zip

3840*1080双屏壁纸打包,约有60张。 可在个性化-桌面背景中选择平铺,背景会充满两个屏幕,效果很好。

2019-11-18

GBT 34658-2017 电动汽车非车载传导式充电机与电池管理系统之间的通信协议一致性测试.pdf

电动汽车非车载传导式充电机与电池管理系统之间的通信协议一致性测试

2018-03-16

空空如也

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

TA关注的人

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