nxmes

nxmes 内容与运维记录

Posts

初始化记录

这是 170 上 Hugo + Decap CMS 目标站点的初始化验证文章。

Windows 默认共享是什么?如何关闭和恢复 C$、ADMIN$、IPC$

Windows 默认共享是什么?如何关闭和恢复 C$、ADMIN$、IPC$ 原文来源:https://blog.csdn.net/holandstone/article/details/14165377 本文是对原文内容的整理和提炼,重点保留可执行步骤与安全判断。 一句话结论 Windows 默认共享(如 C$、D$、ADMIN$、IPC$)主要是为了方便管理员远程管理,并不等同于“系统漏洞”。真正需要重点防范的是:管理员弱口令、空密码、错误暴露内网共享、Server 服务不当开放,以及缺少补丁和防火墙保护。 默认共享分别是什么 常见默认共享包括: C$、D$、E$:各磁盘根目录的隐藏管理共享; ADMIN$:系统目录共享,通常指向 Windows 安装目录; IPC$:用于进程间通信和远程管理连接的特殊共享管道。 这些共享名称末尾带 $,表示隐藏共享,普通浏览网络邻居时通常不会直接显示。 默认共享是不是漏洞? 更准确的说法是:默认共享是一项管理功能,不是单独意义上的漏洞。 它的设计初衷是让管理员能在局域网或域环境里远程维护机器,例如复制文件、执行管理任务、排查问题等。安全风险通常来自以下几类配置问题: 管理员账户密码为空或过弱; 内置 Administrator 账号未禁用且密码简单; 文件和打印共享暴露到不可信网络; 系统未打补丁,存在其他可被联动利用的漏洞; 防火墙策略不当,导致 SMB 端口对外开放。 所以,单纯看到 C$、ADMIN$、IPC$ 并不代表机器已经不安全;但如果账户口令和网络边界没做好,它们就可能成为攻击入口。 查看当前共享 在命令提示符中执行: net share 如果看到 C$、ADMIN$、IPC$ 等项目,说明相关默认共享当前存在。 临时删除默认共享 如果只是临时关闭,可以执行: net share c$ /del net share d$ /del net share ipc$ /del net share admin$ /del 注意:临时删除通常在重启后可能被系统重新创建。如果希望每次开机自动删除,可以写成 .bat 批处理并加入启动项,但这更像是“绕开默认行为”,不如从注册表和服务策略上处理得稳定。 通过注册表关闭默认共享 打开注册表编辑器: 开始 → 运行 → regedit 1. 关闭磁盘默认共享 C$ / D$ 等 定位到:

早餐奶奶的故事:一份热饭背后,藏着普通人最朴素的善意

早餐奶奶的故事:一份热饭背后,藏着普通人最朴素的善意 很多人被“早餐奶奶”的故事打动,并不是因为它有多么戏剧化,而是因为它太像我们身边真实会发生的事:清晨的街口、热气腾腾的早餐、匆忙赶路的人,以及一位总是把饭菜准备好的老人。 她可能没有说过什么漂亮的话,也不擅长把自己的辛苦讲出来。她只是日复一日地早起,把粥、包子、鸡蛋、豆浆摆好,等着上学的孩子、上班的年轻人、赶早市的人来买一口热饭。 感人的不是早餐本身,而是那份“我记得你” 真正让人鼻酸的,往往是很小的细节。 有些熟客还没开口,她已经知道对方要什么;有人钱没带够,她也不会让人空着肚子离开;遇到孩子赶时间,她会把早餐提前装好;碰到天气冷,她会多叮嘱一句:“趁热吃。” 这些话听起来都不重,却很暖。因为在快节奏的生活里,很多人已经习惯了被系统、订单、价格和时间推着走,而“早餐奶奶”让人重新感觉到:原来一个陌生人,也可以记得你的习惯,惦记你有没有吃饱。 她卖的是早餐,也是在守一段清晨的烟火气 一份早餐的价值,不只在价格里。 它可能是学生一天的开始,是打工人赶地铁前唯一安稳的几分钟,也是很多人离开家乡后,少数能感受到“有人照应”的时刻。 “早餐奶奶”的摊位像城市角落里一个很小的灯。它不耀眼,却稳定;不宏大,却真实。很多人之所以被这个故事打动,是因为他们从中看见了自己的某个清晨:疲惫、匆忙、没睡醒,却因为一口热饭和一句关心,心里稍微踏实了一点。 普通人的善意,常常没有标题 这个故事最珍贵的地方,是它没有把善良说得很高大。 奶奶未必觉得自己在“帮助别人”,她可能只是觉得:孩子不能饿着,上班的人不容易,能方便一点就方便一点。可正是这种不张扬、不计算、不表演的善意,才最容易打动人。 我们总以为感人的事要足够惊天动地,但很多时候,真正撑住生活的,是这些不起眼的人和事:早起出摊的人、给你多装一点的人、记得你口味的人、在你狼狈时没有让你难堪的人。 为什么“早餐奶奶”的故事会刷屏? 因为它击中了很多人的共同感受:我们都在很努力地生活,也都渴望在某个普通时刻被温柔对待。 在互联网里,热点来得快、走得也快。但像“早餐奶奶”这样的故事,会让人停下来想一想:我们是不是也曾经被某个普通人照顾过?是不是也可以在自己的能力范围内,对别人多一点耐心和善意? 她让人相信,生活虽然辛苦,但人与人之间仍然有暖意。善良不一定要被包装成口号,它可以是一份热粥、一个鸡蛋、一句提醒,也可以是清晨摊位前那句平常的:“来了啊,还是老样子?” 写在最后 “早餐奶奶”的故事之所以感人,是因为它让我们看见:最动人的东西,往往就藏在最普通的日子里。 不是每个人都能做惊天动地的大事,但每个人都可以在自己的生活里,留下一点温度。也许是一份早餐,也许是一句问候,也许是在别人困难时,不让对方难堪。 愿我们记住这样的善意,也愿每一个赶路的人,都能在清晨吃上一口热饭,带着一点被照顾过的温暖,继续往前走。 说明:本文围绕网络上“早餐奶奶”相关公共叙事进行情感化整理,重点呈现故事所传递的善意与人间烟火气;未核验到唯一原始出处,因此不编造具体姓名、地点和未经确认的细节。

Windows 共享打印机 0x00000709 错误怎么解决?

Windows 共享打印机 0x00000709 错误怎么解决? Windows 连接共享打印机时,如果遇到 0x00000709 错误,常见原因是 Windows 更新后改变了共享连接、凭据或 RPC 验证策略,导致客户端无法正常连接主机上的共享打印机。 处理时建议按“先简单、后注册表”的顺序排查:先重启打印服务,再检查共享凭据,最后再考虑修改注册表策略。 方法一:重启 Print Spooler 打印服务 这是最快、风险最低的处理方式。 按 Win + R。 输入: services.msc 回车打开“服务”。 在服务列表中找到 Print Spooler。 右键点击它,选择 重新启动。 如果是共享打印机,建议在连接打印机的主机/服务器电脑上执行这一步,而不只是客户端电脑。 方法二:添加 Windows 共享凭据 如果错误出现在访问共享打印机时,可以尝试为共享主机手动添加 Windows 凭据。 打开 控制面板。 进入: 用户账户 > 凭据管理器 > Windows 凭据 点击 添加 Windows 凭据。 地址填写共享打印机主机的计算机名或 IP 地址,例如: \192.168.1.100 或: \打印机主机名 用户名填写: Guest 密码留空,保存后重新连接共享打印机。 方法三:修改注册表中的 RPC 验证策略 如果问题出现在 Windows 更新之后,并且前两种方法无效,可以尝试调整 RPC 验证相关注册表项。 注意:修改注册表有风险,操作前建议先备份注册表或创建系统还原点。 操作步骤 按 Win + R。

ASCII / Char 码值对照表:常用字符、控制字符与生成方法

ASCII / Char 码值对照表:常用字符、控制字符与生成方法 在排查字符串、协议报文、键盘输入、日志乱码时,经常会遇到 Char(10)、chr(13)、ASCII 码 这类写法。原文是一份 Char 码值列表,这里把它整理成更适合查阅的版本:先看常用控制字符,再看可见字符范围,最后给出生成完整对照表的方法。 来源整理:https://blog.csdn.net/huwei2003/article/details/122604370 1. 先记住几个最常用的 Char 码 码值 简称 含义 0 NUL 空字符 / 字符 0 7 BEL 响铃 8 BS 回格 9 TAB 水平制表符 10 LF 换行 11 VT 垂直制表符 12 FF 换页 13 CR 回车;Windows 文本换行常见组合是 CRLF,也就是 chr(13) + chr(10) 26 SUB / EOF 结束标记,部分环境里表示 End 27 ESC Escape / 脱离,键盘上常见为 Esc 32 SPACE 空格 换行最容易混淆 不同系统和场景中,“换行”的表示并不完全一样: Char(10) / chr(10):LF,换行。 Char(13) / chr(13):CR,回车。 chr(13) + chr(10):CRLF,Windows 文本文件和很多网络协议里常见的换行组合。 如果遇到文本在 Windows、Linux、数据库、接口之间来回传递后格式异常,优先检查这里。

Windows 访问网络共享提示“目标电脑的本地安全策略阻止登录”怎么解决?

Windows 访问网络共享提示“目标电脑的本地安全策略阻止登录”怎么解决? 访问 Windows 网络共享时,如果打开类似: \\LQ80KF\LQ-80KF 结果提示“目标电脑的本地安全策略阻止登录”,这通常不是共享路径写错,而是目标电脑的本地安全策略拦住了当前账户的网络登录。 这类问题在局域网共享、打印机共享、老设备共享目录里很常见。 一、最常见原因:共享账户没有密码 最核心的原因通常是:目标电脑上用于共享的本地账户是空密码。 Windows 默认有一条安全策略: 账户:使用空白密码的本地账户只允许进行控制台登录 意思是: 这个账户可以在目标电脑本机登录; 但不能通过网络访问共享; 即使共享权限看起来没问题,也会被安全策略挡住。 所以,当你从另一台电脑访问 \\LQ80KF\LQ-80KF 时,Windows 会认为这是一次网络登录,而空密码账户默认不允许这样登录。 除了空密码之外,也可能存在账户被锁定、登录次数限制、组策略限制等问题,但优先排查空密码最有效。 二、推荐方案:给共享账户设置密码 这是最稳妥、也最安全的解决方式。 在目标电脑,也就是提供共享资源的那台电脑上操作: 右键 此电脑。 选择 管理。 进入 本地用户和组 → 用户。 找到用于共享的账户,例如 LQ-80KF。 右键该账户,选择 设置密码。 设置一个非空密码并保存。 回到访问端电脑,重新访问共享路径。 输入目标电脑的用户名和刚设置的密码。 访问时用户名可以尝试下面两种格式: LQ80KF\LQ-80KF 或: .\LQ-80KF 如果是直接用 IP 访问,也可以使用: 目标电脑名\用户名 例如: LQ80KF\LQ-80KF 这个方案的好处是不用降低系统安全策略,也不需要为了共享长期保留空密码账户。 三、必须用空密码时:关闭空密码网络登录限制 如果现场设备、旧系统或特殊软件要求账户必须为空密码,可以在目标电脑上调整本地安全策略。 注意:这个做法有安全风险,不建议长期使用。只适合内网受控环境,且最好配合防火墙限制访问来源。 操作步骤: 在目标电脑按 Win + R。 输入: gpedit.msc 回车打开 本地组策略编辑器。 依次进入: 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项 找到策略: 账户: 使用空白密码的本地账户只允许进行控制台登录 双击打开,把状态从 已启用 改为 已禁用。 点击 应用 → 确定。 打开命令提示符,执行: gpupdate /force 重启目标电脑后,再重新访问共享。 如果是 Windows 家庭版,没有 gpedit.

误把业务表建到 SQL Server 的 master 里,怎么安全删除?(3726 / 3701 处理)

误把业务表建到 SQL Server 的 master 里,怎么安全删除?(3726 / 3701 处理) 在 SQL Server 里,误把业务表建到 master 并不算罕见。真正麻烦的不是“建错了”,而是后面清理时往往会连续遇到两类报错: 3726:要删除的表正在被外键引用 3701:表不存在,或者你写的库名 / schema / 表名不对,或者当前账号没有权限 这类问题不能靠“强制 DROP”解决,因为 SQL Server 不能直接删除被外键引用的表。正确思路是: 先确认对象到底在哪个库、哪个 schema 下 先删引用这些表的 FOREIGN KEY 再按 子表 -> 父表 顺序删表 如果仍报错,再继续追查引用链 这篇就把这套处理流程整理成一版适合以后回查的实战笔记。 一、先理解这两个报错分别是什么意思 1)3726:表正在被外键引用 这个报错的本质不是“删不掉”,而是: 还有别的表通过 FOREIGN KEY 依赖它,所以 SQL Server 不允许你直接 DROP TABLE。 也就是说,问题不在 DROP TABLE 语法本身,而在依赖关系还没拆掉。 2)3701:表不存在,或者定位错了 这个报错通常有几种常见原因: 表已经被删掉了 表并不在 dbo schema 下 当前库不是 master 你写的对象名和实际表名不一致 当前账号没有对应权限 所以遇到 3701 时,别急着怀疑 SQL 写法,先确认你删的是不是那个真实对象。

如何批量删除 MSSQL 中 tmp1dd8dce773644a6099585853d5a5eddf 临时表

如何批量删除 MSSQL 中 tmp1dd8dce773644a6099585853d5a5eddf 临时表 在 MSSQL 里看到类似 tmp1dd8dce773644a6099585853d5a5eddf 这样的表名时,先不要急着直接删。 这类对象未必是真正意义上的 #临时表,更像是某些程序、ETL、导入工具或中间流程遗留出来的“临时用途表”。如果库里残留很多同类表,最稳的做法不是手工一个个删,而是: 先确认它们是不是可以删 再批量生成 DROP TABLE 语句 最后执行删除 这篇文章给你一个可直接落地的处理方案。 一、先分清:你遇到的可能不是 #临时表 SQL Server 里常见的真正临时表通常长这样: 本地临时表:#tmp 全局临时表:##tmp 它们通常存在于 tempdb 中,生命周期跟会话或连接有关。 而你现在看到的: tmp1dd8dce773644a6099585853d5a5eddf 更像是普通用户表,只是名字像临时表。这类表常见于: 程序批量导入时中转数据 ORM 或低代码工具生成的中间表 任务异常中断后遗留的临时业务表 第三方插件自动创建但未清理的表 所以第一步不是删,而是先确认: 它位于哪个数据库 属于哪个 schema(如 dbo) 是否还有程序在依赖它 是否不止一个同前缀表 二、先查出这类表到底有多少个 如果你只是想找出名字中包含 tmp1dd8dce773644a6099585853d5a5eddf 的表,可以先执行: SELECT s.name AS schema_name, t.name AS table_name, t.create_date, t.modify_date FROM sys.tables t JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name LIKE 'tmp1dd8dce773644a6099585853d5a5eddf%' ORDER BY t.

为什么 Windows 系统的“下载”文件夹经常卡死?

为什么 Windows 的“下载”文件夹经常卡死? 这个问题我自己也反复遇到过:打开“下载”目录很慢,右键会卡,切换视图也卡,甚至资源管理器直接假死。后来发现,很多时候不是磁盘坏了,也不是系统彻底出问题,而是 下载文件夹的模板识别和文件数量一起把资源管理器拖慢了。 一、常见现象 Windows 的“下载”文件夹一旦用久了,经常会出现这些问题: 打开目录明显变慢 鼠标右键卡顿 切换排序、分组、预览时卡住 资源管理器白屏或假死几秒 文件一多以后,几乎每次点进去都要等 很多人会先怀疑: 硬盘有问题 系统变慢了 杀毒软件在扫描 某个扩展菜单冲突 这些情况当然也可能存在,但对“下载”目录来说,更常见的原因其实是另外两个。 二、一个容易被忽略的原因:文件夹模板识别错了 Windows 资源管理器会根据文件夹内容,自动判断这个目录更像哪一种类型,例如: 图片 视频 音乐 文档 常规项目 问题在于,“下载”目录通常什么都有: 安装包 压缩包 图片 视频 文档 临时文件 一旦 Windows 把它错误识别成图片、视频之类的模板,资源管理器就可能额外做很多没必要的事情,比如: 读取更多元数据 尝试生成缩略图 分析媒体信息 做不必要的排序和预览优化 文件一多,这些动作就会明显拖慢“下载”目录的打开速度。 三、直接有效的处理办法 这个问题有一个很实用的修复方式: 操作步骤 在资源管理器中找到 “下载” 文件夹 右键 下载 → 属性 打开 “自定义” 选项卡 找到 “优化此文件夹” 将它改成 “常规项目” 勾选下面的: “将此模板应用到所有子文件夹” 点击 应用 / 确定 这样处理以后,Windows 就不会再把这个目录当成图片库、视频库之类的特殊目录去优化,而是按普通文件夹处理。 我的实际体验是: 勾上这个选项之后,“下载”目录的卡顿问题通常会明显缓解,很多时候当场就能感觉出来。 四、更根本的原因:下载目录文件太多 虽然修改模板很有效,但这通常只是“减负”,不是“治本”。

OpenClaw 微信早报定时任务排障复盘

OpenClaw 微信早报定时任务排障复盘 这次排障表面上看像是“Cron 正常、日志正常、系统也显示 delivered”,但真正的问题根本不在任务有没有执行,而在于:执行完成后,消息是否真的稳定送达当前微信会话。 一、问题现象:后台看起来正常,用户侧却不稳定可见 这次排查的对象主要是两条早报任务: GitHub 早报 油价早报 从 OpenClaw 后台状态来看,它们一开始都不像“坏掉了”的任务: Cron 在正常运行 日志里多次出现 status=ok 甚至还能看到 deliveryStatus=delivered 如果只看这些信息,很容易下结论: 任务已经成功执行,问题不大。 但用户侧的实际体验完全不是这样。消息并没有稳定出现在当前微信会话里,或者即使有“送达”,内容也不一定是用户真正需要的最终早报。 这一步首先说明了一个很重要的问题: 在 OpenClaw 里,status=ok 和 deliveryStatus=delivered 只能说明“系统认为这次运行完成并进行了投递”,但不能直接等同于“用户已经在当前会话里看到了正确结果”。 所以,这类用户可见的定时任务,最终验证标准必须从“后台状态正确”切换到“当前微信会话真实可见”。 二、尝试过的几条链路,为什么都不够稳 排查过程中,先后尝试了几种不同的任务链路: main + systemEvent current / sessionKey 绑定 delivery.mode = none isolated + announce 这些方案看起来都“像是能发消息”,但实际语义并不完全一样。 1)main + systemEvent 这条路更像是把事件投递回主会话,适合需要主会话上下文接力处理的场景。 但它的关键问题是: 它不天然等于“把最终内容稳定发回当前微信会话”。 在定时任务场景里,尤其是要求“到点就给用户发一条最终可读消息”,这条链路并不够直接。 2)current / sessionKey 绑定 这种方式更偏向: 绑定上下文 绑定会话归属 绑定后续处理位置 但它解决的是“任务归谁处理”的问题,不是“最终一定如何投递给用户”的问题。 也就是说: current/sessionKey 更像上下文路由,而不是稳定送达保证。 3)delivery.mode = none 这次排障里,delivery.mode=none 非常容易被误解。

OpenClaw 微信天气定时推送踩坑复盘

OpenClaw 微信天气定时推送踩坑复盘 这次排障花时间的地方,不在天气数据本身,而在 Cron 执行模型、消息投递链路,以及微信会话参数 这三层之间的错位。最终跑通后回头看,问题并不复杂,但中间有几个非常容易误判的坑,值得完整记一遍。 一、问题现象 从周三到今天,天气早报和晚报在系统里看起来都还在正常运行: Cron 任务存在 调度时间正常 运行状态显示 ok 甚至部分记录里还能看到“已投递” 但用户在微信里实际上并没有收到对应的天气消息。 这类问题最容易让人先怀疑两件事: 天气数据源挂了 OpenClaw 的定时任务没跑 但这次都不是。 二、先确认:不是“任务没跑”,而是“跑了但没真正到用户” 第一轮排查,先看 Cron 自身状态和运行记录。 结果很明确: 早报、晚报任务都存在 周三到今天的运行记录都在 任务执行本身没有报错 所以这一步可以先下结论: 问题不在任务触发,而在任务触发后,消息到底有没有真正送达到当前微信会话。 这个判断非常关键,因为它直接决定后面该排查的是: 调度问题 还是投递链路问题 三、第一处坑:isolated + announce 看起来成功,但用户未必看得到 原来的天气任务使用的是 isolated + announce 方式。 它的逻辑大致是: Cron 在隔离会话里跑一个 agent turn 任务完成后通过 announce 投递摘要 这条链路不等同于普通 message 工具直发 这套方式在本次环境下出现了一个很典型的问题: 系统侧显示 delivered=true 但用户微信侧并没有稳定看到消息 也就是说: 系统意义上的“已投递”,并不等于用户终端一定“已看到”。 这就是这次最容易让人误判的地方。 如果只看运行记录,很容易得出“任务没问题”的结论;但从用户视角看,消息就是没有真正到达。 四、第二处坑:不能把旧任务直接从 isolated/agentTurn 改成 main/systemEvent 后面尝试把旧任务直接从: isolated + agentTurn 迁移到:

博客部署记录 - 2026年3月24日

博客部署记录 部署过程 今天成功将 Sonic 博客系统部署到服务器,并配置了 Caddy 反向代理和 HTTPS。 部署步骤 下载 Sonic 最新版本 解压到 /opt 目录 配置 SQLite 数据库 使用 Caddy 配置反向代理(端口 9090 → 443) 开启强制 HTTPS 重定向 恢复数据库备份 关键配置 博客地址:https://nxmes.cn 反向代理:Caddy → localhost:9090 SSL:自动获取 Let’s Encrypt 证书 验证结果 ✅ HTTP 自动重定向到 HTTPS ✅ 博客前台正常访问 ✅ 管理后台正常 ✅ 44篇文章已恢复 ✅ 用户 admin (dhl)

在Java中关闭TLS安全检查

● 在Java中关闭TLS安全检查有几种方法: 方法1:JVM启动参数(推荐) 启动DBAPI时添加以下参数: java -Dcom.microsoft.sqlserver.jdbc.fips=false -Djdk.tls.disabledAlgorithms= -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2 -Dtrust_all_cert=true -jar dbapi-standalone.jar 方法2:修改java.security文件 找到Java安装目录下的 $JAVA_HOME/lib/security/java.security 文件: 注释掉或修改这行 #jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \ include jdk.disabled.namedCurves 改为 jdk.tls.disabledAlgorithms= 方法3:Windows批处理启动 创建 start-dbapi.bat 文件: @echo off set JAVA_OPTS=-Dcom.microsoft.sqlserver.jdbc.fips=false ^ -Djdk.tls.disabledAlgorithms= ^ -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 ^ -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 ^ -Dtrust_all_cert=true java %JAVA_OPTS% -jar dbapi-standalone.jar pause 方法4:环境变量 设置系统环境变量: JAVA_TOOL_OPTIONS=-Djdk.tls.disabledAlgorithms= -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 最简单的方法 直接在命令行运行: java -Djdk.tls.disabledAlgorithms= -jar dbapi-standalone.

windows下删除nul

网上搜了好多方法,其中最多的就是以下方法: rd /s \.\C:\aux del \.\C:\temp\nul.exe 但是对我的不管用 从stackoverflow中看到一个解决方案 前提是安装有Git 打开包含不可删除的文件目录 在空白处,右击,选择Git Bash Here rm nul即可

Cursor,重置成任意版本

Cursor,重置成任意版本同时保留所有配置 1. 备份settings.json 不同操作系统下的位置: Windows: %USERPROFILE%\AppData\Local\Cursor\User\settings.json macOS: ~/Library/Application\ Support/Cursor/User/settings.json Linux: ~/.config/Cursor/User/settings.json 2. 备份扩展 Cursor 扩展存储在以下位置: Windows: %USERPROFILE%\.cursor\extensions macOS: ~/.cursor/extensions Linux: ~/.cursor/extensions 3. 备份其他配置 键盘快捷键: keybindings.json 代码片段: snippets文件夹 这些文件通常与settings.json在同一目录下。 当你想完全重置Cursor时,仅从应用程序文件夹移除程序是不够的,你还需要删除所有相关的配置文件和缓存。 4. 重新安装Cursor https://github.com/flyeric0212/cursor-history-links 该代码仓库维护了 Cursor 各个平台的历史版本下载链接,可以根据需要安装或降级到特定版本。它自动抓取并维护 Cursor 各平台(Windows、macOS、Linux)的历史版本下载链接。 5. 安装后的设置 初次使用:首次打开 Cursor,完成登录以及初始化用户文件夹的生成,之后关闭 恢复配置文件:将之前备份的settings.json、keybindings.json 等复制回相应位置 重新安装扩展: 方法一:从备份的extensions文件夹复制回原位置 方法二:通过Cursor的扩展市场重新安装 验证设置:打开Cursor,确认您的配置已经正确恢复 恢复完各种配置文件之后,打开 Cursor 就和之前一样了,扩展插件、用户设置、快捷键等。

优化和权衡方案

🟢 一、库存独立维护表(库存快照) 当前使用的 SQL: SELECT d.mID, SUM(d.iQty)-SUM(d.oQty) AS mstock FROM IOD d INNER JOIN IO m ON d.RecordID = m.RecordID WHERE ISNULL(m.ReportStatus,0) = 2 GROUP BY d.mID 这种方式实时计算库存,涉及频繁的汇总计算,在大数据量时尤其慢。 建议新增一张库存余额表: 例如: CREATE TABLE InventoryBalance ( mID INT PRIMARY KEY, -- 商品ID CurrentStock INT NOT NULL -- 当前库存数量 ); 优点: 每次只需单行读取,大幅提升速度。 可以更好地应用行级锁,减轻锁竞争。 缺点: 需要额外维护库存余额一致性(通过触发器或应用逻辑更新)。 🟢 二、定时库存汇总(离线库存快照) 一种常见的折中方法,是每隔一段时间汇总一次库存,而非每次读取实时汇总: 每小时或每天凌晨更新一次库存表,库存更新完毕后前台直接读取此库存快照。 每次交易时仅更新快照的增量变化,而不是整体汇总。 优点: 大幅度减少实时汇总的开销,查询速度快。 缺点: 会存在一定的延迟(例如:库存每小时更新一次)。 需要管理增量库存的变化。 🟢 三、库存变动事件化(异步库存更新) 借助消息队列或日志表异步更新库存: 每次库存变化插入一个消息或记录一条日志。 后台定时消费消息,批量更新库存余额。 例如流程: 用户出库 → 写入库存变动消息 → 后台定期消费队列更新库存余额表 优点:

库存校验与负库存预防优化方案调研

问题概述 仓储管理系统中,库存通过视图计算:在并发情况下,多人同时操作可能造成库存校验不准确,出现负库存。例如,两笔操作几乎同时检查到某商品有库存,分别扣减后可能导致库存变为负数。这表明仅靠视图查询在并发下无法保证库存一致性。 为解决上述问题,需要从数据库层面优化库存校验机制,确保库存计算准确,防止出现负库存,并在高并发情况下保持一致性。下面调研几种 MSSQL 中常用且可靠的方案,包括事务与锁机制、并发控制策略(悲观锁/乐观锁)、触发器与约束、库存快照/缓存设计,以及利用消息队列串行化处理等。 事务控制与隔离级别 采用事务来封装库存校验和更新操作是保证一致性的基础。将“检查库存->更新库存”的过程放在同一个事务中,可以确保要么全部成功要么全部失败,避免部分更新导致数据不一致。此外,可以调整事务隔离级别来平衡并发和一致性: 提高隔离级别:在库存校验过程中使用最高的隔离级别 SERIALIZABLE,可防止幻读,确保在事务内查询到的库存数据不会被其他事务插入/修改。例如,在开始事务时执行 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE,然后查询库存,再进行更新。如果有其他事务尝试插入新的出库记录(扣减库存),将被阻塞直到当前事务完成。这样可以避免两个并发事务同时插入扣减记录导致库存计算遗漏彼此的影响。需要注意,Serializable 会加范围锁,可能降低并发度。 锁定读取数据:另一种方法是在读取库存时显式加锁,等价于上述效果。例如使用 HOLDLOCK/UPDLOCK 提示:SELECT SUM(iQty-oQty) FROM IOD WITH (UPDLOCK, HOLDLOCK) WHERE mID=@商品ID。这在读取库存时获取更新意向锁并保持到事务结束,阻止其他事务同时修改相关库存记录。这样可以让并发事务串行化处理相同商品的库存校验。 读已提交快照:如果系统读操作多,可以考虑启用READ COMMITTED SNAPSHOT(行版本控制)。这使读取视图时不阻塞写入,提升并发。但需要谨慎:快照隔离模式下读取到的是数据快照,可能导致并发下每个事务都看到旧的库存值,从而都认为有库存。如果没有配合其他并发控制,反而可能更容易出现超卖。因此通常不会单独依赖快照隔离来防止负库存,而是结合其他机制。 总之,利用事务包裹库存校验和扣减操作,并通过合适的隔离级别和锁定策略,能确保同一时间只有一个事务能修改某商品的库存数据,保证并发安全。 锁机制与行级锁控制 锁机制是数据库保证并发一致性的关键。针对库存扣减,要尽量使用行级锁而非表级锁,锁定最小必要范围,从而既确保数据正确又减少阻塞范围。MSSQL 默认在修改数据时使用行级排他锁 (X 锁) 锁定受影响的行,直到事务提交。我们可以利用这一特性,并通过正确的查询条件和索引,确保只锁定特定商品的库存记录: 排他锁更新:直接更新库存数据会触发 SQL Server 对所更新行加X锁。例如,如果维护有库存表,可以使用单条 UPDATE 语句进行扣减:UPDATE Inventory SET qty = qty - @扣减量 WHERE mID = @商品ID AND qty >= @扣减量。该操作在执行期间会锁定该商品的库存行,其它事务对同一行的更新将被阻塞,只有当前事务完成后才释放锁,从而防止并发超卖。同时,AND qty >= @扣减量 条件确保库存不足时更新不会执行,避免减出负值。 UPDLOCK / XLOCK:在需要先检查后更新的逻辑中,可在检查阶段就获取行级锁。例如: BEGIN TRAN; SELECT qty FROM Inventory WITH (UPDLOCK, HOLDLOCK) WHERE mID=@商品ID; -- 根据qty检验库存是否足够 UPDATE Inventory SET qty = qty - @扣减量 WHERE mID=@商品ID; COMMIT; 这里 WITH (UPDLOCK, HOLDLOCK) 在读取库存时即加上更新锁并保持到事务结束,其它事务此时若也查询同一商品库存(也请求更新锁)会被挂起,必须等待前一事务完成。这样确保了两个并发事务不会同时通过库存校验。 防止锁升级:在批量处理多条库存记录时,SQL Server 可能从行锁升级为页锁甚至表锁,扩大阻塞范围。对此应尽量避免一次事务影响过多行库存,或者使用索引精确定位行。必要时可以使用 ROWLOCK 提示强制使用行锁。但一般只要单次操作记录不多且索引合理,行级锁即可满足需求。 应用锁 (App Lock):MSSQL 提供 sp_getapplock 函数,可以用自定义资源名加锁。比如以“商品ID”作为资源名,请求一个事务级的排他应用锁。这样即便库存更新涉及多张表,也能保证同一商品的相关事务串行化。应用锁粒度更灵活,不会影响不相关的商品。此方式属于高级用法,可在需要更复杂并发控制时考虑。 通过以上措施,利用数据库锁尤其是行级锁,可以确保每次只有一个事务在修改特定商品的库存数据,从而杜绝并发下负库存的出现。但悲观锁会降低并发度,在并发量极高的情形下需权衡性能影响。

mssql-mcp-servers

MS SQL MCP 服务器 1.1 一个易于使用的桥梁,可让 Claude 等 AI 助手直接查询和探索 Microsoft SQL Server 数据库。无需编码经验! 1. 这个工具有什么作用? 此工具允许 AI 助手: 发现 SQL Server 数据库中的表 查看表结构(列、数据类型等) 安全地执行只读 SQL 查询 生成来自自然语言请求的 SQL 查询 2. 示例用例 无需编写 SQL 即可探索数据库结构 mcp_SQL_mcp_discover_database() 获取有关特定表的详细信息 mcp_SQL_mcp_table_details({ tableName: "Customers" }) 运行安全查询 mcp_SQL_mcp_execute_query({ sql: "SELECT TOP 10 * FROM Customers", returnResults: true }) 按名称模式查找表 mcp_SQL_mcp_discover_tables({ namePattern: "%user%" }) 使用分页导航大型结果集 // First page mcp_SQL_mcp_execute_query({ sql: "SELECT * FROM Users ORDER BY Username OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY", returnResults: true }) // Next page mcp_SQL_mcp_execute_query({ sql: "SELECT * FROM Users ORDER BY Username OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY", returnResults: true }) 基于游标的分页可实现最佳性能 // First page mcp_SQL_mcp_execute_query({ sql: "SELECT TOP 10 * FROM Users ORDER BY Username", returnResults: true }) // Next page using the last value as cursor mcp_SQL_mcp_execute_query({ sql: "SELECT TOP 10 * FROM Users WHERE Username > 'last_username' ORDER BY Username", returnResults: true }) 询问自然语言问题 "Show me the top 5 customers with the most orders in the last month" 3.

Cursor for Context7

Context7在Cursor中的使用方法 确保配置正确 首先确认你已经正确配置了Context7 MCP服务器。 配置步骤如下:进入设置 -> Cursor设置 -> MCP -> 添加以下配置:编辑~/.cursor/mcp.json文件 { "mcpServers": { "context7": { "command": "npx", "args": ["-y", "@upstash/context7-mcp"] } } } 使用方法 只需要在你的提示语句中添加"use context7"即可。例如: 如何在Next.js中使用新的after()函数?use context7 或者: 使用React Query如何使缓存失效?请使用context7获取最新文档 工作原理 当你在提示中添加"use context7"(或类似表达)时,Context7会: 检测你询问的是哪个库或框架 提取该库或框架的最新文档和代码示例 根据主题过滤文档(例如"路由"、“验证”、“中间件"等) 将这些最新信息直接注入到LLM的上下文中 使用场景示例 获取最新API信息: 如何在Tailwind CSS 3.4中使用新的grid-flow-col功能?use context7 解决版本冲突问题: React Query v5中useQuery和v4有什么区别?use context7 获取最佳实践: 使用Zod验证表单的最佳实践是什么?use context7 优势 避免LLM生成基于过时训练数据的错误代码 不再出现不存在的API或函数 获得与官方文档质量相当的代码示例 特别适用于快速迭代的库,如Next.js、Zod、Tailwind等 注意事项 确保在提示语句中明确提到你需要查询的库或框架名称 对于大型文档,可能需要更具体的问题,以便Context7能精确过滤相关内容 如果遇到问题,可以尝试在提示中更明确地指定版本,如"Next.js 14” 通过以上方法,你可以在Cursor中充分利用Context7来获取最新的文档信息,避免生成过时或错误的代码。 开源地址:https://github.com/upstash/context7

FRPS 开启心跳认证后,不能使用mstsc远程桌面

原因: mstsc远程桌面协议(RDP)是长连接类型,它跟HTTP不一样,需要服务器一直保持连接。 frp的心跳认证(authenticate_heartbeats=true)会检查客户端(frpc)是否按时发送心跳包。 如果心跳丢失或超时,frps服务器会主动断开连接,包括TCP会话也一并断掉。 mstsc这种长时间没数据变化的远程桌面连接,就很容易在心跳检测阶段被判定为"连接失效" → 直接踢掉! 所以: 开启心跳认证(authenticate_heartbeats = true)之后 ➔ mstsc、sftp、ssh、vnc这类长连接应用,容易掉线或者无法连接! 解决方法: 心跳认证关闭(最简单) authenticate_heartbeats = false 单独给mstsc开一条不受心跳控制的frpc通道 配置不同分组(复杂)

Cursor使用指南

基本命令: Tab:自动填充 与vscode其他代码辅助ai一样,当写代码是,会智能提示,此时按tab接受代码。 Ctrl+K:编辑代码 选中代码,CTRL/CMD + K调出对话框,此时生成内容依据的上下文会是你选中的内容,也可以选中空白区域,属于从0到1:如下对话框右下角可以选择模型 Ctrl+L:回答用户关于代码和整个项目的问题,也可以编辑代码(功能最全面) Ctrl+i:编辑整个项目代码(跨文件编辑代码) 使用 CTRL/CMD + I 能够打开 Cursor 的特殊功能:Composer。Composer 是 Cursor 的特色功能,它的功能就是在一个对话窗口里同时对多个文件进行修改。是专为整个项目设计的,可以通过和模型对话来开发整个项目,过程就和聊天差不多,在会话中可以帮助你创建文件、删除文件、同时编辑多个文件等功能。目前ctrl+L也可以从0到1开发整个项目。 @注记 为了更方便地向大语言模型提供上下文信息,Cursor 内设了不同地 @ 注记,使用 @ 注记能够方便地注入不同类型的上下文信息到你的对话里。 @Files 注记,传递指定代码文件的上下文 @后显示注记列表,选择Files,如下Cursor 会自动弹出对你代码仓库的检索列表,可以输入你想要导入上下文的文件名,而后按下确认键,相应的文件里的内容便会届时自动注入到上下文中;按下确认键;@+指定文件,和下面直接add context一样,且可以直接从左侧目录里对应文件拖进来,效果是一样的: @Code 注记,传递指定代码块的上下文 @后选择code(测试文件中只有一个函数getColumns):点击选中后: @Docs 注记,从函数或库的官方文档里获取上下文 能够从函数或库的官方文档里获取上下文。目前,它只能从可访问的在线文档里获取上下文。因此,你自己写的类似于 JSDoc 之类的文档信息除非你能整一个线上地址。 为外部文档建立知识库进行问答的功能,可以在设置中加入文档,例如加入开发文档作为Cursor的知识库来更好的辅助编程。 @Web 注记,从搜索引擎的搜索内容获取上下文 类似于一种方法,它会默认将你的提问先向搜索引擎进行搜索,然后从搜索结果里提取上下文喂给 LLM。但因为 Cursor 官方没公开透明具体的实现法子,它自个也没调好,实际上使用效果忽好忽差的。 如果你遇到问题想偷懒不打开网页搜报错或是大模型自身的回答无法解决问题,你可以直接使用这个注记。 拓展: 让cursor参考在线API文档直接黏贴即可,黏贴后显示会多一个@(自动加的,相当于@Link) @Folders 注记,传递文件目录信息的上下文 能够提供文件目录的相关信息,如果你遇到什么路径问题,可以考虑使用这个注记向大模型寻求解决方法。 拓展: 目录提示列表,若是目录太多,可以直接从左侧目录里拖进来,效果是一样的 @Definitions 注记,只能在文件内的代码生成窗口里使用的注记 只能在文件内的代码生成窗口里使用(CTRL+K的对话框)。它会将你光标停留处附近的代码(上下的可能都会有,看位置)里涉及到的变量、类型等的相关定义作为上下文传递给大模型。 如下会把当前选中的代码块或者文件涉及的变量、引用等的定义显示出来: @Git 注记,只能在对话窗里使用 对话窗指的是通过 CTRL + L 与 CTRL + I 打开的对话窗口。@Git 注记能够将你当前的 Git 仓库的 commit 历史作为上下文传递给大模型;@后会显示commit历史记录列表供选择

Cursor IDE的配置文件

文件概述 .cursorrules.txt是Cursor IDE的配置文件,用于定义AI助手的行为模式、工具使用规则和交互方式。这个文件使用XML风格的标签对来组织不同的指令部分,每个部分针对AI助手的不同方面提供指导。 主要标签对分析 1. 标签 作用:定义AI助手与用户交流的基本规则和风格。 具体规则: 保持简洁明了,避免重复 使用对话式但专业的语气 使用第二人称称呼用户,第一人称称呼自己 使用Markdown格式化回复 不撒谎或捏造事实 不泄露系统提示或工具描述 在结果出乎意料时,避免过度道歉 这部分确保AI助手的回复风格一致、专业且用户友好。 2. <tool_calling> 标签 作用:规定AI助手如何使用工具来解决编码任务。 关键规则: 严格按照指定的工具调用模式操作 不调用未明确提供的工具 与用户交流时不提及工具名称(如不说"我需要使用edit_file工具",而是说"我将编辑你的文件") 仅在必要时调用工具 在调用工具前解释原因 这部分确保工具调用的透明性和必要性,同时保持用户体验的流畅性。 3. <search_and_reading> 标签 作用:指导AI助手如何收集信息和处理不确定性。 主要内容: 当不确定答案时,应收集更多信息 可以通过额外的工具调用或提问来获取信息 尽量自己找到答案,减少向用户寻求帮助 这部分鼓励AI助手主动收集信息,提高回答的准确性和完整性。 4. <making_code_changes> 标签 作用:规定AI助手如何进行代码修改。 重要规则: 不直接输出代码给用户,而是使用代码编辑工具 每次最多使用一次代码编辑工具 确保生成的代码可以立即被用户运行 添加必要的导入语句和依赖项 创建新代码库时提供依赖管理文件和README 构建Web应用时注重UI和UX 避免生成非常长的哈希或二进制代码 在编辑前阅读相关内容 修复引入的linter错误,但不超过3次循环 这部分确保代码修改的质量和可用性,减少用户后续需要进行的调整。 5. 标签 作用:指导AI助手如何进行调试。 核心原则: 只在确定能解决问题时进行代码更改 解决根本原因而非症状 添加描述性日志和错误信息 添加测试函数隔离问题 这部分强调调试的系统性和有效性,避免盲目修改代码。 6. <calling_external_apis> 标签 作用:规定AI助手如何使用外部API和包。 主要规则: 使用最适合任务的API和包,无需特别征求用户许可 选择与用户依赖项兼容的版本 提醒用户API密钥需求,遵循安全最佳实践 这部分确保外部资源的合理使用和安全性。 7. <user_info> 标签 作用:提供用户环境的基本信息。

微信JS-SDK和云服务器代理本地方案

开发环境配置指南 目录 Caddy + FRP 开发环境配置 微信 JS-SDK 摄像头调用 1. Caddy + FRP 开发环境配置 1.1 服务器配置 Caddy 配置 创建 /etc/caddy/Caddyfile: api.yourdomain.com { tls { protocols tls1.2 tls1.3 } handle /api/* { reverse_proxy localhost:8810 header { Access-Control-Allow-Origin * Access-Control-Allow-Methods "GET, POST, OPTIONS" Access-Control-Allow-Headers "Content-Type, Authorization" } } handle { reverse_proxy localhost:8810 } log { output file /var/log/caddy/api.yourdomain.com.log format json } } FRP 服务端配置 创建 /etc/frp/frps.ini: [common] bind_port = 7000 kcp_bind_port = 7000 token = your_secure_token dashboard_port = 7500 dashboard_user = admin dashboard_pwd = your_secure_password log_file = /var/log/frp/frps.

分享Cursor AI 的12个绝招 写出高质量代码

Cursor12条事项: 项目规则是基础中的基础 上来就设置5-10条清晰的项目规则,让Cursor明确知道你的结构和限制条件。这步太关键了!划重点:直接用/generate rules命令让AI自动为现有代码库生成规则,简直不要太爽! 提示词要精确到位 模糊的提示词 = 垃圾输出,就这么简单!在提示中明确技术栈、行为和约束,就像写一个小型规范文档一样。AI不是读心术,你不说清楚它怎么知道你想要啥?🤔 文件级别的迭代是王道 一次性生成整个项目?醒醒吧!一个文件一个文件来,生成、测试、审查,保持小而集中的工作块。这样出问题了也好定位,改起来不费劲。 测试先行,代码再跟 有一说一,先写测试,锁定它们,然后让Cursor生成代码直到所有测试通过。这操作,666!测试驱动开发配合AI简直是绝配,效率蹭蹭往上涨。 永远别忘了人工审查 AI再强也会翻车,必须人工审查输出并修复任何问题,然后告诉Cursor以修复后的代码作为例子。这步偷懒不得,否则后面哭都来不及😭 精准定位Cursor的注意力 用@file、@folders、@git命令将Cursor的注意力限制在代码库的正确部分上。这就像告诉朋友"看这里看这里",避免它东张西望乱写代码。 设计文档就放在.cursor/目录 把设计文档和检查清单放在.cursor/目录下,这样agent就能完全了解接下来要做什么。上下文越全面,输出质量越高,这是真理! 代码不对别解释,直接改! 如果代码不对,就直接自己写正确的版本。人已麻,Cursor从你的编辑中学习比从解释中学习快多了!有时候与其解释半天,不如直接上手改。 聊天历史是个宝 善用聊天历史来迭代旧的提示,不必每次都从头开始。这个技巧太实用了,可以节省大量重复输入的时间,效率直接拉满!💪 模型选择很重要 根据需求有意识地选择模型:需要精确度就用Gemini,需要广度就用Claude。不同的模型有不同的特长,就像不同的工具适合不同的任务一样。 面对新技术栈,文档是救命稻草 在新的或不熟悉的技术栈中,直接粘贴文档链接,让Cursor逐行解释所有错误和修复方法。别不好意思,让AI当你的技术老师,手把手教你解决问题! 大项目要"过夜索引" 让大项目overnight进行索引,并限制上下文范围以保持性能敏捷。这就像提前做好准备工作,第二天直接开干,效率蹭蹭的~ 小结:结构和控制是关键(至少现在是) 把Cursor当作一个强大的初级开发者 - 如果你指明方向,它可以快速前进很远。但前提是,你得先知道路怎么走!

Windows重启不登录运行bat

Windows服务器重启在不输入用户密码登陆的情况下如何保证自动启动的bat服务能运行 1.问题描述 客户有Windows服务器,经常因为断电重启。上面部署了我们的服务,在自启动项目里配置了启动脚本bat文件。但是由于服务器重启后,没有人输入登陆密码,启动项里面的bat无法把服务正常启动。 2.解决方法 在cmd下输入control userpasswords2命令,启动下面界面 把勾选项目去掉即可。 保存应用时,还需要输入现有管理员密码进行验证。

修改Excel加载项路径

1、WIN+R,运行输入:regedit 打开注册表 2、粘贴下面路径:找到需要修改的加载项双击修改。 3、重启excel 计算机\HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options

计算机意外地重新启动或遇到错误 Windows安装无法继续 若要安装Windows请单击“确定”重新启动计算机。

计算机意外地重新启动或遇到错误 Windows安装无法继续 若要安装Windows请单击“确定”重新启动计算机。然后重新启动安装 支持 mac安装windows10,遇到的错误 出现这个报错可以按照下述步骤操作尝试看下能否正常启动,大概率是没问题的。 1、shift + F10或(shift+fn+f10)或(shift+fn/caps+f10 ) 打开CMD命令行窗口,分别输入 c:\Windows\systemc32 > cd oobe c:\Windows\systemc32 > msoobe 1)按shift+F10或(shift+fn+f10)或(shift+fn/caps+f10 )出命令行窗口 2)输入regedit,找到注册表HKEY_LOCAL_MACHINE\SYSTEM\SETUP\STATUS\ChildCompletion 3)ChildCompletion下面有SETUP.EXE,找到后双击它,将1修改为3即可,确定之后关闭注册表编辑器。 4)点击错误消息框的确定,电脑就会自动重启,重新解析安装包再次进入安装系统。 解决办法来自下面链接: https://baijiahao.baidu.com/s?id=1768078626764688021&wfr=spider&for=pc

mysql user

MySQL是一种常用的关系型数据库管理系统,它允许用户创建、修改和管理数据库。如果你想在MySQL中增加一个用户,可以按照以下步骤进行操作: 连接到MySQL服务器:你需要使用MySQL客户端连接到MySQL服务器。你可以使用命令行工具(如MySQL Shell)或者图形化工具(如phpMyAdmin)来连接。 使用管理员权限登录:使用具有管理员权限的账户登录到MySQL服务器。通常,这个账户是root账户。 创建新用户:使用CREATE USER语句创建一个新用户。语法如下: CREATE USER ‘username’@‘host’ IDENTIFIED BY ‘password’; 其中,‘username’是你想要创建的用户名,‘host’是允许该用户登录的主机名或IP地址,‘password’是该用户的密码。 例如,创建一个名为"myuser"的用户,密码为"mypassword",允许从任何主机登录,可以使用以下语句: CREATE USER ‘myuser’@’%’ IDENTIFIED BY ‘mypassword’; 注意:为了安全起见,建议将’host’参数设置为具体的主机名或IP地址,而不是使用通配符’%’。 授予用户权限:使用GRANT语句为新用户授予适当的权限。语法如下: GRANT privileges ON database.table TO ‘username’@‘host’; 其中,‘privileges’是你想要授予的权限,可以是ALL PRIVILEGES(所有权限)、SELECT(查询权限)、INSERT(插入权限)等。‘database.table’是你想要授权的数据库和表名,如果你想授予所有数据库和表的权限,可以使用通配符’.’。 例如,授予"myuser"用户对所有数据库和表的查询和插入权限,可以使用以下语句: GRANT SELECT, INSERT ON . TO ‘myuser’@’%’; 刷新权限:在完成用户创建和权限授予后,需要使用FLUSH PRIVILEGES语句刷新MySQL服务器的权限缓存,使新的权限生效。语法如下: FLUSH PRIVILEGES; 这样,你就成功地在MySQL中增加了一个用户,并为其授予了适当的权限。 需要注意的是,为了数据库的安全性,建议为每个用户设置一个强密码,并仅授予其所需的最低权限。还应定期审查和更新用户的权限,以确保数据库的安全性和性能

mysql 密码忘记如何修改

1、先在mysql.ini中增加2行配置 [mysqld] skip-name-resolve skip-grant-tables 2、重启mysql服务 3、mysql/bin 目录下输入cmd打开命令行 执行mysql -u root -p,提示输入密码,直接回车 4、命令行输入下面代码修改密码 grant all privileges on . to root@’localhost’ identified by ‘123’; 5、会提示已配置跳过验证; ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement 6、刷新权限权限重新修改密码即可。 flush privileges; 查询密码,查询结果是加密的! show grants for username@localhost; 创建用户 create user ‘sa’@’localhost’ identified by ‘123’; 授予用户权限: grant all privileges on . to ‘sa’@’localhost’ 说明: ‘privileges’是你想要授予的权限,可以是ALL PRIVILEGES(所有权限)、SELECT(查询权限)、INSERT(插入权限)等。‘database.table’是你想要授权的数据库和表名,如果你想授予所有数据库和表的权限,可以使用通配符’.’。 例如,授予"myuser"用户对所有数据库和表的查询和插入权限,可以使用以下语句: GRANT SELECT, INSERT ON .

IIS MIME

IIS服务器不能下载.apk文件的解决步骤: 1、打开IIS服务管理器,找到服务器,右键-属性,打开IIS服务属性; 2、单击MIME类型下的“MIME类型”按钮,打开MIME类型设置窗口; 3、单击“新建”,建立新的MIME类型; 4、扩展名中填写“.apk”, MIME类型中填写apk的MIME类型“ application/vnd.android.package-archive ”或者在"MIME 类型"框中,键入application/octet-stream 5、单击“确定”保存设置。 重启IIS,使设置生效。 现在使用IIS服务器的网站就可以下载.apk文件了。

WINServer2022 激活步骤

WINDOWS2022SERVER 激活步骤 PS C:\Users\Administrator> slmgr -ipk VDYBN-27WPP-V4HQT-9VMD4-VMK7H PS C:\Users\Administrator> slmgr /skms kms.03k.org PS C:\Users\Administrator> slmgr -ato PS C:\Users\Administrator> slmgr.vbs -dlv

SQL SERVER中前后相减,累计求和,多行合并,一行拆多行

累计求和开窗函数sum()over() 使用over结合parttion by 对每个员工每月的销售额进行累计 前后相减,累计求和,多行合并,一行拆多行 --数据 IF OBJECT_ID('TB','u') IS NOT NULL DROP TABLE TB CREATE TABLE tb( IDX INT IDENTITY(1,1), amount int ) INSERT INTO tb(amount) VALUEs (30),(30),(30),(9),(1),(1),(15),(33),(5),(8),(14),(3) 1、前后相减: SELECT * ,(SELECT a.amount-b.amount from tb b where a.idx=B.idx+1)as cha from TB a SELECT *,(SELECT SUM(AMOUNT) FROM TB B WHERE B.IDX<=A.IDX)AS HE FROM TB A IF OBJECT_ID('TB','U')IS NOT NULL DROP TABLE TB CREATE TABLE TB( NAME VARCHAR(30), COURSE VARCHAR(30) ) INSERT INTO TB VALUES ('张三','Java'), ('李四','拉丁舞'), ('王五','C语言'), ('赵六','Python'), ('张三','R语言'), ('张三','SQL'), ('王五','Tableau') select name,(select stuff((select ','+course from tb where name=a.

【IIS】HTTP 错误 500.19 - Internal Server Error

由于WIN10自带IIS只需勾选安装即可,具体如何安装百度一下就可以了。 发布的网站,运行后出现如下错误 网上说出现这种问题的情况大部分的原因是与vs、IIS的安装顺序有关,一半都是先安装IIS,然后再安装vs 网上给出的解决办法 需要重新注册一下AspNet,具体步骤如下: 1、打开运行,输入cmd,进入到命令提示符窗口 2、输入cd C:\Windows\Microsoft.NET\Framework\v4.0.30319进入到C:\Windows\Microsoft.NET\Framework\v4.0.30319 目录 3、输入aspnet_regiis.exe –i 执行既可 我的解决办法 原因:在安装IIS的时候只安装了默认选的那些东西。缺少了AspNet所以才会出现这种问题(如下图) 解决办法: 打开控制面板→找到程序和功能→打开启用或关闭Windows功能→找到Internet Information Services全选即可 最后确认,缺.net6.0桌面运行时,IIS 模块,ModV2

sql server 软链接、跨实例、多实例访问

打开SSMS,新建程序,执行下面sql语句块: EXEC sp_addlinkedserver --链接服务器别名 @server='SQL2019', @srvproduct='', @provider='SQLOLEDB', --要访问的的数据库所在的服务器的ip @datasrc='192.168.0.104' GO EXEC sp_addlinkedsrvlogin --链接服务器别名,sa,pwd 'SQL2019', 'false', NULL,'sa','aa2233' GO 成功执行后,刷新SSMS左侧链接服务器,会出现新建的链接服务器,如下图: 最后我们测试一下,查询被访问的数据库上的表,sql语句类似如下: SELECT * FROM [DBMES].[数据库名].[dbo].[表名]` SELECT * FROM [SQL2019].[clzc].[dbo].[BOM表] Sql跨实例查询服务 --开启跨实例查询服务(Ad Hoc Distributed Queries组件) exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure --关闭跨实例查询服务 exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure --查询应用跨实例 select * from OPENDATASOURCE('SQLOLEDB','Data Source=10.0.49.248;User ID=sa;Password=sa').kdia.dbo.SUBSYS_PVT_CFG; sql多实例局域网访问 1.如图所示,分别有MSSQLSERVER2012与MSSQLSERVER2019两个不同的实例,分别查看实例对应的TCP/IP 2.打开TCP/IP,查看实例对应的端口号 3.SQL Server Management Studio 访问地址 192.

USB转串口 TTL RS-232 RS-485 COM口 UART区别

串口,串口是一种物理接口形式,(硬件)通常指COM接口 ,当然这些接口有着很多标准 接口标准: 串口通信的接口标准有很多,而我们所了解的RS-232C、RS-232、RS-422A、RS-485 都是串口的标准之一 通常使用的是9 针D 形连接器,简称 DB9接口,也称之为RS-232接口,之前串口通信使用的大多都是 DB9 接口 DB9 接头有公头和母头之分,其中带针状的接头是公头,而带孔状的接头是母头,而DB9/DB25接口 ,就称为COM口 UART 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。 单片机中的UART有4个pin(VCC, GND, RX, TX), 用的TTL电平 VCC:供电pin,一般是3.3v, GND:接地pin,板内共地时可以不单独接,板间通信时候必须接上 RX:数据接收引脚 TX:数据发送引脚 TTL电平与RS-232区别: RS232电平, 它是负逻辑电平,它定义+5~+12V为低电平“0”,而-12~-5V为高电平“1” TTL电平(Transistor-Transistor Logic),该电平的逻辑“1”为+5V,逻辑“0”为0V,称为TTL TTL电平标准: 输出 L: <0.8V ; H:>2.4V。 输入 L: <1.2V ; H:>2.0V 需要注意的是RS-232与TTL只是一种电平标准,而COM口和UART口是物理接口,只是COM口肯定使用RS-232标准,而UART一般使用TTL标准 USB 通用串行总线(英语:Universal Serial Bus,缩写:USB) 是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品 ,随着时代的发展,USB接口已经逐渐替代了COM口,成为最主流的接口,现今已经到了USB 3.0 常见的USB接口: USB转TTL 我们知道现在电脑使用的基本都是USB接口,而单片机使用的是TTL标准,那么在嵌入式中我们需要上位机通信,怎么办呢?,这时候便需要一个转换芯片,从而使得电脑(主机)可以通过USB输出TTL电平 ,这便是USB转TTL 那么我们所已知的CH340G CH340E PL2303 、CP2102 等等 ,都是USB转TTL串口的芯片 当然现在普遍使用的为CH340G 主要是因为其安全,耐用并且便宜 满足我们日常的正常使用 在接线时注意单片机RX接转接板TX TX接转接板RX USB转串口(RS-232) 我们知道单片机是UATR口 TTL电平标准,而电脑是USB口 如果我们想用电脑的USB口与单片机串口(COM口)通信,这时就需要使用MAX232之类的电平转换芯片,将单片机TTL电平转换成RS-232电平 ,并且

HTML Color

超文本:指网页中的内容(超链接,图片,视频等) 标记:指标签 网页通过浏览器进行解释执行,通过标签可以对网页中的内容进行解释 html颜色代码表 https://www.cnblogs.com/qqq789001/p/15119307.html <div class="center" > <img src="https://nxmes.cn/upload/upload/1096049cb5f78d4fbd2e11e11ea94c70.png" width=" 300"> </div> <p align="center" style="color:red;font-size:18px;">字体样式</p> <div class="center" style="color:red;font-size:20px;">块居中</div>

PcAnywhere

pcAnywhere 是Symantec公司的一款功能强大的远程控制与管理工具,版本v10.05,可以安装在 Windows 95 、Windows ME、Windows NT 等老电脑,下载地址网上有很多。 一、安装 1.安装pcAnywhere,傻瓜式下一步! 如果你只想控制别的机器,只用设置主控端;若你只想让别的机器控制这台机器,你只用装被控端。 2.安装完成要求重启电脑,然后运行pcAnywhere. 二、先说下被控端的设置 默认的有三大被控瑞(可以任意选择一个修改)我们任选个右键属性,出现如下: 在局域网内,连接项选TCP IP(前面打勾),然后点设置 1.在设置项内可选是否让被控端随系统一起启动 2.下一步,设置呼叫者(就足从远程登陆时要的用户名及密码),点添加用户,设置用户名及密码。 3.设置这个用户的权限 4.确定后下面就多出一你刚加的用户 三、下面再说下主控端的设置。 切换到主控端,同样,你可以任意删加主控端的个数,也可在现有主控端上设置,也可重命名主控端。还足右键要设置的主控端的属性。 1.连接信息为TCP IP(和被控端的相对应) 2.设置项,这里要填被控机器的IP,还有登陆名密码(与你刚设置的被控端相对应) 至此全部设置完成。 3.如下如:需要填写被控端设置的账号和密码,而不是pc电脑的登陆密码 图标说明 名称 图标 主控端 被控端 右下角图标 稍等一下,被控电脑的桌面就出现在你本地屏幕上,你可以窗口操作,也可全屏操作(全屏返回窗口可按ctrl+回车) 参考地址:https://www.docin.com/p-456282150.html

Snipaste

Snipaste 屏幕截图软件超级利器 Snipaste 是一款开发了三年精心打磨出来、简单易用却又强大到让人惊叹的免费屏幕截图软件!Snipaste 名字拆分开来是「截图+贴图」的意思,它并不仅是个普通的截屏软件那么简单。 在功能上,Snipaste 比网上大多数收费和免费的截图工具都要细腻许多,作者对产品的极致追求简直令人佩服!而它还偏偏还是款免费的软件,干净安全、没广告没捆绑。如果你是编辑、程序员、设计师、产品经理或经常需要截屏标注图片等工作,那么使用过 Snipaste 之后你一定会对它赞赏有加…… 这款截图工具的核心用法很简单,启动软件后,按下键盘 F1 键开始截图,按下 F2 键获取截图内容。但在此背后却蕴含了非常强大丰富的功能。很多网友使用之后纷纷表示已经可以淘汰 QQ 截图、Jing、FastStone、WinSnap、Snagit、PicPick 等工具了. 智能截图:自动检测界面元素边界 这一细节功能真心值无数个赞!相比大多数截屏软件只能检测整个应用窗口边界,Snipaste 对界面元素的判定让你操作时可以更加精准快捷,下面的动图就可以让你直观地感受到这个功能的强大之处 精确控制截图范围 你可以可用鼠标拖放或者键盘快捷键移动或调整截图框大小,实现截图取景框的像素级精准移动。 唯一比较可惜的是,Snipaste 还没有提供「滚动截图」和 GIF 录屏的功能,不过作者也表示将会争取尽快实现了,大家期待吧…… 详细了解请移步异次元世界: https://www.iplaysoft.com/snipaste.html

SQL使用 存储过程 清空系统数据

#清空数据 create proc [dbo].[initErp] as begin --清空业务表数据 declare @tableName nvarchar(128) declare @sql varchar(2048) declare tb_cur cursor for select distinct TableName from JU_TemplateTable where TableType in(0,1,2) and (Created = 1 or Created = 2) and tablename not in('字典表','字典表s','状态表','帮助表','帮助表s') open tb_cur fetch next from tb_cur into @tableName while (@@fetch_status=0) begin set @sql = 'if exists (select * from sys.tables where name='''+ @tableName+ ''' and left(name,3)<>''JU_'') truncate table '+@tableName exec(@sql) print(@sql) fetch next from tb_cur into @tableName end close tb_cur deallocate tb_cur --清除消息过程表 truncate table JU_AlertMessage truncate table JU_AlertRun truncate table JU_AutoCodeDisused truncate table JU_AutoCodeRegister truncate table JU_AutoReportRun truncate table JU_BackupPlan truncate table JU_BaiduFaceIdentify truncate table JU_FileInfo truncate table JU_Message truncate table JU_SMS truncate table JU_SysLog truncate table JU_SysDebugLog truncate table JU_WebChatMsg truncate table JU_WeChatMessage truncate table JU_WeChatPay truncate table JU_WorkflowInstance truncate table JU_WorkflowTask truncate table JU_WorkflowTaskLog --复原种子 update JU_ReportSeed set Seed = 100 update JU_Seed set Seed = 100 where Keyword = 'JU_Report.

SQL 日期格式转换

–时间间隔函数 SELECT datediff(dd,GETDATE(),‘2017-7-30’) –日期加减函数(正为加,负为减) SELECT dateadd(dd,30,GETDATE()) –获取当前日期(如:yyyymmdd) select CONVERT (nvarchar(12),GETDATE(),112) –获取当前日期(如:yyyymmdd hh:MM:ss) select GETDATE() –获取当前日期(如:yyyy-mm-dd) Select Datename(year,GetDate())+’-’+Datename(month,GetDate())+’-’+Datename(day,GetDate()) –获取当前日期(如:yyyy/mm/dd) select DATENAME(YEAR,GETDATE())+’/’+DATENAME(MONTH,GETDATE())+’/’+DATENAME(DAY,GETDATE()) –获取几种日期 select DATENAME(YEAR,GETDATE()) –年份(YYYY) select DATENAME(YY,GETDATE()) select DATENAME(MM,GETDATE()) –月份 select DATENAME(DD,GETDATE()) –日期 select dateName(hh,getdate()) –获取小时 select DATENAME(MI,GETDATE()) –获取分钟 select DATENAME(SECOND,GETDATE()) –获取秒 select DATENAME(WEEK,GETDATE()) –获取当前星期(周)是这一年中的第几个星期(周) select DATENAME(WEEKDAY,GETDATE()) –星期几 select CONCAT(SUBSTRING(身份证,7,4),’-’+SUBSTRING(身份证,11,2),’-’,SUBSTRING(身份证,13,2)) –日期转换 –例如2011-10-24 15:57:16 select CONVERT(varchar, getdate(), 120 ) select CONVERT(varchar,GETDATE(),111)+’ ‘+DATENAME(HH,GETDATE())+’:’+DATENAME(MI,GETDATE())+’:’+DATENAME(SECOND,GETDATE()) –例如20111024155657 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),’-’,’’),’ ‘,’’),’:’,’’) –例如2011/10/24 select CONVERT(varchar(12) , getdate(), 111 )

Win10开机后重启一次才进入系统和关闭睡眠

Win10开机后必须再重启一次才能进入系统的解决方法: Win10笔记本电脑不知道怎么回事开机后无法正常进入系统,每次都必须再重启一次才能进入身份验证,成功登录到系统 进入系统桌面后,在右下角任务栏找右击电源图标,选择打开电源选项 点击“选择电源按钮的功能 找到并点击“更改当前不用的设置,取消“关机设置”一栏下“启用快速启动”的勾选,并点击保存修改 完成上述设置步骤后必须再重启一次才能进入系统;亲测有效。 Win10 关闭睡眠 计算机设置,找到电源选项 更改高级电源设置

Python Virtualenv Flask

Windows安装virtualenv和flask 下载安装Python,配置环境变量,需要安装pip 或 easy_install Python下载地址:https://www.python.org/downloads/ Pip 安装方法:参考 上一篇 Python 工具箱 - Awespykit easy_install下载地址:http://pypi.python.org/pypi/setuptools 找到正确的版本进行下载。 选择一个盘配置虚拟环境,例如D盘,cmd进入D盘,执行:virtualenv flask ,得到D盘中flask虚拟环境文件目录 D:\>virtualenv flask created virtual environment CPython3.8.6.final.0-64 in 1151ms creator CPython3Windows(dest=D:\flask, clear=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\Administrator\AppData\Local\pypa\virtualenv) added seed packages: pip==20.2, setuptools==49.2.0, wheel==0.34.2 activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator 然后cd到D盘的 flask 目录的Scripts下,输入activate.bat 进入虚拟环境(红框中flask代表已进入虚拟环境) 虚拟环境下 执行pip install flask (flask) D:\flask\Scripts>pip install flask Collecting flask Using cached Flask-2.3.2-py3-none-any.whl (96 kB) Collecting click>=8.1.3 Using cached click-8.1.3-py3-none-any.whl (96 kB) Collecting itsdangerous>=2.

SQL 禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项

SQL 禁止在 .NET Framework 中执行用户代码。启用 “clr enabled” 配置选项 解决办法是执行以下脚本: exec sp_configure 'show advanced options', '1'; go reconfigure; go exec sp_configure 'clr enabled', '1' go reconfigure; exec sp_configure 'show advanced options', '1'; go

Windows 2012server 出现身份验证错误

远程登录服务器W2012时报错,出现身份验证错误,要求的函数不受支持。 解决方法: 进入服务器管理器→本地服务器 选中远程桌面的“已启用”按钮会出现下图,将“允许远程连接到此计算机”下方的“√”去掉即可; 此时返回远程连接工具,应该就可以了,亲测有效。

[Android工具] ESP8266一键配网

[Android工具] ESP8266一键配网 物联网开发,目前主流的 WIFI 配置模式有以下 2 种: 智能硬件处于 AP 模式(类似路由器,组成局域网),手机用于 STA 模式 手机连接到处于 AP 模式的智能硬件后组成局域网,手机发送需要连接路由的 SSID 及密码至智能硬件,智能硬件主动去连接指定路由后,完成配网 一键配网(smartConfig)模式 智能硬件处于混杂模式下,监听网络中的所有报文;手机 APP 将 SSID 和密码编码到 UDP 报文中,通过广播包或组播报发送,智能硬件接收到 UDP 报文后解码,得到正确的 SSID 和密码,然后主动连接指定 SSID 的路由完成连接。 AP 模式: AP 是 (Wireless) Access Point 的缩写,即 (无线) 访问接入点。简单来讲就像是无线路由器一样,设备打开后进入 AP 模式,在手机的网络列表里面,可以搜索到类似 TPLINK_XXX 的名字(SSID)。 连接步骤: 1. 智能硬件设备初始化并进入 AP 模式 2. 手机扫描 WIFI 列表:扫描到智能硬件设备后(SSID)连接该智能硬件设备,通过 UDP 发送 经过 AES 加密过的 ssid/password/token 3. 智能硬件设备通过 UDP 包获取配置信息,切换网络模式连接 WIFI 后配网完成 smartConfig 原理浅析 在没有和其他设备(支持 smartConfig 技术)建立任何性质的通讯链路的情况下, 配置该设备接入 WIFI 网络 普通权限的应用程序是没有能力完全控制和定义传输层及下层所有协议数据的, 唯一可以完全控制的就是应用层数据 本质上就是将 UDP 包头的数据长度作为 smartConfig 的数据,APP 端和设备端共用一套编码表即可解析数据 TCP/IP 协议栈中的网络层和传输层的数据结构 常用的网络层协议是 IPv4, IPv4 的头部绝大多数情况下都是定长的20字节 传输层协议是 UDP, 因为 UDP 协议头部为定长的 8 字节

Mac 下使用 chmod 修改文件权限

chmod 用户+操作+权限 文件 用户部分: 使用字母 u 表示文件拥有者 (user), g 表示拥有者所在群组 (group), o 表示其他用户 (other), a 表示全部用户 (all, 包含前面三种用户范围) 操作部分: + 符号表示增加权限, - 符号表示取消权限, = 符号表示赋值权限 权限部分: r 符号表示可读 (read), w 表示可写 (write), x 表示可执行权限 (execute) sudo chmod 777 -R frp.sh 文件 sudo 为系统超级管理员权限. chmod 改变一个或多个文件的存取模式 三个数字从前到后分别表示 u、g、o 三种用户类型的访问权限 755 代表用户对该文件拥有读、写、执行的权限, 同组的其他人员拥有执行和读的权限, 没有写的权限, 其它用户的权限和同组人员一样. 777代表, user, group ,others ,都有读写和可执行权限 -R 可选, 递归修改目录文件及其子目录中的文件类型 查看权限 修改权限 常见权限

小米盒子刷机过程,精简去广告开机直达第三方App

小米盒子刷机精简系统 1、恢复出厂设置 2、型号7次,开启开发者 3、关闭自动更新,关闭屏保,休眠 4、开启未知,adb调试 5、插入USB线,查看版本是否符合,查看已连接列表是否有wifi 6、如果没有wifi,adb tcpip 5555,开启wifi调试 以上基本操作完成后开始精简和安装app 1、先安装无广告桌面(当贝,氧气等) 2、安装要开机启动的app(电视家) 3、安装AnyLauncher(开机启动app) 4、打开AnyLauncher,设置启动app,并设置守护进程 说明: 如果设置了开机启动电视家,守护进程是any,整个系统就锁死在电视家上了 一般情况下锁定桌面程序为守护进程 使用adb命令报错解决办法: 执行adb报错: server version (32) doesn’t match this client (41); killing,解决步骤: 输入命令:netstat -ano|findstr “5037” 输入:tasklist |findstr “12692” adb tcpip 5555(开启WIFI链接) 最后附上bat文件 @echo off :begin title 电视精简工具 Setlocal EnableDelayedExpansion attrib +h ".\root\logo" >nul color 16 adb kill-server echo. ****************************************************************** echo. echo. 电视机跟电脑要在同一网下 echo. echo. 并记下电视机IP地址在下方输入,此破解为小米系统适用, echo. echo. 切勿尝试拿去破解其它型号!!!切勿尝试拿去破解其它型号!! echo. echo. 注意得确保程序名为英文,名字不能有空格!!192.168.0.106 echo. echo. echo. ****************************************************************** echo.

用DTU做数采,节约成本

硬件介绍: 本次使用型号:ZL520 ZL5xx系列SDRTU对应配置V5 ZL4xx系列SDRTU对应配置V4 硬件参数 5-24V输入,过压过流防反接 RS485 x 1, TVS,防雷,过流 USB x 1(用于固件更新,日志) DI x 2,AI x 2 ETH x 1,WIFI x 1 POUT x 1(VIN、 5V可选) 软件支持 局域网配置参数 基本数传(TCP、UDP、HTTP、MQTT) DI,AI,DO功能(虚拟设备) Modbus解析主机 DTU 图解 传感器图解 驱动安装 安装 CH340 串口 USB驱动 点我下载 下载安装DTU配置工具 注意不要将软件安装到C盘,容易出现问题; http://wiki.developlink.cloud/download/DevelopLink_SDRTU Setup 2.2.9.exe 配置DTU 安装天线,并通电,按说明文档(图解)接好线。 将USB调试线一头插入DTU的type-c口,一头插入电脑端USB。 打开 DTU 配置软件,选择左侧系统配置,第一次需选择链接方式为串口,并打开串口,如下图: 选择DTU配置,参数配置选择 V5,在基本参数中配置WIFI信息,其他默认 WIFI:(加密方式,WIFI名称,WIFI密码) 以太网RJ45说明: WIFI环境不稳定的情况下,可将RJ45配置为静态地址,当做调试接口。(需关掉DHCP) DTU重新启动后,关闭并重新打开调试软件按下图操作 重启之后用网络(RJ45/WIFI)调式: 网络连接不了的情况下 或 第一次链接DTU的时候必须使用串口,因为串口不能同步DTU配置,;串口用于调试和写入固件,补丁使用。 附模板模式代码: function(tm,td,ex) tm.c = "101" return table.merge(tm, ex) end 最后别忘记写入配置,也别忘了导出JSON配置做备份。 下一篇MQTT!

Hello Sonic

Hello Sonic 如果你看到了这一篇文章,那么证明你已经安装成功了,感谢使用 Sonic 进行创作,希望能够使用愉快。 相关链接 官网:https://github.com/go-sonic 主题仓库:https://github.com/go-sonic/default-theme-anatole 开源地址:https://github.com/go-sonic/sonic 在使用过程中,有任何问题都可以通过以上链接找寻答案,或者联系我们。 这是一篇自动生成的文章,请删除这篇文章之后开始你的创作吧!