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

Deepseek R1模型本地化部署与API实战指南:释放企业级AI生产力

摘要

本文深入解析Deepseek R1开源大模型的本地化部署流程与API集成方案,涵盖从硬件选型、Docker环境搭建到模型微调及RESTful接口封装的完整企业级解决方案。通过电商评论分析和智能客服搭建等案例,展示如何将前沿AI技术转化为实际生产力。教程支持Linux/Windows双平台部署,提供15个可复现的代码片段,助力开发者在3小时内完成从零到生产的转变。

关键词:Deepseek R1、本地化部署、API接口、AI生产力、模型微调


一、为什么选择Deepseek R1?——企业级AI的破局利器

1.1 模型性能横评:超越同级的性价比

Deepseek R1在MMLU基准测试中取得82.3%准确率,较Llama 2-7B提升15%,推理速度降低40%。其动态注意力机制(DAM)在保持32层网络深度的同时,将内存占用压缩至同类模型的60%。

1.2 本地化部署的三大核心价值

  • 数据主权保障:敏感行业数据不出域
  • 响应速度飞跃:本地推理延迟稳定在200ms以内(RTX 3090)
  • 定制化可能性:支持LoRA、P-Tuning等微调方案

二、部署全攻略:从零搭建企业AI基座

2.1 硬件选择黄金法则

部署规模GPU推荐内存要求存储方案
测试环境RTX 308032GB DDR4500GB NVMe
生产环境A100×2128GB ECC2TB RAID0 SSD
注:FP16精度下模型权重占用28.4GB,建议预留1.5倍缓冲空间。

2.2 环境搭建六步曲(Linux示例)

  1. 安装NVIDIA驱动
    sudo apt install nvidia-driver-535
    
  2. 部署Docker引擎
    curl -sSL https://get.docker.com | sh
    
  3. 配置NVIDIA Container Toolkit
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    
  4. 拉取预构建镜像
    docker pull deepseek/r1-runtime:cu117-py38
    
  5. 启动容器
    docker run -it --gpus all -p 7860:7860 -v /data/models:/models deepseek/r1-runtime
    
  6. 模型下载与验证
    python -c "from huggingface_hub import snapshot_download; snapshot_download('deepseek/r1-base')"
    

三、API接口开发实战:让AI能力随取随用

3.1 快速搭建RESTful服务

from fastapi import FastAPI
from transformers import AutoTokenizer, AutoModelForCausalLMapp = FastAPI()
tokenizer = AutoTokenizer.from_pretrained("/models/r1-base")
model = AutoModelForCausalLM.from_pretrained("/models/r1-base").cuda()@app.post("/generate")
async def generate_text(prompt: str, max_length: int = 200):inputs = tokenizer(prompt, return_tensors="pt").to("cuda")outputs = model.generate(**inputs, max_length=max_length)return {"result": tokenizer.decode(outputs[0], skip_special_tokens=True)}

3.2 企业级API安全方案

  • JWT认证:集成Auth0实现角色权限控制
  • 速率限制:使用Redis实现每分钟100次调用限制
  • 输入过滤:正则表达式防御Prompt注入攻击
  • 日志审计:ELK Stack记录完整请求流水

四、性能调优秘籍:让模型飞起来

4.1 量化压缩实战

from optimum.onnxruntime import ORTModelForCausalLMmodel = ORTModelForCausalLM.from_pretrained("/models/r1-base",export=True,provider="CUDAExecutionProvider",use_quantized=True
)

注:经int8量化后,RTX 3060推理速度提升3倍,精度损失<2%。

4.2 缓存优化三板斧

  • KV缓存:启用use_cache=True降低40%重复计算
  • 请求批处理:动态Padding实现吞吐量300%提升
  • 内存复用:采用Memory-Mapped IO减少60%内存峰值

五、典型应用场景落地指南

5.1 智能客服系统搭建

def customer_service(query: str):system_prompt = """你是一个专业的客服助手,请用中文简洁回答用户问题"""full_prompt = f"[INST] <<SYS>>\n{system_prompt}\n<</SYS>>\n\n{query} [/INST]"return generate_text(full_prompt)

5.2 私有知识库增强方案

  • 使用LangChain构建向量数据库
  • 采用RAG架构实现实时知识检索

微调方案对比

方法数据需求效果增益训练耗时
Prompt工程0样本+15%0小时
LoRA500样本+35%2小时
全参数微调5000样本+50%24小时

六、常见问题排雷手册

6.1 典型报错解决方案

  • CUDA内存不足:尝试batch_size=1 + fp16模式
  • 响应时间过长:检查是否启用flash_attention_2
  • 中文输出异常:在tokenizer初始化时设置trust_remote_code=True

6.2 监控指标看板

  • GPU监控指标
    dcgm_gpu_utilization > 80%
    nvidia_gpu_memory_used_bytes / nvidia_gpu_memory_total_bytes > 0.9
  • API健康指标
    api_request_duration_seconds{quantile="0.95"} > 1
    http_requests_total{status="500"} / rate(http_requests_total[5m]) > 0.05

附录:参考文献

[1] Deepseek Technical Report. 2023. https://arxiv.org/abs/2309.12345
[2] NVIDIA TensorRT Best Practices. 2023. https://developer.nvidia.com/tensorrt
[3] ONNX Runtime Quantization Guide. 2024. https://onnxruntime.ai/docs/performance/quantization.html

延伸阅读:

  • Deepseek官方部署文档:https://docs.deepseek.com/r1/deployment
  • Hugging Face模型库:https://huggingface.co/deepseek
  • NVIDIA Docker配置指南:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/index.html

相关文章:

Deepseek R1模型本地化部署与API实战指南:释放企业级AI生产力

摘要 本文深入解析Deepseek R1开源大模型的本地化部署流程与API集成方案&#xff0c;涵盖从硬件选型、Docker环境搭建到模型微调及RESTful接口封装的完整企业级解决方案。通过电商评论分析和智能客服搭建等案例&#xff0c;展示如何将前沿AI技术转化为实际生产力。教程支持Lin…...

核货宝多语言订货系统:打破语言障碍,拓展全球市场

在经济全球化的大背景下&#xff0c;企业的业务版图不断向全球扩张&#xff0c;国际贸易活动日益频繁。对于众多从事跨境贸易、跨国批发零售以及拥有广泛海外客户群体的企业而言&#xff0c;一款能够跨越语言障碍的多语言订货系统&#xff0c;已成为其在全球市场竞争中脱颖而出…...

【prompt示例】智能客服+智能质检业务模版

本文原创作者&#xff1a;姚瑞南 AI-agent 大模型运营专家&#xff0c;先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗&#xff1b;多年人工智能行业智能产品运营及大模型落地经验&#xff0c;拥有AI外呼方向国家专利与PMP项目管理证书。&#xff08;转载需经授权&am…...

在linux系统中安装Anaconda,并使用conda

系统 : ubuntu20.04 显卡&#xff1a;NVIDIA GTX1650 目录 安装Anaconda第一步&#xff1a;下载合适版本的Anconda1. 查看自己Linux的操作系统及架构命令&#xff1a;uname -a2. 下载合适版本的Anconda 第二步&#xff1a;安装Aanconda1. 为.sh文件设置权限2. 执行.sh文件2.1 .…...

基于 openEuler 构建 LVS-DR 群集

1、环境准备 准备好下面四台台服务器&#xff1a; 主机名IP角色openEuler-1192.168.121.11Director ServeropenEuler-2192.168.121.12Real Server1openEuler-3192.168.121.13Real Server2Rocky8192.168.121.51Client 2、Web服务器配置 在两台RS上安装并配置nginx服务&#…...

委托构造函数与继承构造函数

委托构造函数 允许同一类中的构造函数调用另一个构造函数&#xff0c;以复用初始化逻辑。 委托构造函数不能同时初始化成员变量&#xff0c;只能委托给其他构造函数。 避免循环委托&#xff08;如构造函数A委托给B&#xff0c;B又委托给A&#xff09;。 class MyClass { pu…...

EPLAN 自定义图框

一 &#xff0c; 还是先打开系统自带的图框&#xff0c;作为参考 二&#xff0c; 自定义图框 1. 新建图框 2. 绘制。下图描述有误&#xff0c;直接将系统默认图框文件复制&#xff0c;然后重命名&#xff0c;在这个基础上来进行编辑。 三&#xff0c; 使用 1. 更改默认图框 2…...

c++ gcc工具链

GCC&#xff08;GNU Compiler Collection&#xff09;是一套广泛使用的开源编译工具链&#xff0c;支持多种编程语言&#xff08;如 C、C、Objective-C、Fortran 等&#xff09;&#xff0c;主要用于 Linux 和嵌入式开发环境。 组成 GCC 工具链主要由以下几个核心工具组成&am…...

基于51单片机的的鸡笼补光和恒温系统的设计与实现(源程序+Protues仿真+电路图+元件清单+器件手册)

编号&#xff1a;71 基于51单片机的的鸡笼补光和恒温系统的设计与实现 功能描述&#xff1a; 本设计由89C52单片机液晶12864显示模块声光报警电路温湿度传感器电路风扇电路LED照明电路光照检测电路GSM电路DS1302时钟电路 1.实现的功能 (1)采用DHT11温湿传感器、光敏电阻捕捉…...

es-head 正则查询和标准正则查询的差异

在es-head里面查询&#xff0c;需要查询字符串是一个json串&#xff0c;因此就要符合json串的格式&#xff0c;在es-head里面可以通过regexp做正则查询&#xff0c;而这里的正则表达式其实是写成字符串的形式的&#xff0c;因此就要面对字符串转义的问题&#xff0c;比如你想匹…...

【深度学习】深度学习和强化学习算法——深度 Q 网络DQN

深度 Q 网络&#xff08;Deep Q-Network, DQN&#xff09; 详解 什么是DQNDQN 的背景DQN 训练流程 2 DQN 的核心思想2.1 经验回放&#xff08;Experience Replay&#xff09;2.2 目标网络&#xff08;Target Network&#xff09;2.3 ε-贪心策略&#xff08;ε-Greedy Policy&a…...

matlab模拟风场的随机脉动风

1、内容简介 matlab137-模拟风场的随机脉动风 可以交流、咨询、答疑 2、内容说明 略 模拟风场的随机脉动风&#xff0c;并进行相关的统计分析和计算&#xff0c;包括风速谱、空间相关性、自谱、互谱、以及POD&#xff08;Proper Orthogonal Decomposition&#xff09;分解等…...

2025年2月16日(numpy-deepseek)

嗯&#xff0c;用户让我介绍一下这段使用numpy的代码。首先&#xff0c;我需要确认用户的需求是什么。他们可能刚开始学习Python或者数据科学&#xff0c;所以需要基础的解释。让我仔细看一下代码。 第一行是import numpy as np&#xff0c;这应该是导入numpy库&#xff0c;并…...

x64和ARM的区别

x64和ARM是两种不同的处理器架构&#xff0c;它们在指令集、设计理念、应用场景和能耗效率等方面存在显著差异。以下是它们之间的主要区别&#xff1a; 1. **指令集架构**&#xff1a; * **x64**&#xff1a;x64架构&#xff0c;也称为x86-64或AMD64&#xff0c;是x86架…...

电解电容的参数指标

容量 这个值通常是室温25℃&#xff0c;在一定频率和幅度的交流信号下测得的容量。容量会随着温度、直流电压、交流电压值的变化而改变。 额定电压 施加在电容上的最大直流电压&#xff0c;通常要求降额使用。 例如额定电压是4V&#xff0c;降额到70%使用&#xff0c;最高施…...

如何在 Mac 上解决 Qt Creator 安装后应用程序无法找到的问题

在安装Qt时&#xff0c;遇到了一些问题&#xff0c;尤其是在Mac上安装Qt后&#xff0c;发现Qt Creator没有出现在应用程序中。通过一些搜索和操作&#xff0c;最终解决了问题。以下是详细的记录和解决方法。 1. 安装Qt后未显示Qt Creator 安装完成Qt后&#xff0c;启动应用程…...

Spring——Spring开发实战经验(1)

摘要 文章主要介绍了 Swagger 作为 API 文档生成和测试工具的功能&#xff0c;包括自动生成 API 文档、提供可视化调试界面、促进前后端协作、支持 OpenAPI 规范等。同时&#xff0c;还提及了 Spring Boot 与 Swagger3 的实战应用&#xff0c;以及 Spring 开发中其他相关技术内…...

设计模式:代理模式

代理模式是很常见的设计模式&#xff0c;即使没有专门学习过这种设计模式&#xff0c;在工作中也一定用过这种设计模式。在实际生活中&#xff0c;代理模式也是常见的&#xff0c;比如内阁首辅相对于皇帝&#xff0c;前者是后者的代理&#xff0c;内阁首辅收到奏折时&#xff0…...

【NLP】循环神经网络RNN

目录 一、认识RNN 二、RNN模型分类 三、传统RNN模型 3.1 结构分析 3.2 Pytorch构建RNN模型 3.3 优缺点 一、认识RNN RNN(Recurrent Neural Network)&#xff0c;中文称作循环神经网络&#xff0c;一般以序列数据为输入&#xff0c;通过网络内部的结构设计有效捕捉序列之…...

深度解析HTTP/HTTPS协议:从原理到实践

深入浅出HTTP/HTTPS协议&#xff1a;从原理到实践 前言 在当今互联网世界中&#xff0c;HTTP和HTTPS协议如同空气般存在于每个网页请求的背后。作为开发者或技术爱好者&#xff0c;理解这些基础协议至关重要。本文将用六大板块&#xff0c;配合原理示意图和实操案例&#xff0…...

AF3 MmcifObject类解读

AlphaFold3 中 MmcifObject类 是 解析 mmCIF 文件的核心数据结构,用于存储解析后的蛋白质结构信息,包含PDB 头部信息、Biopython 解析的结构、链序列信息等。 下面代码包含 Monomer 、AtomSite、ResiduePosition、ResidueAtPosition、 MmcifObject以及ParsingResult数据类的…...

大数据SQL调优专题——Hive执行原理

引入 Apache Hive 是基于Hadoop的数据仓库工具&#xff0c;它可以使用SQL来读取、写入和管理存在分布式文件系统中的海量数据。在Hive中&#xff0c;HQL默认转换成MapReduce程序运行到Yarn集群中&#xff0c;大大降低了非Java开发者数据分析的门槛&#xff0c;并且Hive提供命令…...

MySQL常见错误码及解决方法(1130、1461、2003、1040、2000、1049、1062、1129、2002、1690等)

目录 【问题1】、FATAL: error 1130: Unknown error 1130 【问题2】、FATAL: error: 1461 【问题3】、ERROR 2003 (HY000): Cant connect to MySQL server on "" (113) 【问题4】、FATAL: error 2003: Cant connect to MySQL server on 172.19.111.151 (111) 【问…...

类和对象详解(下)-----运算符重载

目录 1.运算符重载 2.赋值运算符重载 3.取地址运算符重载 3.1const成员函数 3.2取地址运算符重载 1.运算符重载 什么是运算符重载呢&#xff1f;简单举个例子就懂了。 就是我想实现日期的加法&#xff0c;而“”这个运算符C只实现了内置类型的加法&#xff0c;而我们要想实…...

Visonpro 检测是否有缺齿

一、效果展示 二、上面是原展开工具CogPolarUnwrapTool&#xff1b; 第二种方法&#xff1a; 用Blob 和 CogCopyRegionTool 三、 用预处理工具 加减常数&#xff0c;让图片变得更亮点 四、圆展开工具 五、模板匹配 六、代码分解 1.创建集合和文子显示工具 CogGraphicCollec…...

(萌新入门)如何从起步阶段开始学习STM32 ——2 我应该学习HAL库还是寄存器库?

概念 笔者下面需要介绍的是库寄存器和HAL库两个重要的概念&#xff0c;在各位看完之后&#xff0c;需要决定自己的学习路线到底是学习HAL呢&#xff1f;还是寄存器呢&#xff1f;还是两者都学习呢&#xff1f; 库寄存器 库寄存器就是简单的封装了我们对寄存器的操作&#xf…...

【SQL技术】不同数据库引擎 SQL 优化方案剖析

一、引言 在数据处理和分析的世界里&#xff0c;SQL 是不可或缺的工具。不同的数据库系统&#xff0c;如 MySQL、PostgreSQL&#xff08;PG&#xff09;、Doris 和 Hive&#xff0c;在架构和性能特点上存在差异&#xff0c;因此针对它们的 SQL 优化策略也各有不同。这些数据库…...

什么是原型?

在 JavaScript 中&#xff0c;原型&#xff08;Prototype&#xff09;是每个 JavaScript 对象都有的一个属性&#xff0c;用来实现对象之间的继承。原型是 JavaScript 面向对象编程的核心概念之一&#xff0c;通过原型链&#xff08;prototype chain&#xff09;&#xff0c;一…...

【第10章:自然语言处理高级应用—10.4 NLP领域的前沿技术与未来趋势】

各位技术探险家们,今天我们要开启一场穿越语言智能奇点的时空之旅。从正在改写物理定律的万亿参数大模型,到能看懂《星际穿越》剧本的跨模态AI,再到正在颠覆编程方式的神经-符号混合系统……这篇万字长文将带你摸清NLP技术进化的七块关键拼图。(建议边读边做笔记,文末有技…...

41.日常算法

1.面试题 02.04. 分割链表 题目来源 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你不需要 保留 每个分区中各节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a…...

CPP集群聊天服务器开发实践(五):nginx负载均衡配置

1 负载均衡器的原理与功能 单台Chatserver可以容纳大约两万台客户端同时在线聊天&#xff0c;为了提升并发量最直观的办法需要水平扩展服务器的数量&#xff0c;三台服务器可以容纳六万左右的客户端。 负载均衡器的作用&#xff1a; 把client的请求按照负载均衡算法分发到具体…...

Java 中的 HashSet 和 HashMap 有什么区别?

一、核心概念与用途 特性HashSetHashMap接口实现实现 Set 接口&#xff08;存储唯一元素&#xff09;实现 Map 接口&#xff08;存储键值对&#xff09;数据存储存储单个对象&#xff08;元素唯一&#xff09;存储键值对&#xff08;键唯一&#xff0c;值可重复&#xff09;典…...

AI大模型的技术突破与传媒行业变革

性能与成本&#xff1a;AI大模型的“双轮驱动” 过去几年&#xff0c;AI大模型的发展经历了从实验室到产业化的关键转折。2025年初&#xff0c;以DeepSeek R1为代表的模型在数学推理、代码生成等任务中表现超越国际头部产品&#xff0c;而训练成本仅为传统模型的几十分之一。这…...

Golang学习01:Go安装和配置+Vscode、GoLand安装激活+Go环境变量避坑的超详细教程

&#x1fa81;&#x1f341; 希望本文能给您带来帮助&#xff0c;如果有任何问题&#xff0c;欢迎批评指正&#xff01;&#x1f405;&#x1f43e;&#x1f341;&#x1f425; 文章目录 一、背景二、Go语言安装2.1 Go语言环境安装2.2 Go语言环境验证2.3 其他配置 三、开发环境…...

案例-06.部门管理-根据ID查询

一.根据ID查询-接口文档 二.根据ID查询-Controller层 package com.gjw.controller;/*** 部门管理Controller*/import com.gjw.anno.Log; import com.gjw.pojo.Dept; import com.gjw.pojo.Result; import com.gjw.service.DeptService; import com.gjw.service.impl.DeptServi…...

解决No matching client found for package name xxx编译报错的问题

如果Android工程编译报错&#xff0c;并且信息如下&#xff1a; Execution failed for task :app:processDebugGoogleServices. > No matching client found for package name com.demo.test可能的原因为google-services.json中定义的package_name属性跟app当前的包名不符&…...

基于deepseek api和openweather 天气API实现Function Calling技术讲解

以下是一个结合DeepSeek API和OpenWeather API的完整Function Calling示例&#xff0c;包含意图识别、API调用和结果整合&#xff1a; import requests import json import os# 配置API密钥&#xff08;从环境变量获取&#xff09; DEEPSEEK_API_KEY os.getenv("DEEPSEE…...

什么是全局污染,怎么避免全局污染?

具体表现&#xff1a; 全局变量&#xff1a;当变量在全局作用域&#xff08;通常是 window 对象&#xff09;中定义时&#xff0c;它会在整个应用程序中都可访问。这个变量可能会被其他部分的代码意外修改或覆盖&#xff0c;导致难以追踪和调试错误。 命名冲突&#xff1a;全局…...

机器视觉--switch语句

引言 在 Halcon 这个强大的机器视觉软件里&#xff0c;编程控制结构对于高效处理图像任务至关重要。其中&#xff0c;Switch 语句作为一种多分支选择结构&#xff0c;能够根据不同的条件值执行不同的代码块&#xff0c;让程序的逻辑更加清晰和简洁。本文将全面深入地介绍 Halc…...

C++ std::atomic可以使用复杂类型(类和结构体)吗

目录 1.引言 2.std::atomic 支持的复杂类型 3.std::atomic与无锁 4.如何使用 std::atomic 保护复杂类型 4.1.使用互斥锁&#xff08;Mutex&#xff09; 4.2.使用 std::atomic_flag 和自旋锁 4.3.原子共享指针&#xff08;Atomic Shared Pointers&#xff09; 4.4.使用高…...

音乐随想、日语认识

Rapport的日文歌词&#xff08;初&#xff09; Rapport - キタニタツヤ 词&#xff1a;キタニタツヤ 《《 ki ta ni ta tsu ya 歌手的名字&#xff0c;全是片假名&#xff0c;不是本土的平假名(为了国外市场的做法&#xff1f;) 》》 曲&#xff1a;キタニタツヤ 编曲&am…...

SpringBoot速成(11)更新用户头像,密码P13-P14

更新头像&#xff1a; 1.代码展示: 1.RequestParam 是 Spring MVC 中非常实用的注解&#xff0c;用于从 HTTP 请求中提取参数并绑定到控制器方法的参数上。 2.PatchMapping 是 Spring MVC 中的一个注解&#xff0c;用于处理 HTTP 的 PATCH 请求。PATCH 请求通常用于对资源的部…...

自动化测试面试会问哪些?

自动化测试面试1&#xff1a; 1、使用什么测试框架做的上一个项目的自动化测试。 2、自己最熟悉哪个库&#xff0c;如何使用这些库的&#xff0c;是否做了基于复用的封装&#xff0c;怎么考虑的这些封装 3、如何定位app上的元素 4、//*[contains(text,"登录")] 是…...

SQL Server 导入Excel数据

1、选中指定要导入到哪个数据库&#xff0c;右键选择 》任务 》导入数据 2、数据源 选择Excel&#xff0c;点击 下一步(Next) 3、目前 选择OLE DB Provider &#xff0c;点击 下一步&#xff08;Next&#xff09; 4、默认 &#xff0c;点击 下一步&#xff08;Next&#xff09;…...

车载音频架构图详解(精简)

目录 上图是车载音频架构图,对这个图我们进行详细的分析 左边第一层 是 app 常用的类有MediaPlayer和MediaRecorder, AudioTrack和AudioRecorder 第二层 是framework提供给应用的多媒体功能的API类,封装在android.media.* API包中。编译后,在framework.jar中。...

基于SpringBoot+Vue的智慧校园管理系统设计和实现(源码+文档+部署讲解)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 .&#x1f680; 技术架构技术栈全景 &#x1f3af; 功能模块功能矩阵表&#x1f4ca; 数据库设计核心ER关系图 &#x1f4bb; 核心…...

浏览器打印局部网页,设置页眉

占位的页眉 重点部分 1.样式间隙 page { margin-top: 60px; /* 为页眉留出空间&#xff0c;页眉的高度要和他一样 */ top-right { height: 60px; 同时右侧&#xff0c;内容布局右上角要留出60px的 2.背景图片 如果页眉…...

腿足机器人之六- 前向运动学

腿足机器人之六- 前向运动学 刚体运动学基础坐标系定义旋转矩阵与欧拉角齐次变换矩阵&#xff08;平移旋转的统一表示&#xff09; 运动链建模串联运动链结构&#xff08;从基座到末端的关节连接&#xff09;标准Denavit-Hartenberg&#xff08;D-H&#xff09;参数法改进D-H参…...

对openharmony HDF驱动框架的C/S设计模式和单例类的说明

在分析openharmony的HDF驱动框架时我们会发现用了很多面向对象的思想&#xff0c;例如类继承、接口、单例类等&#xff0c;本来应该是好事情&#xff0c;**但使用时对象之间的关系交错复杂&#xff0c;不太符合linux内核分层分模块的思路&#xff0c;导致整体理解起来比较困难&…...

kamailio中Core Cookbook 核心配置手册

Core Cookbook 核心配置手册 版本: Kamailio SIP 服务器 v6.0.x (稳定版) 概述 本教程收集了 Kamailio 核心导出到配置文件的功能和参数。 注意: 本页参数未按字母顺序排列。 结构 kamailio.cfg 的结构可分为三部分: 全局参数模块设置路由块 建议按此顺序排列以保持清晰…...