- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 本地化部署dify,使用Database插件实现dify直连数据库报错No module named ‘MySQLdb‘解决方案
网上查阅各种资料,有说修改/dify-main/docker/volumes/sandbox/dependencies目录下的python-requirements.txt文件,添加了如下两行,试验后无效。,看到有人是其他报错,但是URI配置如下(在mysql后面加了pymysql),尝试后果真成功了。按照系统提示设置完数据库URI后保存出现错误。在工具市场查询Database,点击后进行授权。最后在该插件的项目地址获得灵感。
2025-03-22 09:32:22
518
1
原创 springsecurity的登录过程
可以看到,当前类中有这么三个Configurer,其中InitializeUserDetailsBeanManagerConfigurer中会生成DaoAuthenticationProvider,要注意的是,这里并不是在这个类中直接生成的,而是如下,先注入了一个InitializeUserDetailsManagerConfigurer,在InitializeUserDetailsManagerConfigurer中创建的。在此之前,先来了解一下三个类。
2024-02-21 09:45:49
844
原创 Docker容器内使用Arthas对java程序进行监听
地址:https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.29-r0/glibc-2.29-r0.apk。需要添加一个参数,添加后命令如下apk add glibc-2.29-r0.apk --no-network --allow-untrusted。10.安装glibc-2.29-r0.apk,使用 apk add glibc-2.29-r0.apk --no-network提示如下错误,后续的arthas过程此文就不表述了。
2024-02-02 08:21:29
614
1
原创 记一次springboot项目yml文件port设置失效
某次运行一个日常维护的springboot项目,项目采用前后端分离,后端项目启动后,启动前端项目后显示前端访问路径为:localhost:8080,登录页验证码显示请求后台接口失败。但之前一直是后端项目启用的8080端口,现在显示前端项目也占用8080端口,这就很奇怪了,抓紧检查下项目的application.yml文件,结果显示确实配置的8080端口。首先肯定一个端口不可能被两个进程同时占用,接下来就需要找出实际后端项目占用的端口。由此我们可以知道,系统的环境变量的优先级是要高于项目的配置文件的。
2024-02-01 12:51:00
666
1
原创 Docker安装elasticsearch教程(亲测有效)
usr/share/elasticsearch/data目录没有写权限,而这个目录我们进行了外部的挂载。因此可以推断出是容器外目录/home/elasticsearch/data没有写权限。因此解决这个问题需要给/home/elasticsearch整个目录添加组外写权限。因为我安装的是8版本的es,只执行第一个,不执行下面这个语句,启动时会报如下的错误。运行后运行docker ps 发现没有运行中的es容器,说明启动失败。查询容器启动日志,发现如下报错,仔细查看后得知是容器内目录。
2024-01-24 12:47:48
562
1
原创 Docker安装nacos教程(亲测有效,避免填坑)
6.在自己的mysql数据库下新建名称为nacos的数据库,执行第5步conf目录下的mysql-schema.sql脚本(此处如果你的mysql环境是老的可以直接操作,如果是新建的环境需要确认是否已经开放用户的远程访问权限,没有的话会容器启动会报错)立马进行验证,首先先删除之前创建的容器,再使用第2步的命令创建新的容器,接着使用如下命令进入容器,containerId需要替换成你自己的容器id。就在快要放弃的时候,我想到ip是通的,那端口呢,如果端口也是通的才能说明容器内是能访问mysql的。
2024-01-24 09:13:34
3329
1
原创 使用python解码navicat导出的数据库连接信息
再执行脚本就能解码出密码了。但是解码后存在一部分乱码,实际密码是乱码前的那部分信息,试了几个发现是偶现情况,这个目前还没搞清楚原因,有知道的可以在评论区告诉我。将navicat导出的connections.ncx文件打开,找到密码,粘贴到上述脚本中。pycham安装crypto后还是报错,默认安装后文件夹名称是小写,需要将首字母改为大写。需要再安装pycryptodome,安装后查看文件夹Cipher已经存在了。此时进入该文件夹发现仍不存在Cipher,执行脚本还是报错。
2024-01-18 10:56:13
813
3
原创 线上内存溢出
top命令第5行“PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ”显示内容依次为“进程ID”、“进程所有者”、“优先级”、“nice值,负值表示高优先级,正值表示低优先级”、“进程使用的虚拟内存总量”、“进程使用的、未被换出的物理内存大小”、“共享内存大小”、“进程状态”、“上次更新到现在的CPU时间占用百分比”、“进程使用的物理内存百分比”、“进程使用CPU总时间”、“命令名、命令行”。top命令的第一行“
2024-01-02 09:24:24
830
原创 spring事务管理
MANDATORY:必须在有transaction状态下执行,如果当前没有transaction,则抛出异常IllegalTransactionStateException;SUPPORTS:如当前有transaction,则在transaction状态下执行;如果当前没有transaction,在无transaction状态下执行;如果当前已有transaction,则将当前transaction挂起;如果当前已有transaction,则将当前transaction挂起;
2024-01-02 09:16:17
358
原创 多线程学习
2)位于对象锁池中的阻塞状态(Blocked in object’s lock pool):当线程处于运行状态时,试图获得某个对象的同步锁时,如果该对象的同步锁已经被其他线程占用,Java虚拟机就会把这个线程放到这个对象的锁 池中,这涉及到“线程同步”的内容。1)位于对象等待池中的阻塞状态(Blocked in object’s wait pool):当线程处于运行状态时,如果执行了某个对象的wait()方法,Java虚拟机就会把线程放到这个对象的等待池中,这涉及到“线程通信”的内容。
2024-01-02 09:10:25
404
原创 mysql锁表
MySQL在进行一些alter table等DDL操作时,如果该表上有未提交的事务则会出现 Waiting for table。metadata lock ,而一旦出现metadata lock,该表上的后续操作都会被阻塞。使用kill id 杀死。
2024-01-02 09:08:03
373
原创 ThreadLocal使用总结
上图中之所以threadLocal对象也出现两个数字是因为两次请求线程池的同一个线程在处理,所以把上次请求的id保存下来了。使用ThreadLocal要注意,多线程在线程池实现方式下会有此问题。
2024-01-02 09:05:19
367
原创 使用Arthas 对线上代码执行耗时分析
比如我要分析类OrderApplicationQueryService中的listPackage方法的耗时。执行完上述命令后出现如下 listenId:1表示已经在监听方法,后续发生调用会展示详细调用信息。选择一码行tomcat_1对应的进程id.此处是1,按1进入。如下可以发现此方法的总体用时及各个方法的用时。启动完毕后会展示主机上全部的java进程。trace命令的使用。
2023-12-28 13:28:03
585
1
原创 JVM内存模型
伊甸园区:存满会发生MinorGc(JVM有一个后台线程执行垃圾回收),没有被标记为垃圾对象直接复制(复制算法)到Survivor区,复制完伊甸园区直接清空。stop the world: GC(包括full gc和monor gc)时JVM会停掉应用线程,保证此次GC过程中被标记为垃圾的对象不会被改变,不会被引用。可达性垃圾算法:讲GC Roots对象作为起点,从这些节点开始向下搜索引用的对象,找到的对象都标记为非垃圾对象,其余未标记的对象都是垃圾对象。紫色部分是线程私有的,橙色部分是线程共享的。
2023-12-28 11:46:57
363
1
原创 X-Frame-Options header missing 漏洞修复
解决办法:在tomcat服务器的conf/web.xml 增加过滤器。
2023-12-28 11:44:59
680
1
原创 利用ffmpge将rtsp视频流转码为HLS
2.rtspToHls方法.add("-hls_wrap", "15")可能在新版本取消,windows本地安装ffmpeg会报错 option hls_wrap 不能识别,开发测试时注释掉即可,此参数设定切片文件的最大个数,到达最大个数会进行覆盖。注意检查文件权限,若非root用户权限不为可读,需要对tomcat的catalina.sh进行修改,修改内容为。UMASK="0027" 修改为 UMASK="0022",重启tomcat后新生成的切片文件其他用户为可读权限。ffmpeg下全部代码。
2023-12-28 11:43:01
1798
1
原创 Thread Dump 分析死锁
thread dump打印输出格式上略微有一些不同,但是Thread dumps出来的信息包含线程;线程的运行状态、标识和调用的。都有及时生成显示所有线程在某一点状态的thread-dump的能力。Thread Dump是非常有用的诊断Java应用问题的工具,每一个Java。调用的堆栈包含完整的类名,所执行的方法,如果可能的话还有源代码的行数。得到的两列数据,第一列为线程的PID,后一列为线程名。1.JDK包bin路径下使用jps指令。拉倒最下方发现如下存在一个死锁。
2023-06-29 16:49:15
333
1
原创 uniapp消息推送
本次消息推送只支持在线通知,离线通知需要通过厂商的服务器推送消息给手机通知系统,第三方的消息推送会被阻挡,最好的方式就是按照厂商的要求接入各个推送服务。此处注意,若构建报错,提示Cannot resolve com.gexin.platform:gexin-rp-sdk-http:4.1.1.4。3.app客户端需要获取clientID传递给后端,后续作为后端调用个推接口的入参进行个性化通知。,代表本地maven仓库没有,需要修改本地maven配置文件的settings.xml文件,
2023-06-29 16:18:26
1079
1
原创 websocket实现网页数据实时刷新
链接千万不能多写/,会导致websocket通信页面刷新后,会导致新建连接,原先的sessionid失效,需要重新登录。此处注意:ws://localhost:8080/xxx/tideWebsocket。
2023-06-29 16:06:25
1682
1
原创 记录一次生产OOM排查经历
也可以指定dump文件保存路径,我这边没有设置,dump文件默认存储在tomcat/temp目录下。好在之前已经设置过JVM启动参数:-XX:+HeapDumpOnOutOfMemoryError 可以在项目OOM时自动进行dump,方便后续进行分析。进入后按此按钮对对象进行排序,由上到下,对于像Object,String,byte[]等基本类型可以先进行忽略,直到看到业务代码相关的对象。这种场景下idNumber不会作为查询条件参与查询,默认就是查询所有数据,这个表有200多万条数据,最终导致内存溢出。
2023-06-21 16:57:03
385
1
运用SNMP协议对CMTS和CM进行监控与管理
2012-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人