- 博客(436)
- 收藏
- 关注
原创 平台介绍-modbus设备调试
这个界面跟后台通过restful接口通信,后台再跟串口服务器通过modbus over tcp跟传感器通信。依据发送FC03命令判断,返回正常数据为1,报错为2 超时为0。状态为预定义代码:1-在线 0-离线 2-故障 9-空缺。最右侧可以在线发送命令给对应传感器。依据是否能建立socket通信。
2026-10-31 11:07:46
304
原创 工控仪表领域高频英文术语
ADU:Application Data Unit 应用数据单元(RTU 含从站 ID+CRC,TCP 带 MBAP 头)Slave ID / Unit ID:从站地址(Modbus TCP 里 Unit ID,RTU 叫 Slave ID)Slave:从站(现在新版 Modbus 规范推荐叫 **Server**)Holding Register:保持寄存器(FC03 读,最常用,可读写)Input Register:输入寄存器(FC04 读,只读)Poll / Polling:轮询(主站循环查询从站)
2026-10-31 08:49:41
181
原创 Modbus协议
做设备监控大屏、数字孪生项目,离不开Modbus协议。它是1979 年由 Modicon 公司推出的,是目前工业最通用的开放协议,是免版权费的。有个迷惑人的地方是Modbus RTU over TCP。它是串口转网口,本质还是串口,不是真正的Modbus TCP。(从站地址 1~247,0 为广播地址)。主要特点是设备通过串口传递信号。串口又分为RTU版本和ASCII版本。主要特点是设备通过网口传递信号。
2026-10-18 22:16:27
232
原创 开发指南149-IotDB-常用命令
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw 密码。-- 创建数据库(IoTDB数据库对应存储组,root下创建)-- 删除数据库(会删除库下所有时序和数据,谨慎!-- 创建对齐时序(同设备多测点共用时间戳,推荐)-- 按时间窗口聚合(分组,10分钟一个窗口)-- 动态修改部分参数(部分支持,不用重启)-- 手动触发合并(生产慎用,会占用IO)-- 删除时序(只删测点元数据,连带数据)-- 查看子路径(查看设备层级)-- 查询所有时序,支持通配符。
2026-10-12 06:46:56
136
原创 springboot应用关闭时触发动作
System.out.println("JVM 关闭时触发:" + Thread.currentThread().getName());大坑 kill -9是不会触发的,所以务必用kill -15。2. `System.exit(0)` 主动退出。// 需要进行的操作。3. Linux下 `kill -15`1. main 方法执行完毕退出。4. Ctrl+C 控制台中断。
2026-10-11 23:09:08
236
原创 重建oracle服务
注册服务:oradim -new -sid orcl -intpwd test -startmode auto。确保配置文件存在:dir %ORACLE_HOME%\network\admin\listener.ora。其上之前安装了oracle服务,所幸安装在d盘。操作系统重做后,需要重新注册oracle服务。删除旧服务:oradim -delete -sid orcl。一台数据库服务器,操作系统崩溃了,只能重做。注册新服务:lsnrctl install。一、如果忘记了sys密码,需要先重置密码。
2026-10-07 22:47:14
274
原创 开发指南148-WebSocket-后端
CommonsUtil.debugLog("destination=" + destination + " 当前无订阅者");CommonsUtil.debugLog("本地投递成功 destination=" + destination);// 握手阶段把 URL 上的 token 存进 session attributes(鉴权兜底通道)// SockJS 层心跳 25s:SockJS 在 http 轮询降级时靠它保活。其中必须写明具体Origins,写* 一定前端跨域失败(前端底层自身问题)
2026-10-05 11:11:04
84
原创 开发指南148-WebSocket-前端查报文
打开开发者工具,选择Network选项卡,找到websocket,再选Messages卡就可以看通讯内容。
2026-10-05 08:52:32
309
原创 使用jps jstack排查系统问题
线程名 内部线程编号 prio=(优先级别) tid=(JVM线程ID)nid=(死锁要查Found one Java-level deadlock 可以看线程等待情况。jstack <pid> pid是上面jps得到的进程号。会列出所有 Java 进程和主类名,加。还能看到 JVM 启动参数。第二步用jstack查线程。
2026-10-04 16:56:29
238
原创 开发指南148-WebSocket-后端技术路线
的方案,是徒手搓的方案。现如今都是买套餐的时代了。很多同学搜索或AI得到都是走@ServerEndpoint注解的方案,这是。现代时代技术考验的不是能力了,而是认知了。看谁能找到更好的套餐。
2026-10-04 15:42:02
424
原创 开发指南148-WebSocket-前端
使用该js,需要先安装核心依赖:npm install sockjs-client@1.6.1 @stomp/stompjs@7.0.0。所以,更好的模式是浏览器进入大屏页面时建立websocket,后台接收到信号时,主动推送数据到前端页面。前端应用主要封装在qlm_websocket.js中。以后可以用this.$ws来访问该组件。// 挂接websocket底层。
2026-10-02 23:25:09
243
原创 下划线数字字面量
尤其最后一个:double ratio = 0.00001;_为分割符,其实就是千位分割符号(财务上通常用逗号),由于逗号在程序里有特定含义,所以改为_。为了一目了然的表现出25秒,早期写成25*1000。要求的类型是long,单位是毫秒。原始的写法是25000。从Java7开始,引入了。25_000是什么鬼?
2026-10-02 20:36:30
367
原创 开发指南147-构建树
treedata采用前端构造法,后端不关心树需要的结构,只管提供正常的List数据即可。前端显示树使用<el-tree>组件,最核心的数据是树 :data="treedata"。
2026-09-06 22:37:33
31
原创 开发指南146-平台环境下的调试
前端可以联测试进行开发(也可以先通过mock自行处理)但是mock也需要工作量的,站在减少组织整体工作量的情况下,规定由后端先实现接口。前端->网关->直接微服务接口->必要时通过feign访问其他微服务接口。2、后端先实现接口本身(不用实际业务,只搞定输入输出),然后部署到测试环境。后端可以通过swagger发起接口调用,并调试。后端通过日志发现问题,逐步修正。4、后端更新测试环境,让前端访问联调。2、开发环境联测试环境nacos,启动服务。1、前后端先约定好接口。3、后端真正实现接口。
2026-07-30 09:45:23
252
原创 直接用SQL语句拼接结果
如何将查询得到的数据拼接起来?过去的办法是先把数据取过来,然后循环结果进行数据拼接。现代数据库已经提供了这个功能,只是各数据库语法不同。可以用stuff函数去掉第一个逗号。返回,T001,T002。
2026-07-29 22:31:32
187
原创 JPA下自定义主键
if (attRestOfWeekDAO.existsById(bo.getOrgId())) { // 存在则更新。这种更坑爹,当数据库里没有手工设的orgId时,会执行插入操作,但插入的是uuid,不是设定的值!但是JPA在这种情况下有个问题,不管数据库里有没有数据,一律执行的是update操作。不是想象中没有则插入!
2026-07-16 10:48:43
226
原创 try-with-resources结构
手动关闭方式,它不仅大幅减少了样板代码,还能有效避免资源泄漏和空指针异常,使代码更加简洁、安全且易于维护。代码块执行完毕(无论是正常结束还是因为发生异常而中断),JVM 都会自动调用声明的每个资源的。Java其实早就解决了这个问题,只是很多人不知道而已。从 Java 9 开始,如果外部已经声明了资源,且该变量是。try (资源1声明;(即声明后未被重新赋值),可以直接将变量名放入括号中。接口(Java 5 及以上)。在 Java 9 之前,资源必须在。// 使用资源的业务代码。等都实现了,放心大胆去用。
2026-06-28 08:54:27
173
原创 java报错里的行数问题
但有个前提条件,但就是正在运行的class对应的当时的源代码,当你再次编辑后,就对不上了。基于以上原因,当你把class反编译为源码时,由于缺少了对应的注释,所以行数也对不上了。这是一段典型的报错,括号里的行数含不含源码里的注释行?源代码里的所有内容:空行、注释(单行 //、多行 /这是因为:Java 编译器(javac)在编译。,用于异常堆栈追踪。/)、代码行,全部都会计算行数。报错堆栈里的行数(比如。
2026-06-22 21:38:36
182
原创 JXL LabelCell的构造函数为啥是列,行
Excel为啥是A10,而不是10A,Excel你怎么就习惯了?实际上几乎所有的图形处理等等都是列,行的方式。但是在计算机的世界里列,行才是正常,这是因为采用的是迪卡尔坐标系,你只要了解了这个真相,你就忽然觉的列,行才是正常的。是不是感觉别扭,经常会理解错?,这种情况下,你是X,Y还是Y,X?确实人的思维常常是行,列。开发人员为什么这么做?
2026-06-18 17:01:02
237
原创 Oracle的撤回功能
别担心,Oracle就可以。不要总抱怨Oracle占地方,这个功能关键时刻真能保命。create table a_bak as 用上面两种方案的查询语句。如果你用到这个功能,说明你之前一定脑抽或手滑了,以后小心吧。-- 第一步:开启表的行移动功能(必须执行)-- 第二步:闪回表到 10 分钟前。-- 第三步:关闭行移动(可选)假设你操作了表A,而且提交了。-- 查看指定时间点的数据(-- 查10分钟前数据(
2026-06-16 17:27:26
562
原创 SQL里的连接
至少保留一个表的全部信息,根据保留情况再细分为左连、右连、全连。当匹配列不唯一时,产生笛卡尔集。匹配列不唯一时,产生笛卡尔集。语法:RIGHT JOIN。语法:LEFT JOIN。语法:FULL JOIN。不匹配的数据都补null。语法 INNER JOIN。
2026-06-14 20:48:10
201
原创 平台介绍-json解析组件
本身就是javascript引入的,所以无需任何组件,JavaScript本身就支持。平台共使用了三种语言,先分别列下对应的json解析组件。java下有三种常用json解析组件。
2026-06-13 15:35:40
253
原创 MySQL的另类语法
然而MySQL支持。当a2和id绑定都是唯一时,这种写法就很简单,但是当a2有多个值时,这个结果是不确定的,也就是今天执行和明天执行,结果可能不一样。不知道最初MySQL开放者如何脑洞打开,放开了这个限制。而且很多早期开发人员居然也利用了这个特性,导致现在的MySQL也得支持这个特性。系统设计中有很多这样的案例,为了一点微不足道的灵活性,破坏了规则的完整性。如同所有的非MySQL数据库都严格执行,只有MySQL选择了另类。SQL标准 (SQL-92/99)规定:SELECT 列表里的所有字段,要么出现在。
2026-06-11 21:21:42
249
原创 数据库行ID
delete from 表名 where rowid='**'数据库里完全相同的重复数据,如何删除?最简洁的方法就是使用行ID。SELECT ROWID, t.* FROM 表名 t。只能自己搞个自增长列了。是行号(查询结果序号),
2026-06-09 07:13:54
181
原创 SQL Server2008 R2版自动备份问题
到此,理论上不该出幺蛾子了,第二天上班,应该欣慰的发现对应目录里分别为每个数据库建立了一个分目录,里面有数据库。界面上方「子计划计划」→更改→ 执行:每天;查看作业活动监视器,下次运行时间为2026年6月1日,说明配置没有问题。2、进入ssms(不要问我这个是什么,需要问的话,这篇文章不要看了,不是你的菜)。,果然时间为2025-06-01(原厂商由于某些目的,调了服务器时间,只能说人才啊)。→ 右键【新建维护计划】,命名:DBBackup。查计划作业→属性→计划→编辑→。
2026-06-01 14:47:32
330
原创 和挖矿做斗争3
卸载wget curl这些!需要东西时在其他机器上下载,自行复制到服务器上。vi /var/log/cron 搜wget curl之类。很多朋友对反入侵很感兴趣,那就再多讲一些。连续 5 次密码错误 → 封禁 IP 10 分钟。Debian / Ubuntu(apt 系列)这种就是作妖的,要在出站策略中坚决关闭。看看有没有非自己人登录过。自动拉黑暴力破解的 IP。
2026-05-16 11:48:46
154
原创 平台介绍-提供4A支持
如给人力资源系统一个管理员,该管理员在人资系统的功能界面(实质是链接到了统一用户管理平台)管理人资部门人员权限。上的方法可以分步来实现,先上平台,通过集成实现1、2、4,然后通过替换方式逐步淘汰老应用系统。平台上的应用实质上是互通的,界面也是一种资源,平台上应用可以任意拉起其他应用的界面。所有账号都有统一的微服务来管理,各业务系统通过调用该微服务来实现统一管理。只用上统一平台,然后再统一平台上开发应用才能彻底实现4A。同理,因为提供服务的是统一的微服务,自然可以统一记录做了什么,从而可以实现统一审计。
2026-05-16 08:14:40
68
原创 和挖矿做斗争2
pgrep -a uniagentd(没有这个武器,请先装备:dnf -y install procps-ng)前面的数字是进程id 后面就是他的具体位置了。如果是/tmp等就要进一步小心了。链接了100.125.12.110 查这个ip地址(随便问个ai工具就行,例如豆包)所以这个进程大概率是云服务器厂商的监控代理。不放心的话,提个工单找你的服务商。确实之前发的都是普通手段,远远不到秘笈水平,今天提供黄级低阶心法。原文发布后,很多读者不过瘾,需要进一步提供斗争经验。
2026-05-11 08:32:58
39
原创 和挖矿做斗争
后记,清理完后,还要堵塞后面。根据提取的样本和其他痕迹,发现本次漏洞是redis的未授权访问。原系统安装在内网,开发人员图省事,使用默认端口,且不设置密码!接手一客户的老系统,需要把系统迁移到云服务器上,一切很顺利,第二天就收到。如今木马、勒索经常出现,务必对安全不能松懈。先看定时任务,所有木马之类的都会从定时任务下手。如果还不行,需要进一步处理上级目录。# 3. 一步到位:同时停止并禁用开机自启。不出意外的话,一定有异常内容。# 2. 禁止开机自启(永久禁用),如果输出中包含字母。命令来移除不可变属性。
2026-05-10 05:59:36
253
原创 top输出中cpu指标解析
linux系统经常用top命令查看系统状态,其中有很重要一行数据,长这样:它的含义如下:这玩意如同人的血常规,尿常规,可以快速判断系统是否健康。1、其中。
2026-05-07 22:40:14
462
原创 踩坑:el8应用装在el9上
系统一开始运行良好,直到安装了rabbitmq,系统马上卡顿,敲字回显都好几秒。开发懵了,仔细复盘了过程,发现了问题所在。el8应用装在el9上!问题非常严重,不仅仅是系统卡顿问题,有些命令也不好使了,例如wget。死循环了,安装说已经安装了不让装,使用又报找不到。五一加班部署个环境,不幸踩了坑。3、下载安装正确版本。
2026-05-05 08:58:04
362
原创 spring配置文件简化方案
启动时通过参数--spring.profiles.active=***选择不同的配置文件。也就是可以通过--- 把传统的几个文件合成一个。在一个文档里维护所有配置。还有一种方案,都放到一个文件里!当然这种方式是否合适,公婆各自选择吧。但是修改时就麻烦了,而且也不便于对比。
2026-05-04 10:32:07
39
原创 MySQL 官方 GPG 密钥过期问题
有人讲dnf install -y mysql-community-server --nogpgcheck 关闭校验就行了。然而这不是解决问题之道,绕开了坑,坑还在,迟早还得掉进行。# 1. 导入 MySQL 最新的 GPG 密钥(2023版,解决校验失败)之前安装都没错啊,怎么现在中奖了?# 3. 重新安装 MySQL。
2026-05-03 10:01:52
345
原创 各linux版本的包管理命令
linux开源好是好,问题是各大厂商都封装了自己的版本,苦了咱们这些应用开发商。客户选用的系统五花八门,都得掌握。如:AlmaLinux、Rocky Linux、CentOS RHEL Fedora安装包rpm使用dnf(注 centos早期版本用yum)安装 dnf install 包名 -y卸载 dnf remove 包名 -y更新 dnf update -y搜索 dnf search 关键词已安装列表 dnf list installed。
2026-05-02 17:58:30
91
原创 _MACOSX目录是什么
其实这是mac系统的杰作。在 Mac 电脑上右键 → 压缩文件 / 文件夹 时,系统就会自动额外创建一个 __MACOSX 目录,把一些 macOS 专用信息(文件图标、权限、注释、扩展属性)存进去。设计功能一定要从客户角度出发,不能强迫用户按开发人员的思路去做,这就本末倒置了。接手客户一套老系统代码,zip压缩的,里面有_MACOSX目录,开发没见过,问我是什么,能不能删除。这就反应了苹果的一贯思维,我是封闭系统,我得加点我独有的东西。很多所谓高级开发人员总想一些奇怪功能,就想一种冷,是奶奶觉的孙子冷。
2026-05-02 15:49:05
70
原创 Java处理csv文件总是丢数据
java处理csv文件总是丢数据,写个极端例子验证下:values.length的值居然是0!因为 Java 的 split(",") 有一个默认规则:会自动丢弃数组末尾的所有空字符串!这样就不出问题了。看定义:limit。
2026-04-29 15:02:23
180
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅