- 博客(285)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 要会用抓包来帮助“破案”
摘要:通过抓包分析MQTT通信中断问题,发现TCP重置连接由平台端发起。进一步排查发现不同画面播放时长差异与Nginx配置client_max_body_size 100M限制有关,复杂画面数据量接近阈值时被截断。调整该参数后问题解决。关键点:使用tcpdump -i Eth1 -w /root/aap.pcap 'port 1883' -s 0捕获完整MQTT数据包,结合Nginx错误日志定位配置瓶颈。(149字)
2025-08-14 16:40:18
355
原创 实时画面回传的开发复盘
逢山开路遇水搭桥,遇到问题不可怕,尤其是当下有这么趁手的AI辅助工具,所以保持轻松乐观的心态。但仍然是需要学习的,因为不学习,你都没办法向AI提问~
2025-07-29 17:52:01
210
原创 如何对nginx设置开机自启动
使用 systemd(适用于 CentOS 7+/Ubuntu 16.04+/Debian 8+ 等新系统)**
2025-07-29 17:08:10
295
2
原创 在华为欧拉系统openEuler 24.03 sp1上安装nginx 1.28
一、华为欧拉系统openEuler 24.03服务器上离线安装Nginx 1.28版本,但是服务器自带了openssl 3.0,而nginx为了兼容openssl 1.1仍然会依赖libcrypt.so.2。源码安装方式 、RPM安装方式、 二进制软件安装方式、yum安装方式。二、如果要用源码编译的方式安装,也需要安装一些依赖,可以从这里边找到。先把上述的rpm包全部安装后,再源码编译安装nginx。所以在安装时报依赖错误。
2025-07-29 15:22:43
306
原创 对近期接触到的直播相关知识进行梳理
M3U8 文件是 HLS (HTTP Live Streaming) 协议的核心组件,它本质上是一个播放列表文件,包含媒体流的结构信息。直播与视频聊天的对比:我觉得直播是通过流媒体技术把现场的图像和声音采集后分发出去,供观众在线围观,可以认为是开放的,一般没有人数限制;而视频聊天是点对点的线上交流,是基于UDP/TCP的实时传输协议实现的。流媒体是通过互联网实时传输音视频内容的技术,用户无需等待完整下载即可开始观看,核心是将内容分割为小数据包顺序传输。直播传输的是视频流,而点播是播放的录制好的视频文件。
2025-06-23 14:15:43
1128
原创 ftp文件无法写入文件排查过程记录
这中间还把测试环境的ftp改成了ftps, 客户端对ftp这块做了调整,兼容了ftp和ftps,但是预发环境还是之前的ftp。我的体会居然是对段永平的本分思想增加了理解,在协作过程中出现问题,当责任不清晰时,要老实本分地把问题纳入到自己职责范围内,长期下来,不仅会赢得声誉,还会成长得更快。测试环境,ftp服务器是可以正常自动创建目录,并写入文件的,但部署到预发环境后,目录倒是可以自动创建,但是文件不能正常写入了。领导的意思是可以用命令去连接ftp,如果可以正常操作,那就是代码的问题。
2025-06-09 18:15:33
521
原创 ftp改为sftp,从服务器配置到代码的调整梳理
将FTP改为SFTP的核心方法是启用SSH服务并配置SFTP子系统,同时调整客户端工具或脚本以使用SFTP协议替代FTP协议。具体操作包括服务器端SSH/SFTP服务配置、防火墙端口调整。还是在SSH配置文件/etc/ssh/sshd_config中,修改倒数第二行。还是编辑SSH配置文件/etc/ssh/sshd_config。编辑SSH配置文件/etc/ssh/sshd_config。找到#Port 22那一行,可以放开注释并改为其他端口。但需要开放该端口的访问。
2025-05-30 16:57:14
405
原创 EMQX社区版5.8.5集群搭建踩坑记
1.作为反向代理服务器,NGINX 位于 MQTT 服务器端,代表 MQTT 客户端向 EMQX 集群发起 MQTT 连接请求,并代替 EMQX 集群处理请求,然后将 EMQX 集群的响应返回给 MQTT 客户端。比如我在openEuler 22.03 (LTS-SP4)上使用emqx-5.8.5-el8-amd64.tar.gz安装成功,但在CentOS Linux 7 (Core)上却安装不成功,后边换成了emqx-5.8.5-el7-amd64.tar.gz才可以。
2025-05-30 13:53:02
1229
原创 EMQX启用单向认证的SSl/TLS连接的配置步骤
参考官网地址:https://docs.emqx.com/zh/cloud/latest/deployments/tls_ssl.html#%E7%94%9F%E6%88%90%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6。执行openssl version -a 获取 openssl.cnf 目录。需要注意openssl.cnf的路径。subj 依据实际使用情况调整。
2025-05-27 16:38:54
925
原创 了解一下OceanBase中的表分区
OceanBase 是一个高性能的分布式关系型数据库,它支持 SQL 标准的大部分功能,包括分区表。分区表可以帮助管理大量数据,提高查询效率,通过将数据分散到不同的物理段中,可以减少查询时的数据扫描量。
2025-05-06 18:08:44
740
原创 定期删除一周前的数据,日志表的表空间会增长吗?
删除操作不释放空间:DELETE 操作只会标记数据为删除状态,并不会立即释放空间。碎片化:频繁的 DELETE 和 INSERT 操作可能导致表空间碎片化,虽然有空闲空间,但由于不连续,可能无法有效利用。高水位线:表的高水位线(HWM)不会因 DELETE 操作而降低,即使删除了大量数据,表空间也不会自动收缩。分区表:使用分区表,按时间分区,直接删除旧分区,操作更高效且能立即释放空间。即使定期删除一周前的数据,日志表的表空间仍可能持续增长。通过这些方法,可以有效控制日志表的空间增长。
2025-02-07 19:31:18
317
原创 小经验小结
关于数据校验的一条经验: 先假定是合法的,直接落库,再校验数据是否有问题,有问题就抛异常回滚关于外部接口调用:调用外部接口的组件交给spring管理,这样方便将一些配置数据(如url地址、加密key等信息)注入进来关于功能自测:起码要用debug覆盖一遍自己的代码逻辑,避免明显的缺陷
2024-10-14 14:20:32
226
1
原创 多态对象的存储方案小结
和@JsonSubTypes可以应对这种情形,但有点麻烦,并且name属性必须是字符串、必须用Jackson为基础的json工具类对json字符串和对象进行序列化和反序列化。(为了方便与前端交互,实体类成员变量的值如showConfig1、showConfig2都具有相同的前缀,后缀则是枚举值)某个类型有几种不同的子类,Jackson中的@JsonTypeInfo。后来,又遇到了一次这种情形,觉得不用多态反而更方便地应对了。存储时,把不同实体类对象转换为json串赋值给对应的字段上。
2024-10-14 11:50:13
425
原创 巧用枚举应对多种策略的场景
其次是每个数据项都有多个属性(比如中文含义、英文编码、权重值…),或者是需要对某个行为以各不相同的策略进行实现。总结一下,什么时候适合使用枚举呢?
2024-10-14 11:12:58
440
原创 记录一下工作中用到的几个有意思的小算法
22年的夏天,我补了一段时间算法知识,看的是马士兵教育左程云老师的算法课和极客时间王争老师的算法之美,虽然没吸收太多,但也对算法中蕴含的巧妙智慧印象颇深,着实在心里埋下了一颗喜欢算法的种子。工作中很少需要自己编写一段算法,但最近一段时间集中遇到了几处,特意记录下来。
2024-10-11 19:51:10
904
原创 使用规则引擎简化特定场景的开发
前一段开发一个根据获奖规则生成获奖名单的功能,场景比资金路由的匹配要简单,但规则引擎也是适用的。之前做资金中台的时候,用到了aviator轻量级的规则引擎,简化了匹配逻辑。
2024-09-13 16:46:12
215
2
原创 自测的重要性
发现了sql少写了个条件、发现了入参必传 mergeBrandId、发现了复制错误 mergeBrandId 跟 memberBrandId长得很像。2、核对需求文档,看看是不是自己的逻辑跟需求都是匹配的,有没有遗漏的细节。3、有时候配合接口的使用方去做点假数据,也是发现自己接口漏洞的好机会。1、把debug一遍,看看每一步变量值的变化都符合预期。
2024-09-13 11:11:08
258
原创 actuator字符绕过漏洞在Nginx和apisix上的配置
最近遇到了安全部门派发的actuator泄漏漏洞,领导希望不暴露到外网上,对于内网需要认证才可以访问。要想不暴露到外网上,就需要在网络层面做拦截,比如nginx和apisix上做代理配置。一般的情况都可以应对,就是对于http://xxx/actuator;%2f…/字符绕过这种情况,一直没有解决方案。
2024-09-13 10:34:47
1106
原创 工作中遇到了一个线程中断异常
而主线程随后又进行了数据查询,这时候从druid数据库连接池中获取数据连接会用到AQS中的可重入锁, 可重入锁会检查线程的中断标识,如果是中断,则抛出中断异常。主线程使用CompletableFuture开辟子线程进行了并行查询,但其中某个子线程执行时发生异常,没有捕获。结果就在主线程等待所有子线程都执行完毕时报ExecutionException。工作中遇到了一个线程中断异常,备忘记录一下。从而对主线程打上了中断标识。
2024-09-11 19:36:52
577
转载 【POI】多种实现导出的差异
在实际使用中,除非有特别的格式要求,一般优先选择 SXSSFWorkbook,以支持最大的数据量。所以总结来说,三种 Workbook 的选择依据是:文件格式要求、数据量大小、写入性能要求。SXSSFWorkbook:用于操作 xlsx 格式的 Excel,支持超过 2^20 行的数据,实际数据存储在临时文件中,只将部分数据加载到内存中。SXSSFWorkbook 只加载部分行到内存,大部分行存储在临时文件中,所以可以支持百万行级别的数据,不容易OOM。支持的文件格式和最大行数不同。
2024-05-09 11:53:31
230
原创 一个sql子查询的错误,记录一下
一、两处空指针改动一个方法的代码,要考虑所有依赖这个方法的接口是否会受到影响:比如,你把一个工具类中的方法改了,就要考虑所有调用了该方法的地方是否会受到影响。在处理一个对象前,要考虑它是否可能为空,换句话说,就是要养成判空的习惯,比如想对字符串做分割处理成字符串数组,务必要判断该字符串是否为空。二、两处自测验证不到位研发自测往往只做个冒烟测试,但bug往往就隐藏在你没覆盖到的测试用例里:比如,有个选填项,你往往只是考虑了它填写时能否正常保存,却容易忘掉它不填时可否找正常保存。边界条件是最需要
2024-04-02 10:01:13
366
2
原创 用Python实现给图片去黑边
图片去黑边(只考虑了去水平方向上的黑边)的核心算法是要找到图片顶部或顶部的黑边位置,即两个纵坐标值,主要用到了canny边缘计算、 houghlines直线检测、easyocr识别等算法
2024-01-11 19:27:16
1984
原创 记一次mq消息没有收到的问题排查
变化的果是由变化的因导致的,在遇到问题时,应该首先基于这种思维去大胆猜测问题发生的原因。刻画的传播链模型要准确。比如图中B有落库操作,开始时以为落库了就证明AB之间的消息传递是正常的,一直在对B的消费逻辑进行debug。但实际上发现A也有落库操作,这个时候应该重新考量MQ1是否正常工作,结果大脑可能有思维惯性,还停留在之前的观念里,误以为问题肯定出在了B系统。都有好记性不如烂笔头,其实不仅仅是记忆可以借助笔,分析问题时如果能多动动笔,也不容易走进思维的误区。强化对二分法思想在定位问题上的运用。
2023-12-07 08:02:39
932
原创 刚踩的两个坑: CV大法要慎用,异常捕获要彻底
在一个图片分析的Service里写过如下代码, 本来是想避免用户重复提交分析图片的请求,结果由于dealImages方法中的异常没有捕获到位(只捕获了IO异常),导致了isRectifying标识一直为true,从而无法执行新的图片分析任务。代码是复制的,会想当然以为之前的代码是好用的, 所以复制过来,稍微一测,能冒烟就觉得OK了,殊不知遗漏的场景里可能存在bug,因为你很容易遗漏某处本该发生改动。我做的一个批量查询接口,在传入单个id时查询报错,就是一个教训。复制代码做类似的功能开发时要注意。
2023-11-27 20:41:47
625
原创 最近踩的两条sql的坑
我理解,这实际上是数学上的分类讨论思想,一定要对每种情况分别讨论,而不能混为一谈。后者的执行过程是先生成只有一条数据的临时表,然后跟左表进行左关联,得到如下结果。然后再用tab2.name='AAA’过滤,最终只得到第一条数据。where 条件是在临时表生成好后,再对临时表进行过滤的条件。on 条件是在生成临时表时使用的条件。给定下边一张学员表student。
2022-10-20 21:00:09
215
原创 分治、贪心、回溯、动态规划四种算法思想的比较分析
是多阶段决策问题吗?可以通过局部最优解得到全局最优解吗(能否用贪心算法)?是否有后效性问题(能否改为动态规划)?
2022-10-11 09:29:36
614
Spring+SpringMVC的一个简单登录例子(参考用户ldhsecret)
2013-07-27
My97DatePicke日期控件
2014-06-12
算法导论(第二版)pdf
2011-11-20
javaWeb开发中,mysql数据库报错连不上,求高手
2017-10-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人