尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
WebSphere MQ入门拆解:队列管理器、通道与系统管理实战
简介IBM WebSphere MQ入门教程.pdf 是一份面向初学者的完整入门手册适合对消息中间件缺乏系统认知的开发、运维及架构人员。全书共217页从中间件的定义与优点讲起逐步过渡到三种通信技术对比、生产者-消费者异步通信模型并重点剖析 WebSphere MQ 的统一接口、时间解耦和分布式处理能力等关键特性。内容还覆盖队列管理器、队列、消息、通道等体系结构组件并通过订单处理、支付系统、论坛系统等实际场景说明异步通信的落地方式部分章节附有目标、小结与练习便于边学边测形成完整知识链路。资源包中仅包含1个PDF文件整体大小5.5MB可直接下载阅读也便于按目录索引重点章节。目前已有1533人浏览学习作为入门IBM MQ、理解企业级异步消息机制的简明资料兼具系统性和可读性。借助分章小结与练习读者既能从头系统建立整体框架也能在日常开发或排错时按需查阅。1. 老系统的异步通信靠什么WebSphere MQ 入门资源拆解接手过遗留系统的开发者应该都有这种感觉业务逻辑不难难的是让两个语言、平台、上线时间都完全不同的程序互相说话。我去年就在一个跨平台对接的模拟项目中遇到过这种局面——一边是 Java 服务一边是 C 客户端两边都不愿意改接口最后发现所有报文其实都是通过 WebSphere MQ 中转的。换句话说问题不是“让两边联调”而是“把 MQ 的对象体系搞明白”。这份 217 页的 WebSphere MQ 入门教程 PDF正好覆盖了从中间件原理、对象体系到系统管理、互连通信和恢复排障的完整链路适合刚接触 IBMMQ 的集成开发者和运维人员。照着它把队列、通道、命令摸一遍能少熬很多个深夜。2. 拆透体系结构队列管理器、队列与通道的对象闭环2.1 队列与消息模型生产者-消费者只是表象PDF 在开头花了不少篇幅讲中间件和“三种通信技术比较”核心结论其实就一句同步调用在异构、分布式场景下太脆弱消息队列把“发”和“收”从时间和空间上解耦。WebSphere MQ 的原理是生产者消费者模式生产者 PUT 消息进队列消费者 GET 消息两边不需要同时在线。这是理解后面所有对象的基础所以别跳过。队列是 MQ 里最基本的管理对象。新手容易把“队列”理解成一个单纯的先进先出容器但实际使用时你得在 MQSC 里区分四种定义队列类型关键字实际作用本地队列QLOCAL真正物理存储消息的队列最常用远程队列QREMOTE只是个“指针”指向远端队列管理器的队列别名队列QALIAS把多个真实队列映射成一个名字方便隔离权限模型队列QMODEL动态队列的模板应用连接时按模板生成临时队列我第一次排障时就犯过傻对着一个 QREMOTE 看了半天疑惑为什么消息不积压。后来才反应过来远程队列本身不存消息消息真正躺在本地队列传输队列或远端队列管理器的队列里。查看队列最直接的方式是进入 MQSC 交互界面runmqsc QM1 DISPLAY QLOCAL(ORDER.IN) MAXDEPTH CURDEPTHrunmqsc是 WebSphere MQ 的脚本命令解释器QM1是队列管理器名称DISPLAY QLOCAL用来查看本地队列属性MAXDEPTH是该队列允许积压的最大消息数CURDEPTH是当前深度。如果CURDEPTH一直等于MAXDEPTH说明消费者没跟上。另外消息本身还有MQMD消息描述符它携带消息 ID、报文格式、优先级、回复队列等信息这部分 PDF 在后面章节会展开是排查消息乱序和路由问题的关键依据。2.2 队列管理器与对象体系所有对象都在一个 QMGR 下队列管理器QMGR是在一个环境中所有 MQ 对象的管理容器。你可以把它理解为 MQ 的“实例”它管理队列、通道、进程、名称列表、认证信息对象以及系统缺省对象例如默认的死信队列SYSTEM.DEAD.LETTER.QUEUE。PDF 里把队列管理器进程、MQI消息队列接口都列了出来说白了就是一套 C 语言接口和一套 Java 接口JMS/MQ Classes for Java去操作这些对象。开发时建议记住一个规则程序连的是队列管理器而不是具体某台机器。这样后端换机器、做高可用迁移时应用代码可以不动。查看当前队列管理器的状态用的是dspmq控制命令dspmq -m QM1 dspmq -m QM1 -cdspmq全称 display queue manager-m指定队列管理器名-c显示更详细的通道状态信息。命令返回里要重点看STATUS字段Running是正常Ended Normally说明被正常停止Ended Immediately则多半是异常宕掉。如果状态是Starting却卡了很久需要去检查错误日志/var/mqm/qmgrs/QM1/errorsWindows 下是安装目录的qmgrs目录。MQ 对象还有一个硬约束名称不允许超过 48 个字符。这个限制看着不起眼但如果你用一段很长的服务名拼队列名可能会踩到坑。我一般会定一套命名规范比如APP.IN、APP.OUT、TRAN.APP.X这样方便脚本统一管理也方便通道配置时一眼看出归属。2.3 触发机制与群集让 MQ 替你把消费者叫醒PDF 在第二章专门讲了触发机制这可能是一般快速上手文档最容易跳过、但实际很实用的一块。触发机制解决什么问题如果消费者进程一直常驻资源浪费如果消息来了才启动又需要有个东西通知应用。MQ 的触发机制就是监控队列深度达到条件后写一条触发消息到“触发队列”再由一个触发监控器启动对应进程。触发类型有三种配置前要理解区别触发类型行为特征适用场景FIRST队列从空变为有第一条消息时触发按批次启动处理任务EVERY每条消息到达都触发需要逐条实时处理的场景DEPTH队列深度达到设定值才触发攒一批再处理的批处理场景配置一个触发需要三个部分进程定义、队列的触发属性、触发监控器。常见的配置脚本长这样runmqsc QM1 DEFINE PROCESS(ORD.PROC) APPLTYPE(WINDOWSNT) APPLICID(C:\apps\order_consumer.exe) DEFINE QLOCAL(ORD.IN) TRIGGER PROCESS(ORD.PROC) TRIGTYPE(FIRST)DEFINE PROCESS用于定义进程对象APPLTYPE指定应用可以运行的类型例如WINDOWSNT表示 Windows 平台UNIX 上一般用UNIXAPPLICID是可执行程序的完整路径触发监控器会依据它拉起进程。DEFINE QLOCAL的TRIGGER属性必须设成TRIGGER ON才会生效TRIGTYPE(FIRST)表示第一条消息进入队列时触发一次。群集的概念也要顺带理解一下多个队列管理器组成一个群集后队列和通道可以自动发现、自动连接。PDF 里提到群集能实现负载均衡实际部署中常见做法是在多个 QMGR 上定义相同名称的集群队列发送端通过CLUSSDR通道去解析目标。需要注意群集和普通的点对点通道不是一回事群集通道由存储库自动维护出问题时排查链路会比点对点复杂新手入门阶段建议先把点对点通道跑通再碰群集。3. 系统管理落地MQSC 命令与安装验证的完整走读3.1 安装验证与测试对象别跳过这五分钟PDF 在第三章给出的安装验证步骤看起来人畜无害其实很关键。装完 MQ 后第一步不是急着建队列而是确认安装本身没问题。常见做法是执行dspmq看有没有默认队列管理器没有的话先创建一个crtmqm -q -lc QM1 strmqm QM1crtmqm是创建队列管理器命令-q表示同时创建默认死信队列这能避免后面消息无法路由时直接“消失”-lc指定使用循环日志。strmqm是启动队列管理器执行成功后可以用dspmq确认状态为Running。这一步有一个很多人会忽略的动作验证对象测试。PDF 里提到“测试对象”也就是要确认默认的系统对象齐全。我一般会进入runmqsc执行一个显示命令runmqsc QM1 DISPLAY QLOCAL(SYSTEM.DEAD.LETTER.QUEUE) DISPLAY CHANNEL(SYSTEM.DEF.SVRCONN)DISPLAY QLOCAL(SYSTEM.DEAD.LETTER.QUEUE)用于确认系统死信队列存在DISPLAY CHANNEL(SYSTEM.DEF.SVRCONN)确认默认服务器连接通道存在。如果这些系统缺省对象丢失后面客户端连接和死信处理都会出问题而且症状很隐蔽。安装后把这步走一遍排除环境问题再继续能省很多事。3.2 MQSC 脚本与 PCF 命令两种管理的边界管理 MQ 对象主要有两条路命令行的 MQSC 脚本和程序化的 PCF 命令。runmqsc既支持交互式输入也支持把命令写进脚本文件批量执行。写脚本文件的好处是可审计、可回滚这也是为什么生产环境建议用脚本定义对象而不是手工敲。以下是一个典型的初始化脚本DEFINE QLOCAL(APP.IN) MAXDEPTH(5000) REPLACE DEFINE QLOCAL(APP.OUT) REPLACE DEFINE CHANNEL(APP.SVRCONN) CHLTYPE(SVRCONN) TRPTYPE(TCP) MCAUSER(mquser) REPLACE执行方式是runmqsc QM1 demo.mqsc。DEFINE QLOCAL后面的MAXDEPTH(5000)限制了队列最大深度避免消息风暴时无限积压拖垮磁盘REPLACE表示对象已存在时用当前定义覆盖这在重复执行初始化脚本时很实用。DEFINE CHANNEL定义了一个SVRCONN服务器连接通道TRPTYPE(TCP)表示走 TCP 传输MCAUSER(mquser)指定通道使用的服务账号——这一步直接决定客户端以什么身份操作 MQ权限小了应用连不上权限大了有安全风险。PCF 则是把命令作为消息发送到专门的系统队列SYSTEM.ADMIN.COMMAND.QUEUE由队列管理器执行。它适合用在自动化平台和监控系统里——比如程序定时收集队列深度或者自动创建临时队列。两者边界一句话说清人工排障用 MQSC 交互自动化任务用 PCF。如果你只是想快速验证连接用 MQSC 就够了要接进监控平台再走 PCF。3.3 控制命令集与日常巡检清单PDF 第四章到第五章把控制命令列得很全。控制命令和 MQSC 的区别在于控制命令操作的是队列管理器本身创建、启动、停止、查询MQSC 操作的是队列管理器内部对象队列、通道、进程。日常管理常用的是下面这几个命令用途常用参数crtmqmq创建队列管理器-q建死信队列-lc循环日志strmqm启动队列管理器直接加 QMGR 名称endmqm停止队列管理器-w等待应用退出-i立即停止dspmq查询状态-m指定管理器-c显示通道信息runmqsc进入 MQSC 解释器直接加 QMGR 名称对应的日常巡检我一般会先看总览再看对象。总览用dspmq对象细节用脚本循环。一个很实用的巡检组合是这样的dspmq -m QM1 echo DISPLAY QLOCAL(*) CURDEPTH(QDEPTH) | runmqsc QM1第一条命令看队列管理器主状态第二条把DISPLAY QLOCAL(*)的输出通过管道喂给runmqsc一次性列出所有本地队列的当前深度。CURDEPTH(QDEPTH)这个参数把结果重命名为QDEPTH脚本解析时更直观。如果发现某个队列深度持续上涨下一步就是去看对应消费者是否还活着而不是盲目清队列——清掉消息容易清掉业务数据就是事故。4. 互连通信与恢复分布式队列配置和日志排障实操4.1 分布式队列组件一条消息如何跨过两个 QMGR两个队列管理器之间通信依赖的组件比大多数人想象的多。PDF 第六章讲得很细远程队列定义、传输队列、发送通道、接收通道、死信队列缺一不可。消息的实际路径是应用 PUT 到本地远程队列定义它只是个逻辑名→ 消息落到本地的传输队列 → 发送通道从传输队列取出消息 → TCP 传过去 → 接收通道在远端把消息放入真正的目标队列。这个链条中传输队列通常叫XMITQ是最容易被忽略的监控点。消息发送不出去时它上面的深度会持续增长。检查传输队列是否积压指令如下runmqsc QM1 DISPLAY QLOCAL(QM2.XMITQ) CURDEPTH IPPROCSQM2.XMITQ是通往 QM2 的传输队列CURDEPTH看出有多少消息没发出去IPPROCS是当前打开该队列的进程数量。如果CURDEPTH增长但IPPROCS为 0说明通道没启动或传输队列没人“消费”如果两个值都正常但消息就是不到远端就得往下看通道状态。死信队列在这条链路里扮演“兜底者”。当消息无法路由、超过最大长度、或者权限校验失败时它会被放到死信队列。新手经常问“MQ 消息会不会丢”答案是正常情况下不会但如果你没配置死信队列处理不了的消息会被直接丢弃——这可能是 MQ 里唯一一个“没有后悔药”的配置。所以创建 QMGR 时我习惯用-q参数带上死信队列再定期巡检它的深度runmqsc QM1 DISPLAY QLOCAL(SYSTEM.DEAD.LETTER.QUEUE) CURDEPTH这条命令用来查看死信队列积压。如果深度不是 0用amqsbcg或浏览消息的应用去读消息内容看是路由问题还是报文格式问题而不是一条 DELETE 清掉。4.2 通道状态机与 MaxChannels 参数卡住时先看这几个状态通道是 MQ 里“玄学”味道最重的地方。PDF 把通道状态列得很清楚实际排障时需要记住一个状态机循环STARTING→RUNNING→RETRY→STOPPED。STARTING表示正在建立连接RUNNING正常传输RETRY是连接失败后等待重试STOPPED是人为停止或错误次数过多被停止。查看通道实时状态用下面的命令runmqsc QM1 DISPLAY CHSTATUS(QM2.SNDR) STATUSDISPLAY CHSTATUS显示通道当前状态STATUS字段会直接告诉你是RUNNING还是RETRY。正常情况下发送通道和接收通道都应该是RUNNING。如果一端的SENDER处于RETRY直接去接收端看两件事一是接收端 QMGR 有没有启动二是监听器有没有监听 TCP 端口。通道数量也有一个容易踩的坑MaxChannels和MaxActiveChannels。前者是通道实例总数的硬上限后者是同时处于活动状态RUNNING的通道上限。连接数一多SVRCONN 通道就会报“通道数超限”。调整方式如下runmqsc QM1 ALTER QMGR MAXCHL(500) MAXACTIVECH(200)ALTER QMGR修改队列管理器属性MAXCHL(500)把最大通道数提到 500MAXACTIVECH(200)限制同时活跃的通道数为 200。注意这个参数不是越大越好通道实例会占用线程和内存资源调太高可能拖垮 QMGR。生产环境我一般按实际连接数的 1.5 到 2 倍去规划。4.3 日志机制与恢复循环日志不是“免死金牌”PDF 第七章讲的是数据日志和恢复这是很多 MQ 使用者最薄弱的环节。MQ 日志分两类循环日志circular和线性日志linear。循环日志会覆盖旧日志占空间小但只能用于崩溃恢复线性日志可以一直保留支持前滚恢复代价是占用大量磁盘。我之前在演示环境图省事全用-lc循环日志后来想对一个重要队列做时间点恢复时才发现根本没有足够的历史日志。查看当前队列管理器的日志配置没有现成的一行命令常见做法是直接看配置文件grep -E LogType|LogPrimary|LogSecondary /var/mqm/qmgrs/QM1/qm.ini/var/mqm/qmgrs/QM1/qm.ini是队列管理器配置LogType显示是Circular还是LinearLogPrimary和LogSecondary是主、辅日志文件数。如果发现是Circular且你能接受磁盘开销dmpmqcfg可以导出配置改qm.ini后重启 QMGR 调整日志类型。日志转储用dmpmqlog命令dmpmqlog -m QM1 -edmpmqlog把日志内容转储出来-m指定 QMGR-e表示转储错误日志相关条目。转储出来的内容主要是诊断用不要想着人肉读日志恢复业务数据。真到灾难恢复那一步读 PDF 第七章的方案比临时查命令更稳。5. 避坑指南IBMMQ 新手最容易踩的五个坑5.1 消息堆积在传输队列通道却显示 RUNNING现象远端队列收不到消息本地传输队列CURDEPTH一直涨但DISPLAY CHSTATUS显示通道是RUNNING。原因通道虽然是 RUNNING但可能配置里没有指定XMITQ或者发送通道的CONNAME写的是主机名而不是 IPDNS 解析到错误地址。还有一种可能是消息路由到了错误的传输队列。解决先停掉发送通道再修改通道属性确认XMITQ和CONNAMErunmqsc QM1 STOP CHANNEL(QM2.SNDR) ALTER CHANNEL(QM2.SNDR) CHLTYPE(SDR) XMITQ(QM2.XMITQ) CONNAME(10.1.2.3(1414)) START CHANNEL(QM2.SNDR)ALTER CHANNEL里的CONNAME(IP(端口))直接写 IP 和监听端口绕开 DNS 这个不确定因素。从那以后我配置通道一律写 IP不写主机名少了很多“玄学”问题。5.2 消息“神秘消失”其实全在死信队列现象应用 PUT 一条消息返回成功远端消费者却永远收不到消息也没在传输队列积压。原因消息到达远端后无法进入目标队列被放进死信队列。常见原因包括目标队列不存在、队列已满、消息超过MAXMSGL限制。解决检查死信队列深度然后看消息内容runmqsc QM1 DISPLAY QLOCAL(SYSTEM.DEAD.LETTER.QUEUE) CURDEPTH如果确认是路由问题检查远程队列定义的RNAME和RQMNAME是否和远端一致。这里有个细节RNAME是远端队列管理器上真实队列的名字不是本地队列名写错是最常见的翻车原因。5.3 通道一直 RETRY心跳调了也没用现象发送通道STATUS显示RETRY过一会又STARTING然后循环。调小心跳间隔还是老样子。原因接收端队列管理器没启动或者接收端没有监听程序RUNMQLSR没起或者防火墙挡了 1414 端口。心跳只负责检测连接存活不负责建立连接。解决按顺序排查——先确认两端 QMGR 状态再确认监听器进程存在最后用netstat -an | grep 1414看端口是否真的监听。实际操作中“接收端 QMGR 没启动”占了这类问题的一半以上先把两边dspmq打一遍再调参数顺序别反。5.4 日志分区满QMGR 直接停摆现象dspmq显示 QMGR 变为Ended Immediately查看错误日志发现日志文件系统满。原因循环日志空间不够或者线性日志增长过快没做归档。消息量突然暴涨时日志写入跟不上Q MGR 为了保数据一致性会直接停。解决给日志目录换更大的磁盘或者清理日志文件df -h | grep mqm find /var/mqm/log -name *.LOG -mtime 7 -delete第一条命令查看/var/mqm挂载点的空间第二条清理 7 天前的日志文件。清理前提是你确认用的循环日志且不需要那些历史日志做恢复——操作前先确认备份策略。5.5 连接被拒2035 权限错误的真凶现象客户端应用连不上 SVRCONN 通道报错MQRC_NOT_AUTHORIZED (2035)。原因通道的MCAUSER没有配置或者配置的用户没有访问队列的权限。MQ 的权限体系除了操作系统用户还有setmqaut控制的 MQ 对象权限两层都要对。解决先确认通道用的服务账号再用setmqaut授权setmqaut -m QM1 -t qmgr -p mquser connect inq setmqaut -m QM1 -t queue -n APP.IN -p mquser put get inqsetmqaut是授权命令第一行给mquser连接队列管理器的权限第二行给APP.IN队列的 PUT/GET 权限。如果改了账号还不行检查CHLAUTH规则是否把通道访问拦掉了——新版 MQ 默认启用CHLAUTH它会覆盖一般的权限配置。6. 收尾技巧用一张状态检查表快速定位 MQ 故障入门教程看完了对象也建了一堆真正到环境出问题时新手最容易做的一件事就是哪里一眼看起来不对就动哪里。我的习惯是固定一张检查表每次排障强制按顺序走完不跳跃。这张表其实就是从文档里提炼出来的四个核心状态队列管理器状态、通道状态、队列深度、死信队列。检查对象命令正常标准队列管理器dspmq -m QM1STATUS 为 Running通道DISPLAY CHSTATUS(QM2.SNDR)STATUS 为 RUNNING本地队列DISPLAY QLOCAL(APP.IN) CURDEPTHCURDEPTH 不持续增长死信队列DISPLAY QLOCAL(SYSTEM.DEAD.LETTER.QUEUE)CURDEPTH 为 0 或短时间内被消费每次拿到一个 MQ 故障先用dspmq看管理器这一步能排除一半问题再看通道状态能排除三分之一最后看队列深度和死信队列基本能把问题圈定在“传输链路”还是“消费端”上。除了检查表我还习惯做一个“最小闭环验证”在同一台机器上建两个队列管理器 QM_A 和 QM_B用一对 SENDER/RECEIVER 通道连起来然后从 QM_A 发一条测试消息到 QM_B。这个操作本身就是 PDF 里“发送消息到远程队列管理器”的完整实践。你会真实经历一次通道建立、消息路由、死信队列兜底的完整生命周期。做一次这样的闭环比看十遍文档都有用。我记得第一次把最小闭环跑通时消息从 QM_A 落到 QM_B 的队列里那一下才真正理解“远程队列定义只是个路由指针”这句话的含义。从那以后我每次接手新的 MQ 环境都强制自己先走一遍检查表再跑一遍最小闭环验证确认链路是通的才去碰业务逻辑。这个习惯帮我躲过了多次“明明是环境问题却被当成代码问题”的加班。希望帮到你。部署完这套检查流程再回头看这份 217 页的入门教程你会发现文档里讲的对象其实每天都在生产环境里打交道无非是队列、通道、日志这三件事。把它当作手册放在手边遇到问题翻对应章节比死记硬背命令更快。本文还有配套的精品资源点击获取
RELATED

相关推荐

从零搭建多角色博弈模拟系统:多智能体强化学习实战与调优

从零搭建多角色博弈模拟系统:多智能体强化学习实战与调优

1. 从“A Game of Thrones(32)”这个标题说起第一次看到“A Game of Thrones(32)”这个标题,很多人会下意识以为这是某部作品的第三十二章,或者某个系列视频的第三十二集。但如果你真的把它当成一个编号去理解,那就完全跑偏了。这个标题的核心…

📅 2026/10/14 5:55:09
语音直播社交APP源码二次开发:多人连麦与陪玩功能实战解析

语音直播社交APP源码二次开发:多人连麦与陪玩功能实战解析

接到一套语音直播社交APP源码,里面有完整的多人连麦聊天和双端客户端,还能直接套上游戏陪玩场景,这种项目在市面上并不少见。但源码归源码,真正把它跑起来、改造成能上线的产品,中间隔着大量的工程细节。我最近正好完整…

📅 2026/10/14 5:55:09
基于BPSO的电力系统PMU最优配置问题求解与Matlab实现

基于BPSO的电力系统PMU最优配置问题求解与Matlab实现

1. 项目概览与问题拆解1.1 为什么需要这个项目相量测量单元(PMU)是电力系统动态监测的核心设备,能在同一时间基准下同步采集电压、电流的幅值与相位,为状态估计、广域保护和控制提供实时数据。但PMU成本较高,通信与安装…

📅 2026/10/14 5:55:09
MORE NEWS

更多资讯

📰

ffdec-18.5.0深度指南:SWF反编译、AS3反混淆与Flash遗产抢救

简介:FFDec 18.5.0 是一款开源、跨平台的 Flash SWF 文件反编译与分析工具,专为开发者、逆向工程师及数字遗产维护者设计,用于解析已停止支持的 Flash 内容,解决 SWF 结构理解、ActionScript 代码还原、资源提取与历史项目迁移等核…

📰

gz-sim 水下机器人控制实战:LRAUV 速度、偏航与俯仰的 PD/P 控制器解析

机器人 【免费下载链接】gz-sim Open source robotics simulator. The latest version of Gazebo. 项目地址: https://gitcode.com/gh_mirrors/gz/gz-sim 点击查看 免费下载 本文以 gz-sim(Gazebo Sim)仓库中的 examples/standalone/lrauv_c…

📰

医院病房管理系统数据库课设:核心表设计、事务控制与避坑指南

简介:这份《医院病房管理系统--数据库课设》面向计算机相关专业学生与数据库初学者,提供一套完整的课程设计参考方案,帮助解决从需求分析到系统落地的全流程问题。资源包共146个文件,约5.04MB,以Java源码与编译后的cla…

📰

3D Slicer Welcome 模块指南:启动欢迎页与自动更新机制深度解析

医疗健康图像处理数据可视化桌面应用3D渲染 【免费下载链接】Slicer Multi-platform, free open source software for visualization and image computing. 项目地址: https://gitcode.com/gh_mirrors/sl/Slicer 点击查看 免费下载 导读 Welcome 模块是 3D Slicer…

📰

OpenCV2.1 C++Builder封装:老项目图像处理接入与避坑指南

简介:这份资源是面向CBuilder开发者准备的OpenCV 2.1集成示例,作者将OpenCV自带的经典示例改写为VCL版本,方便在CB环境中直接调用图像处理能力。包内包含OpenCV 2.1 for CB所需的lib库文件与include头文件,并附有使用说明&#xf…

📰

数据库课设实战:酒店客房管理系统设计与实现

简介:针对数据库课程设计中的酒店管理场景,这套以客房管理为核心的实践资源,适合高校计算机相关专业学生作为课程设计或期末项目参考。项目围绕客房、客户、订单、入住记录与退房记录等核心实体,给出了关系型数据库的表结构设计&a…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬