AI(学习笔记第二课) 使用langchain进行AI开发
文章目录
- AI(学习笔记第二课) 使用langchain进行AI开发
- 学习内容:
- 1. 使用背景
- 2.创建`python`(`pycharm community版`)开发环境并连接`deepseek`
- 2.1 创建`python`(`pycharm community版`)开发环境
- 2.2 创建`python`工程
- 2.3 写入初始`python`的`AI`代码
- 2.4 使用`pycharm`导入必要的包进入`venv`
- 2.5 使用`langchain`导入必要的包
- 2.6 执行`AI`的`langchain`代码
- 3. 结合`ollama`构造`知识向量库`并进行`RAG`
- 3.1 构建本地的`ollama`服务
- 3.1.1 构建`ollama`的`LLM`大模型完全通过`deepseek.com`就可以查询到。
- 3.1.2 在 Windows 上安装 Ollama 的步骤如下:
- 3.1.3 验证`ollama`的启动情况
- 3.2 使用`langchain`测试本地的`ollama`服务
- 3.2.1 测试代码
- 3.2.2 执行代码
- 3.3 进行`RAG Retrieval Argumented`测试
- 3.3.1 知之为知之,不知`AI`知
- 3.3.2 测试代码
- 3.3.3 执行代码
AI(学习笔记第二课) 使用langchain进行AI开发
- 创建
python
开发环境(pycharm community版
)并连接deepseek
- 结合
ollama
构造知识向量库
学习内容:
- 创建
python
开发环境并连接deepseek
- 结合
ollama
构造知识向量库
,进行Retrieval-Augmented Generation (RAG
)
1. 使用背景
pycharm
已经是非常主流的python IDE
,在开发工作是经常使用,这里通过pycharm
进行python
的AI
开发。pycharm community
版是开源的开发IDE
,所以在开发中选择使用pycharm
。ollama
也是AI
开发的开源大模型,可以从ollama
得到很多的大模型,这里大模型采用ollama
。知识向量库
是RAG Retrieval-Augmented Generation
的基础,可以使用知识向量库
给AI
提供公司内部的数据文件,让其可以拥有AI
的分析基础数据。langchain
是一个AI
开发平台,使用langchain
,能够简化和规范AI
开发的流程。
2.创建python
(pycharm community版
)开发环境并连接deepseek
2.1 创建python
(pycharm community版
)开发环境
这里在windows
上安装,所以选择windows
版。
- pycharm windows
- 选择
pycharm community版
2.2 创建python
工程
这里,默认使用python venv
环境,进行虚拟环境的设定。之后创建src
代码文件夹。
同时,创建langchain_deepseek.py
文件进行AI
的入门测试。
2.3 写入初始python
的AI
代码
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema import HumanMessage# 配置 DeepSeek API(deepseek 兼容 OpenAI)
llm = ChatOpenAI(api_key = 'your own deepseek key',base_url = 'https://api.deepseek.com/v1',model='deepseek-chat'# 或其他 DeepSeek 模型
)# 直接调用
response = llm.invoke("你好,DeepSeek!")
print(response.content)# 使用 PromptTemplate
prompt = ChatPromptTemplate.from_messages([("system", "你是一个专业的AI助手"),("user", "{question}")
])
chain = prompt | llm
result = chain.invoke({"question": '请解释机器学习的基本概念'})
print(result.content)
- 这里
langchain
没有直接专用deepseek
的包,所以使用langchain_openai
。 - 这里,调用
ChatPromptTemplate.from_messages
的时候,有两种prompt
。system
--系统提示词一般指在整个AI
应用中不变化的部分,作为系统提示词。user
--用户提示词一般指在整个AI
应用中根据用户提示的,变化的提示词。
2.4 使用pycharm
导入必要的包进入venv
2.5 使用langchain
导入必要的包
python -m pip install langchain-openai langchain langchain-core
2.6 执行AI
的langchain
代码
可以看出,这里已经采用langchain
连接上deepseek
进行AI
对话了。
3. 结合ollama
构造知识向量库
并进行RAG
3.1 构建本地的ollama
服务
3.1.1 构建ollama
的LLM
大模型完全通过deepseek.com
就可以查询到。
- http://deepseek.com
如何在windows上安装ollama
使用自然语言进行AI
对话
3.1.2 在 Windows 上安装 Ollama 的步骤如下:
-
- 下载 Ollama
- 访问 Ollama 的官方 GitHub 发布页面:Ollama Releases
- 找到最新的 Windows 版本(通常是
.exe
安装文件),例如OllamaSetup.exe
,然后下载。
-
- 运行安装程序
- 双击下载的
OllamaSetup.exe
文件。 - 按照安装向导的提示完成安装(通常只需点击“下一步”即可)。
-
- 验证安装
- 安装完成后,Ollama 应该会自动启动。
- 打开 命令提示符(CMD) 或 PowerShell,运行以下命令检查是否安装成功:
如果返回版本号,说明安装成功。**ollama --version
-
- 运行 Ollama
- 在终端运行:
这会下载并运行ollama run llama2
llama2
模型(首次运行需要下载模型,可能需要一些时间)。
-
- (可选)设置环境变量
- 如果
ollama
命令无法识别,可能需要手动将 Ollama 的安装路径添加到系统环境变量PATH
中:- 右键“此电脑” > “属性” > “高级系统设置” > “环境变量”。
- 在
PATH
变量中添加 Ollama 的安装路径(默认可能是C:\Program Files\Ollama
)。
-
- 更新 Ollama
- 如果有新版本,可以重新下载安装包覆盖安装,或运行:
ollama update
-
常见问题
权限问题:如果安装失败,尝试以管理员身份运行安装程序。
防火墙阻止:确保 Ollama 可以访问网络(下载模型需要联网)。
GPU 支持:Ollama 默认使用 CPU,如需 GPU 加速,确保已安装 NVIDIA 驱动并支持 CUDA。
现在你应该可以在 Windows 上使用 Ollama 运行各种大语言模型了! 🎉
3.1.3 验证ollama
的启动情况
这里,使用mac
机器进行安装,IP
为192.168.2.208
。http://192.168.2.208:11434
出现下图,就表示正常已经LLM
大模型在本地进行正常动作了。
3.2 使用langchain
测试本地的ollama
服务
3.2.1 测试代码
from langchain_community.llms import Ollama
from langchain.chains import LLMChain
from langchain.prompts import ChatPromptTemplate
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)# 初始化Ollama模型
llm = Ollama(model="deepseek-r1:1.5b",base_url="http://192.168.2.208:11434")# 创建提示模板
prompt = ChatPromptTemplate.from_template("用简单的语言解释以下概念: {concept}"
)# 创建链
chain = LLMChain(llm=llm, prompt=prompt)# 运行链
concept = "llamaIndex"
result = chain.run(concept=concept)
print(result)
注意,同时安装必要的python package
3.2.2 执行代码
3.3 进行RAG Retrieval Argumented
测试
3.3.1 知之为知之,不知AI
知
使用LangChain构建向量数据库与Ollama集成@deepseek.com
,问问AI
会得到你想要的答案。
为什么不用自己构建的ollama
,因为自己构建的本地机器性能太差,大模型查询一下耗时太长。
3.3.2 测试代码
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
from langchain.document_loaders.pdf import PyMuPDFLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chromafrom langchain.embeddings import OllamaEmbeddings
from langchain.vectorstores import Chroma
from langchain.embeddings import OllamaEmbeddingsfrom langchain.llms import Ollama
from langchain.chains import RetrievalQAtry:# 创建文档loader,这里使用pdf loader# langchain提供了大量的loaderloader = PyMuPDFLoader(file_path="../test_pdf/test.pdf",mode="single",pages_delimiter="")documents = loader.load()# 对文档进行分割text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000,chunk_overlap=200)splits = text_splitter.split_documents(documents)# 使用Ollama的嵌入模型embeddings = OllamaEmbeddings(model="llama2")# 创建向量数据库,文档指定为上面的分割结果splitsvectorstore = Chroma.from_documents(documents=splits,embedding=embeddings,persist_directory="../chroma/chroma_db")# 使用chat大模型,指定在retriever中回答提问(人类的自然语言)llm = Ollama(model="llama2")qa_chain = RetrievalQA.from_chain_type(llm,retriever=vectorstore.as_retriever(),chain_type="stuff" # 简单文档拼接方式)query = "文档中提到了哪些重要概念?"result = qa_chain({"query": query})print(result["result"])except Exception as e:error_msg = f"执行错误: {e}"print(error_msg) # Continue 会捕获控制台输出
3.3.3 执行代码
TODO(继续检证)
相关文章:
AI(学习笔记第二课) 使用langchain进行AI开发
文章目录 AI(学习笔记第二课) 使用langchain进行AI开发学习内容:1. 使用背景2.创建python(pycharm community版)开发环境并连接deepseek2.1 创建python(pycharm community版)开发环境2.2 创建python工程2.3 写入初始py…...
如何查看某个文件中的特殊符号
Q:如何查看某个文件中的特殊符号,比如说是换行符之类的转义字符? 1,法1:使用cat -A cat -A filename可以看到-A本质上就是-vET,也就是 展示所有的字符,-v是显示非打印字符,这个需…...
venv环境里控制scapy版本和起trex v2.87
要在虚拟环境(venv)中控制Scapy版本并运行TRex v2.87,您可以按照以下步骤操作: 创建一个新的虚拟环境: python3 -m venv trex-env激活创建的虚拟环境。在Linux或macOS上: source trex-env/bin/activate在Wi…...
第五十四篇 AI与数据分析
一、AI数据分析就像做菜 想象你在厨房做一道新菜,AI数据分析的流程其实非常相似: 买菜(获取数据) 去市场挑选新鲜蔬菜 从Excel/数据库获取数据例:pd.read_csv(超市销售表.csv) 洗菜切菜(清洗数据&#x…...
C++面向对象编程入门:从类与对象说起(一)
C语言是面向过程,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题,而C面向的是对象,关注的是对象,将一件事拆解成多个对象,靠对象之间互交完成。 目录 类的定义 类的两种定义 …...
openwrt之UCI 增删改查(add/get/set /add_list...)
1,引入 UCI是openwrt的统一配置接口,所有的配置文件被存放在/etc/config/下,使用UCI工具操作具体可查询官网中的开发文章: [OpenWrt Wiki] The UCI systemhttps://openwrt.org/docs/guide-user/base-system/uciconifg <secti…...
TypeScript 中,属性修饰符
在 TypeScript 中,属性修饰符(Property Modifiers)是用于修饰类的属性或方法的关键字,它们可以改变属性或方法的行为和访问权限。TypeScript 提供了三种主要的属性修饰符:public、private 和 protected。此外ÿ…...
LeetCode 3341.到达最后一个房间的最少时间 I:Dijkstra算法(类似深搜)-简短清晰的话描述
【LetMeFly】3341.到达最后一个房间的最少时间 I:Dijkstra算法(类似深搜)-简短清晰的话描述 力扣题目链接:https://leetcode.cn/problems/find-minimum-time-to-reach-last-room-i/ 有一个地窖,地窖中有 n x m 个房间…...
http重新为https
1.先创建一个配置文件 主要方便实验 可以将主配置文件下的location全部注释掉,方便观察 2.配置新配置文件 server{ listen 80; listen 443 ssl; ssl_certificate /usr/local/nginx/conf.d/ssl/www.kgc.com.crt; ssl_certificate_key /usr/local/nginx/conf…...
2025最新免费视频号下载工具!支持Win/Mac,一键解析原画质+封面
软件介绍 适用于Windows 2025 最新5月蝴蝶视频号下载工具,免费使用,无广告且免费,支持对原视频和封面进行解析下载,亲测可用,现在很多工具都失效了,难得的几款下载视频号工具,大家且用且珍…...
CTF杂项入门(BUUCTF-Misc第一页)
写在前面 题目涵盖:BUUCTF 第一页杂项 涉及工具: 随波逐流、foremost、binwalk、honeyview、010editor、zipperello、archpr、wireshark、cyberchef、QR_Research、PNGCRC爆破、stegsolve、Audacity、河马、D盾、routerpassview、steghide,以…...
碰一碰发视频一键成片功能开发实践与技术解析
在数字化营销与内容传播领域,碰一碰发视频技术凭借便捷的交互体验,已成为实体商业引流的重要手段。而一键成片功能的融入,能够让用户在触碰 NFC 标签后,快速获取高质量的视频内容,进一步提升传播效率。本文将从功能需求…...
【CTFer成长之路】举足轻重的信息搜集
举足轻重的信息搜集 信息搜集 常见的搜集 题目描述: 一共3部分flag docker-compose.yml version: 3.2services:web:image: registry.cn-hangzhou.aliyuncs.com/n1book/web-information-backk:latestports:- 80:80启动方式 docker-compose up -d 题目Flag n1book{info_…...
centos搭建dokcer和vulhub
1、换源阿里云 2、安装docker与docker-compose 下载1.29.2 docker compose sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 如果下载不了,可以…...
Linux系统下使用Kafka和Zookeeper
Apache Kafka 是一个分布式流处理平台,最初由 LinkedIn 开发,后来成为 Apache 软件基金会的顶级项目。它具有高吞吐量、可扩展性、持久性、容错性等特点,主要用于处理实时数据流。 Linux系统下使用Kafka 1.安装 Java Kafka 和 Zookeeper 都是基于 Java 开发的,所以需要先…...
vscode与keil的乱码不兼容问题
都用英文注释 中文注释的话,打开vscode的自动识别格式,如下 解决VSCode中文乱码 自动识别也可以设置识别优先级,把GB2312和UTF8排在自动识别序列前面(因为keil默认就是GB2312) 4.!!!在暂存更改的时候,不要把vscode的设置给暂存了ÿ…...
C++类和对象:构造函数、析构函数、拷贝构造函数
引言 介绍:C类和对象:构造函数、析构函数、拷贝构造函数 _涂色_博主主页 C基础专栏 一、类的默认成员函数 先认识一下类中的默认成员函数: 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。⼀个类…...
【FAQ】HarmonyOS SDK 闭源开放能力 — PDF Kit
1.问题描述: 预览PDF文件,文档上所描述的loadDocument接口,可以返回文件的状态,并无法实现PDF的预览,是否有能预览PDF相关接口? 解决方案: 1、执行loadDocument进行加载PDF文件后,…...
Spring Boot 3 + Undertow 服务器优化配置
优化背景 当你的application需要支持瞬时高并发的时候,tomcat已经不在是最优的选择,我们可以改为Undertow,并对其进行优化。 Undertow 是一个轻量级的、高性能的Java Web 服务器,由JBoss 开发并开源。它是基于非阻塞(…...
网易游戏 Flink 云原生实践
摘要:本文整理自网易游戏实时计算&数据湖平台负责人林小铂老师和网易游戏大数据开发工程师陈宇智老师,在Flink Forward Asia 2024 云原生专场的分享。主要分为四个部分: 1、背景 2、架构演进 3、实践挑战 4、总结和展望 01.背景 Flink 在…...
使用迁移学习的自动驾驶汽车信息物理系统安全策略
信息物理系统 (CPS) 是一种新兴系统,它通过信息通信基础设施,实现控制系统、传感器、执行器和周围环境等物理组件之间有效的实时通信与协作 (C&C)。自动驾驶汽车 (AV) 是大量采用 CPS 方法的领域之一,旨在通过降低能源消耗和空气污染来改善智慧城市中的人们生活。因此,…...
《算法导论(第4版)》阅读笔记:p11-p13
《算法导论(第4版)》学习第 8 天,p11-p13 总结,总计 3 页。 一、技术总结 无。 二、英语总结(生词:2) 1.precious (1)precious: pretium(“value, worth, price”) adj. of great value(宝贵,珍贵)。 (2)示例 Computing t…...
Qt 编译 sqldrivers之psql
编译postgres pgsql驱动 下载驱动源码修改配置文件编译 下载驱动源码 // 源代码下载 https://download.qt.io/archive/qt/5.15/5.15.2/submodules/驱动目录:qtbase-everywhere-src-5.15.2\src\plugins\sqldrivers 修改配置文件 打开pro文件 右键点击添加库 此处的为debu…...
查看单元测试覆盖率
文章目录 1、POM文件配置2、编写单元测试3、执行单元测试4、查看单元测试覆盖率 1、POM文件配置 pom文件配置jacoco插件 <!-- 生成JaCoCo覆盖率数据插件 --> <plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artif…...
ASP.NET Core 中实现 Markdown 渲染中间件
文章目录 前言一、核心功能二、实现步骤1)安装依赖包2)创建中间件类3)中间件扩展方法4)在Program.cs配置5)模板文件示例6)*.md文件示例7)缓存优化8)使用示例 三、注意事项总结 前言 …...
AI学习路径
一、AI入门与系统课程 (1)《开启AI革命:7天从小白到大神》 简介:保姆级教学,覆盖AI基础知识、机器学习、深度学习、自然语言处理(NLP)、大语言模型(LLM)等,…...
基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(下)
文章目录 k8s安装部署Pulsar集群前期准备版本要求 安装 Pulsar Helm chart管理pulsarClustersBrokersTopic k8s安装部署Pulsar集群 前期准备 版本要求 Kubernetes 集群,版本 1.14 或更高版本Helm v3(3.0.2 或更高版本)数据持久化ÿ…...
B站搜索关键词全攻略:掌握B站搜索关键词的运作机制
在拥有超过7亿月活用户的B站,每天都有海量视频涌入平台。无论是普通用户还是内容创作者,掌握B站搜索关键词的运作机制,都能极大提升平台体验和内容价值。本文将从用户和创作者双重视角,深入解析B站搜索关键词的应用技巧和优化策略…...
Windows系统安装Cursor与远程调用本地模型QWQ32B实现AI辅助开发
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
DBeaver查询PostgreSQL的只读模式
问题 DBeaver查询PostgreSQL数据表时,注意到经常会出现“Detect unique identifiers" 这个阶段,几乎需要花费10s时间,想着挺浪费时间的。 问题解决办法 把”读取数据表元数据(唯一键)"这个复选框选项去掉,再进行查询…...
C++内存管理与模板初阶详解:从原理到实践
目录: 一、C/C内存管理1. 内存区域划分2. 动态内存管理3. 底层原理:operator new/delete4.new和delete的实现原理5. 定位new(了解即可) 二、模板初阶1. 泛型编程2. 函数模板实例化隐式实例化:编译器自动推导类型显式实…...
02-GBase 8s 事务型数据库 客户端工具dbaccess
dbaccess概述 数据库产品通常会提供一个命令行客户端工具。 数据库厂商 命令行客户端 Oracle sqlplus MySQL mysql Marladb mysql GBase 8s dbaccess Kingbase ES ksql DM8 disql dbaccess 是 GBase 8s 数…...
【kubernetes】通过Sealos 命令行工具一键部署k8s集群
一、前言 1、sealos安装k8s集群官网:K8s > Quick-start > Deploy-kubernetes | Sealos Docs 2、本文安装的k8s版本为v1.28.9 3、以下是一些基本的安装要求: 每个集群节点应该有不同的主机名。主机名不要带下划线。所有节点的时间需要同步。需要…...
【Pandas】pandas DataFrame abs
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值 pandas.DataFrame.abs() pandas.DataFrame.abs() 方法用于返回 DataFrame 中每个元素的绝对值。该方法适用于包含数值型数据的 DataFrame,对…...
如何在 C# 和 .NET 中打印 DataGrid
DataGrid 是 .NET 架构中一个功能极其丰富的组件,或许也是最复杂的组件之一。写这篇文章是为了回答“我到底该如何打印 DataGrid 及其内容”这个问题。最初即兴的建议是使用我的屏幕截图文章来截取表单,但这当然无法解决打印 DataGrid 中虚拟显示的无数行…...
使用DEEPSEEK快速修改QT创建的GUI
QT的GUI,本质上是使用XML进行描述的,在QT CREATOR的界面编辑处,按CTRL2 切换到代码视图,CTRL3切换到编辑器视图。 CTRL2 切换到代码视图 CTRL3 切换到编辑器视图 鼠标左键点击代码视图中,按CTRLA → CTRLC复制XML代码…...
前端面试宝典---JavaScript import 与 Node.js require 的区别
import 和 require 来自不同的规范: import 是 ES6(ECMAScript 2015)模块系统的一部分,是 JavaScript 语言的标准语法 require 是 CommonJS 规范的一部分,最初为 Node.js 环境设计 加载方式: require() …...
C++入门小馆 :多态
嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...
极简远程革命:打破公网桎梏,重塑数字生活新体验
简远程革命:节点小宝,让家庭与职场无缝互联 ——打破公网桎梏,重塑数字生活新体验 引言:当公网IP成为过去式 在2025年的今天,80%的家庭仍因缺乏公网IP而深陷远程访问困境。NAS玩家为端口映射焦头烂额,家长…...
Linux 网络管理 的实战代码示例
涵盖网络接口配置、连接测试、防火墙管理、数据包捕获、服务监控等核心场景。每个示例均附带详细注释和操作说明,帮助您深入理解 Linux 网络管理的实战技巧。 1. 网络接口配置与管理 1.1 使用 ip 命令管理网络接口 ip 是现代 Linux 系统中管理网络的主要工具,功能比 ifcon…...
OPCUA,OPCDA与MODBUS学习笔记
MODBUS与OPC之间的关系是什么? 前言 OPC协议(OLE for Process Control,即过程控制的OLE)是一种标准化的通信协议,旨在帮助不同厂商的设备、控制系统和软件之间进行数据交换。OPC协议的目标是提供一种统一的接口&…...
千星计划小程序开发方案
千星计划小程序开发方案 (基于2025年行业实践与系统需求) 一、核心功能架构 1.用户管理模块 用户分层管理:普通用户、达人、合伙人三级身份体系,支持身份升级审核与权限配置 实名认证与资质审核:对接公安系统…...
【RAG技术全景解读】从原理到工业级应用实践
目录 🌟 前言🏗️ 技术背景与价值🚨 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🔍 一、技术原理剖析📐 核心概念图解💡 核心作用讲解⚙️ 关键技术模块说明⚖️ 技术选型对比 &…...
20250508在WIN10下使用移远的4G模块EC200A-CN直接上网
1、在WIN10/11下安装驱动程序:Quectel_Windows_USB_DriverA_Customer_V1.1.13.zip 2、使用移远的专用串口工具:QCOM_V1.8.2.7z QCOM_V1.8.2_win64.exe 3、配置串口UART42/COM42【移远会自动生成连续三个串口,最小的那一个】 AT命令…...
室内无人机自主巡检解决方案-自主方案
室内无人机自主巡检解决方案-自主方案 AIBOX-基于离线地图的LIO室内3D空间位置服务...
SpringCloud服务拆分:Nacos服务注册中心 + LoadBalancer服务负载均衡使用
SpringCloud中Nacos服务注册中心 LoadBalancer服务负载均衡使用 前言Nacos工作流程nacos安装docker安装window安装 运行nacos微服务集成nacos高级特性1.服务集群配置方法效果图模拟服务实例宕机 2.权重配置3.环境隔离 如何启动集群节点本地启动多个节点方法 LoadBalancer集成L…...
视频编解码学习9之照相机历史
照相机的发展历史可以追溯到19世纪初,至今已有200多年。以下是照相机技术演进的主要阶段和里程碑: 1. 早期探索阶段(1820s-1880s) 1826年:法国人尼埃普斯(Nicphore Nipce)用沥青感光法拍摄《窗…...
物流无人机自动化装卸技术解析!
一、自动化装卸技术模块的技术难点 1. 货物多样性适配 物流场景中货物包装类型、尺寸、材质差异大,如农产品、医疗物资、工业设备等,要求装卸模块具备高度柔性化设计。例如,单元货物需视觉识别系统进行单个抓取,而整托货物需大…...
图形渲染+事件处理最终版
基于之前做的项目图形移动处理-CSDN博客添加了相机,透视投影,鼠标控制图形旋转。虽然个人感觉这个项目用的是一个二维的三角形,给他加透视投影和相机意义不大,因为透视投影是近大远小,我这个程序设置了放大缩小的限制&…...
前端三大件---CSS
目录 一、CSS 概述 二、引入 CSS 的三种方式 2.1 内联样式 2.2 内部样式表 2.3 外部样式表 三、CSS 选择器 3.1 ID 选择器 3.2 class 选择器 3.3 标签选择器 3.4 通配选择器 3.5 分组选择器 3.6 层级选择器 3.7 属性选择器 3.8 伪类选择器 3.9 同辈选择器 四、…...