Python实战(3)-数据库操作
前面说过,可用的SQL数据库引擎有很多,它们都有相应的Python模块。这些数据库引擎大都作为服务器程序运行,连安装都需要有管理员权限。为降低Python DB API的使用门槛,我选择了一个名为SQLite的小型数据库引擎。它不需要作为独立的服务器运行,且可直接使用本地文件,而不需要集中式数据库存储机制。在较新的Python版本(从2.5开始)中,SQLite更具优势,因为标准库包含一个SQLite包装器:使用模块sqlite3实现的PySQLite。除非从源代码编译Python,否则Python很可能包含这个数据库。
如果你使用的是较旧的Python版本,必须安装PySQLite才能使用SQLite数据库,可从https://github.com/ghaering/pysqlite下载。在带包管理器系统的Linux系统中,很可能可直接从包管理器获取PySQLite和SQLite。你也可使用Python自己的包管理器pip。另外,你还可获取PySQLite和SQLite的源代码包,再自己编译它们。如果你使用的是较新的Python版本,几乎可以肯定已经有PySQLite。如果有什么缺失了,那就是数据库本身,即SQLite(但这也很可能已经有了)。在这种情况下,可从SQLite官网(http://sqlite.org)获取源代码(务必获取执行了自动代码生成的源代码包)。要编译SQLite,只需按README文件中的说明做即可。接着编译PySQLite时,必须确保编译进程能够访问SQLite库和include文件。如果SQLite被安装在标准位置,PySQLite发布版中的安装脚本很可能能够找到它。在这种情况下,只需执行如下命令即可:
python setup.py build
python setup.py install
你也可以只执行第二个命令,因为它将自动执行构建过程。如果这样做时出现了大量的错误消息,很可能是因为安装脚本没有找到所需的文件。请确保你知道include文件和库安装在什么地方,并显式地将这个位置提供给安装脚本。假设我在目录/home/mlh/sqlite/current中就地编译了SQLite,那么头文件可能位于/home/mlh/sqlite/current/src,而库位于/home/mlh/sqlite/current/build/lib。为了让安装进程使用这些路径,可编辑安装脚本setup.py,在其中像下面这样设置变量include_dirs和library_dirs。
include_dirs = ['/home/mlh/sqlite/current/src']library_dirs = ['/home/mlh/sqlite/current/build/lib']
起步
要使用Python标准库中的SQLite,可通过导入模块sqlite3来导入它。然后,就可创建直接到数据库文件的连接。为此,只需提供一个文件名(可以是文件的相对路径或绝对路径);如果指定的文件不存在,将自动创建它。
import sqlite3
conn = sqlite3.connect('somedatabase.db')
我的源码目录原来没有somedatabase.db文件,执行后结果如下:
接下来可从连接获得游标。
curs = conn.cursor()
这个游标可用来执行SQL查询。执行完查询后,如果修改了数据,务必提交所做的修改,这样才会将其保存到文件中。
>>> conn.commit()
你可以(也应该)在每次修改数据库后都进行提交,而不是仅在要关闭连接前才这样做。要关闭连接,只需调用方法close。
>>> conn.close()
数据库应用程序示例
作为示例,我将演示如何创建一个小型的营养成分数据库,这个数据库基于美国农业部(USDA)农业研究服务(https://www.ars.usda.gov)提供的数据。美国农业部的链接常常会有细微的变化,但只要按下面介绍的做,就应该能够找到相关的数据集。在网页https://www.ars.usda.gov中,单击下拉列表Research中的链接Databases and Datasets进入相应的页面,再单击其中的链接Nutrient Data Laboratory。在打开的页面中,应该能够找到链接USDA National Nutrient Database for Standard Reference。在单击这个链接打开的页面中有大量的数据文件,它们使用的是我们需要的纯文本(ASCII)格式。单击链接Download,并下载标题Abbreviated下链接ASCII指向的zip文件。你将获得一个zip文件,其中包含一个名为ABBREV.txt的文本文件,还有一个描述该文件内容的PDF文件。如果你找不到这个文件,也可使用其他的旧数据,只是需要相应地修改源代码。
在文件ABBREV.txt中,每行都是一条数据记录,字段之间用脱字符(^)分隔。数字字段直接包含数字,而文本字段用两个波浪字符(~)将其字符串值括起。下面是一个示例行(为简洁起见删除了部分内容):
~07276~^~HORMEL SPAM ... PORK W/ HAM MINCED CND~^ ... ^~1 serving~^^~~^0
要将这样的行分解成字段,只需使用line.split(‘^’)即可。如果一个字段以波浪字符打头,你就知道它是一个字符串,因此可使用field.strip(‘~’)来获取其内容。对于其他字段(即数字字段),使用float(field)就能获取其内容,但字段为空时不能这样做。本节接下来将开发一个程序,将这个ASCII文件中的数据转换为SQL数据库,并让你能够执行一些有趣的查询。
创建并填充数据库表
要创建并填充数据库表,最简单的解决方案是单独编写一个一次性程序。这样只需运行这个程序一次,就可将它及原始数据源(文件ABBREV.txt)抛在脑后了,不过保留它们可能是个不错的主意。代码清单13-1所示的程序创建一个名为food的表(其中包含一些合适的字段);读取文件ABBREV.txt并对其进行分析(使用工具函数convert对各行进行分割并对各个字段进行转换);通过调用curs.execute来执行一条SQL INSERT语句,从而将字段中的值插入数据库中。注意:也可使用curs.executemany,并向它提供一个列表(其中包含从数据文件中提取的所有行)。就这里而言,这样做速度稍有提高,但如果使用的是通过网络连接的客户/服务器SQL系统,速度将有极大的提高。
代码清单13-1 将数据导入数据库(importdata.py)
import sqlite3def convert(value):if value.startswith('~'):return value.strip('~')if not value:value = '0'return float(value)conn = sqlite3.connect('food.db')curs = conn.cursor()curs.execute('''CREATE TABLE food (id TEXT PRIMARY KEY,desc TEXT,water FLOAT,kcal FLOAT,protein FLOAT,fat FLOAT,ash FLOAT,carbs FLOAT,fiber FLOAT,sugar FLOAT)''')query = 'INSERT INTO food VALUES (?,?,?,?,?,?,?,?,?,?)'field_count = 10for line in open('ABBREV.txt'):fields = line.split('^')vals = [convert(f) for f in fields[:field_count]]curs.execute(query, vals)conn.commit()conn.close()
当你运行这个程序时(文件ABBREV.txt和它位于同一个目录),它将新建一个名为food.db的文件,其中包含数据库中的所有数据。建议你多多尝试这个程序:使用不同的输入、添加print语句等
搜索并处理结果
数据库使用起来非常简单:创建一条连接并从它获取一个游标;使用方法execute执行SQL查询并使用诸如fetchall等方法提取结果。代码清单13-2是一个微型程序,它通过命令行参数接受一个SQL SELECT条件,并以记录格式将返回的行打印出来。你可在命令行中像下面这样尝试运行它:
$ python food_query.py "kcal <= 100 AND fiber >= 10 ORDER BY sugar"
运行这个程序时,你可能发现了一个问题:第一行指出,生橘子皮(raw orange peel)好像不含任何糖分。这是因为在数据文件中缺少这个字段。你可对导入脚本进行改进,以检测这种情况,并插入None而不是0来指出缺失数据。这样,你就可使用类似于下面的条件:
"kcal <= 100 AND fiber >= 10 AND sugar ORDER BY sugar"
这要求仅当sugar字段包含实际数据时才返回相应的行。这种策略恰好也适用于当前的数据库——上述条件将丢弃糖分为0的行。你可能想尝试使用ID搜索特定食品的条件,如使用ID 08323搜索Cocoa Pebbles。问题是SQLite处理其值的方式不那么标准,事实上,它在内部将所有的值都表示为字符串,因此在数据库和Python API之间将执行一些转换和检查。通常,这没有问题,但使用ID搜索可能会遇到麻烦。如果你提供值08323,它将被解读为数字8323,进而被转换为字符串"8323",即一个不存在的ID。在这种情况下,可能应该显示错误消息,而不是采取这种意外且毫无帮助的行为;但如果你很小心,在数据库中就将ID设置为字符串"08323",就不会出现这种问题。
代码清单13-2 食品数据库查询程序(food_query.py)
import sqlite3, sysconn = sqlite3.connect('food.db')curs = conn.cursor()query = 'SELECT * FROM food WHERE ' + sys.argv[1]print(query)curs.execute(query)names = [f[0] for f in curs.description]for row in curs.fetchall():for pair in zip(names, row):print('{}: {}'.format(*pair))print()
警告这个程序从用户那里获取输入,并将其插入到SQL查询中。在你是用户而且不会输入太不可思议的内容时,这没有问题。然而,利用这种输入偷偷地插入恶意的SQL代码以破坏数据库是一种常见的计算机攻击方式,称为SQL注入攻击。请不要让你的数据库(以及其他任何东西)暴露在原始用户输入的“火力范围”内,除非你对这样做的后果心知肚明
相关文章:
Python实战(3)-数据库操作
前面说过,可用的SQL数据库引擎有很多,它们都有相应的Python模块。这些数据库引擎大都作为服务器程序运行,连安装都需要有管理员权限。为降低Python DB API的使用门槛,我选择了一个名为SQLite的小型数据库引擎。它不需要作为独立的…...
【redis】在 Spring中操作 Redis
文章目录 基础设置依赖StringRedisTemplate库的封装 运行StringList删库 SetHashZset 基础设置 依赖 需要选择这个依赖 StringRedisTemplate // 后续 redis 测试的各种方法,都通过这个 Controller 提供的 http 接口来触发 RestController public class MyC…...
企业数据孤岛的纠结与恩怨
以下是关于控制中数据孤岛的纠结于恩怨: 一、工业控制中数据孤岛的定义 工业控制中的数据孤岛是指在工业生产过程中,各个生产环节、不同的系统或设备之间的数据相互独立、隔离,无法进行有效的共享和交互,形成了一个个相对封闭的数…...
在 Elasticsearch 中扩展后期交互模型 - 第 2 部分 - 8.18
作者:来自 Elastic Peter Straer 及 Benjamin Trent 本文探讨了如何优化后期交互向量,以适应大规模生产工作负载,例如减少磁盘空间占用和提高计算效率。 在之前关于 ColPali 的博客中,我们探讨了如何使用 Elasticsearch 创建视觉搜…...
开发SAPUI5 Fiori应用并部署到SAP系统
首先新建一个项目文件夹 在VScode中打开 打开SAP Fiori(需要先下载安装,参考上上一篇文章) ,选择已添加的SAP S4 ERP系统 ,点击创建Firoi应用。 如果没有添加系统的,点击添加按钮,添加即可,注意ÿ…...
<C#> 详细介绍.net 三种依赖注入:AddTransient、AddScoped、AddSingleton 的区别
在 .NET 8 里,AddTransient、AddScoped 和 AddSingleton 均为依赖注入容器用于注册服务的方法,不过它们的生命周期管理方式存在差异。下面为你详细介绍这三种方法的区别。 1. AddTransient AddTransient 方法所注册的服务,每次被请求时都会…...
游戏引擎学习第168天
回顾并计划今天的内容 今天我们将进行一些思考工作,回顾一下之前的工作。我们已经在资产处理工具中提取了字体,并展示了如何使用该库。我们有两个版本,一个不使用任何库,适合想要完全不依赖库的用户; 我们今天的任务…...
html5炫酷3D立体文字效果实现详解
炫酷3D立体文字效果实现详解 这里写目录标题 炫酷3D立体文字效果实现详解项目概述技术实现要点1. 基础布局设置2. 动态背景效果3. 文字渐变效果4. 立体阴影效果5. 悬浮动画效果 技术难点及解决方案1. 文字渐变动画2. 立体阴影效果3. 性能优化 浏览器兼容性总结 项目概述 在这个…...
VSCode中搜索插件显示“提取扩展时出错。Failed to fetch”问题解决!
大致的问题如下,在VSCode的插件商店搜索插件时提示如下: 导致的情况有以下几点: 1、代理问题,如果是代理引起的,可以继续使用代理后也能搜索和安装插件。 2、还有可能是你的所连接的网络设置了防火墙,比较…...
回溯-单词搜索
79.单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平…...
高级java每日一道面试题-2025年3月07日-微服务篇[Eureka篇]-Eureka Server和Eureka Client关系?
如果有遗漏,评论区告诉我进行补充 面试官: Eureka Server和Eureka Client关系? 我回答: 在微服务架构中,Eureka作为Netflix开源的服务发现组件,由Eureka Server(服务端)和Eureka Client(客户端)两大部分…...
SpringBoot有几种获取Request对象的方法
HttpServletRequest 简称 Request,它是一个 Servlet API 提供的对象,用于获取客户端发起的 HTTP 请求信息。例如:获取请求参数、获取请求头、获取 Session 会话信息、获取请求的 IP 地址等信息。 那么问题来了,在 Spring Boot 中…...
【Agent】Dify Docker 安装问题 INTERNAL SERVER ERROR
总结:建议大家选择稳定版本的分支,直接拉取 master 分支,可能出现一下后面更新代码导致缺失一些环境内容。 我是通过 Docker 进行安装的,由于项目开发者不严谨导致,遇到一个奇怪的问题: INTERNAL SERVER E…...
操作系统——(处理机调度与死锁)
目录 一、处理机调度 (1)层次 (2)进程调度 (3)调度算法 1.先来先服务算法(FCFS) 2.短作业优先算法(SJF) 3.高优先权算法(HPF) …...
MyBatis 面试专题
MyBatis 面试专题 基础概念MyBatis中的工作原理MyBatis 与 Hibernate 的区别?#{} 和 ${} 的区别?MyBatis 的核心组件有哪些? 映射与配置如何传递多个参数?ResultMap 的作用是什么?动态 SQL 常用标签有哪些?…...
C++实现大整数相加
力扣原题字符串相加 415. 字符串相加 - 力扣(LeetCode) 大整数意味着无法用基本数据类型装下,只能用字符串装下,然后手工模拟计算过程 从两个字符串的最后一位开始两两相加,记录进位,每次均有sumabsum&…...
Flutter 快速接入Fair
少点废话 1.了解Fair Fair,由58同城开源提供,目的是flutter项目上架后动态更新代码, 首先了解一个概念,热更新是flutter打包APK后会讲所有的dart代码生成一个so文件,手机通过读取并执行so文件;基于此&am…...
【深度学习新浪潮】AI ISP技术与手机厂商演进历史
本文是关于AI ISP(人工智能图像信号处理器)的技术解析、与传统ISP(图像信号处理器)的区别、近三年研究进展,以及各大手机厂商在该领域演进历史的详细报告。本报告综合多个权威来源的信息,力求全面、深入地呈现相关技术发展脉络与行业动态。 第一部分:AI ISP的定义及与传…...
用逻辑分析仪分析Usart波形
USART的波形抓取最简单,帧头帧尾只需要电平上升下降沿就可以了,不需要自己定义,也没有ID位,逻辑分析仪可以直接抓取发送的数据: 口配置:9600bps,8数据位,无校验,1个停止位…...
常⻅CMS漏洞 -DeDeCMS 获取webshell
DedeCMS是织梦团队开发PHP ⽹站管理系统,它以简单、易⽤、⾼效为特⾊,组建出各种各样各 具特⾊的⽹站 姿势⼀:通过⽂件管理器上传WebShell 1.访问⽬标靶场dedecms 后台可以直接上传任意⽂件 2.上传木马文件 3.蚁剑连接 姿势⼆:…...
基于STC89C51的太阳自动跟踪系统的设计与实现—单片机控制步进电机实现太阳跟踪控制(仿真+程序+原理图+PCB+文档)
摘 要 随着我国经济的飞速发展,促使各种能源使用入不敷出,尤其是最主要的能源,煤炭石油资源不断消耗与短缺,因此人类寻找其他替代能源的脚步正在加快。而太阳能则具有无污染﹑可再生﹑储量大等优点,且分布范围广&…...
JAVA_数据结构_栈和队列
1.栈(Stack) 1.1概念 栈是一种特殊的线性表,它只允许一端进行增删查改操作,它的头称为栈顶,进行压栈和出栈的操作,则另一端称为栈底,并且它遵循着先进后出的操作。 压栈:也可称为进…...
独立组网和非独立组网
独立组网(SA) vs. 非独立组网(NSA) 5G组网方式主要分为 独立组网(SA, Standalone) 和 非独立组网(NSA, Non-Standalone),两者在网络架构、核心网、应用场景等方面有所不…...
HR人员和组织信息同步AD域服务器实战方法JAVA
HR人员和组织信息同步AD域服务器 前期准备AD域基础知识整理HR同步AD的逻辑代码结构配置文件设置启动类HR组织的BeanHR人员Bean获取HR人员和组织信息的类AD中处理组织和人员的类日志配置 POM.xml文件生成EXE文件服务器定时任务异常问题注意事项 前期准备 1、开发语言࿱…...
【云上CPU玩转AIGC】——腾讯云高性能应用服务HAI已支持DeepSeek-R1模型预装环境和CPU算力
🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL࿰…...
【测试开发】OKR 网页管理端自动化测试报告
【测试报告】OKR 管理端 项目名称版本号测试负责人测试完成日期联系方式OKR 管理端4.0马铭胜2025-03-2115362558972 1、项目背景 1.1 OKR 用户端 在如今这个快节奏的时代中,个人和组织的成长往往依赖于清晰、明确且意义深远的目标。然而,如何设定并持…...
go语言中空结构体
空结构体(struct{}) 普通理解 在结构体中,可以包裹一系列与对象相关的属性,但若该对象没有属性呢?那它就是一个空结构体。 空结构体,和正常的结构体一样,可以接收方法函数。 type Lamp struct{}func (l Lamp) On()…...
如何缓解大语言模型推理中的“幻觉”(Hallucination)?
目录 如何缓解大语言模型推理中的“幻觉”(Hallucination)? 1. 什么是大语言模型的“幻觉”(Hallucination)? 幻觉的常见类型 2. 如何缓解大模型的幻觉问题? 方法 1:使用知识检索…...
优选算法系列(3.二分查找 )
目录 一.二分查找(easy) 题目链接:704. 二分查找 - 力扣(LeetCode) 解法: 代码: 二.在排序数组中查找元素的第⼀个和最后⼀个位置(medium) 题目链接:34.…...
【论文阅读】Contrastive Clustering Learning for Multi-Behavior Recommendation
论文地址:Contrastive Clustering Learning for Multi-Behavior Recommendation | ACM Transactions on Information Systems 摘要 近年来,多行为推荐模型取得了显著成功。然而,许多模型未充分考虑不同行为之间的共性与差异性,以…...
细胞计数专题 | 高效 + 精准!点成LUNA-III™细胞计数仪解锁活细胞检测与浓度分析新高度
1 引言 在生物医学研究中,准确的细胞计数至关重要,它影响着细胞治疗、疾病诊断、组织再生和生物测定等应用领域。传统的手动计数方法既耗时又容易产生偏差。像点成LUNA-III™自动细胞计数仪这样的自动化系统,为提高计数的准确性、可重复性和…...
糊涂人寄信——递推
思路分析:当有n封信,n个信封时。第k封信没有装在第k个信封里(k从1~n),就算所有的信封都装错了。我们可以得知的是,当有1封信,时,装错类别数为0。当有两封信时,装错类别为1。 当有三…...
深入Python C API:掌握常用函数与实战技巧
深入Python C API:掌握常用函数与实战技巧 Python的灵活性和易用性使其成为广泛应用的编程语言,但在某些场景下(如高性能计算、与C/C代码交互),直接使用C语言扩展Python的能力变得尤为重要。Python C API(…...
第16章:基于CNN和Transformer对心脏左心室的实验分析及改进策略
目录 1. 项目需求 2. 网络选择 2.1 UNet模块 2.2 TransUnet 2.2.1 SE模块 2.2.2 CBAM 2.3 关键代码 3 对比试验 3.1 unet 3.2 transformerSE 3.3 transformerCBAM 4. 结果分析 5. 推理 6. 下载 1. 项目需求 本文需要做的工作是基于CNN和Transformer的心脏左心室…...
Word中公式自动标号带章节编号
(1)插入一行三列的表格,设置宽度分别为0.5,13.39和1.5,设置纵向居中,中间列居中对齐,最右侧列靠右对齐,设置段落如下 (2)插入域代码 【Word】利用域代码快速实…...
AI风向标《AI与视频制作全攻略:从入门到精通实战课程》
课程信息 AI风向标《AI与视频制作全攻略:从入门到精通实战课程》,夸克网盘和百度网盘课程。 课程介绍 《AI与视频制作全攻略:从入门到精通实战课程》是一套全面融合AI技术与视频制作的实战课程,旨在帮助创作者从基础软件使用到高级视频剪辑…...
el-table折叠懒加载支持排序
el-table折叠懒加载支持排序 因为el-table懒加载的子节点是通过缓存实现的,如果想在展开的情况下直接刷新对应子节点数据,要操作el-table组件自身数据,否则不会更新 以排序功能为例 maps: new Map() //用于存储子节点懒加载的数据// 加载子…...
Kotlin v2.1.20 发布,标准库又有哪些变化?
大家吼哇!就在三小时前,Kotlin v2.1.20 发布了,更新的内容也已经在官网上更新:What’s new in Kotlin 2.1.20 。 我粗略地看了一下,下面为大家选出一些我比较感兴趣、且你可能也会感兴趣的内容。 注意!这里…...
AI智能问答“胡说八道“-RAG探索之路
AI智能问答"胡说八道"-RAG探索之路 背景信息RAGRAG技术的知识难题分块矛盾知识缺失相互冲突 RAG知识优化实践分块优化缺失优化冲突优化 未来展望 背景信息 你有没有遇到过这样的场景?当你向智能助手提问:“某科技公司为何突然更换高层领导&am…...
【yolo】YOLO训练参数输入之模型输入尺寸
模型输入尺寸是YOLO训练和推理过程中非常重要的参数之一。YOLO要求输入图像的尺寸是固定的,通常为正方形(如416416、640640等)。这个尺寸直接影响模型的性能和速度。以下是对模型输入尺寸的详细介绍: 1. 模型输入尺寸的作用 统一…...
[原创](Modern C++)现代C++的关键性概念: 如何声明一个返回数组指针的函数?
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...
1204. 【高精度练习】密码
文章目录 题目描述输入输出样例输入样例输出数据范围限制CAC代码 题目描述 人们在做一个破译密码游戏: 有两支密码棒分别是红色和蓝色,把红色密码棒上的数字减去蓝色 密码棒上的数字,就是开启密码锁的密码。 现已知密码棒上的数字位数不超过…...
DigitalFoto公司如何用日事清流程管理工具实现任务优先级与状态可视化?
一、业务介绍 在DigitalFoto,设计和制造先进的摄影器材,如稳定器、灯光设备和支架,是日常工作的核心。公司的业务模式包括为其他品牌设计和制造定制产品,无论是作为OEM还是ODM。这样的多样化业务需求推动了公司在产品开发上必须非…...
解锁C++编程能力:基础语法解析
C入门基础 一、C的第一个程序二、命名空间三、C输入&输出四、缺省参数/默认参数五、函数重载六、引用1.引用的特性2.引用的使用引用做返回值场景 3.const引用只有指针和引用涉及权限放大、缩小的问题,普通变量没有 4.指针和引用的关系 七、inline八、nullptr 一…...
【Leetcode 每日一题】2680. 最大或值
问题背景 给你一个下标从 0 0 0 开始长度为 n n n 的整数数组 n u m s nums nums 和一个整数 k k k。每一次操作中,你可以选择一个数并将它乘 2 2 2。 你最多可以进行 k k k 次操作,请你返回 n u m s [ 0 ] ∣ n u m s [ 1 ] ∣ . . . ∣ n u m …...
YOLO魔改之SAM空间注意力模块
基于SAM注意力的YOLOv7改进算法详解(可用于工业检测方案) 一、应用场景说明 本改进算法适用于以下工业检测场景: 复杂背景下的微小目标检测(电子元件缺陷、PCB板焊点)密集目标重叠检测(传送带上的包裹分拣、人群计数)动态环境目标追踪(无人机巡检、自动驾…...
基于 TRIZ 理论的筏式养殖吊笼清洗装备设计研究
基于 TRIZ 理论的筏式养殖吊笼清洗装备设计研究 一、引言 筏式养殖在水产养殖业中占据重要地位,吊笼作为养殖贝类、藻类等生物的关键器具,其清洁程度直接影响养殖生物的健康与产量。传统的吊笼清洗方式多依赖人工,效率低下、劳动强度大且清洗…...
Day11 动态规划入门
动态规划 就是 : 给定一个问题,我们把它拆成一个个子问题,直到子问题可以直接解决。然后把子问题的答案保存起来,以减少重复计算。再根据子问题答案反推,得出原问题解的一种方法. 记忆化搜索 暴力dfs 记录答案 动态规划入门思…...
配置阿里云yum源
配置阿里云yum源 修改默认的yum仓库,把原有的移动到创建的目录里(踢出国外的yum源) # 切换到/ect/yum.repos.d/目录下 cd /etc/yum.repos.d/ # 新建repo目录 mkdir repo # 把原有的移动到创建的目录里 mv ./*.repo ./repo/配置yum源 # 找到…...
在Linux系统安装Ollama两种方法:自动安装和手动安装,并配置自启动服务
目录 一、命令自动安装 (一)使用命令行安装 (二)配置环境变量 (三)重新加载systemd配置并重启服务 二、手动安装 (一)下载本地文件 (二)解压并安…...