- 博客(31)
- 资源 (1)
- 收藏
- 关注
原创 记录——线上项目运行一段时间后不能正常使用问题解决
记录一次线上项目运行一段时间后不能正常使用问题解决一.问题描述一个风和日丽的周末午后,突然有种不详的感觉,公司群消息,突然来了一句“系统登录不进去”。一阵冷汗,不能影响客户使用,立马开机远程办公电脑,通过工具进入到后台主机查看日志,发现不停的打印too many open files,有一种似曾相识的感觉,在此之前,处理过一次,有点驾轻就熟了,首先还是秉着不影响客户使用的原则,重启项目,日志下载下来后面再来研究。二.问题分析1. 首先咱们得清楚一点,报错的原因:linux系统中对进程可以调用的文件句
2022-04-08 16:05:22
1296
1
原创 pyinstaller打包exe,执行报错:No section: ‘MySQL‘
pyinstaller打包exe,执行报错:No section: ‘MySQL’1.背景介绍在将python项目通过pyinstaller打包exe,点击执行改exe后,报错No section: ‘MySQL’。而此部分是在配置文件中配置连接mysql的连接信息,分析原因肯定是没有获取到这个配置文件。2.处理在获取文件的地址时,之前采用:**os.path.dirname(os.path.abspath(file))**来获取路径不同pycharm和直接点击运行py文件,(pycharm和直接
2021-11-26 10:54:38
1158
1
原创 tomcat服务器配置https协议访问
tomcat服务器配置https协议访问1.背景在使用微信小程序开发的时候需要用https请求头,在阿里云申请了证书后,需要进行安装,下载的证书是pfx格式的,下载证书的步骤不在此详述。2.处理1)解压下载的证书文件;2)在linux中部署的tomcat目录下,新建cert文件夹3)将下载解压后的文件放到cert文件夹下4)修改tomcat的/conf文件夹下的server.xml配置文件,添加如下并保存:<Connector port="443" #port属性根据实际情况修改(
2021-11-16 17:45:15
722
2
原创 linux的mkdir命令详解
linux的mkdir命令详解1.背景介绍在linux系统中,时长会有新建文件夹的需要,那么我们就不得不使用mkdir命令,通过几个小例子,详细说明下该命令的用法。2.用例1)新建一个文件夹:mkdir folderOne2) 新建多个文件夹:mkdir folderTwo folderThree folderFour3)新建多级文件夹:mkdir -p folderFive/subFolder4)在多个文件夹下创建相同的子文件夹:mkdir {folderFour,fol
2021-11-11 16:20:10
11337
1
原创 docker容器设置自启动
docker容器设置自启动1.背景在跑docker容器的时候,会存在某种错误或者异常导致容器停止运行,如果没有设置自动启动,那么这个容器还需要手动去重启。2.解决1)已运行的容器,进行更新:docker update --restart=always 容器ID或名称2)创建容器的时候,在run后面的命令行中加参数:docker run -d --restart=always xxx...
2021-11-09 17:14:07
2054
1
原创 python生成个性二维码
python生成个性二维码一.背景介绍最近想把自己的博客,生成一个二维码,java实现起来相对python来说需要使用较多的代码,所以使用python来完成此操作,挺好玩的。二.类库安装MyQR是一个能够生成自定义二维码的第三份类库,需要安装,通过:pip3.10 install MyQR三.代码from MyQR import myqr#静态二维码myqr.run(words='https://blog.csdn.net/qq_40397586',save_name='dynami
2021-11-05 17:02:37
434
1
原创 linux磁盘空间占用很大,但是找不到大文件
linux磁盘空间占用很大,但是找不到大文件一.背景介绍在linux系统上部署了tomcat应用,运行一段时间后,发觉根分区空间的占用越来越大,tomcat的日志以及定时清理了,并且在系统中并未找到有占用这么多磁盘的文件。二.问题分析1.查看磁盘空间使用情况(它会统计碎片占用的磁盘空间):df -h2.查看磁盘空间使用情况:du -sh *3.查看linux系统中,大于500M的文件:find / -type f -size +500M通过以上步骤,可能是由于反复的删除文件导致的磁
2021-11-05 14:23:00
4843
1
原创 记录“ImportError: DLL load failed while importing qhull: 找不到指定的模块”的错误处理
ImportError: DLL load failed while importing qhull: 找不到指定的模块1.背景介绍在使用python3.10版本,安装了scipy、numpy数据包后,安装scikit_learn一直安装不成功,后面选择已经编译好的whl包直接安装,链接:http://www.lfd.uci.edu/~gohlke/pythonlibs/2.处理过程1)根据自己的python版本以及电脑32位还是64位选择不同版本的数据包,自己下载了scikit_learn-1.0
2021-11-02 16:51:49
6169
2
原创 java使用parallelStream并行流取两个list的交集【源码解析】
java使用parallelStream流取两个list的交集1.背景java开发在实际的项目中,会有取两个list中的交集的场景,可以通过传统的for循环进行处理,数据量1万以内,for循环的性能要高于foreach和stream的,如果数据量在十万、百万以上时,那么三者的差别不是很大,但是Stream提供了并行流parallelStream方法,可以充分利用CPU核数,大大的提升效率。2.示例 public static void main(String[] args) {
2021-11-01 17:39:24
1457
1
原创 java中运算符<<、>>和>>>的区别
java中运算符<<、>>和>>>的区别>>:带符号右移表示右移多少位,如果该数为正,则高位补0,若为负数,则高位补1例:10 >> 2,结果是2;-10 >> 2,结果是-3;-3 >> 2,结果是-1。(10的二进制是1010,右移两位是10,十进制表示2)<<:左移与右移运算法>>对应的左移运算符,表示将向左移动多少位,在低位补0例:10 << 2,结果是40;-
2021-10-29 15:34:37
902
1
原创 Java线程池执行流程(源码解读)
Java线程池执行流程(源码解读)一.背景介绍java中,如果每个请求都创建一个新线程,开销是相当大的,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。况且除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或切换过度而导致系统资源不足。为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源耗费
2021-10-29 11:20:04
2868
原创 springmvc/springboot如何转换请求和响应数据
springmvc/springboot如何转换请求和响应数据1.问题描述使用springmvc、springboot日常进行restful风格开发时,往往通过 json 数据进行交互,那么前端传入的 json 数据如何被解析成 Java 对象作为 API入参,API 返回结果又如何将 Java 对象解析成 json 格式数据返回给前端?2.分析在开发中这两个注解应该是经常使用:@RequestBody、@ResponseBody,而在整个数据流转的过程中org.springframework.ht
2021-10-27 17:04:11
1902
转载 软件架构师应该知道的97件事
软件架构师应该知道的97件事1.客户需求重于个人简历 ( Nitin Borwankar )客户需求至上。为了自己的简历更炫而采用新技术是沽名钓誉,往往事与愿违。2.简化根本复杂性 ,消除偶发复杂性 ( Neal Ford )分析问题好比拨云见月、水落石出。3.关键问题可能不是出在技术上 ( Mark Ramm )团队同心,其利断金。4. 以沟通为中心,坚持简明清晰的表达方式和开明的领导风格 ( Mark Richards )沟通应当言简意赅、详略得当,别拖泥 带水。5.架构决定性能 (
2021-10-26 16:13:19
541
原创 二叉搜索树中的搜索
二叉搜索树中的搜索1.问题描述现在给定一个二叉搜索树(BST)的根节点和一个值,你需要在BST中找到节点值等于给定值的节点,返回以该节点为根的子树, 如果节点不存在返回 NULL。例如:给定二叉搜索树: 4 / \ 2 7 / \1 3和值为 3,那么应该返回如下子树:2/ \1 3如果要找的值是 6,但因为没有节点值为 6,我们应该返回 NULL。2.问题分析二叉搜索树的特点:1).若任意结点的左子树不空,则左子树上所有结点的值均不大于它的根结点的
2021-10-22 15:43:27
797
原创 HashMap在JDK1.7和JDK1.8的区别(源码解读)
HashMap在JDK1.7和JDK1.8的区别1.区别存储结构不同:JDK1.7是数组+链表,JDK1.8则是数组+链表+红黑树结构;初始化方式不同:JDK1.7中当哈希表为空时,会先调用inflateTable()初始化一个数组;而JDK1.8则是直接调用resize()扩容;插入数据方式不同:插入键值对的put方法的区别,JDK1.8中会将节点插入到链表尾部,而JDK1.7中是采用头插,因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题。但是在JDK1
2021-10-21 16:06:12
2090
1
原创 docker部署xxl-job镜像,启动成功却无法访问
docker部署xxl-job镜像,启动成功却无法访问1.问题描述在使用docker成功部署xxl-job任务调度中心后,一段时间,别人调整了主机的ip,后面发现重启镜像后,成功部署,但是却无法访问页面。2.问题分析通过重启镜像:docker restart containerId查询日志:docker logs -f -t --tail 100 containerId是正常启动,那么应该是linux主机的网络问题导致。再执行命令:net.ipv4.ip_forward得到net
2021-10-15 15:14:24
4789
原创 docker load镜像报错:open /var/lib/docker/tmp/docker-import-525555606/repositories: no such file or direc
docker load镜像报错:open /var/lib/docker/tmp/docker-import-525555606/repositories: no such file or directory1.问题描述在使用xxl-job时,任务调度中心docker部署(PS:别人部署的),后面需要再部署在另一个测试主机上,正好在部署目录中,找到xxl-job.tar的镜像包,上传到另一台服务器后,执行:docker load<xxl-job.tar报错open /var/lib/docker/
2021-10-14 14:09:19
13126
原创 linux文件上传及下载
linux文件上传及下载1.背景在使用linux进行代码部署,经常需要上传和下载,很多是直接通过FTP工具进行操作,其实linux可以通过rz和sz进行上传和下载操作。2.安装如果linux未安装此命令,那么需要先安装:yum install lrzsz3.操作1)上传,执行命令:rz1)下载,执行命令:sz 文件名注:下载成功之后,会下载到默认工具的地址下。(例:crt下载的文件是存放到options–>session options->x/y/zmodem中配置
2021-10-14 11:04:01
756
原创 linux下配置中文语言包后中文还是显示乱码的问题处理
linux下配置中文语言包后中文还是显示乱码的问题处理1.问题描述客户现场分了台测试服务器,需要部署测试程序(PS:此主机需要先通过向日葵远程连接客户现场的电脑,再通过此电脑上的CRT工具进行连接,这个是背景),连接到主机后,执行命令发现乱码。2.问题分析1)查看当前系统语言:echo $LANG2)查看安装的语言包:locale3)发现是正常使用的中文语言包,后来尝试执行:vi /etc/sysconfig/i18n编辑:LANG = “zh_CN.GB18030”4)保存后
2021-10-12 15:07:19
1096
原创 JAVA解决实体类中的List属性为空不返回问题
解决实体类中的List属性为空不返回问题1.问题描述在使用若依框架时,在处理路由的实体类时,在RouteVo中新增List属性,但是当结果为null不返回该属性给前台(前台需要此属性进行操作)。2.问题分析已经对该属性进行了初始化,为null时还是不返回该属性,那么应该是若依做了什么过滤操作导致,查看该实体类,发现了如下注解:@JsonInclude(JsonInclude.Include.NON_EMPTY)3.问题解决考虑到去掉注解后,可能存在其他问题需要修改,将注解调整为:@Json
2021-10-09 14:44:50
4721
原创 JAVA使用JEP进行动态公式计算
JAVA使用JEP进行公式计算1.场景描述在工作中有遇到需要在页面编辑公式,需要后台进行计算,公式中涉及到项目中的基础数据测点,计算时需要动态的替换到测点数据,对公式进行计算得出结果。2.分析处理2.1结合场景,使用JEP进行计算,引入依赖 <dependency> <groupId>jep</groupId> <artifactId>jep</artifac
2021-10-08 18:22:01
2721
1
原创 Linux下的JAVA程序CPU100%处理过程
JAVA程序CPU100%的处理过程1.问题描述最近在使用xxl-job做定时计算处理,写了10个定时任务,基本都是1分钟执行一次,之前开发中数据量较少,执行过程中没有问题。随着项目的被迫落地(一些客观原因导致的,开发的程序还并未做好完整的测试),现场的基础数据开始录入,给定时任务做性能测试,将现场的数据导入到测试环境。xxl-job定时程序大概经过一天的时间运行,过程中会出现2个问题:1.部署的xxl-job定时任务项目主机cpu100%,2.用户使用的项目中查询数据经常timeout2.问题分析
2021-09-28 17:59:33
1832
原创 java验证四则运算公式的合法性(包含括号、字母、小数)
java验证四则运算公式的合法性(包含括号、字母、小数)1.场景描述在实际的业务中,一个测点需要根据其他多个已知测点计算得出,在页面中输入计算公式,需要调用后台接口验证计算公式的合法性。比如验证a2,m2.0,(d0022)+2,(d2)+,(e+3)/3,(ef001+3,1/1等合法性。2.工具类示例/** * 验证表达式工具类 */public class ExpressionUtils { /** * 验证四则运算表达式是否准确 * @param expression
2021-09-28 14:25:22
4483
7
原创 Error creating bean with name ‘redisTemplate‘ defined in class path resource [xx/RedisConfig.class]
Error creating bean with name ‘redisTemplate’ defined in class path resource [xx/RedisConfig.class]1.问题描述在项目中使用redis,报错如下:2.问题分析从报错Factory method ‘redisConnectionFactory’ threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/
2021-09-22 16:41:24
9037
1
原创 记录一次redis数据迁移
记录一次redis数据迁移1.描述因生产环境主机的redis中的数据,程序无法写入到测试的redis,所以需要将生产上的redis数据迁移到测试的redis中2.处理过程1)登录到redis客户端,因为我们是使用的docker部署的,所以执行的命令:①docker exec -it 容器ID redis-cli②如果直接部署在linux中,那么找到安装的bin目录执行./redis-cli2)找到redis的文件存放目录,通过命令:config get dir如果报错的话,需要输入密码,
2021-09-16 18:45:50
1189
原创 java.io.IOException: Too many open files问题处理
java.io.IOException: Too many open files问题处理1.问题描述程序在运行一段时间后,后台日志会出现如下错误:2.问题分析linux系统中对进程可以调用的文件句柄数进行了限制,超过限制进程将无法获取新的句柄,不能打开新的文件或者网络套接字,就会报错。通过命令:lsof -p 进程id|wc -l :查询当前进程打开文件的数量发现这个数量是在不断增加的,通过lsof -p 进程id:查询当前进程打开的具体文件TYPE类型为FIFO的文件在不断增
2021-09-14 09:49:29
2400
原创 xxl-job问题:xxl-rpc remoting error(No route to host (Host unreachable)), for url
xxl-rpc remoting error(No route to host (Host unreachable)), for url:http://xxxx:9999/run问题1.问题描述成功部署xxl-job的任务调度中心、任务执行工程后,并且无报错,启动定时后,在调度中心的调度日志报错:2.问题分析程序启动均无报错,网络问题,9999端口号未开放3.问题解决1)在目标服务器上使用命令:iptables-save。回车后确认查看命令行的最后是否有相关9999端口号。2)添加端口号:f
2021-09-08 14:32:13
16056
原创 linux部署安装redis
linux部署安装redis1.安装包下载官网地址:https://redis.io/download2.安装1)通过finalshell等可传输文件工具,将安装包放到指定目录2)执行解压命令:tar -zxf redis-6.2.5.tar.gz3)到解压后的目录中:cd redis-6.2.54)执行编译操作,执行命令:make注:如果最后报错那么是服务器没有gcc和cc命令没有,那么执行语句:yum -y install gcc gcc-c++ libstdc+±devel
2021-09-02 16:44:53
567
原创 Linux部署的tomcat应用启动、停止及查看日志的快捷命令设置
Linux部署的tomcat应用启动、停止及查看日志的快捷命令设置在linux执行tomcat应用的启动、停止以及查询应用的后台日志时,是否有遇到需要频繁的进行cd目录文件操作,那么不妨可以参考如下操作,设置快捷命令,仅供参考,希望对你有所帮助。1.找到profile文件一般此文件都在 /etc/目录下,找到文件,执行vi编辑操作,然后按住i按钮进行insert操作,添加命令1)cd /etc2.编辑profile文件1)执行命令:vi profile2)按住键盘的"i"键,执行insert操
2021-08-26 18:15:31
1738
原创 解决linux部署的tomcat的shutdown.sh关闭不了进程问题
处理linux部署的tomcat的shutdown.sh关闭不了进程问题问题1.执行前查看进程: ps -ef|grep tomcat2.执行关闭tomcat: sh shutdown.sh3.再次查看进程:ps -ef|grep tomcat ,发现进程还在,并未关闭解决1.可以通过ps -ef|grep tomcat命令查出进程号pid ,再使用kill -9 pid进行强制关闭;2.方式1中每次都需要执行两次操作,所以可编辑个stop.sh脚本内容如下:#!/bin/shps -e
2021-08-26 17:50:24
3552
原创 java实现InfluxDB的插入和查询
java实现InfluxDB的插入和查询1.InfluxDB2.0涉及的部分名词1)bucket:数据库2)measurement:数据库中的表3)points:表里面的一行数据point由时间戳【time:每个数据记录时间,是数据库中的主索引(会自动生成)】、数据【field:(各种记录值(没有索引的属性)也就是记录的值)】、标签【tags:(各种有索引的属性】组成2.InfluxDB2.0部分语法说明1)from 指定数据源bucket2).|> 管道连接符3)range 指
2021-08-26 17:03:16
7125
9
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人