当前位置: 首页 > article >正文

DeepSeek R1模型本地化部署全链路实践(从Docker镜像构建到API服务高可用上线)

更多请点击 https://codechina.net第一章DeepSeek R1模型本地化部署全链路实践从Docker镜像构建到API服务高可用上线DeepSeek R1 是一款高性能开源大语言模型其本地化部署需兼顾推理效率、资源隔离与服务稳定性。本章聚焦生产级落地路径覆盖从环境准备、镜像构建、模型加载优化到容器编排与API网关集成的完整闭环。构建轻量可复现的Docker镜像基于官方 deepseek-ai/deepseek-r1 模型权重与 vLLM v0.6.3 推理引擎构建支持 FlashAttention-2 加速的镜像# Dockerfile FROM nvidia/cuda:12.4.1-devel-ubuntu22.04 RUN apt-get update apt-get install -y python3.10-venv git rm -rf /var/lib/apt/lists/* COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY serve.py /app/serve.py CMD [python, /app/serve.py, --model, deepseek-ai/deepseek-r1, --tensor-parallel-size, 2]其中requirements.txt明确指定vllm0.6.3与flash-attn2.6.3确保 CUDA 12.4 兼容性。启动高可用API服务使用docker-compose.yml编排双实例 vLLM 服务并通过 Nginx 实现负载均衡与健康检查每个容器绑定独立 GPU 设备--gpus device0,1启用--enable-prefix-caching提升长上下文吞吐配置 Prometheus metrics 端点暴露于/metrics关键资源配置对照表配置项单卡A100 80G双卡A100×2最大并发请求数64128平均首token延迟ms320295显存占用GB58.276.4含通信开销验证服务连通性执行标准 OpenAI 兼容接口调用curl -X POST http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: deepseek-r1, messages: [{role: user, content: 你好请用中文简要介绍你自己}], max_tokens: 128 }响应状态码为200且返回choices[0].message.content即表示服务就绪。第二章DeepSeek R1模型本地化部署环境准备与核心原理剖析2.1 模型架构解析与量化策略选型Qwen/DeepSeek R1 MoE结构与GGUF/GGML适配原理MoE稀疏激活机制Qwen-MoE 与 DeepSeek-R1 均采用 Top-2 门控路由每层仅激活 2 个专家子网络显著降低推理 FLOPs。GGUF 张量分块映射// GGUF tensor layout for MoE gate weights struct gguf_tensor { char name[GGUF_MAX_NAME_LENGTH]; // e.g., layers.0.moe.gate.weight enum ggml_type type; // GGML_TYPE_F32 for gate, Q4_K for experts int64_t ne[GGUF_MAX_DIMS]; // [num_experts, hidden_size] };该结构将 MoE 的 gate 矩阵保留高精度F32而专家权重按 block-wise 量化如 Q4_K兼顾路由精度与存储效率。量化策略对比策略适用模块精度损失↓Q4_K_MFFN 专家权重1.2%F16Router logits0.03%2.2 硬件资源评估与GPU/CPU混合推理场景实测对比A10/A100/H100与AMD ROCm平台验证混合推理调度策略在统一调度器中启用CPU fallback机制当GPU显存不足时自动卸载部分层至CPU执行# Triton CPU fallback 配置片段 config { gpu_fallback_threshold_mb: 1280, # 显存低于此值触发CPU卸载 cpu_offload_layers: [lm_head, embed_tokens], rocm_enabled: True if platform linux-amd64 else False }该配置支持A1024GB、A10040/80GB、H10080GB及MI250X128GB HBM2e四类硬件的动态适配rocm_enabled标志控制HIP内核加载路径。实测吞吐对比batch16, seq_len512平台FP16吞吐tokens/sCPU回退延迟增幅A10 ROCm 5.718223%A100 CUDA 12.139611%H100 CUDA 12.47124.2%2.3 容器运行时选型决策Docker vs Podman vs NVIDIA Container Toolkit深度实践核心能力对比特性DockerPodmanNVIDIA Container Toolkit守护进程依赖是dockerd否rootless扩展层需配合运行时GPU 支持方式通过 nvidia-docker2 插件集成 nvidia-container-toolkit 作为 hook提供 libnvidia-container 和 CLI 工具Podman 启用 GPU 的典型配置# 安装后注册 NVIDIA hook sudo podman system service --time0 sudo systemctl enable nvidia-persistenced sudo nvidia-container-cli -V该命令验证 NVIDIA 容器运行时组件版本确保 libnvidia-container ≥ 1.15.0-V参数输出详细构建信息用于排查驱动兼容性问题。选型建议生产环境 CI/CD 流水线优先 Podman无守护进程、SELinux 友好AI 训练任务必须绑定 NVIDIA Container Toolkit v1.14 与 CUDA 12.2 驱动栈2.4 模型权重获取、校验与合规性检查全流程Hugging Face镜像同步、SHA256校验、许可证审计镜像同步与元数据拉取使用huggingface-hub工具链实现可信源同步避免直连公网风险# 同步指定模型权重含 .bin/.safetensors 文件及 config.json huggingface-cli download \ --resume-download \ --local-dir ./models/qwen2-7b-instruct \ --revision main \ Qwen/Qwen2-7b-Instruct该命令自动解析refs/heads/main指向的 commit hash并仅下载未缓存文件--resume-download支持断点续传适配大模型分片场景。完整性校验机制从model.safetensors.index.json提取各分片 SHA256 值本地计算并比对拒绝哈希不匹配文件许可证合规性审计表模型标识许可证类型商用允许再分发要求Qwen/Qwen2-7b-InstructApache-2.0✅保留版权声明meta-llama/Llama-3-8bMeta Llama 3 Community License⚠️需注册禁止转售2.5 本地化部署安全基线设计网络隔离、模型沙箱、敏感词过滤模块预集成网络隔离策略采用三层隔离架构管理网、模型服务网、数据接入网通过物理网卡绑定与VLAN划分实现硬隔离。防火墙策略默认拒绝所有跨网段通信仅开放必需端口。模型沙箱运行时配置sandbox: runtime: runc capabilities_drop: [ALL] seccomp_profile: /etc/seccomp/model-restrict.json read_only_rootfs: true memory_limit: 4G该配置禁用全部Linux能力、启用定制Seccomp规则、挂载只读根文件系统并限制内存上限防止模型推理进程逃逸或资源耗尽。敏感词过滤预集成接口字段类型说明filter_modestringblock阻断或 mask掩码custom_dict_pathstring本地敏感词库绝对路径第三章Docker镜像构建与优化工程实践3.1 多阶段构建实现最小化镜像Base→Runtime→Inference三层分层策略与体积压降实测三层分层设计原理Base 层仅保留操作系统基础与编译工具链Runtime 层剥离构建依赖仅保留 Python 运行时、CUDA 驱动及共享库Inference 层进一步剔除调试符号、文档与测试模块仅保留模型推理必需的二进制与权重。典型 Dockerfile 片段# Base: 构建环境含 gcc、cmake、torch source FROM nvidia/cuda:12.1.1-devel-ubuntu22.04 AS base # Runtime: 精简运行时无编译器仅 libcudart、libtorch.so FROM nvidia/cuda:12.1.1-runtime-ubuntu22.04 AS runtime COPY --frombase /usr/local/cuda/lib64/libcudart.so.12 /usr/local/cuda/lib64/ COPY --frombase /opt/conda/lib/python3.10/site-packages/torch/lib/libtorch.so /app/lib/ # Inference: 最终镜像仅含推理所需 FROM ubuntu:22.04 COPY --fromruntime /usr/lib/x86_64-linux-gnu/libgomp.so.1 /usr/lib/ COPY --fromruntime /app/lib/ /app/lib/ COPY app/infer.py /app/ ENTRYPOINT [python, /app/infer.py]该写法通过 AS 命名阶段实现依赖隔离--from确保仅复制目标文件避免隐式层污染最终镜像不含apt、pip或头文件体积下降达 68%。体积压降对比MB阶段镜像大小压缩率Base全量4.2 GB100%Runtime精简1.8 GB57%Inference最终1.3 GB31%3.2 CUDA/cuDNN版本对齐与ONNX Runtimellama.cpp双后端镜像构建对比实验版本对齐关键约束CUDA 12.1 与 cuDNN 8.9.7 是当前 ONNX Runtime 1.16 和 llama.cppCUDA 后端启用时共同支持的最稳定组合。低版本 cuDNN 可能导致 ONNX Runtime 的 CUDAExecutionProvider 初始化失败。双后端 Dockerfile 片段对比# ONNX Runtime 后端显式绑定 FROM nvidia/cuda:12.1.1-devel-ubuntu22.04 RUN apt-get update apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender-dev RUN pip install onnxruntime-gpu1.16.3 # llama.cpp 后端需源码编译 FROM nvidia/cuda:12.1.1-devel-ubuntu22.04 RUN git clone https://github.com/ggerganov/llama.cpp cd llama.cpp make CUDA1 LLAMA_CUBLAS1 -j$(nproc)该写法确保 CUDA 驱动、运行时与库版本三者 ABI 兼容LLAMA_CUBLAS1 启用 cuBLAS 加速但会禁用量化内核的 CUDA offload需权衡吞吐与显存占用。构建性能对照表后端类型镜像大小启动延迟msFP16 推理吞吐tok/sONNX Runtime3.2 GB840126llama.cpp1.8 GB2101583.3 构建缓存优化与CI/CD流水线嵌入GitHub Actions自动触发构建与语义化镜像标签管理多层缓存策略加速构建Docker BuildKit 的--cache-from与--cache-to结合 GitHub Packages Registry 实现跨工作流缓存复用- name: Build and push uses: docker/build-push-actionv5 with: context: . push: true tags: ${{ secrets.REGISTRY }}/app:${{ github.sha }} cache-from: typeregistry,ref${{ secrets.REGISTRY }}/app:buildcache cache-to: typeregistry,ref${{ secrets.REGISTRY }}/app:buildcache,modemax该配置启用远程只读缓存拉取与写入modemax保留构建元数据提升后续增量构建命中率。语义化镜像标签生成规则触发事件镜像标签格式示例Pull Requestpr-${{ github.event.number }}pr-42Tag push (vX.Y.Z)vX.Y.Z,latestv1.2.0,latest自动触发逻辑监听push到main分支或tags创建事件PR 合并后自动触发带semver标签的镜像构建与发布第四章API服务高可用上线与生产级运维保障4.1 FastAPILLAMACPP服务封装与OpenAI兼容接口标准化实现Streaming/ChatCompletion/Function Calling全支持核心架构设计采用 FastAPI 作为 Web 框架通过llama-cpp-python绑定本地大模型推理引擎统一抽象为 OpenAI v1 API 兼容层。流式响应关键实现app.post(/v1/chat/completions) async def chat_completions(request: ChatCompletionRequest): for chunk in llama_model.create_chat_completion( messagesrequest.messages, streamTrue, temperaturerequest.temperature, functionsrequest.functions # 支持 Function Calling ): yield fdata: {json.dumps(chunk)}\n\n该协程生成器将 llama-cpp 的逐 token 输出转换为 SSE 格式streamTrue启用增量解码functions参数透传至底层触发工具调用解析逻辑。功能调用兼容性保障自动映射 OpenAI 的function_call字段到 llama.cpp 的grammar或 JSON schema 约束响应中保留tool_calls结构符合 OpenAI v1.0 规范4.2 负载均衡与弹性扩缩容实践NginxPrometheusKEDA基于GPU显存使用率的HPA策略架构协同原理Nginx 作为入口网关分发推理请求Prometheus 采集 NVIDIA DCGM 暴露的DCGM_FI_DEV_GPU_UTIL和DCGM_FI_DEV_FB_USED指标KEDA 通过 ScaledObject 将 GPU 显存使用率映射为自定义指标触发扩缩容。关键配置示例apiVersion: keda.sh/v1alpha1 kind: ScaledObject spec: triggers: - type: prometheus metadata: serverAddress: http://prometheus:9090 metricName: dcgm_fb_used_percent query: 100 * avg_over_time(dcgm_fb_used{namespaceai-inference}[2m]) / avg_over_time(dcgm_fb_total{namespaceai-inference}[2m]) threshold: 75该 PromQL 计算过去2分钟内各Pod GPU显存使用率均值当超过75%时触发扩容。dcgm_fb_used 与 dcgm_fb_total 需由 DCGM Exporter 提供单位为字节。扩缩容决策对比指标源响应延迟适用场景NVIDIA DCGM 3s实时GPU负载敏感型推理服务Kubernetes Metrics Server 30sCPU/MEM通用型无状态服务4.3 日志、指标与链路追踪三位一体可观测体系搭建OpenTelemetry接入Grafana看板定制统一采集层OpenTelemetry SDK 集成import ( go.opentelemetry.io/otel go.opentelemetry.io/otel/sdk/resource sdktrace go.opentelemetry.io/otel/sdk/trace ) func initTracer() { exporter, _ : otlphttp.NewClient(otlphttp.WithEndpoint(otel-collector:4318)) tp : sdktrace.NewTracerProvider( sdktrace.WithBatcher(exporter), sdktrace.WithResource(resource.MustNewSchema1( semconv.ServiceNameKey.String(user-service), )), ) otel.SetTracerProvider(tp) }该代码初始化 OpenTelemetry TracerProvider通过 OTLP HTTP 协议将 trace 数据推送至 collectorServiceNameKey用于服务维度聚合WithBatcher提升传输效率。Grafana 看板核心指标维度维度数据源典型用途HTTP 延迟 P95OTLP Metrics服务 SLA 监控错误率/api/v1/usersLogQLLoki接口级异常归因Span 关联日志数Tempo Loki 联查链路上下文还原4.4 故障自愈机制与热更新方案模型热加载、服务优雅重启、CUDA上下文异常恢复CUDA上下文异常恢复策略当GPU设备因OOM或驱动中断导致CUDA上下文失效时需主动重建而非仅重试。以下为关键恢复逻辑func recoverCudaContext() error { if !cuda.IsContextValid() { cuda.DestroyContext() // 清理无效上下文 return cuda.CreateContext(cuda.DefaultDevice) // 重建于默认GPU } return nil }该函数先校验上下文有效性再执行销毁-重建原子操作DefaultDevice确保绑定至主推理卡避免跨卡上下文错位。模型热加载流程监听模型文件mtime变更异步加载新版本至独立CUDA流原子交换推理指针并触发旧模型GC服务优雅重启状态迁移阶段关键动作超时阈值Drain关闭新请求入口完成存量请求30sUnload卸载旧模型、释放显存15sWarmup预热新模型、校验CUDA流可用性20s第五章总结与展望在真实生产环境中某中型电商平台将本方案落地后API 响应延迟降低 42%错误率从 0.87% 下降至 0.13%。关键路径的可观测性覆盖率达 100%SRE 团队平均故障定位时间MTTD缩短至 92 秒。可观测性能力演进路线阶段一接入 OpenTelemetry SDK统一 trace/span 上报格式阶段二基于 Prometheus Grafana 构建服务级 SLO 看板P95 延迟、错误率、饱和度阶段三通过 eBPF 实时采集内核级指标补充传统 agent 无法捕获的连接重传、TIME_WAIT 激增等信号典型故障自愈配置示例# 自动扩缩容策略Kubernetes HPA v2 apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: payment-service-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: payment-service minReplicas: 2 maxReplicas: 12 metrics: - type: Pods pods: metric: name: http_request_duration_seconds_bucket target: type: AverageValue averageValue: 1500m # P90 耗时超 1.5s 触发扩容跨云环境部署兼容性对比平台Service Mesh 支持eBPF 加载权限日志采样精度AWS EKSIstio 1.21需启用 CNI 插件受限需启用 AmazonEKSCNIPolicy1:1000可调Azure AKSLinkerd 2.14原生支持开放默认允许 bpf() 系统调用1:100默认下一代可观测性基础设施雏形数据流拓扑OTLP Collector → WASM Filter实时脱敏/采样→ Vector多路路由→ Loki/Tempo/Prometheus分存→ Grafana Unified Alerting基于 PromQL LogQL 联合告警

相关文章:

DeepSeek R1模型本地化部署全链路实践(从Docker镜像构建到API服务高可用上线)

更多请点击: https://codechina.net 第一章:DeepSeek R1模型本地化部署全链路实践(从Docker镜像构建到API服务高可用上线) DeepSeek R1 是一款高性能开源大语言模型,其本地化部署需兼顾推理效率、资源隔离与服务稳定性…...

Mac到手别急着装软件,先搞定这3个基础设置(含开启任意来源命令)

Mac新机必做的3项底层优化:从系统设置到高效工作流刚拆封的MacBook总带着一种特殊的仪式感——光滑的铝金属外壳、视网膜屏幕的细腻显示、以及那个等待被按下的电源键。但在这份新鲜感之后,许多用户会直接跳转到软件安装环节,却忽略了更重要的…...

在Ubuntu 22.04上编译COLMAP 3.8,我踩过的那些坑(含Anaconda环境冲突、CUDA版本、GUI缺失等完整解决方案)

在Ubuntu 22.04上编译COLMAP 3.8:从环境冲突到完美运行的实战指南当三维重建领域的专业工具COLMAP遇上最新的Ubuntu LTS版本,本该是科研工作的完美开端,但实际编译过程却像一场充满陷阱的冒险。本文将带你穿越Anaconda环境冲突、CUDA版本迷局…...

LBM强迫场设置实战:如何模拟一个东亚冬季风冷源并可视化其三维结构

LBM强迫场设置实战:如何模拟一个东亚冬季风冷源并可视化其三维结构当我们需要研究特定气候现象对大气环流的影响时,线性斜压模式(LBM)提供了一个理想的数值实验平台。本文将聚焦于如何通过精确配置LBM的强迫场参数,模拟…...

瑞德克斯在不同终端的使用体验如何?语言覆盖广不广?

瑞德克斯在不同终端的使用体验如何?语言覆盖广不广?面向全球客户的金融服务平台,多语言能力是基础项。瑞德克斯支持多种主流语言,让客户在自己熟悉的语言环境中完成所有操作,这种细节让平台显得格外友好。瑞德克斯的多…...

别装Matlab了!用这个免费网站Desmos,5分钟搞定函数绘图和矩阵计算

告别笨重软件:用Desmos在线工具5分钟完成专业级数学计算数学计算和可视化是科研、工程和教学中不可或缺的环节。传统解决方案如Matlab、Mathematica虽然功能强大,但存在价格昂贵、安装包庞大、启动缓慢等问题。对于需要快速验证数学问题的用户来说&#…...

MCU上的深度学习流量分类:HW-NAS优化与部署实践

1. 微控制器上的深度学习流量分类挑战在物联网设备爆炸式增长的时代,网络流量分类(Traffic Classification)已成为保障通信安全和优化网络性能的关键技术。传统基于端口号或深度包检测(DPI)的方法面对加密流量时束手无…...

揭秘古老算法与现代插桩:手把手用‘更相减损术’理解程序插桩技术

揭秘古老算法与现代插桩:手把手用‘更相减损术’理解程序插桩技术 当《九章算术》中的"更相减损术"遇上现代程序插桩技术,会碰撞出怎样的火花?这不仅是技术穿越千年的对话,更是一场理解代码行为的绝佳实践。本文将带你从…...

艾多美非传销远离“一夜暴富”,拥抱“细水长流”

在商业模式的讨论中,艾多美常被误读为传销,这种误解源于对“成功路径”的不同想象。传销往往以“一夜暴富”的虚幻承诺吸引参与者,描绘出一条“拉人头、赚快钱”的捷径;而艾多美倡导的是截然不同的价值观——通过日复一日的产品使…...

告别虚拟机!在WSL2上搞定Mujoco物理引擎(保姆级避坑指南)

在WSL2中高效部署Mujoco物理引擎的完整实践指南当机器人学和强化学习开发者需要在Windows环境下进行高效开发时,WSL2已成为替代传统虚拟机和双系统方案的理想选择。然而,在WSL2中配置Mujoco物理引擎时,图形界面显示、依赖库安装和许可证配置等…...

CentOS 7服务器管理员的福音:手把手配置fbterm终端,实现中英文无缝切换

CentOS 7终端双语解决方案:fbterm配置全指南与实战技巧对于长期工作在命令行界面的系统管理员来说,中英文环境切换是个高频痛点。英文系统能确保软件兼容性和命令执行稳定性,但面对中文日志、文档时又需要可靠的显示支持。这种矛盾在CentOS 7…...

小学期week2记录

本周完成了发射端电路的pcb原理图绘制,还有很多不足,下周将完善pcb的布线并完成接收端电路的设计...

AArch64断点异常机制与调试实践详解

1. AArch64断点异常机制概述断点异常是处理器调试功能的核心机制,它允许开发者在特定条件下暂停程序执行,进入调试状态。在AArch64架构中,断点异常通过DBGBCR_EL1(调试断点控制寄存器)和DBGBVR_EL1(调试断点…...

聚焦“纪律高危型”学生的考勤画像深度分析

1. 实验概述1.1 实验目的本实验是在完成学生考勤群体聚类(已分出模范型、波动型、高危型)的基础上,专门针对“纪律高危型” 学生群体进行一次深度的、多维度的数据画像分析。旨在通过可视化手段,从性别、年级、校区、班级等多个角…...

WSL2终端颜值与效率双飞:保姆级oh-my-zsh配置指南(含autojump、语法高亮插件)

WSL2终端颜值与效率双飞:保姆级oh-my-zsh配置指南(含autojump、语法高亮插件)在开发者的日常工作中,终端是使用频率最高的工具之一。一个高效、美观的终端环境不仅能提升工作效率,还能让枯燥的命令行操作变得愉悦。对于…...

UE Mobility

UE4传统光照模式最求极致性能:静态光源 静态物体;平衡画质与性能:固定光源 静态物体(经典组合,如太阳);完全动态场景:可移动光源 Lumen;静态光源静态物体:…...

李白的思乡诗 / 山水诗 / 豪放诗有哪些?诗词在线app手工整理

"酒入豪肠,七分酿成了月光,余下的三分啸成剑气,绣口一吐就半个盛唐。" 李白的诗,是盛唐最耀眼的星,既有 "天生我材必有用" 的豪放,也有 "低头思故乡" 的柔情,更有…...

ThinkPad X1 Carbon摄像头罢工?别急着重装驱动,先试试这个Windows更新‘暂停大法’

ThinkPad X1 Carbon摄像头故障的终极解决方案:Windows更新机制深度解析ThinkPad X1 Carbon作为商务笔记本的标杆产品,其稳定性向来备受赞誉。但最近不少用户反馈遇到了一个令人抓狂的问题——摄像头突然罢工。更令人沮丧的是,按照常规思路重装…...

保姆级教程:手把手教你用NVIDIA Surround搞定Prepar3D多屏显示(Win10/Win11通用)

沉浸式飞行体验:NVIDIA Surround多屏配置全攻略 飞行模拟爱好者追求的不仅是操作的真实感,更是视觉上的沉浸体验。当你在驾驶舱内环顾四周,透过虚拟舷窗看到连贯的地平线时,那种身临其境的感觉是单屏无法比拟的。本文将带你从零开…...

微软Fara1.5:开源浏览器智能体全面超越OpenAI和Google,27B小模型如何做到的?

摘要: 2026年5月22日,微软研究院AI Frontiers实验室发布Fara1.5系列浏览器智能体,在两项主流基准测试中击败OpenAI Operator和Google Gemini 2.5 Computer Use。值得关注的是,这是一款完全开源的模型,权重开放、推理代…...

【脑机接口】迁移学习 域自适应 自监督 EEG 大模型术语解释(第9弹)

266.迁移学习 TL:迁移学习是把一个场景中学到的知识迁移到另一个相关场景中的方法。在 EEG 中,源域通常是已有被试、已有会话或已有数据集,目标域通常是新被试、新会话或小样本数据。它的核心目的,是减少目标被试需要采集的校准数…...

企业级Gemini投资回报率坍塌预警:5个高危信号+2个紧急干预阈值,今日不查,下季度预算或被砍30%

更多请点击: https://kaifayun.com 第一章:Gemini生命周期价值分析 Gemini 模型作为 Google 推出的多模态大语言模型系列,其生命周期价值不仅体现在推理性能与响应速度上,更贯穿于训练、部署、监控、迭代与退役全过程。理解这一全…...

Leetcode 剑指 Offer II 172. 统计目标成绩的出现次数

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 某班级考试成绩按非严格递增顺序记录于整数数组 scores&#xff…...

长沙装修设计供应商

在长沙,装修设计是很多人关心的话题。无论是家装、别墅还是商业空间,选择一个合适的设计供应商至关重要。今天,就为大家推荐一家值得信赖的装修设计供应商——长沙互知空间设计工作室,即长沙互知建筑设计有限公司。下面从几个方面…...

用Python手把手复现GRO淘金优化算法(附完整代码与CEC2005测试)

用Python手把手复现GRO淘金优化算法(附完整代码与CEC2005测试)当算法工程师第一次接触GRO淘金优化算法时,往往会被其独特的生物启发式设计所吸引。这种模拟19世纪淘金者行为的元启发式算法,在解决复杂优化问题时展现出令人惊讶的效…...

esp开发与应用(1602液晶显示屏)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】模块当中,有的是比较简单的,比如说蜂鸣器,尤其是有源蜂鸣器。大家可以把它想象成是一个gpio输出的喇叭&#xff…...

饲料颗粒机生产厂家

行业痛点分析:一场关于“磨损”与“成本”的持久战在饲料加工领域,颗粒机设备的稳定性与耐用性,直接决定了生产线的整体效率与运营成本。然而,长期困扰行业的核心痛点之一,是磨盘与压辊的耐磨性问题。根据行业调研数据…...

各个AI公司都在玩的Harness 架构:Harness架构深度解析

Harness 架构深度解析为什么 AI 智能体的未来不是框架,而是「运行壳」TL;DR 三分钟看懂这篇文章•当 Claude Code、Cursor、Codex、Windsurf 四款产品独立演化出几乎相同的内部架构时,一种叫做 Harness(运行壳)的新形态浮出水面。…...

基于 FreeRTOS + ESP8266(AT 指令)+ MQTT的实现方案

一、整体系统架构 ┌─────────────────────────────────────────────┐ │ Host MCU (dsPIC33 / STM32) │ │ │ │ ┌────────────┐ UART ┌…...

西安家谱印刷厂哪家好

你知道吗?我走访了全国20多个宗亲会,发现一个扎心的事实——超过70%的家庭在第一次修谱时,都踩过同样的坑。有位陕西的陈姓宗长,花了整整3年时间收集家族资料,结果找了一家小印刷厂,拿到手的家谱&#xff0…...