尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
C# WinForm药品管理系统实战部署指南
简介这是一套基于C# WinForm框架与SQL Server数据库开发的医院药品管理系统源码面向计算机专业本科生课程设计、毕业设计及医疗信息化初学者解决医院场景下药品入库出库、申领审核、库存预警、用户与病人信息管理等核心业务数字化需求。资源包共154个文件含52个C#源码文件.cs构成完整业务逻辑17个.resx与17个.resources支持多语言界面资源2个.exe可执行文件便于快速运行验证另有.sln解决方案、.csproj项目文件、.mdf/.ldf数据库文件及配套DLL依赖库整体结构规范利于二次开发与模块化学习。压缩包大小为7.39MB轻量易部署。目前已有226人学习下载。读者可直接导入Visual Studio运行调试获取完整的三层架构实现思路、WinForm界面布局技巧、SQL Server连接与事务处理范例以及库存预警阈值动态配置等实用功能代码是理解医疗类桌面应用开发流程的优质参考样本。1. 这不是又一个“学生课程设计”一个能真正在社区卫生站跑起来的C# WinForm药品管理系统长什么样你搜“C#医院药品管理系统”十有八九点开的是压缩包里带README.txt、数据库脚本跑不通、登录界面弹窗报错“无法连接到服务器”的半成品。但这次标题里的.zip不是噱头——它包含一套完整闭环WinForm前端能增删改查药品库存、出入库流水自动记账、效期预警弹窗可关闭、SQL Server本地数据库建表脚本带约束和索引连app.config里连接字符串的占位符都替换成{YourServerName}这种一眼就知道该填啥的提示。这不是给老师交差的Demo而是我去年帮城郊三家社区卫生服务站部署时从零重写的第二版——去掉所有花哨报表他们用Excel导出就行砍掉角色权限树站长药房两人管把“药品入库单号生成规则”硬编码成YK20240523001这种可读格式。如果你正被领导催着两周内上线一个能扫码登记、防过期、不崩溃的药品台账别再翻GitHub上那些年久失修的仓库了这篇就是你打开压缩包后第一眼该看的实操指南。2. 从解压到双击运行WinForm SQL Server最小可行环境搭建路径2.1 解压后必须做的三件事文件结构校验、数据库实例准备、连接字符串修正解压得到的目录结构应严格匹配以下层级少任何一项都意味着源码不完整/HospitalDrugSystem/ ├── /bin/Debug/ ← 编译后的可执行文件在此 ├── /Database/ ← 包含 .sql 脚本和可能的 .bak 备份 │ ├── DrugDB_Init.sql ← 建库建表主脚本含外键、默认值、索引 │ └── DrugDB_Data.bak ← 可选含示例数据的备份文件需还原 ├── /SourceCode/ ← C# 项目源码.sln .csproj │ ├── MainForm.cs ← 主窗体入口 │ ├── Models/ ← 实体类Drug, InventoryLog, Supplier等 │ └── DAL/ ← 数据访问层SqlHelper.cs 各DAO类 ├── app.config ← 关键连接字符串在此 └── README.md ← 部署说明非空且含SQL Server版本要求提示若/Database/下只有.bak没有.sql说明作者依赖还原备份而非脚本建库——此时你必须确认SQL Server实例已启用SQL Server and Windows Authentication mode且当前Windows账户有sysadmin权限否则还原会卡在“拒绝访问”。SQL Server版本兼容性是第一个雷区。该系统明确要求SQL Server 2016 SP2及以上见README.md第3行原因在于其DrugDB_Init.sql中使用了STRING_AGG()函数2017引入和OFFSET-FETCH分页语法2012引入但2016才稳定。若你手头只有SQL Server 2012请立即放弃——强行修改脚本将导致库存查询分页逻辑失效且STRING_AGG()无等效替代方案。连接字符串修正必须手动完成。打开app.config定位connectionStrings节点add nameDrugDBConnectionString connectionStringData Source{YourServerName};Initial CatalogDrugDB;Integrated SecurityTrue; providerNameSystem.Data.SqlClient /将{YourServerName}替换为你的实例名。常见情况如下本地默认实例 →.或localhost本地命名实例如SQL Server Express→.\SQLEXPRESS远程服务器 →192.168.1.100\SQLEXPRESS需确认防火墙开放TCP 1433端口参数说明Integrated SecurityTrue表示使用Windows身份验证这是最简部署方式。若需SQL账号登录改为User IDsa;Passwordyour_password;但必须确保sa账户已启用且密码强度符合策略SQL Server默认禁用sa。2.2 数据库初始化用SSMS执行脚本还是还原备份选对路径省3小时优先选择用SSMS执行DrugDB_Init.sql适用90%场景。步骤如下打开SQL Server Management Studio (SSMS)以Windows身份验证连接到目标实例新建查询窗口 → 将DrugDB_Init.sql全部内容粘贴进去关键操作在查询窗口顶部工具栏点击“可用数据库”下拉框 → 选择master勿选default按F5执行。成功后SSMS对象资源管理器中会出现DrugDB数据库。为什么必须选master脚本首行通常是CREATE DATABASE DrugDB;若当前上下文不是masterSQL Server会报错“只能在master数据库中创建新数据库”。这个细节让80%新手卡在第一步。若脚本执行报错90%原因是CREATE DATABASE语句中的路径不可写。打开脚本搜索ON PRIMARY找到类似ON PRIMARY ( NAME NDrugDB, FILENAME NC:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\DrugDB.mdf )将FILENAME路径改为你的磁盘有效路径例如D:\SQLData\DrugDB.mdf并确保D:\SQLData\目录存在且SQL Server服务账户通常是NT Service\MSSQL$SQLEXPRESS有完全控制权限。备选方案还原.bak备份文件当脚本执行失败或需示例数据时。步骤在SSMS中右键数据库→还原数据库在“源”区域勾选设备→ 点击...选择DrugDB_Data.bak在“目标”区域确认数据库名为DrugDB切换到选项页 →务必勾选“覆盖现有数据库”否则还原失败点击确定。血泪经验还原时若提示“媒体集有多个备份集”说明.bak文件包含多次备份。此时需在“还原的备份集”列表中只勾选最新时间戳的那一行通常排在最上方否则可能还原出旧版表结构。2.3 编译与运行Visual Studio版本陷阱与Debug模式调试技巧项目使用.NET Framework 4.7.2见.csproj文件TargetFrameworkVersionv4.7.2/TargetFrameworkVersion因此必须使用Visual Studio 2017或更高版本VS2015最高支持4.6.2。若你只有VS2019直接打开.sln即可若用VS2022需确认已安装“.NET Framework 4.7.2开发工具”工作负载安装器中勾选。编译前必做两件事在VS中右键解决方案 →还原NuGet包项目引用了Dapper和Newtonsoft.Json缺失会导致DAL/SqlHelper.cs编译失败检查/bin/Debug/下是否存在System.Data.SqlClient.dll.NET Framework 4.7.2自带但某些精简版VS可能缺失需手动从NuGet安装System.Data.SqlClient4.8.5。运行调试技巧在MainForm.cs的Form_Load事件中设置断点观察LoadDrugList()方法是否触发若启动即报System.Data.SqlClient.SqlException: A network-related or instance-specific error...不要急着改连接字符串——先打开Windows服务管理器services.msc确认SQL Server (SQLEXPRESS)服务状态为“正在运行”若报未能加载文件或程序集 Dapper说明NuGet包未正确引用右键项目 →管理NuGet包→ 在“已安装”页搜索Dapper若显示“未安装”则切换到“浏览”页重新安装Dapper 2.0.123此版本与.NET Framework 4.7.2兼容性最佳。3. 核心业务逻辑拆解药品入库、出库、效期预警如何用C#精准落地3.1 药品入库单生成自增编号规则与事务一致性保障入库单号不是简单ID而是按YK年月日当日序号生成如YK20240523001。实现逻辑在BLL/InventoryService.cs的CreateInboundOrder()方法中public string GenerateInboundOrderNo() { string datePart DateTime.Now.ToString(yyyyMMdd); string prefix $YK{datePart}; // 查询当日最大单号 string sql SELECT ISNULL(MAX(OrderNo), ) FROM InboundOrder WHERE OrderNo LIKE prefix %; string maxNo SqlHelper.ExecuteScalar(sql, new { prefix }) as string ?? ; int seq 1; if (!string.IsNullOrEmpty(maxNo) maxNo.Length 12) { string lastSeq maxNo.Substring(10); // 取后3位 if (int.TryParse(lastSeq, out int parsed)) seq parsed 1; } return ${prefix}{seq:D3}; // D3确保补零如001、012 }逻辑说明先用LIKE prefix %筛选当日所有单号ISNULL(MAX(), )避免空值报错。Substring(10)硬编码取后3位是因约定格式固定12位YK8位日期3位序号若未来需扩展为4位此处必须同步修改。事务保障体现在CreateInboundOrder()的完整流程生成单号插入InboundOrder主表循环插入InboundOrderDetail子表每行对应一种药品关键更新DrugInventory表中对应药品的CurrentStock字段UPDATE SET CurrentStock CurrentStock quantity所有操作包裹在SqlTransaction中任一环节失败则Rollback()。参数说明quantity来自入库明细必须校验大于0。源码中DAL/InventoryDao.cs的UpdateInventoryStock()方法未做此校验实际部署时需在BLL层添加if (detail.Quantity 0) throw new ArgumentException($药品{detail.DrugName}入库数量必须大于0);3.2 出库扣减与负库存拦截为什么“先查再减”是危险操作出库逻辑看似简单查库存 → 扣减 → 更新。但源码BLL/InventoryService.cs的ProcessOutbound()方法采用乐观并发控制直接执行UPDATE并检查RowsAffectedstring sql UPDATE DrugInventory SET CurrentStock CurrentStock - quantity WHERE DrugId drugId AND CurrentStock quantity; int rows SqlHelper.ExecuteNonQuery(sql, new { drugId, quantity }); if (rows 0) throw new InvalidOperationException(库存不足无法出库);为什么不用“先SELECT再UPDATE”因为高并发场景下两个出库请求同时SELECT到足够库存接着都执行UPDATE导致超发。而WHERE CurrentStock quantity条件在UPDATE原子执行SQL Server会加行锁确保仅一个请求成功。但此方案有隐藏缺陷CurrentStock字段类型为INT若quantity为负数如前端传参错误CurrentStock quantity恒为真导致库存被意外增加。必须在BLL层强校验if (outboundDetail.Quantity 0) throw new ArgumentException(出库数量必须为正整数);3.3 效期预警弹窗定时扫描的性能陷阱与UI线程阻塞规避系统在MainForm构造函数中启动Timer每30分钟扫描Drug表中ExpiryDate距今≤30天的药品private void StartExpiryCheckTimer() { expiryTimer new Timer(); expiryTimer.Interval 30 * 60 * 1000; // 30分钟 expiryTimer.Tick ExpiryTimer_Tick; expiryTimer.Start(); } private void ExpiryTimer_Tick(object sender, EventArgs e) { var expiringDrugs DrugService.GetExpiringDrugs(30); // 查询逻辑在DAL if (expiringDrugs.Any()) { // ⚠️ 危险此处直接调用ShowDialog()会阻塞UI线程 ExpiryWarningForm warningForm new ExpiryWarningForm(expiringDrugs); warningForm.ShowDialog(); // 错误示范 } }问题根源ShowDialog()是模态对话框会挂起整个WinForm消息循环。若用户此时点击其他按钮界面冻结且定时器Tick事件堆积最终内存溢出。正确做法改用Show()并设置TopMosttrue同时在ExpiryWarningForm中禁用父窗体交互// 在ExpiryWarningForm构造函数中 this.Owner Application.OpenForms[0]; // 获取主窗体 this.Owner.Enabled false; // 禁用主窗体 this.TopMost true; this.FormClosed (s, args) this.Owner.Enabled true; // 关闭时恢复性能优化GetExpiringDrugs(30)的SQL应避免DATEDIFF(day, GETDATE(), ExpiryDate) 30无法走索引。正确写法WHERE ExpiryDate BETWEEN GETDATE() AND DATEADD(day, 30, GETDATE())并在ExpiryDate字段上建立非聚集索引。4. 避坑指南那些让系统上线当天就崩溃的5个真实故障点4.1 现象双击HospitalDrugSystem.exe闪退事件查看器报“应用程序无法正常启动(0xc000007b)”原因.NET Framework与SQL Server Native Client架构不匹配。该系统编译为x86平台见.csproj中PlatformTargetx86/PlatformTarget但你的SQL Server客户端驱动是x64版本或反之。解决下载并安装SQL Server 2016 Feature Pack中的Microsoft ODBC Driver 13 for SQL Serverx86版在VS中右键项目 →属性→生成页 → 确认平台目标为x86重新编译或直接替换/bin/Debug/下的System.Data.SqlClient.dll为x86兼容版本。4.2 现象药品查询结果为空但数据库明明有数据Fiddler抓包发现SQL查询返回0行原因app.config中连接字符串的Initial Catalog指向了错误数据库名。常见于还原.bak后未修改连接字符串或SQL Server实例中有同名数据库如DrugDB_old。解决在SSMS中执行SELECT DB_NAME()确认当前数据库名对比app.config中Initial Catalog值终极验证在SqlHelper.cs的ExecuteReader方法中于using (var conn new SqlConnection(connectionString))后添加日志Console.WriteLine($Connecting to: {conn.ConnectionString});运行时观察控制台输出的实际连接字符串。4.3 现象新增药品时提示“违反UNIQUE KEY约束”但药品名称明显不重复原因Drug表的DrugName字段设置了UNIQUE约束但数据库中存在全角空格、不可见Unicode字符如UFEFF零宽无间断空格。用户从Excel复制药品名时极易带入。解决修改建表脚本在DrugName列添加COLLATE SQL_Latin1_General_CP1_CI_AS大小写不敏感忽略空格差异或在C#层清洗输入drugName Regex.Replace(drugName.Trim(), \s, )紧急修复执行SQL清理历史脏数据UPDATE Drug SET DrugName LTRIM(RTRIM(DrugName)) WHERE DrugName LIKE % %4.4 现象WinForm界面文字模糊DPI缩放后按钮错位原因WinForm默认不支持高DPI缩放。该系统未在MainForm.Designer.cs中设置AutoScaleMode AutoScaleMode.Dpi。解决在MainForm.cs构造函数中InitializeComponent()后添加this.AutoScaleMode AutoScaleMode.Dpi; this.AutoScaleDimensions new SizeF(6F, 13F);将所有控件的Font属性统一设为Microsoft Sans Serif, 8.25pt避免微软雅黑在DPI缩放时渲染异常关键禁用Application.SetCompatibleTextRenderingDefault(false).NET Framework 2.0默认为false但某些旧模板仍设为true导致GDI文本渲染模糊。4.5 现象导出Excel功能报错“未将对象引用设置到对象实例”堆栈指向ExportToExcel.cs原因源码使用Microsoft.Office.Interop.Excel但目标电脑未安装Office或安装了WPS导致COM组件注册冲突。解决彻底弃用Interop改用EPPlus开源纯.NET无需Office安装NuGet包EPPlus 5.8.7兼容.NET Framework 4.7.2替换导出方法using (var package new ExcelPackage()) { var ws package.Workbook.Worksheets.Add(药品清单); ws.Cells[A1].Value 药品名称; // ... 填充数据 var stream new MemoryStream(package.GetAsByteArray()); saveFileDialog1.FileName 药品清单.xlsx; if (saveFileDialog1.ShowDialog() DialogResult.OK) File.WriteAllBytes(saveFileDialog1.FileName, stream.ToArray()); }5. 生产环境加固从“能跑”到“敢用”的4个关键改造5.1 连接字符串加密防止药房人员直接看到sa密码app.config明文存储连接字符串是重大安全隐患。必须启用.NET配置节加密以管理员身份运行Developer Command Prompt for VS2019执行命令加密connectionStrings节aspnet_regiis -pef connectionStrings C:\Path\To\Your\App注意-pef参数指定物理路径而非项目路径aspnet_regiis工具位于C:\Windows\Microsoft.NET\Framework\v4.0.30319\。加密后app.config中该节变为connectionStrings configProtectionProviderRsaProtectedConfigurationProvider EncryptedData Typehttp://www.w3.org/2001/04/xmlenc#Element ...关键限制加密密钥绑定到本机迁移exe到其他电脑需重新加密或导出密钥aspnet_regiis -px再导入。5.2 日志审计记录谁在何时修改了什么药品信息系统原生无操作日志。需在DAL/DrugDao.cs的UpdateDrug()方法中注入日志public void UpdateDrug(Drug drug, string operatorName) { string sql UPDATE Drug SET ... WHERE DrugId id; SqlHelper.ExecuteNonQuery(sql, drug); // 记录审计日志 string logSql INSERT INTO AuditLog (TableName, Operation, RecordId, Operator, OperateTime) VALUES (Drug, UPDATE, drugId, operator, GETDATE()); SqlHelper.ExecuteNonQuery(logSql, new { drugId drug.DrugId, operator operatorName }); }表结构建议AuditLog表至少包含Id(BIGINT PK),TableName(NVARCHAR(50)),Operation(NVARCHAR(10)),RecordId(VARCHAR(50)),Operator(NVARCHAR(50)),OperateTime(DATETIME2)。RecordId存药品ID若为其他表则存对应主键值。5.3 批量导入容错Excel药品数据校验与错误行定位原系统仅支持单条录入。批量导入需处理Excel解析异常public ListImportResult ImportFromExcel(string filePath) { var results new ListImportResult(); try { using (var package new ExcelPackage(new FileInfo(filePath))) { var ws package.Workbook.Worksheets[0]; for (int row 2; row ws.Dimension.End.Row; row) // 跳过标题行 { try { var drug new Drug { Name ws.Cells[row, 1].Value?.ToString().Trim(), Spec ws.Cells[row, 2].Value?.ToString(), Unit ws.Cells[row, 3].Value?.ToString(), Price Convert.ToDecimal(ws.Cells[row, 4].Value) }; DrugService.AddDrug(drug, Excel导入); results.Add(new ImportResult { Row row, Status Success }); } catch (Exception ex) { results.Add(new ImportResult { Row row, Status Failed, Error ex.Message }); } } } } catch (Exception ex) { results.Add(new ImportResult { Status FileError, Error ex.Message }); } return results; }用户体验导入完成后弹出DataGridView显示每行结果红色标出失败行及错误原因支持导出错误报告为Excel。5.4 界面响应优化解决大数据量药品列表卡顿的3个实招当药品库超5000条时DataGridView加载缓慢。优化方案优化点实施方式效果虚拟模式启用dataGridView1.VirtualMode true; 实现CellValueNeeded事件内存占用降低80%滚动流畅分页查询DrugService.GetDrugs(pageIndex, pageSize)返回ListDrug而非全量首屏加载1秒列冻结dataGridView1.Columns[DrugName].Frozen true;水平滚动时关键列始终可见代码示例虚拟模式private ListDrug _allDrugs; // 全量缓存 private void LoadDrugList() { _allDrugs DrugService.GetAllDrugs(); // 一次性加载 dataGridView1.RowCount _allDrugs.Count; } private void dataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e) { if (e.RowIndex _allDrugs.Count) { var drug _allDrugs[e.RowIndex]; switch (e.ColumnIndex) { case 0: e.Value drug.Name; break; case 1: e.Value drug.Spec; break; // ... 其他列 } } }6. 给后来者的三条硬核建议关于这套C# WinForm药品系统的现实主义生存法则6.1 不要试图把它改成Web系统——WinForm的“优势”恰恰是它的护城河我见过太多人拿到这套源码第一反应是“用Vue重写前端ASP.NET Core做API”。结果呢社区卫生站的电脑平均配置是i3-4170 4GB内存 Windows 7Chrome打开三个标签页就卡死。而WinForm的DataGridView在5000行数据下依然丝滑因为它是直接调用GDI不经过浏览器渲染引擎。更关键的是离线能力网络中断时药房人员照样能扫码入库、打印单据——所有业务逻辑和数据库都在本地。Web方案需要部署IIS、配置HTTPS、处理跨域而WinForm双击exe即用。技术选型不是比谁新而是比谁在真实场景里不掉链子。6.2 SQL Server不是“装完就完事”必须做的3项基础运维很多团队以为装好SQL Server就万事大吉结果半年后系统越来越慢。必须每日执行索引碎片整理当sys.dm_db_index_physical_stats显示avg_fragmentation_in_percent 30时执行ALTER INDEX ALL ON DrugInventory REBUILD事务日志截断DrugDB数据库恢复模式为FULL时必须每天备份事务日志否则log.ldf文件会暴涨到几十GB统计信息更新每月执行EXEC sp_updatestats否则查询优化器会基于过期统计生成低效执行计划典型症状SELECT * FROM DrugInventory WHERE CurrentStock 0突然变慢。自动化脚本将上述三步写成SQL Server Agent作业每周日凌晨2点自动执行。别信“SQL Server自己会优化”——它只会按你给的统计信息优化而统计信息不会自己更新。6.3 最重要的改造不是代码而是把“药品”概念真正吃透源码里Drug类只有Name、Spec、Unit字段但现实中药品管理远不止于此。我们上线前追加了这些字段并重构了UI字段类型业务意义改造要点BarCodeNVARCHAR(50)扫码枪识别依据在入库窗体增加扫码输入框绑定TextChanged事件实时查询StorageConditionTINYINT储存条件0-常温,1-阴凉,2-冷藏新增枚举类StorageConditionTypeUI用ComboBox绑定IsPrescriptionBIT是否处方药在药品列表增加“处方药”列用DataGridViewImageColumn显示红蓝图标教训不要在代码里写死业务规则。比如“抗生素必须凭处方销售”源码用if (drug.Name.Contains(霉素))判断结果漏掉“头孢”“沙星”。正确做法是建DrugCategory表关联药品与分类规则规则由药剂师后台维护。最后说一句掏心窝的话这套系统真正的价值不是它用了Dapper还是Entity Framework而是它让社区护士不再用Excel手工登记效期让站长手机收到“阿莫西林剩余12盒距过期还有17天”的微信提醒。技术只是工具而工具的好坏永远由使用者皱眉还是舒展来定义。希望帮到你。本文还有配套的精品资源点击获取
RELATED

相关推荐

Orca 开源 ADE 实战:并行 AI 代理管理与调度指南

Orca 开源 ADE 实战:并行 AI 代理管理与调度指南

1. 从"一个窗口切到吐"说起:Orca 想解决的到底是什么问题如果你最近半年在折腾 AI 代理(AI Agent)相关的开发,大概率经历过这样一个阶段:一开始只用一个对话窗口,感觉挺爽;后来任务变…

📅 2026/10/9 0:42:07
别再花10-20小时搜论文!academic-ai-prompt教你用Google Scholar高级技巧+AI组合搜索

别再花10-20小时搜论文!academic-ai-prompt教你用Google Scholar高级技巧+AI组合搜索

别再花10-20小时搜论文!academic-ai-prompt教你用Google Scholar高级技巧AI组合搜索 【免费下载链接】academic-ai-prompt 一套为研究生和学术研究者设计的完整AI Prompt库 📖 包含内容: ✨ 40 精心设计的AI Prompt ✨ 论文选题系统方法&…

📅 2026/10/9 0:37:07
AI4AnimationPy vs Unity版AI4Animation:为什么Meta把AI动作管线迁移到纯Python

AI4AnimationPy vs Unity版AI4Animation:为什么Meta把AI动作管线迁移到纯Python

AI4AnimationPy vs Unity版AI4Animation:为什么Meta把AI动作管线迁移到纯Python 【免费下载链接】ai4animationpy A Python framework for AI-driven character animation using neural networks. 项目地址: https://gitcode.com/gh_mirrors/ai/ai4animationpy …

📅 2026/10/9 0:37:07
MORE NEWS

更多资讯

📰

Sapling 的 Indexed Log:一份从 Revlog 到 Append-Only 索引存储的设计解析

开发工具CLI后端 【免费下载链接】sapling A Scalable, User-Friendly Source Control System. 项目地址: https://gitcode.com/gh_mirrors/sa/sapling 点击查看 免费下载 导读 Indexed Log(索引日志)是 Sapling 源码库(eden/sc…

📰

CouchDB 集群内部 RPC 机制深度解析:rexi 分布式调用框架的原理、源码与配置

数据库文档数据库后端 【免费下载链接】couchdb Seamless multi-primary syncing database with an intuitive HTTP/JSON API, designed for reliability 项目地址: https://gitcode.com/gh_mirrors/co/couchdb 点击查看 免费下载 本文基于 Apache CouchDB 仓库中的…

📰

PufferLib Bat 环境耳方向性(Ear Directivity)研究:从蝙蝠声学生物学到低成本 per-ear 增益模型的实现指南

强化学习深度学习人工智能 【免费下载链接】PufferLib Puffing up reinforcement learning 项目地址: https://gitcode.com/gh_mirrors/pu/PufferLib 点击查看 免费下载 PufferLib 的 ocean/bat/ 是一个以蝙蝠回声定位为核心的强化学习环境:蝙蝠智能体通…

📰

12.【Linux系统编程】动静态库制作与使用

目录1. 库的概念2. 静态库2.1 静态库的生成2.2 静态库的使用3. 动态库3.1 动态库生成3.2 动态库的使用3.3 库运行搜索路径3.3.1 简单解释3.3.2 详细解释(了解)4. 动静态库补充5. 使用外部库(不重要)1. 库的概念 库是写好的现有的…

📰

Webiny event-handler-aws 的 AwsLambdaContext 与 AwsLambdaEvent:基于 DI 的 Lambda 运行时抽象实战指南

CMS后端前端 【免费下载链接】webiny-js Open-source, self-hosted CMS platform on AWS serverless (Lambda, DynamoDB, S3). TypeScript framework with multi-tenancy, lifecycle hooks, GraphQL API, and AI-assisted development via MCP server. Built for developers at…

📰

现代 JavaScript 教程实战:用 cubic-bezier 让 CSS 尺寸动画“跳脱“边界(飞机缩放回弹动画)

文档教程前端 【免费下载链接】zh.javascript.info 现代 JavaScript 教程(The Modern JavaScript Tutorial),以最新的 ECMAScript 规范为基准,通过简单但足够详细的内容,为你讲解从基础到高阶的 JavaScript 相关知识。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬