Python调用SQLite及pandas相关API详解
前言
SQLite是一个轻量级的嵌入式关系数据库,它不需要独立的服务器进程,将数据存储在单一的磁盘文件中。Python内置了sqlite3模块,使得我们可以非常方便地操作SQLite数据库。同时,pandas作为Python数据分析的重要工具,也提供了与SQLite数据库交互的便捷方法。本文将详细介绍如何使用Python调用SQLite数据库,以及pandas与SQLite相关的API。
一、Python内置sqlite3模块基础操作
1.1 连接数据库
import sqlite3# 连接到SQLite数据库
# 如果文件不存在,会自动在当前目录创建
conn = sqlite3.connect('example.db')# 创建游标对象
cursor = conn.cursor()
1.2 创建表
# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER,email TEXT UNIQUE)
''')# 提交事务
conn.commit()
1.3 插入数据
# 插入单条数据
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", ('张三', 25, 'zhangsan@example.com'))# 插入多条数据
users_data = [('李四', 30, 'lisi@example.com'),('王五', 28, 'wangwu@example.com'),('赵六', 35, 'zhaoliu@example.com')
]
cursor.executemany("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", users_data)conn.commit()
1.4 查询数据
# 查询所有数据
cursor.execute("SELECT * FROM users")
all_users = cursor.fetchall()
print("所有用户:", all_users)# 查询单条数据
cursor.execute("SELECT * FROM users WHERE age > ?", (30,))
one_user = cursor.fetchone()
print("第一个年龄大于30的用户:", one_user)# 查询多条数据
cursor.execute("SELECT * FROM users WHERE age > ?", (25,))
some_users = cursor.fetchmany(2)
print("前两个年龄大于25的用户:", some_users)
1.5 更新数据
# 更新数据
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, '张三'))
conn.commit()print(f"更新了 {cursor.rowcount} 条记录")
1.6 删除数据
# 删除数据
cursor.execute("DELETE FROM users WHERE name = ?", ('赵六',))
conn.commit()print(f"删除了 {cursor.rowcount} 条记录")
1.7 关闭连接
# 关闭游标和连接
cursor.close()
conn.close()
二、使用上下文管理器优化数据库操作
使用上下文管理器可以确保连接被正确关闭,即使在出现异常的情况下:
import sqlite3def get_db_connection(db_name):"""获取数据库连接"""return sqlite3.connect(db_name)# 使用上下文管理器
with get_db_connection('example.db') as conn:cursor = conn.cursor()cursor.execute("SELECT * FROM users")results = cursor.fetchall()print(results)# 连接会在with块结束时自动关闭
三、pandas与SQLite的集成
3.1 读取SQLite数据到DataFrame
import pandas as pd
import sqlite3# 方法1:使用read_sql_query
conn = sqlite3.connect('example.db')
df = pd.read_sql_query("SELECT * FROM users", conn)
print(df)
conn.close()# 方法2:使用read_sql
with sqlite3.connect('example.db') as conn:df = pd.read_sql("SELECT * FROM users WHERE age > 25", conn)print(df)# 方法3:使用read_sql_table(需要表名)
with sqlite3.connect('example.db') as conn:df = pd.read_sql_table('users', conn)print(df)
3.2 将DataFrame写入SQLite
import pandas as pd
import sqlite3# 创建示例DataFrame
data = {'product': ['产品A', '产品B', '产品C', '产品D'],'price': [100, 200, 150, 300],'quantity': [50, 30, 45, 20]
}
df = pd.DataFrame(data)# 将DataFrame写入SQLite
with sqlite3.connect('example.db') as conn:# if_exists='replace' 替换表,'append' 追加数据,'fail' 如果表存在则失败df.to_sql('products', conn, if_exists='replace', index=False)# 验证数据已写入result = pd.read_sql("SELECT * FROM products", conn)print(result)
3.3 使用pandas进行复杂查询
import pandas as pd
import sqlite3with sqlite3.connect('example.db') as conn:# 联合查询query = """SELECT u.name, u.age, COUNT(p.id) as product_countFROM users uLEFT JOIN purchases p ON u.id = p.user_idGROUP BY u.id"""df = pd.read_sql_query(query, conn)# 使用参数化查询params = {'min_age': 25, 'max_age': 35}query_with_params = """SELECT * FROM users WHERE age BETWEEN :min_age AND :max_age"""df_filtered = pd.read_sql_query(query_with_params, conn, params=params)
四、高级用法和最佳实践
4.1 创建自定义函数
import sqlite3
import mathdef create_custom_functions(conn):"""创建自定义SQL函数"""# 创建平方根函数conn.create_function("sqrt", 1, math.sqrt)# 创建自定义聚合函数class StandardDeviation:def __init__(self):self.values = []def step(self, value):if value is not None:self.values.append(value)def finalize(self):if not self.values:return Nonemean = sum(self.values) / len(self.values)variance = sum((x - mean) ** 2 for x in self.values) / len(self.values)return math.sqrt(variance)conn.create_aggregate("stdev", 1, StandardDeviation)# 使用自定义函数
with sqlite3.connect('example.db') as conn:create_custom_functions(conn)# 使用自定义函数cursor = conn.cursor()cursor.execute("SELECT sqrt(16)")print("sqrt(16) =", cursor.fetchone()[0])cursor.execute("SELECT stdev(age) FROM users")print("年龄标准差 =", cursor.fetchone()[0])
4.2 事务处理
import sqlite3def transfer_money(conn, from_account, to_account, amount):"""转账操作示例"""try:cursor = conn.cursor()# 开始事务conn.execute("BEGIN TRANSACTION")# 从源账户扣款cursor.execute("UPDATE accounts SET balance = balance - ? WHERE id = ?", (amount, from_account))# 向目标账户加款cursor.execute("UPDATE accounts SET balance = balance + ? WHERE id = ?", (amount, to_account))# 提交事务conn.commit()print("转账成功")except Exception as e:# 回滚事务conn.rollback()print(f"转账失败: {e}")
4.3 数据库连接池
import sqlite3
from queue import Queue
import threadingclass SQLiteConnectionPool:def __init__(self, database, max_connections=5):self.database = databaseself.max_connections = max_connectionsself.connections = Queue(maxsize=max_connections)self.lock = threading.Lock()# 初始化连接池for _ in range(max_connections):conn = sqlite3.connect(database, check_same_thread=False)self.connections.put(conn)def get_connection(self):"""获取连接"""return self.connections.get()def return_connection(self, conn):"""归还连接"""self.connections.put(conn)def close_all(self):"""关闭所有连接"""while not self.connections.empty():conn = self.connections.get()conn.close()# 使用连接池
pool = SQLiteConnectionPool('example.db', max_connections=3)# 获取连接
conn = pool.get_connection()
try:cursor = conn.cursor()cursor.execute("SELECT * FROM users")results = cursor.fetchall()print(results)
finally:# 归还连接pool.return_connection(conn)# 关闭连接池
pool.close_all()
4.4 性能优化技巧
import sqlite3
import timedef optimize_sqlite_performance():conn = sqlite3.connect('example.db')cursor = conn.cursor()# 1. 使用批量插入而不是单条插入start_time = time.time()data = [(f'User{i}', 20+i, f'user{i}@example.com') for i in range(1000)]cursor.executemany("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", data)conn.commit()print(f"批量插入1000条数据用时: {time.time() - start_time:.2f}秒")# 2. 创建索引加速查询cursor.execute("CREATE INDEX idx_age ON users(age)")cursor.execute("CREATE INDEX idx_email ON users(email)")# 3. 使用PRAGMA优化cursor.execute("PRAGMA journal_mode=WAL") # 写前日志模式cursor.execute("PRAGMA synchronous=NORMAL") # 同步模式cursor.execute("PRAGMA cache_size=10000") # 缓存大小# 4. 使用预编译语句stmt = cursor.execute("SELECT * FROM users WHERE age > ?", (25,))conn.close()
五、错误处理和调试
import sqlite3
import logging# 配置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)def safe_database_operation(db_name, query, params=None):"""安全的数据库操作"""conn = Nonetry:conn = sqlite3.connect(db_name)conn.row_factory = sqlite3.Row # 使结果可以通过列名访问cursor = conn.cursor()if params:cursor.execute(query, params)else:cursor.execute(query)if query.strip().upper().startswith('SELECT'):return cursor.fetchall()else:conn.commit()return cursor.rowcountexcept sqlite3.IntegrityError as e:logger.error(f"数据完整性错误: {e}")raiseexcept sqlite3.OperationalError as e:logger.error(f"操作错误: {e}")raiseexcept Exception as e:logger.error(f"未知错误: {e}")raisefinally:if conn:conn.close()# 使用示例
try:result = safe_database_operation('example.db', "SELECT * FROM users WHERE age > ?", (25,))for row in result:print(f"姓名: {row['name']}, 年龄: {row['age']}")
except Exception as e:print(f"操作失败: {e}")
六、pandas高级集成技巧
6.1 使用chunksize处理大数据
import pandas as pd
import sqlite3def process_large_data(db_name, table_name, chunksize=1000):"""分块处理大数据"""conn = sqlite3.connect(db_name)# 分块读取数据chunks = pd.read_sql_query(f"SELECT * FROM {table_name}", conn, chunksize=chunksize)total_rows = 0for chunk in chunks:# 处理每个数据块processed_chunk = chunk[chunk['age'] > 25]total_rows += len(processed_chunk)# 可以将处理后的数据写回数据库processed_chunk.to_sql('processed_users', conn, if_exists='append', index=False)conn.close()return total_rows
6.2 数据类型映射
import pandas as pd
import sqlite3
import numpy as np# SQLite到pandas数据类型映射
dtype_mapping = {'INTEGER': 'int64','REAL': 'float64','TEXT': 'object','BLOB': 'object','NULL': 'object'
}def read_with_dtypes(db_name, query):"""读取数据并正确设置数据类型"""conn = sqlite3.connect(db_name)# 先获取列信息cursor = conn.cursor()cursor.execute(query)column_names = [description[0] for description in cursor.description]# 读取数据df = pd.read_sql_query(query, conn)# 自动类型转换for col in df.columns:if df[col].dtype == 'object':try:df[col] = pd.to_numeric(df[col])except ValueError:try:df[col] = pd.to_datetime(df[col])except ValueError:passconn.close()return df
6.3 复杂数据操作示例
import pandas as pd
import sqlite3
from datetime import datetime, timedeltadef complex_data_operations():conn = sqlite3.connect('sales.db')# 创建示例数据dates = pd.date_range(start='2024-01-01', end='2024-12-31', freq='D')sales_data = {'date': dates,'product_id': np.random.randint(1, 6, size=len(dates)),'quantity': np.random.randint(10, 100, size=len(dates)),'price': np.random.uniform(10, 1000, size=len(dates))}df_sales = pd.DataFrame(sales_data)df_sales['total'] = df_sales['quantity'] * df_sales['price']# 写入数据库df_sales.to_sql('sales', conn, if_exists='replace', index=False)# 复杂查询:每月销售汇总query = """SELECT strftime('%Y-%m', date) as month,product_id,SUM(quantity) as total_quantity,SUM(total) as total_revenue,AVG(price) as avg_priceFROM salesGROUP BY strftime('%Y-%m', date), product_idORDER BY month, product_id"""monthly_summary = pd.read_sql_query(query, conn)# 使用pandas进行进一步分析# 计算环比增长monthly_summary['revenue_growth'] = monthly_summary.groupby('product_id')['total_revenue'].pct_change()# 写回数据库monthly_summary.to_sql('monthly_summary', conn, if_exists='replace', index=False)conn.close()return monthly_summary
七、Navicat可视化工具链接SQLite
定位到对应的
.db
文件,不需要输入账号密码即可查看数据库
总结
本文详细介绍了Python调用SQLite数据库的方法,包括使用内置的sqlite3模块进行基本的CRUD操作,以及使用pandas进行更高级的数据操作。主要涵盖以下内容:
- 基础操作:连接数据库、创建表、插入数据、查询数据、更新和删除数据
- 上下文管理器:使用with语句自动管理数据库连接
- pandas集成:读取SQLite数据到DataFrame、将DataFrame写入SQLite
- 高级用法:自定义函数、事务处理、连接池、性能优化
- 错误处理:异常捕获和日志记录
- 大数据处理:使用chunksize分块处理大量数据
通过合理使用这些API和技巧,我们可以高效地在Python中操作SQLite数据库,实现数据的存储、查询和分析。SQLite作为轻量级数据库,非常适合中小型应用、原型开发和数据分析任务。结合pandas的强大数据处理能力,可以构建功能完善的数据处理解决方案。
参考资源
- Python sqlite3官方文档
- pandas SQL查询文档
- SQLite官方文档
相关文章:
Python调用SQLite及pandas相关API详解
前言 SQLite是一个轻量级的嵌入式关系数据库,它不需要独立的服务器进程,将数据存储在单一的磁盘文件中。Python内置了sqlite3模块,使得我们可以非常方便地操作SQLite数据库。同时,pandas作为Python数据分析的重要工具,…...
【Java学习笔记】finalize方法
finalize 方法 说明:实际开发中很少或者几乎不会重写finalize方法,更多的是应对面试考点 说明 (1)当对象被回收时,系统会自动调用该对象的 finalize 方法。子类可以重写该方法,做一些额外的资源释放操作&…...
MySQL之基础索引
目录 引言 1、创建索引 2、索引的原理 2、索引的类型 3、索引的使用 1.添加索引 2.删除索引 3.删除主键索引 4.修改索引 5.查询索引 引言 当一个数据库里面的数据特别多,比如800万,光是创建插入数据就要十几分钟,我们查询一条信息也…...
MCU程序加密保护(二)ID 验证法 加密与解密
STM32 微控制器内部具有一个 96 位全球唯一的 CPU ID,不可更改。开发者可利用此 ID 实现芯片绑定和程序加密,增强软件安全性。 ID 验证法就是利用这个 UID,对每颗芯片的身份进行识别和绑定,从而防止程序被复制。 实现方式…...
SparkSQL的基本使用
SparkSQL 是 Apache Spark 的一个模块,用于处理结构化数据。它提供了一个高性能、分布式的 SQL 查询引擎,可以轻松处理各种数据源,包括结构化数据、半结构化数据和非结构化数据12。 SparkSQL 的特点 易整合:SparkSQL 无缝整合了…...
QListWedget控件使用指南
QListWedget公共函数 函数签名功能描述QListWidget(QWidget *parent nullptr)构造函数,创建一个QListWidget对象,可指定父部件(默认为nullptr)。virtual ~QListWidget()虚析构函数,释放QListWidget对象及其资源。voi…...
primitive创建图像物体
本节我们学习使用entity来创建物体 我们以矩形为例,在输入矩形的四个点后运行程序 //使用entity创建矩形var rectangle viewer.entities.add({rectangle: {coordinates:Cesium.Rectangle.fromDegrees(//西边的经度90,//南边维度20,//东边经度110,//北边维度30 ),material:Ces…...
MySQL 服务器配置和管理(上)
MySQL 服务器简介 通常所说的 MySQL 服务器指的是mysqld(daemon 守护进程)程序,当运⾏mysqld后对外提供MySQL 服务,这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容,包括: • 服务器⽀持的启动选项。可以在命令⾏和…...
跨区域智能电网负荷预测:基于 PaddleFL 的创新探索
跨区域智能电网负荷预测:基于 PaddleFL 的创新探索 摘要: 本文聚焦跨区域智能电网负荷预测,提出基于 PaddleFL 框架的联邦学习方法,整合多地区智能电网数据,实现数据隐私保护下的高精度预测,为电网调度优化提供依据,推动智能电网发展。 一、引言 在当今社会,电力作为经…...
Java 重试机制详解
文章目录 1. 重试机制基础1.1 什么是重试机制1.2 重试机制的关键要素1.3 适合重试的场景2. 基础重试实现2.1 简单循环重试2.2 带延迟的重试2.3 指数退避策略2.4 添加随机抖动2.5 使用递归实现重试2.6 可重试异常过滤3. 常用重试库介绍3.1 Spring Retry3.1.1 依赖配置3.1.2 编程…...
Spark缓存---cache方法
在Spark 中,cache() 是用于优化计算性能的核心方法之一,但它有许多细节需要深入理解。以下是关于 cache() 的详细技术解析: 1. cache() 的本质 简化的 persist():cache() 是 persist(StorageLevel.MEMORY_ONLY) 的快捷方式&#…...
一分钟了解大语言模型(LLMs)
一分钟了解大语言模型(LLMs) A Minute to Know about Large Language Models (LLMs) By JacksonML 自从ChatGPT上线发布以来,在短短的两年多时间里,全球ChatBot(聊天机器人)发展异常迅猛,更为…...
当数控编程“联姻”AI:制造工厂的“智能大脑”如何炼成?
随着DeepSeek乃至AI人工智能技术在企业中得到了广泛的关注和使用,多数企业开始了AI探索之旅,迅易科技也不例外,且在不断地实践中强化了AI智能应用创新的强大能力。许多制造企业面临着工艺知识传承困难、编程效率低下等诸多挑战, 今…...
鸿蒙OSUniApp 实现的二维码扫描与生成组件#三方框架 #Uniapp
UniApp 实现的二维码扫描与生成组件 前言 最近在做一个电商小程序时,遇到了需要扫描和生成二维码的需求。在移动应用开发中,二维码功能已经成为标配,特别是在电商、社交和支付等场景下。UniApp作为一个跨平台开发框架,为我们提供…...
【Python 内置函数】
Python 内置函数是语言核心功能的直接体现,无需导入即可使用。以下是精选的 10 大类、50 核心内置函数详解,涵盖日常开发高频场景: 一、数据类型转换 函数示例说明int()int("123") → 123字符串/浮点数转整数float()float("3…...
鸿蒙OSUniApp开发支持多语言的国际化组件#三方框架 #Uniapp
使用UniApp开发支持多语言的国际化组件 在全球化的今天,一个优秀的应用往往需要支持多种语言以满足不同地区用户的需求。本文将详细讲解如何在UniApp框架中实现一套完整的国际化解决方案,从而轻松实现多语言切换功能。 前言 去年接手了一个面向国际市场…...
MySQL之基础事务
目录 引言: 什么是事务? 事务和锁 mysql数据库控制台事务的几个重要操作指令(transaction.sql) 1、事物操作示意图: 2.事务的隔离级别 四种隔离级别: 总结一下隔离指令 1. 查看当前隔离级别 …...
OpenHarmony系统HDF驱动开发介绍(补充)
一、HDF驱动简介 HDF(Hardware Driver Foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理、驱动消息机制和配置管理。 简单来说:HDF框架的驱动和Linux的驱动比较相似都是由配置文件和驱动…...
深度学习中的查全率与查准率:如何实现有效权衡
📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4-turbo模型辅助生成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认…...
文件名是 E:\20250512_191204.mp4, EV软件录屏,未保存直接关机损坏, 如何修复?
去github上下载untrunc 工具就能修复 https://github.com/anthwlock/untrunc/releases 如果访问不了 本机的 hosts文件设置 140.82.112.3 github.com 199.232.69.194 github.global.ssl.fastly.net 就能访问了 实在不行,从这里下载,传上去了 https://do…...
界面控件DevExpress WinForms v24.2 - 数据处理功能增强
DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…...
Web UI测试效率低?来试Parasoft Selenic的智能修复与分析!
如果你正在使用Selenium进行Web UI测试,但被测试维护的繁琐、测试不稳定以及测试执行缓慢等问题困扰,不妨试试Parasoft Selenic! Parasoft Selenic能够通过智能修复与分析功能,帮你自动检测并修复测试中的不稳定因素,…...
计算机视觉最不卷的方向:三维重建学习路线梳理
提到计算机视觉(CV),大多数人脑海中会立马浮现出一个字:“卷”。卷到什么程度呢?2022年秋招CV工程师岗位数下降了16%,但求职人数增加了23%,求职人数与招聘岗位的比例达到了恐怖的15:1࿰…...
国产 ETL 数据集成厂商推荐—谷云科技 RestCloud
数字化转型加速推进的商业环境中,数据已成为企业最为关键的资产之一。然而,随着企业信息化的建设不断深入,各个业务系统之间数据分散、格式不一、难以互通等问题日益凸显,严重制约了企业对数据价值的深度挖掘与高效利用。在此背景…...
vscode extention踩坑记
# npx vsce package --allow-missing-repository --no-dependencies #耗时且不稳定 npx vsce package --allow-missing-repository #用这行 code --install-extension $vsixFileName --force我问ai:为什么我的.vsix文件大了那么多 ai答:因为你没有用 --n…...
AI时代的弯道超车之第十二章:英语和编程重要性?
在这个AI重塑世界的时代,你还在原地观望吗?是时候弯道超车,抢占先机了! 李尚龙倾力打造——《AI时代的弯道超车:用人工智能逆袭人生》专栏,带你系统掌握AI知识,从入门到实战,全方位提升认知与竞争力! 内容亮点: AI基础 + 核心技术讲解 职场赋能 + 创业路径揭秘 打破…...
关于数据湖和数据仓的一些概念
一、前言 随着各行业数字化发展的深化,数据资产和数据价值已越来越被深入企业重要发展的战略重心,海量数据已成为多数企业生产实际面临的重要问题,无论存储容量还是成本,可靠性都成为考验企业数据治理的考验。本文来看下海量数据存储的数据湖和数据仓,数据仓库和数据湖,…...
hbase shell的常用命令
一、hbase shell的基础命令 # 客户端登录 [rootCloud-Hadoop-NN-02 hbase]$ ./bin/hbase shell# 查看所有表 hbase> list### 创建数据表student,包含Sname、Ssex、Sage、Sdept、course列族/列 ### 说明:列族不指定列名时,列族可以直接成为…...
高并发内存池(四):Page Cache结构设计
目录 一,项目整体框架回顾 Thread Cache结构 Central Cache结构 二,Page Cache大致框架 三,Page Cache申请内存实现 Central Cache向Page Cache申请内存接口 从Page Cache中获取span接口 Page Cache加锁问题 申请内存完整过程 源码&a…...
易学探索助手-项目记录(九)
本文介绍本地大模型推理数据集构成 (一)古籍数据获取 以44种竖向从右至左排列的繁体古文为研究对象,通过OCR识别、XML结构化处理,最终生成符合大模型训练要求的数据集。 1.技术路线设计 图像处理层:PaddleOCR识别竖…...
Idea 设置编码UTF-8 Idea中 .properties 配置文件中文乱码
Idea 设置编码UTF-8 Idea中 .properties 配置文件中文乱码 一、设置编码 1、步骤: File -> Setting -> Editor -> File encodings --> 设置编码二、配置文件中文乱码 1、步骤: File -> Setting -> Editor -> File encodings ->…...
Redis缓存穿透、雪崩、击穿的解决方案?
Redis 缓存问题解决方案及Java实现 一、缓存穿透解决方案 (缓存穿透指查询不存在数据,绕过缓存直接访问数据库) 1. 布隆过滤器 空值缓存 注意点: 1.布隆过滤器是需要预热数据的,就是需要输入当前数据库已经存在的…...
第29节:现代CNN架构-Inception系列模型
引言 Inception系列模型是卷积神经网络(CNN)发展历程中的重要里程碑,由Google研究人员提出并不断演进。这一系列模型通过创新的架构设计,在保持计算效率的同时显著提升了图像识别任务的性能。从最初的Inception v1到最新的Inception-ResNet,每一代Inception模型都引入了突破…...
初识C++:类和对象(上)
概述:本篇博客主要讲解类和对象的学习。 目录 1. 类的定义 1.1 类定义格式 1.2 访问限定符 1.3 类域 2.实例化 2.1 实例化概念 2.2 this指针 3. 小结 1. 类的定义 1.1 类定义格式 class为定义类的关键字,Stack为类的名字,{} 中为类的…...
腾讯 IMA 工作台升级:新增知识库广场与 @提问功能
目录 一、引言 二、知识库广场功能 2.1 功能架构解析 2.2 技术实现突破 三、知识库提问功能 3.1 交互模式革新 3.2 技术底层逻辑 四、实战价值 4.1 知识管理方面 4.2 工作效率提升方面 4.3 团队协作方面 4.4 知识变现方面 五、未来展望 5.1 技术演进方向 5.2 商业…...
[目标检测] YOLO系列算法讲解
前言 目标检测就是做到给模型输入一张图片或者视频,模型可以迅速判断出视频和图片里面感兴趣的目标所有的位置和它 的类别,而当前最热门的目标检测的模型也就是YOLO系列了。 YOLO系列的模型的提出,是为了解决当时目标检测的模型帧率太低而提…...
Python 之 selenium 打开浏览器指定端口进行接续操作
一般使用 selenium 进行数据爬取时,常用处理流程是让 selenium 从打开浏览器开始,完成全流程的所有操作。但是有时候,我们希望用户先自己打开浏览器进入指定网页,完成登录认证等一系列操作之后(比如用户、密码、短信验…...
GPUGeek携手ComfyUI :低成本文生图的高效解决方案
一、文生图领域的困境与ComfyUI的优势 在当今数字化创意表达的时代,文生图技术日益受到关注。像豆包这类以语言交互为主的大模型,虽然在文本处理上表现出色,但在文生图方面,其生成效果难以达到专业图像创作的要求。而Midjourney&…...
OpenCV CUDA 模块中用于在 GPU 上计算两个数组对应元素差值的绝对值函数absdiff(
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 void cv::cuda::absdiff 是 OpenCV CUDA 模块中的一个函数,用于在 GPU 上计算两个数组对应元素差值的绝对值。 该函数会逐元素计算两…...
互联网大厂Java面试题:深入解析SpringCloud微服务架构中的服务注册与发现机制
互联网大厂Java面试题:深入解析SpringCloud微服务架构中的服务注册与发现机制 面试题 问题: 在SpringCloud微服务架构中,服务注册与发现是核心功能之一。请详细说明Nacos作为服务注册中心的实现原理,并对比其与Eureka的异同点。…...
东芝新四款产品“TB67Z830SFTG、TB67Z830HFTG、TB67Z850SFTG、TB67Z850HFTG系列三相栅极驱动器ic三相栅极驱动器IC
支持用于电动工具、吸尘器、工业机器人等的三相无刷DC电机 东芝电子设备与存储公司(简称“东芝”)推出了TB67Z83xxFTG系列三相栅极驱动器ic的四个产品和TB67Z85xxFTG系列三相栅极驱动器IC的四个产品,用于消费和工业设备的三相无刷DC电机。通过将新产品与作为电机控制…...
react+html-docx-js将页面导出为docx
1.主要使用:html-docx-js进行前端导出 2.只兼容到word,wps兼容不太好 3.处理分页换行 4.处理页眉 index.tsx import { saveAs } from file-saver; import htmlToDocxGenerate from ./HtmlToDocx;const handleExportByHtml async () > {const expor…...
Linux基础 -- SSH 流式烧录与压缩传输笔记
Linux SSH 流式烧录与压缩传输指南 一、背景介绍 在嵌入式开发和维护中,常常需要通过 SSH 从 PC 向设备端传输大文件(如系统镜像、固件)并将其直接烧录到指定磁盘(如 /dev/mmcblk2)。然而,设备端存储空间…...
<论文>(微软)避免推荐域外物品:基于LLM的受限生成式推荐
一、摘要 本文介绍微软和深圳大学合作发表于2025年5月的论文《Avoid Recommending Out-of-Domain Items: Constrained Generative Recommendation with LLMs》。论文主要研究如何解决大语言模型(LLMs)在推荐系统中推荐域外物品的问题,提出了 …...
2025年渗透测试面试题总结-360[实习]安全工程师(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 1. 自我介绍 2. WAF及其绕过方式 3. IPS/IDS/HIDS 4. 云安全 5. 绕过安骑士/安全狗 6. Gopher扩展…...
【机器学习】支持向量回归(SVR)从入门到实战:原理、实现与优化指南
前言 在机器学习的广阔领域中,回归分析作为预测连续型变量的重要手段,被广泛应用于金融预测、工业生产、科学研究等诸多场景。支持向量回归(SVR)作为回归算法家族中的佼佼者,凭借独特的理论优势与强大的实践能力脱颖而…...
右值引用的学习
传统的C语法中就有引用的语法,而C11中新增了的右值引用语法特性,所以从现在开始我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用,都是给对象取别名。 左值引用和右值引用 在讲之前,我们先来看一下什么是左值和右值…...
碎片笔记|AI生成图像溯源方法源码复现经验(持续更新中……)
前言:本篇博客分享一些溯源方法的复现经验,希望能帮助到大家🎉。 目录 1. Close-set AttributionRepmixDe-FakeDNA-Net 2. Open-set AttributionPOSE 3. Single-Model AttributionOCC-CLIPLatentTracer 1. Close-set Attribution Repmix 论…...
elementplus el-tree 二次封装支持配置删除后展示展开或折叠编辑复选框懒加载功能
本文介绍了基于 ElementPlus 的 el-tree 组件进行二次封装的 TreeView 组件,使用 Vue3 和 JavaScript 实现。TreeView 组件通过 props 接收树形数据、配置项等,支持懒加载、节点展开/收起、节点点击、删除、编辑等操作。组件内部通过 ref 管理树实例&…...
【C/C++】深度探索c++对象模型_笔记
1. 对象内存布局 (1) 普通类(无虚函数) 成员变量排列:按声明顺序存储,但编译器会根据内存对齐规则插入填充字节(padding)。class Simple {char a; // 1字节(偏移0)int b; …...