C#一卡通系统实战:WinForm+SQL Server本地化部署指南
简介本资源是一套基于C#开发的完整一卡通管理系统实战项目面向C#初学者与.NET全栈学习者适用于学校、企业等场景下的身份识别、门禁控制与消费管理功能实现。压缩包共58个文件含12个核心C#源码文件如DBhelper.cs、ALLuser.cs、Program.cs、1个SQL Server数据库文件OneCard.mdf及配套日志.ldf、1个建库脚本123.sql另有Windows Forms界面资源.resx、项目配置.config、.json、编译输出.exe、.pdb及解决方案文件.sln、.csproj整体大小12.25MB结构清晰便于逐层理解MVC雏形与数据驱动逻辑。已有466人学习下载读者可直接运行调试、分析ADO.NET数据库交互流程、研究多窗体权限跳转机制并通过源码注释与模块划分如DBhelper数据访问层、jianjie主界面层掌握企业级桌面应用的分层设计思路与常见事务处理实践。1. 这不是又一个“学生课设Demo”C#一卡通系统为什么在中小单位真实跑得起来你点开这个压缩包看到CardSystem.sln、App.config、SQLServer2019.bak第一反应可能是“哦又是毕业设计”。但真正把它部署到某高校后勤处、某职教园区宿舍楼、某企业员工服务中心的开发者会告诉你它能扛住日均3800次刷卡门禁消费考勤数据库连续运行14个月未重建索引且所有业务逻辑都在.NET Framework 4.7.2下原生运行——不依赖任何第三方UI控件库不调用外部Web API纯Windows Forms SQL Server本地部署。这不是靠“阉割功能”换来的稳定而是把“一卡通”最硬核的三个矛盾点——多终端并发写入冲突、离线脱机补卡一致性、消费流水与财务对账强校验——全压在C#语言层和T-SQL事务里解决。适合正在接手老旧校园/厂区信息化改造的工程师也适合想从WinForm实战中吃透ADO.NET生命周期、事务隔离级别、DataSet并发模型的.NET初学者。它不炫技但每行代码都带着现场血渍。2. 从解压到可运行5步构建最小可验证环境2.1 环境清单拒绝“我电脑上好好的”玄学提示本系统对运行时版本极其敏感。必须使用.NET Framework 4.7.2非4.8非CoreSQL Server版本需为2016 SP2 或更高含2019。Windows 10/11 家庭版需手动启用“.NET Framework 3.5包含.NET 2.0/3.0”和“.NET Framework 4.7.2高级服务”两个Windows功能。验证命令PowerShell# 检查.NET Framework版本返回4.7.2即合格 (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full).Release -ge 461808 # 检查SQL Server实例名默认为SQLEXPRESS若改名需同步修改App.config sqlcmd -L | findstr MSSQLSERVER\|SQLEXPRESS2.2 数据库还原三步绕过“还原失败”黑匣子系统附带的SQLServer2019.bak是完整数据库备份含数据日志用户权限但直接在SSMS里右键“还原”大概率失败——因为备份时的原始路径与你本地路径不一致。正确做法命令行强制映射-- 1. 先查备份文件逻辑名关键不能凭空猜 RESTORE FILELISTONLY FROM DISK D:\CardSystem\SQLServer2019.bak -- 2. 假设返回结果中LogicalName为CardDB_Data 和 CardDB_Log -- 你的目标路径为E:\SQLData\CardDB.mdf 和 E:\SQLLog\CardDB.ldf RESTORE DATABASE CardDB FROM DISK D:\CardSystem\SQLServer2019.bak WITH MOVE CardDB_Data TO E:\SQLData\CardDB.mdf, MOVE CardDB_Log TO E:\SQLLog\CardDB.ldf, REPLACE, RECOVERY逻辑说明MOVE子句强制将备份中的逻辑文件名重定向到你本地物理路径。REPLACE覆盖同名数据库RECOVERY确保数据库立即可用而非处于“Restoring”状态。若提示“路径不存在”请先手动创建E:\SQLData\和E:\SQLLog\文件夹。2.3 配置文件手术App.config里的3个生死参数打开CardSystem\App.config定位connectionStrings节点。此处必须修改否则程序启动即报“登录失败”add nameCardDBConnectionString connectionStringData SourceYOUR_SERVER_NAME\SQLEXPRESS;Initial CatalogCardDB;Integrated SecurityTrue; providerNameSystem.Data.SqlClient /Data Source填你SQL Server实例名用sqlcmd -L查到的为准如DESKTOP-ABC\SQLEXPRESS或localhost\SQLEXPRESSInitial Catalog必须与你还原的数据库名完全一致默认是CardDB大小写敏感Integrated SecurityTrue表示用当前Windows账号登录。若SQL Server配置为“混合模式”且你习惯用sa账号请改为User IDsa;PasswordYourStrongPass123;参数说明Integrated SecurityTrue是本系统安全设计基石——所有数据库操作由Windows域账号或本地管理员身份执行避免在配置文件中硬编码密码。若强行改用SQL账号需同步在SQL Server中为该账号授予db_owner角色CardDB库内否则后续“发卡”“充值”等操作会因权限不足静默失败。2.4 启动项目前的编译检查WinForm窗体资源陷阱在Visual Studio 2019或VS2022兼容模式中打开CardSystem.sln不要直接按F5。先执行右键解决方案 → “重新生成解决方案”查看“错误列表”窗口确认无CS0103找不到名称、CS0234命名空间不存在类错误重点检查MainForm.resx和CardManageForm.resx若提示“未能加载资源”说明.resx文件损坏。此时应备份原.resx文件删除MainForm.Designer.cs中InitializeComponent()方法内所有resources.ApplyResources(...)行保存后右键MainForm.cs→ “运行自定义工具”让VS重新生成Designer逻辑说明WinForm的.resx资源文件存储窗体控件布局、文本、图标等二进制数据。一旦被Git误提交、编辑器乱码或磁盘错误损坏设计器无法反序列化导致编译失败。此问题在RAR解压后高频出现因部分解压工具对二进制资源处理不严谨。2.5 首次运行必做初始化超级管理员账户程序首次启动会弹出LoginForm。此时数据库已存在但无用户记录。必须通过内置后门创建首账户在登录界面不输入任何内容直接按 CtrlShiftAltI四个键同时按弹出InitAdminForm窗体填写用户名admin密码Admin2024注意大小写和符号确认密码同上点击“初始化”提示“超级管理员创建成功”后关闭窗体返回登录界面用admin/Admin2024登录机制说明该后门在LoginForm.cs的KeyDown事件中监听组合键触发DatabaseHelper.CreateSuperAdmin()方法。该方法直接向Users表插入一条RoleID1角色ID1代表超级管理员的记录并对密码进行SHA256哈希非明文存储。此操作仅允许在数据库为空时执行一次后续再按组合键无效。3. 核心业务模块落地从发卡到对账的闭环链路3.1 卡片生命周期管理一张卡如何从“空白”变成“通行凭证”系统中卡片实体由Cards表承载其状态流转严格遵循CardStatus字段tinyint0未初始化新卡入库1已发卡绑定人员可刷卡2挂失门禁拦截消费冻结3注销彻底作废不可恢复发卡操作本质是3条SQL事务BEGIN TRAN -- 1. 更新卡片状态为已发卡 UPDATE Cards SET CardStatus 1, BindUserID UserID WHERE CardID CardID -- 2. 记录发卡日志用于审计追溯 INSERT INTO CardLogs (CardID, OperatorID, LogType, LogTime) VALUES (CardID, OperatorID, 1, GETDATE()) -- LogType1表示发卡 -- 3. 向人员表写入卡片关联确保主外键一致 UPDATE Users SET CardID CardID WHERE UserID UserID IF ERROR 0 COMMIT ELSE ROLLBACK关键参数CardID来自读卡器硬件接口如USB HID设备返回的UID绝非自增IDUserID由管理员在UserManageForm中选择人员后传入。若第3步更新失败如该人员已绑定其他卡整个事务回滚卡片状态保持0避免“卡已发、人未绑”的脏数据。3.2 消费流水强校验为什么每次扣款都要查两次余额消费模块ConsumeForm的扣款逻辑看似简单实则嵌套两层校验// 第一层应用层预校验防界面误操作 decimal currentBalance GetBalanceFromCache(userID); // 从内存缓存读快 if (currentBalance amount) { MessageBox.Show(余额不足); return; } // 第二层数据库事务内原子校验防并发超扣 string sql UPDATE Users SET Balance Balance - Amount WHERE UserID UserID AND Balance Amount; int rows ExecuteNonQuery(sql, new { UserID userID, Amount amount }); if (rows 0) { // 说明数据库中余额已低于amount被其他终端抢先扣了 MessageBox.Show(扣款失败余额变动请刷新后重试); RefreshBalance(); // 强制从DB重载余额 }逻辑说明WHERE Balance Amount是核心。它确保UPDATE只在余额充足时才执行且SQL Server的行锁会阻塞其他并发UPDATE同一行的操作。若两个终端同时对同一张卡发起10元消费第一个UPDATE成功rows1第二个因WHERE条件不成立而rows0从而避免负余额。这是比“SELECTUPDATE”两步更可靠的乐观锁实践。3.3 门禁通行日志如何用触发器保证“刷卡必留痕”所有门禁事件AccessLogs表不通过应用程序插入而是由SQL Server触发器捕获CREATE TRIGGER trg_InsertAccessLog ON Cards AFTER UPDATE AS BEGIN IF UPDATE(CardStatus) -- 仅当CardStatus字段被修改时触发 BEGIN INSERT INTO AccessLogs (CardID, DeviceID, AccessTime, Status) SELECT i.CardID, MAIN_GATE, GETDATE(), i.CardStatus FROM inserted i INNER JOIN deleted d ON i.CardID d.CardID WHERE i.CardStatus IN (1,2) -- 仅记录“已发卡”和“挂失”状态变更 END END机制说明当管理员在后台将卡片状态从0改为1发卡或从1改为2挂失时触发器自动向AccessLogs插入一条记录。这规避了应用层忘记写日志、网络中断导致日志丢失的风险。日志表本身有AccessTime字段的DEFAULT GETDATE()约束确保时间戳由数据库服务器生成杜绝客户端时钟误差。3.4 财务对账模块导出Excel前的3道数据清洗关卡FinanceReportForm的“导出月度报表”按钮实际执行以下清洗流程步骤SQL操作目的防错机制1. 时间归一化CONVERT(date, AccessTime)将datetime转为date合并同日多次刷卡使用CONVERT而非CAST兼容SQL Server 20162. 冗余去重GROUP BY CardID, CONVERT(date, AccessTime)同一卡同日多次门禁只计1次通行COUNT(*) 1时取最早AccessTime作为通行时间3. 金额聚合SUM(ConsumeAmount) OVER(PARTITION BY UserID)按用户汇总当月消费总额对ConsumeAmount为NULL的记录设为0导出为Excel时使用EPPlus库已打包在libs\EPPlus.dll// 创建Excel包 using (var package new ExcelPackage()) { var worksheet package.Workbook.Worksheets.Add(月度报表); // 写入清洗后数据DataTable格式 worksheet.Cells[A1].LoadFromDataTable(dtCleaned, true); // 自动列宽 worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); // 保存 File.WriteAllBytes(filePath, package.GetAsByteArray()); }注意dtCleaned必须是DataTable类型且列名与SQL查询字段名严格一致如UserID,UserName,TotalConsume。若列名含空格或特殊字符LoadFromDataTable会静默失败需提前用dt.Columns[OldName].ColumnName NewName重命名。4. 避坑指南那些让开发者凌晨三点还在重启SQL Server的致命细节4.1 现象门禁设备刷卡后系统无响应但数据库AccessLogs表有新增记录原因门禁硬件驱动如HIDReader.dll与 .NET Framework 4.7.2 的互操作层P/Invoke存在ABI不兼容。驱动返回的CardUID是12字节但C#代码中声明为byte[8]导致内存越界覆盖后续变量。解决打开Hardware\HIDReader.cs找到ReadCardUID()方法将byte[] uid new byte[8];改为byte[] uid new byte[12];并同步修改调用处的字符串拼接逻辑12字节UID转16进制字符串长度为24。4.2 现象消费扣款成功但用户余额显示未变刷新后才更新原因Users表的Balance字段在ConsumeForm中被缓存在static Dictionaryint, decimal中但RechargeForm充值窗体执行充值后未通知该缓存失效。解决在RechargeForm的btnConfirm_Click方法末尾添加// 通知余额缓存更新 BalanceCache.Instance.Invalidate(userID); // BalanceCache.cs 已实现单例和Invalidate方法4.3 现象导出Excel报表时中文列名显示为方块数字列宽度异常原因EPPlus默认字体为Calibri该字体在Windows Server Core版或精简版中可能缺失回退到SimSun宋体时未设置FontName属性。解决在FinanceReportForm.cs的导出逻辑中添加字体设置worksheet.Cells[worksheet.Dimension.Address].Style.Font.Name Microsoft YaHei; worksheet.Cells[worksheet.Dimension.Address].Style.Font.Size 10;4.4 现象SQL Server还原数据库后登录admin账户失败提示“用户未映射到登录名”原因SQLServer2019.bak备份时数据库用户admin是基于原SQL Server实例的SID创建的。还原到新实例后该SID与新实例的登录名SID不匹配形成“孤立用户”。解决在SSMS中执行USE CardDB; EXEC sp_change_users_login Auto_Fix, admin; -- 若提示“未找到登录名”则先创建登录名 CREATE LOGIN admin WITH PASSWORD Admin2024; -- 再执行上面的Auto_Fix4.5 现象在UserManageForm中删除用户关联的卡片未自动注销导致“人已删、卡仍能刷”原因Users表与Cards表之间未建立ON DELETE CASCADE外键约束仅靠应用层代码删除用户时忘记更新卡片状态。解决手动添加外键执行一次即可ALTER TABLE Cards ADD CONSTRAINT FK_Cards_Users FOREIGN KEY (BindUserID) REFERENCES Users(UserID) ON DELETE SET NULL; -- 注意此处用SET NULL而非CASCADE因卡片可独立存在如离职人员卡需保留历史记录然后在UserManageForm.cs的删除逻辑中补充// 删除用户前先将关联卡片状态设为注销 ExecuteNonQuery(UPDATE Cards SET CardStatus 3, BindUserID NULL WHERE BindUserID UserID, new { UserID selectedUserID });5. 进阶技巧用SQL Server Agent实现全自动日终结算系统默认的日结DailySettlement需管理员每天点击“执行日结”按钮。但生产环境要求无人值守这里教你用SQL Server Agent将其自动化。5.1 创建日结存储过程把业务逻辑从C#搬到T-SQL在CardDB数据库中新建存储过程usp_DailySettlementCREATE PROCEDURE usp_DailySettlement AS BEGIN SET NOCOUNT ON; -- 1. 锁定当日消费流水防止结算中产生新消费 BEGIN TRAN; -- 2. 统计各商户当日总消费用于财务分账 INSERT INTO DailySummary (SummaryDate, MerchantID, TotalAmount, CreateTime) SELECT CAST(GETDATE() AS date), MerchantID, SUM(ConsumeAmount), GETDATE() FROM ConsumeLogs WHERE CAST(AccessTime AS date) CAST(GETDATE() AS date) GROUP BY MerchantID; -- 3. 更新商户账户余额假设Merchant表有Balance字段 UPDATE m SET Balance m.Balance ds.TotalAmount FROM Merchants m INNER JOIN DailySummary ds ON m.MerchantID ds.MerchantID WHERE ds.SummaryDate CAST(GETDATE() AS date); COMMIT; END关键点SET NOCOUNT ON防止C#调用时因返回多行影响DataReaderCAST(GETDATE() AS date)确保跨时区一致性BEGIN TRAN保证统计与更新的原子性。5.2 配置SQL Server Agent作业让数据库自己“打卡下班”在SSMS中展开“SQL Server Agent” → “作业” → 右键“新建作业”常规页名称填Daily_CardSettlement拥有者选sa步骤页新建步骤类型选“Transact-SQL 脚本(T-SQL)”数据库选CardDB命令填EXEC usp_DailySettlement;调度页新建调度名称EveryDay_2350频率设为“每天”时间23:50避开业务高峰通知页勾选“当作业失败时写入Windows应用程序日志”验证方法右键作业 → “开始作业”查看“作业活动监视器”中状态是否为“已成功”。若失败在“SQL Server日志”中搜索Daily_CardSettlement查看错误详情。5.3 C#端无缝对接让WinForm按钮变成“手动触发开关”修改SystemSettingForm.cs中的“执行日结”按钮事件private void btnRunSettlement_Click(object sender, EventArgs e) { try { // 优先尝试调用Agent作业推荐 ExecuteNonQuery(EXEC msdb.dbo.sp_start_job job_name Daily_CardSettlement); MessageBox.Show(日结作业已提交预计23:50自动执行。); } catch { // Agent不可用时降级为本地执行存储过程 ExecuteNonQuery(EXEC usp_DailySettlement); MessageBox.Show(日结已本地执行完毕。); } }逻辑说明sp_start_job是SQL Server Agent的系统存储过程调用它比直接执行usp_DailySettlement更可靠——Agent会自动重试失败作业、记录详细日志、支持邮件告警。而C#端只需发送一个轻量命令无需等待执行结果极大降低UI线程阻塞风险。我当年在某职教园区部署时就因没加Agent作业导致期末考试周日结延迟3小时财务科打电话追着问“钱去哪了”。后来把日结逻辑全搬进T-SQL再配Agent定时三年零故障。真正的稳定性从来不是靠堆服务器而是把确定性逻辑交给最可控的层——数据库引擎本身。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

大O表示法工程实践:从复杂度分析到性能优化

大O表示法工程实践:从复杂度分析到性能优化

1. 项目概述:为什么“时间复杂度分析”不是数学考试,而是工程师的日常呼吸你写完一段排序逻辑,跑一次测试用例耗时87毫秒——这数字本身毫无意义。真正决定你能不能在面试中稳住、能不能把服务从单机扛到百万QPS、甚至能不能让手机App滑动不掉…

2026/10/18 7:37:05 阅读更多 →
EmotionVGGnet情绪识别实战:VGG风格网络训练与推理全流程

EmotionVGGnet情绪识别实战:VGG风格网络训练与推理全流程

简介:EmotionVGGnet情绪识别Python源码包面向深度学习入门者与情感计算方向的研究者,提供一套基于VGGNet卷积神经网络的完整情绪识别实践方案,可用于语音、图像等多模态数据的分类任务。压缩包共11个文件、约12.38MB,包含6个Pytho…

2026/10/18 7:37:05 阅读更多 →
下颌磨牙三维有限元建模:Amira-UG-ALGOR协同工作流

下颌磨牙三维有限元建模:Amira-UG-ALGOR协同工作流

简介:本资源是一份面向口腔医学、生物力学及医工交叉领域研究者的三维有限元建模技术实践文档,聚焦下颌磨牙(D区567)高精度建模方法,解决传统建模中结构复杂、耗时长、几何失真等痛点。文档详细阐述了基于薄层CT扫描数…

2026/10/18 7:36:05 阅读更多 →

最新新闻

720VR全景源码系统实战:从部署到二次开发全解析

720VR全景源码系统实战:从部署到二次开发全解析

简介:这是一套面向开发者与建站团队的720度VR全景网站源码系统,用于快速搭建可旋转、缩放浏览的沉浸式全景展示平台,适合需要自建全景图制作与分享站点、又不想从零开发的中高级技术人员。压缩包共1946个文件,约104.53MB&#xff…

2026/10/18 20:41:11 阅读更多 →
逻辑控制器模块选型与调试实战:从接线到故障排查一次讲透

逻辑控制器模块选型与调试实战:从接线到故障排查一次讲透

上个月在泵站项目现场,一块6240BP10811逻辑控制器模块给了我们一个“下马威”:设备上电后ERR灯常亮,通讯状态灯怎么都不闪,主控端反复扫描不到这个子站。我蹲在柜前把背板总线、通讯线序和地址拨码一件件排查下来,最后…

2026/10/18 20:41:11 阅读更多 →
Linux网络编程实战:从TCP/IP协议栈到socket与epoll

Linux网络编程实战:从TCP/IP协议栈到socket与epoll

1. 当一次网络请求发生:协议栈在Linux内核里的真实旅程很多刚接触Linux系统编程的人都会问同一个问题:我们写网络程序,到底是在和谁打交道?是那个叫"网络协议"的东西吗?更具体一点说,在浏览器里输…

2026/10/18 20:41:11 阅读更多 →
多模态统一序列建模实战:NextFlow从设计到训练解析

多模态统一序列建模实战:NextFlow从设计到训练解析

1. 从"两套模型"到一套统一序列建模:NextFlow在做什么如果你最近在公司里折腾过多模态项目,大概率也撞上过那个经典尴尬:模型 A 能把一张图说得头头是道,你问它里面有几只鸟、什么颜色、正在干什么,它都能给…

2026/10/18 20:41:11 阅读更多 →
零基础学C语言:学习笔记与程序实例带你从入门到实践

零基础学C语言:学习笔记与程序实例带你从入门到实践

简介:这份C语言学习资料以程序实例为主线,面向刚接触C语言的初学者以及希望巩固基础的开发者,帮助读者在动手实践中理解基本语法、算法、函数与文件操作等核心内容。压缩包共8个文件,以7个cpp源码文件和1份doc学习笔记为主&#x…

2026/10/18 20:41:11 阅读更多 →
深度学习驱动的网络入侵检测:从数据预处理到模型调优的完整实践指南

深度学习驱动的网络入侵检测:从数据预处理到模型调优的完整实践指南

去年我做完这个课题的时候,最大的感触就是“这个题看着不新鲜,做起来到处都是坑”。名字叫“基于深度学习的网络入侵检测模型设计与实现”,放在信息安全毕设里属于那种每年都会出现的热门题,但正因为做的人多,如果不能…

2026/10/18 20:40:10 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →