[AI/GPT/LLOps/AI中台] Dify : 开源AI大模型应用开发平台(Apache 2.0)
概述:Dify
Dify是一款开源的大语言模型(LLM) 应用开发平台。
- 它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。
- 即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
- 由于
Dify内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。- 这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。
简介:为什么会有Dify?LLMOps
近年来大规模语言模型的崛起,带来了一个新兴的概念
LLMOps(Large Language Model Operations),LLMOps是一个涵盖了大型语言模型(如GPT系列)开发、部署、维护和优化的一整套实践和流程。LLMOps 的目标是确保高效、可扩展和安全地使用这些强大的 AI 模型来构建和运行实际应用程序。它涉及到模型训练、部署、监控、更新、安全性和合规性等方面。
用一句话描述,
LLMOps有助于提升大语言模型在实际应用中的效率和表现。
在众多的LLMOps应用中,有一款在Github上拥有54.9K Star的开源项目备受欢迎,这就是Dify。
- 官方给出的表述如下:
Dify 是一款开源的大语言模型(LLM) 应用开发平台。
它融合了后端即服务(Backend as Service)和LLMOps的理念,使开发者可以快速搭建生产级的生成式 AI 应用。
即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
Dify一词源自Define+Modify,意指定义并且持续的改进你的 AI 应用,它是为你而做的(Do it for you)。宗旨
Dify是一个开源的LLM应用程序开发平台。
Dify的直观界面结合了AI工作流程、RAG管道、代理功能、模型管理、可观察性功能等,让您快速从原型到生产。

主要编程语言: Python / TypeSript
开源协议: Apache 2.0
url
20250211 : 9.6k fork / 65.2k star
使用Dify LLMOps 平台后会有什么效果
| 步骤 | 未使用LLMOps平台 | 使用Dify LLMOps平台 | 时间差异 |
|---|---|---|---|
| 开发应用前&后端 | 集成和封装 LLM 能力,花费较多时间开发前端应用 | 直接使用 Dify 的后端服务,可基于 WebApp 脚手架开发 | -80% |
| Prompt Engineering | 仅能通过调用 API 或 Playground 进行 | 结合用户输入数据所见即所得完成调试 | -25% |
| 数据准备与嵌入 | 编写代码实现长文本数据处理、嵌入 | 在平台上传文本或绑定数据源即可 | -25% |
| 应用日志与分析 | 编写代码记录日志,访问数据库查看 | 平台提供实时日志与分析 | -70% |
| 数据分析与微调 | 技术人员进行数据管理和创建微调队列 | 非技术人员可协同,可视化模型调整 | -60% |
| AI 插件开发与集成 | 编写代码创建、集成 AI 插件 | 平台提供可视化工具创建、集成插件能力 | -50% |
在使用 LLMOps 平台如 Dify 之前,基于 LLM 开发应用的过程可能会非常繁琐和耗时。
开发者需要自行处理各个阶段的任务,这可能导致效率低下、难以扩展和安全性问题。
引入 Dify 这样的 LLMOps 平台后,基于 LLM 开发应用的过程将变得更加高效、可扩展和安全。
Dify的核心竞争力在哪里
- 在LLMOps领域,Dify是业界内备受关注的一款产品,作为一款开源项目在Github中拥有56.5K的Star, 那Dify的竞争力究竟在哪里?
• 工作流 : Dify 支持在可视化的画布上快速构建出一个可以执行自动化任务的 AI 应用;
• 支持大多数市面上流行的 AI 模型 :包括 ChatGPT、Mistral、Llama3 以及通义千问等;
- 直观简洁的Prompt IDE:可以用于制作提示、比较模型性能以及向基于聊天的应用程序添加文本转语音等附加功能;
- RAG 功能:广泛的RAG功能,涵盖从文档摄取到检索的所有内容,并支持从PDF、PPT和其他常见文档格式中提取文本。
- 代理功能:Dify 内置了 50 多个工具 ,例如 Google Search、DELL·E、Stable Diffusion 和 WolframAlpha,也可以自定义工具。可以基于LLM函数调用或ReAct定义代理,并为代理添加预构建或自定义工具
- LLMOps :支持监控和分析应用程序日志和性能。可以根据生产数据和注释不断改进提示、数据集和模型监控和分析应用程序日志和性能;
- 后端即服务:Dify 的所有产品 都附带相应的 API ,因此我们也可以很轻松地将 Dify 集成到自己的业务中去。
系统集成与扩展性
除此之外 Dify 还额外提供了三个功能给我们,分别是:
- 运行 :会打开一个新的页面,页面 url 地址是 dify 为这个应用生成的一个唯一的 url 链接;
- 嵌入网站 :就是提供三种嵌入方式: 以 iframe 的形式将 AI 应用集成到自己的网站中去 、通过 script 脚本的方式将一段代码 copy 到网站代码中以及通过浏览器插件的形式来集成
- 访问 API :提供接口的形式,将 AI 应用接入到其他的产品中
核心功能
工作流: 在画布上构建和测试功能强大的 AI 工作流程,利用以下所有功能以及更多功能。
全面的模型支持: 与数百种专有/开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。
完整的支持模型提供商列表可在此处找到:
Prompt IDE: 用于制作提示、比较模型性能以及向基于聊天的应用程序添加其他功能(如文本转语音)的直观界面。
RAG Pipeline: 广泛的 RAG 功能,涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用的支持。
Agent 智能体: 您可以基于 LLM 函数调用或 ReAct 定义 Agent,并为 Agent 添加预构建或自定义工具。Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DELL·E、Stable Diffusion 和 WolframAlpha 等。
LLMOps: 随时间监视和分析应用程序日志和性能。您可以根据生产数据和标注持续改进提示、数据集和模型。
后端即服务: 所有 Dify 的功能都带有相应的 API,因此您可以轻松地将 Dify 集成到自己的业务逻辑中。
核心内置组件
- ollama
- ollama是一个非常方便的LLM加速/服务化应用,现在大部分人构建私有化大模型应用,模型服务部分几乎用的都是它。
- 推荐文献
Dify 背后的公司: 苏州语灵人工智能科技(LangGenius)
Dify是苏州语灵人工智能科技(LangGenius)有限公司旗下的产品。
+ 成立时间与注册资本:苏州语灵人工智能科技有限公司成立于2023年3月,注册资本为143.63万人民币(经过增资后的数额)。
+ 经营范围:该公司主要经营范围包括第二类增值电信业务、人工智能基础软件开发、人工智能应用软件开发、人工智能行业应用系统集成服务以及软件开发等。
+ 股东结构:该公司的股东包括张路宇、苏州语芯创业投资合伙企业(有限合伙)、宁波梅山保税港区民恒启智投资管理中心(有限合伙),以及新增的浙江阿里巴巴云计算有限公司和苏州元之芯贰期创业投资合伙企业(有限合伙)。
+ 产品与服务:
Dify: 该公司推出的一款开源LLMOps(大语言模型运维)平台,旨在帮助开发者更简单、快捷地创建AI应用。Dify平台具有简洁易用的界面和强大的功能,在实际应用中获得了用户的一致好评。
此外,Dify还推出了新的主力产品Dify workflow,一个兼顾易用和灵活的开发框架,进一步丰富了其产品线和服务。
Ollama
综上所述,
Dify作为苏州语灵人工智能科技有限公司的旗舰产品,在人工智能领域具有广泛的影响力和应用前景。
原理与架构

Dify的架构采用分层设计,自上而下可分为四层:数据层、开发层、编排层和基础层
数据层
- 数据层包含Dataset(数据集)和Prompts(提示词)两个输入源,通过ETL进行数据处理,并由RAG Pipeline实现知识检索增强。这一层确保了数据的质量和模型的回答准确性和可靠性。
- 开发层
- 开发层提供Prompts IDE和Agent DSL两大开发工具。
Prompts IDE用于提示词的编写、测试和版本管理;
而Agent DSL则用于构建智能代理,支持感知、规划和行动等能力。
- 编排层
编排层以Orchestration Studio为核心,负责协调各个组件的运行,并通过Moderation System(审核系统)和Cache System(缓存系统)保障应用质量。这一层提供了可视化的编排工具,极大地加速了AI应用程序的开发进程。
- 基础层
- 基础层包括Storage(存储系统)和LLMs(语言模型)两大基础设施,为上层提供支撑。
存储系统负责数据的存储和管理,而语言模型则是应用的核心组件。
- 核心组件功能
- Dataset ETL:负责数据的提取、转换和加载,确保数据质量。
- Dify RAG Pipeline:实现检索增强生成,提高模型回答的准确性和可靠性。
- Dify Prompts IDE:提供提示词的编写、测试和版本管理功能。
- Dify Agent DSL:支持智能代理的开发,实现感知、规划和行动等能力。
- Plugins Toolbox:提供丰富的插件工具箱,支持工作流程、社区集成等功能。
- Dify LLMOps:提供模型运维能力,包括监控、注释和生命周期管理
安装部署篇
依赖组件
知悉即可,也可通过
dify/docker/docker-compose.yaml搜索image了解。
以 1.0.0-beta.1 为例:
langgenius/dify-api:1.0.0-beta.1
langgenius/dify-web:1.0.0-beta.1
postgres:15-alpine
redis:6-alpine
langgenius/dify-sandbox:0.2.10
langgenius/dify-plugin-daemon:0.0.1-local
ubuntu/squid:latest
certbot/certbot
nginx:latest
pingcap/tidb:v8.4.0
semitechnologies/weaviate:1.19.0
langgenius/qdrant:v1.7.3
pgvector/pgvector:pg16
tensorchord/pgvecto-rs:pg16-v0.3.0
ghcr.io/chroma-core/chroma:0.5.20
quay.io/oceanbase/oceanbase-ce:4.3.3.0-100000142024101215
container-registry.oracle.com/database/free:latest
quay.io/coreos/etcd:v3.5.5
minio/minio:RELEASE.2023-03-20T20-16-18Z
milvusdb/milvus:v2.5.0-beta
opensearchproject/opensearch:latest
opensearchproject/opensearch-dashboards:latest
myscale/myscaledb:1.6.4
docker.elastic.co/elasticsearch/elasticsearch:8.14.3
docker.elastic.co/kibana/kibana:8.14.3
downloads.unstructured.io/unstructured-io/unstructured-api:latest
安装部署 on Windows by Docker Compose 【未亲测】
Step0 安装 前置依赖
Docker Desktop
- 安装 Docker Desktop : Windows端的 Docker 环境支持软件
- 推荐文献: [虚拟化/Docker] Docker Desktop 安装与使用 - 博客园/千千寰宇
- 前置技术知识:Docker
- [Docker] Docker 基础教程(概念/原理/基础操作) - 博客园/千千寰宇
- 前置技术知识: Docker Compose
- [Docker] Docker Compose 基础教程(概念/基础操作) - 博客园/千千寰宇
Git-Bash (推荐/可选)
- url
Step1 下载Dify源代码
CMDorGit-Bash: 下载Dify源代码
git clone https://github.com/langgenius/dify.git
或 wget https://github.com/langgenius/dify.git
或 前往 Github(https://github.com/langgenius/dify) / 官网 人工下载 zip 压缩包
- 【补充】解压dify.zip包
cd dify
7z x dify-main.zip
mv dify-main dify
Step2 启动 Dify
- 进入 dify 源代码的 docker 目录,执行一键启动命令:
# cd dify/docker
//打印下 docker compose的版本
# docker compose version
Docker Compose version v2.27.1
# docker compose up -d
安装部署 on CENTOS 【亲测】
Step0 安装 前置依赖
Docker Desktop
- 安装 Docker Desktop : Windows端的 Docker 环境支持软件
- 推荐文献: [虚拟化/Docker] Docker Desktop 安装与使用 - 博客园/千千寰宇
- 前置技术知识:Docker
- [Docker] Docker 基础教程(概念/原理/基础操作) - 博客园/千千寰宇
- 前置技术知识: Docker Compose
- [Docker] Docker Compose 基础教程(概念/基础操作) - 博客园/千千寰宇
[root@node-d opt]# docker compose version
Docker Compose version v2.27.1
[root@node-d opt]# docker --version
Docker version 26.1.4, build 5650f9b
Git-Bash (推荐/可选)
- url
[root@node-d opt]# git --version
git version 1.8.3.1
# cd /opt
# git config --global user.name "xxxxxxxx"
# git config --global user.email xxxxxxxx@qq.com
# ssh-keygen -t rsa -C "xxxxxxxx@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): id_rsa_github
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_github.
Your public key has been saved in id_rsa_github.pub.
The key fingerprint is:
SHA256:YDWdM+UDxxxxxrZL3uQ7xxxxxxxxDLZo xxxxxxxx@qq.com
The key's randomart image is:
# ls -la
-rw------- 1 root root 1675 Mar 4 01:49 id_rsa_github
-rw-r--r-- 1 root root 399 Mar 4 01:49 id_rsa_github.pub
# cp ./id_rsa_github* ~/.ssh/
即: /root/.ssh
# ls -la ~/.ssh/
# vim ~/.ssh/config
Host github.com
HostName github.com
Port 22
User yy
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
# clip < ~/.ssh/id_rsa.pub
【clip: 拷贝/剪切板命令】
# 配置公钥(.pub)到 github 的 SSH
url : https://github.com/settings/keys
# 验证:
ssh -T git@github.com
ssh -v gitee.com -p 443
Step1 下载Dify源代码
CMDorGit-Bash: 下载Dify源代码
[root@node-d opt]# cd /opt
[root@node-d opt]# git clone https://github.com/langgenius/dify.git [√]
或 wget https://github.com/langgenius/dify.git
或 前往 Github(https://github.com/langgenius/dify) / 官网 人工下载 zip 压缩包
[root@node-d opt]# cd dify
[root@node-d dify]# ls -la
total 312
drwxr-xr-x 11 root root 4096 Mar 4 02:11 .
drwxr-xr-x. 9 root root 108 Mar 4 02:11 ..
drwxr-xr-x 22 root root 4096 Mar 4 02:11 api
-rw-r--r-- 1 root root 56 Mar 4 02:11 AUTHORS
-rw-r--r-- 1 root root 9250 Mar 4 02:11 CONTRIBUTING_CN.md
-rw-r--r-- 1 root root 10827 Mar 4 02:11 CONTRIBUTING_DE.md
-rw-r--r-- 1 root root 12605 Mar 4 02:11 CONTRIBUTING_JA.md
-rw-r--r-- 1 root root 9897 Mar 4 02:11 CONTRIBUTING.md
-rw-r--r-- 1 root root 12281 Mar 4 02:11 CONTRIBUTING_VI.md
drwxr-xr-x 3 root root 76 Mar 4 02:11 dev
drwxr-xr-x 2 root root 168 Mar 4 02:11 .devcontainer
drwxr-xr-x 10 root root 4096 Mar 4 02:11 docker
drwxr-xr-x 8 root root 163 Mar 4 02:11 .git
-rw-r--r-- 1 root root 338 Mar 4 02:11 .gitattributes
drwxr-xr-x 7 root root 160 Mar 4 02:11 .github
-rw-r--r-- 1 root root 3279 Mar 4 02:11 .gitignore
drwxr-xr-x 2 root root 89 Mar 4 02:11 images
-rw-r--r-- 1 root root 1879 Mar 4 02:11 LICENSE
-rw-r--r-- 1 root root 1304 Mar 4 02:11 Makefile
-rw-r--r-- 1 root root 16631 Mar 4 02:11 README_AR.md
-rw-r--r-- 1 root root 13488 Mar 4 02:11 README_CN.md
-rw-r--r-- 1 root root 15069 Mar 4 02:11 README_DE.md
-rw-r--r-- 1 root root 15162 Mar 4 02:11 README_ES.md
-rw-r--r-- 1 root root 15345 Mar 4 02:11 README_FR.md
-rw-r--r-- 1 root root 14846 Mar 4 02:11 README_JA.md
-rw-r--r-- 1 root root 13519 Mar 4 02:11 README_KL.md
-rw-r--r-- 1 root root 14279 Mar 4 02:11 README_KR.md
-rw-r--r-- 1 root root 13846 Mar 4 02:11 README.md
-rw-r--r-- 1 root root 14433 Mar 4 02:11 README_PT.md
-rw-r--r-- 1 root root 13615 Mar 4 02:11 README_SI.md
-rw-r--r-- 1 root root 14392 Mar 4 02:11 README_TR.md
-rw-r--r-- 1 root root 15423 Mar 4 02:11 README_VI.md
drwxr-xr-x 5 root root 83 Mar 4 02:11 sdks
drwxr-xr-x 20 root root 4096 Mar 4 02:11 web
- 切换到
1.0.0版本分支
[root@node-d dify]# git checkout 1.0.0
Note: checking out '1.0.0'.
[root@node-d dify]# git status
# HEAD detached at 1.0.0
nothing to commit, working directory clean
Step2 下载镜像并运行
- 下载镜像并运行
[root@node-d dify]# cd docker
[root@node-d docker]# docker compose up -d
WARN[0000] The "DB_DATABASE" variable is not set. Defaulting to a blank string.
WARN[0000] The "DB_PASSWORD" variable is not set. Defaulting to a blank string.
WARN[0000] The "DB_USERNAME" variable is not set. Defaulting to a blank string.
...

第1次启动dify,因为要下载Images,需要等一段时间。
如果需要修改配置,可以参考: https://docs.dify.ai/v/zh-hans/getting-started/install-self-hosted/environments 修改docker-compose.yaml文件。
- 启动后查看 Docker 的运行进程
docker ps

Step3 访问
- 启动成功后访问 http://127.0.0.1:80

使用指南篇
探索
- 探索

推荐

Agent

助手

工作流
工作室 : 聊天助手(CHATFLOW) / Agent / 工作流

创建空白应用 : 聊天助手 / Agent / 文本生成应用 / ChatFlow / 工作流

聊天助手
通过简单的配置快速搭建一个基于 LLM 的对话机器人。支持切换为 Chatflow 编排。了解更多

Agent
能够迭代式的规划推理、自主工具调用,直至完成任务目标的智能助手。了解更多

文本生成应用
通过简单的配置快速搭建一个面向文本生成类任务的 AI 助手。

Chatflow
基于工作流编排,适用于定义等复杂流程的多轮对话场景,具有记忆功能。了解更多

工作流
基于工作流编排,适用于自动化、批处理等单轮生成类任务的场景。了解更多
从应用模板创建






导入 DSL 文件

应用的管理: 编辑 / 复制 / 导出DSL / 打开 / 删除


工作流 / Agent / 聊天助手 : 同理
知识库
知识库主页

外部知识库 API 用于连接到 Dify 之外的知识库并从中检索知识。了解如何创建外部知识库 API

添加外部知识库
创建知识库
- 导入已有文本

- 同步自 Notion 内容

- 同步自 Web 网站

知识库实例管理
文档管理
文档列表 / 添加文档 / 文档禁用|停用 /

文档分段管理


召回测试

设置

API


/datasets?category=api
curl --location --request POST 'http://192.168.xxx.xxx/v1/datasets/{dataset_id}/document/create-by-text' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "text","text": "text","indexing_technique": "high_quality","process_rule": {"mode": "automatic"}}'
插件
插件管理主页

探索 Marketplace

工具
工具

自定义工具

工作流工具

账户


设置

模型供应商
系统模型设置

可选的模型列表
/apps?category=chat

以
ollama为例:点击后,以安装插件的形式加载到平台


- 安装完成后,在【插件】列表中即可见到:

插件类型 = 模型 [√] / 工具 [x] / ...
已安装的模型列表

添加模型
以 Ollama 为例:
注: Ollama是由Meta AI(原Facebook AI Research)开发、开源。
- LLM
- Text Embedding
以 硅基流动 为例:

- 添加模型


此时,即可为【系统模型设置】一一设置所需的模型

成员 : 成员列表 / 添加成员


数据来源 : Notion / 网站(使用 Jina Reader / 使用 Firecrawl)



API 扩展
API 扩展列表

新增API扩展

语言 / 时区

帮助文档
路线图


Y 推荐资源
- 阿里云/计算巢

- Docker 社区版

Y 推荐文献
- Dify
- 官网 : https://dify.ai/zh
- 文档 : https://docs.dify.ai
- github : https://github.com/langgenius/dify
- Dify 延申的第三方生态项目
X 参考文献
[AI/GPT/LLOps/AI中台] Dify : 开源AI大模型应用开发平台(Apache 2.0)的更多相关文章
- dotnet 是 前30个增长最快速度的开源项目中排名第一的开发平台
CNCF 的博客 发了一篇文章 <Update on CNCF and Open Source Project Velocity 2020>,中文翻译参见 2020年CNCF和开源项目开发 ...
- 开源低代码开发平台entfrm2.1.0更新
开源低代码开发平台entfrm2.1.0更新 新功能 代码生成支持主子表,支持预览: 新增多应用顶部菜单与左侧菜单联动: element-ui升级到2.15.1: 新增表单管理,集成avue-from ...
- 分享一个全开源的ASP.NET快速开发平台,能快速开发OA CRM ERP 等系统
bingo炸了 2017/3/30 16:28:14 阅读(870) 评论(0) 公司业务量比较大,接了很多项目,为了缩短开发周期老板让我牵头搭建了一个快速开发平台. 我们主要的业务是做OA.CRM. ...
- entfrm开发平台,一个免费开源可视化的无代码开发平台
简介 entfrm开发平台,是一个以模块化为核心的无代码开发平台,是一个集PC和APP快速开发.系统管理.运维监控.开发工具.OAuth2授权.可视化数据源管理与数据构建.API动态生成与统计.工作流 ...
- entfrm开源免费模块化无代码开发平台,开放生态为您创造更多的价值
entfrm开发平台6大特性,赋能快速开发,为您创造更多的价值: 1. 模块化 丰富的模块稳定的框架 后台极易上手 目前已包括系统管理.任务调度.运维监控.开发工具.消息系统.工作流引擎.内容管理等模 ...
- Facebook 开源 AI 所使用的硬件平台 'Big Sur'
Facebook 开源 AI 所使用的硬件平台 'Big Sur' Facebook 今开源其 AI 所使用的硬件平台 'Big Sur'.'Big Sur' 是兼容开放机架的 GPU 加速硬件平台. ...
- AI 也开源:50 大开源 AI 项目 (转)
这些开源AI项目专注于机器学习.深度学习.神经网络及其他应用场合. 自IT界早期以来,研制出能像人类那样“思考”的机器一直是研究人员的一大目标.在过去几年,计算机科学家们在人工智能(AI)领域已取得了 ...
- 最新版本 Stable Diffusion 开源 AI 绘画工具之汉化篇
目录 汉化预览 下载汉化插件一 下载汉化插件二 下载汉化插件三 开启汉化 汉化预览 在上一篇文章中,我们安装好了 Stable Diffusion 开源 AI 绘画工具 但是整个页面都是英文版的,对于 ...
- 最新版本 Stable Diffusion 开源 AI 绘画工具之使用篇
目录 界面参数 采样器 文生图(txt2img) 图生图(img2img) 模型下载 界面参数 在使用 Stable Diffusion 开源 AI 绘画之前,需要了解一下绘画的界面和一些参数的意义 ...
- 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅
摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...
随机推荐
- PM的正交解调法
1.PM的模拟调制过程 PM信号是一种相位调制信号,其携带的信息保存在其信号的相位中,通过改变载波的相位来实现基带数据的传输. 其函数表达式如下: \[s(t) = A*cos(w_c*t + K ...
- 【XML】学习笔记第二章-dtd
目录 XML-DTD DTD语句 基本声明语句 引用外部DTD DTD元素 四种元素类型 元素定义关键字 修饰符号 DTD中的属性 属性修饰 属性类型 DTD中的实体和符号 符号 坑 XML-DTD ...
- nginx国密ssl测试
文章目录文件准备编译部署nginx申请国密数字证书配置证书并测试文件准备下载文件并上传到服务器,这里使用centos 7.8 本文涉及的程序文件已打包可以直接下载. 点击下载 下载国密版openssl ...
- 还在手工写接口测试文档,已经out了
接口文档,顾名思义就是对接口说明的文档.好的接口文档包含了对接口URL,参数以及输出内容的说明,我们参照接口文档就能编写出一个个的测试用例.而且接口文档详细的话,测试用例编写起来就会比较简单,不容易遗 ...
- Qt音视频开发48-通用通道管理
一.前言 把通用的视频控件搞定以后,后期增加新的内核方便多了,不需要在好多个文件复制粘贴之类的,接下来就是需要一个统一的类来管理视频监控系统中的16个通道或者32个通道,甚至64个通道也有可能,当然, ...
- Qt音视频开发9-ffmpeg录像存储
一.前言 上一篇文章写道直接将视频流保存裸流到文件,尽管裸流文件有一定的好处,但是 毕竟大部分用户需要的不是裸流而是MP4视频文件,所以需要将视频流保存成MP4文件,毕竟电脑上的播放器包括默认的播放器 ...
- Java中使用JFreeChart生成甘特图
引言 甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配.它通过条形图显示任务的开始和结束时间,使项目经理能够直观地了解项目的整体情况.在Java开发中,JFreeChart是一个强大的开源 ...
- 《深入理解Mybatis原理》MyBatis动态SQL原理
引入 我们在使用mybatis的时候,会在xml中编写sql语句.比如这段动态sql代码: <update id="update" parameterType="o ...
- CDS标准视图:催款范围描述 I_DunningAreaText
视图名称:催款范围描述 I_DunningAreaText 视图类型: 视图代码: 点击查看代码 @EndUserText.label: 'Dunning Area - Text' @Analytic ...
- org.junit.Assert
引入包,以下两种方式都是OK的,看个人喜好,我倾向于使用第二种,会更加清晰直观.下面的代码我都会用第二种 import static org.junit.Assert.*; import org.ju ...



