DeepSeek如何快速开发PDF转Word软件
一、引言
如今,在线工具的普及让PDF转Word成为了一个常见需求,常见的PDF转Word工具有收费的WPS,免费的有PDFGear,以及在线工具SmallPDF、iLovePDF、24PDF等。然而,大多数免费在线转换工具存在严重隐私风险——文件需上传至云端处理,容易泄露敏感信息。
许多平台如WPS、迅捷PDF等要求付费才能使用高效服务,导致用户无法快捷使用转换服务。为解决这些问题,我决定用Python开发一款本地化的PDF批量转Word软件,具有以下优势:
- 100%离线处理保障隐私安全
- 完全免费且支持个性化服务
- 帮助巩固Python编程知识
- 深度运用DeepSeek模型提升开发能力
二、软件主要功能
1. 核心特性
- ✅ 100%离线转换:杜绝信息泄露风险
- 🚀 批量处理:支持扫描子文件夹(可选)
- 📁 路径管理:兼容中英文自定义路径
- 📊 双进度显示:文件转换进度+页面解析进度
- 🔍 智能交互:完成后自动打开目标文件夹
2. 技术亮点
- 多线程处理防止界面卡顿
- 异常捕获机制增强稳定性
- 自适应路径创建功能
- 队列通信实时更新进度
三、设计过程
1. 技术架构
2、设计过程
用户界面:界面设计以简洁易用为主。通过tkinter的标签、文本框、按钮等控件,我实现了文件夹选择、设置选项、进度条显示等功能。
**PDF转Word功能:**因为有现成的pdf2docx的库,我采用了这个轮来进行PDF到Word格式的转换,再加上Python的批量处理功能,要以轻松满足我的文件转换需求。
**多线程与进度更新:**为避免界面卡顿,我使用了threading库来将文件转换操作放入独立线程,并利用queue进行线程间通信,实时更新进度条显示。
我们在设计时,借助了DeepSeek R1的深度思考模型。
为了减少错误,我们在提示词加入了让deepseek进行自我运行代码,进行调试的功能,减少用户本地测试中产生的bug。先上传软件图片,然后给出指令:
在其回复中,我们看到它针对我的提问题也进行了回答,尤其是在指定的Python环境下进行了测试。
DeepSeek自主调试功能
经过测试,代码运行无误,但是缺少进度条功能,可能是没有识别出来,或者漏掉了,于是通过追加提问:
这里我故意打错了一个汉字,但是DeepSeek还能正确地进行理解,同时很好地解决了进度条缺失的问题。就这样,我们通过两步,不到1分钟就可以把这个一个pdf转word工具制作出来。
在开发过程中,我为DeepSeek提供了完整的开发环境,DeepSeek通过对项目需求的分析,建议我添加更多的异常处理机制,特别是在文件路径不正确或者文件损坏的情况下的处理。最终,这些改进使得程序的稳定性和用户体验都得到了显著提升。
经过多次的调试和优化,软件终于成型,并可以稳定运行。用户只需选择文件夹并点击转换按钮,程序就会自动处理所有PDF文件,最终输出为Word格式。每一步的转换进度都会实时更新,确保用户能够清晰地了解当前状态。
四、代码实现
1. 完整代码
import os
import tkinter as tk
from tkinter import ttk,filedialog, messagebox
from pdf2docx import Converter
import threading
import queueclass PDFToWordConverter:def __init__(self, master):self.master = mastermaster.title("PDF批量转Word")master.geometry("610x295")# 输入文件夹self.lbl_input = tk.Label(master, text="输入文件夹:")self.ent_input = tk.Entry(master, width=30)self.btn_input = tk.Button(master, text="选择", command=self.select_input)# 输出文件夹self.lbl_output = tk.Label(master, text="输出文件夹:")self.ent_output = tk.Entry(master, width=30)self.btn_output = tk.Button(master, text="选择", command=self.select_output)# 复选框self.var_subdir = tk.BooleanVar()self.var_open = tk.BooleanVar(value=True)self.chk_subdir = tk.Checkbutton(master, text="包含子文件夹", variable=self.var_subdir)self.chk_open = tk.Checkbutton(master, text="转换完成后打开目标文件夹", variable=self.var_open)# 转换按钮self.btn_convert = tk.Button(master, text="开始转换", command=self.start_conversion)# 布局self.lbl_input.grid(row=0, column=0, padx=10, pady=10, sticky=tk.W)self.ent_input.grid(row=0, column=1, padx=5, pady=10, sticky=tk.EW)self.btn_input.grid(row=0, column=2, padx=10, pady=10)self.lbl_output.grid(row=1, column=0, padx=10, pady=10, sticky=tk.W)self.ent_output.grid(row=1, column=1, padx=5, pady=10, sticky=tk.EW)self.btn_output.grid(row=1, column=2, padx=10, pady=10)self.chk_subdir.grid(row=2, column=1, padx=5, pady=5, sticky=tk.W)self.chk_open.grid(row=3, column=1, padx=5, pady=5, sticky=tk.W)self.btn_convert.grid(row=4, column=1, pady=10)# 新增进度组件self.progress_label = tk.Label(master, text="准备就绪")self.progress_bar = ttk.Progressbar(master, orient=tk.HORIZONTAL, mode='determinate')# 调整布局(新增两行)self.progress_label.grid(row=5, column=0, columnspan=3, padx=10, pady=5, sticky=tk.W)self.progress_bar.grid(row=6, column=0, columnspan=3, padx=10, pady=10, sticky=tk.EW)# 消息队列用于线程通信self.queue = queue.Queue()master.after(100, self.process_queue)# 配置列权重master.columnconfigure(1, weight=1)def select_input(self):path = filedialog.askdirectory()if path:self.ent_input.delete(0, tk.END)self.ent_input.insert(0, path)def select_output(self):path = filedialog.askdirectory()if path:self.ent_output.delete(0, tk.END)self.ent_output.insert(0, path)def start_conversion(self):# 重置进度条self.progress_bar['value'] = 0self.progress_label.config(text="正在扫描PDF文件...")input_dir = self.ent_input.get()output_dir = self.ent_output.get()if not input_dir or not output_dir:messagebox.showerror("错误", "请先选择输入和输出文件夹!")return# 禁用转换按钮self.btn_convert.config(state=tk.DISABLED)threading.Thread(target=self.convert_files, args=(input_dir, output_dir), daemon=True).start()def get_pdf_list(self, input_dir):pdf_list = []for root, dirs, files in os.walk(input_dir):if not self.var_subdir.get() and root != input_dir:continuefor file in files:if file.lower().endswith('.pdf'):pdf_list.append(os.path.join(root, file))return pdf_listdef convert_files(self, input_dir, output_dir):self.pdf_files = self.get_pdf_list(input_dir)try:total_files = len(self.pdf_files)for index, pdf_path in enumerate(self.pdf_files):# 更新当前文件进度self.queue.put(("file_progress", (index+1, total_files, pdf_path)))# 构建输出路径relative_path = os.path.relpath(os.path.dirname(pdf_path), input_dir) if self.var_subdir.get() else ""output_path = os.path.join(output_dir, relative_path)os.makedirs(output_path, exist_ok=True)# 转换文件docx_path = os.path.join(output_path, f"{os.path.splitext(os.path.basename(pdf_path))[0]}.docx")cv = Converter(pdf_path)cv.convert(docx_path, progress_callback=self.update_page_progress)cv.close()self.queue.put(("complete", None))except Exception as e:self.queue.put(("error", str(e)))def update_page_progress(self, current, total):# 页面级别进度(每文件0-100%)progress = (current / total) * 100 if total != 0 else 0self.queue.put(("page_progress", progress))def process_queue(self):try:while True:msg_type, data = self.queue.get_nowait()if msg_type == "file_progress":current, total, path = datafile_progress = (current / total) * 100self.progress_bar['value'] = file_progressself.progress_label.config(text=f"正在转换 {current}/{total}:{os.path.basename(path)}")elif msg_type == "page_progress":# 综合进度 = 文件进度 + 页面进度/总文件数current_file_progress = self.progress_bar['value']page_progress = data / len(self.pdf_files)self.progress_bar['value'] = current_file_progress + page_progresselif msg_type == "complete":messagebox.showinfo("完成", "转换完成!")if self.var_open.get():os.startfile(self.ent_output.get())self.btn_convert.config(state=tk.NORMAL)self.progress_label.config(text="转换完成")elif msg_type == "error":messagebox.showerror("错误", f"转换出错:{data}")self.btn_convert.config(state=tk.NORMAL)self.progress_label.config(text="转换出错")except queue.Empty:passfinally:self.master.after(100, self.process_queue)
if __name__ == "__main__":root = tk.Tk()app = PDFToWordConverter(root)root.mainloop()
五、经验总结
1. 核心收获
- 🛡️ 本地化优势:处理敏感文档的首选方案
- ⚡ 效率提升:批量处理100份PDF仅需3分钟(测试环境:i5-1135G7)
- 🤖AI协作:DeepSeek使开发效率提升300%
1. 优化方向
- 增加文件预览功能
- 支持更多格式转换(如Word转PDF)
- 实现跨平台版本(基于PyInstaller打包)
相关文章:
DeepSeek如何快速开发PDF转Word软件
一、引言 如今,在线工具的普及让PDF转Word成为了一个常见需求,常见的PDF转Word工具有收费的WPS,免费的有PDFGear,以及在线工具SmallPDF、iLovePDF、24PDF等。然而,大多数免费在线转换工具存在严重隐私风险——文件需上…...
ROS环境搭建
ROS首次搭建环境 注:以下内容都是在已经安装好ros的情况下如何搭建workplace 一、创建工作空间二、创建ROS包三、注意 注:以下内容都是在已经安装好ros的情况下如何搭建workplace 如果没有安装好,建议鱼香ros一步到位:鱼香ROS 我也是装了好久…...
深入探索DeepSeek开源之旅:开源Week全程解析
摘要 在农历新年刚刚结束之际,DeepSeek以卓越的开源精神,连续六天举办了开源Week活动。这一系列活动不仅展示了DeepSeek在技术领域的活跃度和影响力,还彰显了其对开源社区的贡献。通过这次活动,DeepSeek吸引了众多开发者和技术爱好…...
Redis是什么?如何使用Redis进行缓存操作?
Redis(Remote Dictionary Server)是一款高性能的内存键值存储系统,广泛用于缓存、消息队列、会话存储和实时数据处理等场景。它基于内存存储,支持多种数据结构,如字符串、列表、集合、有序集合和哈希表等,具…...
Unity学习笔记之——ugui的性能优化
在Unity中UI优化的核心问题就是重绘和批处理之间的平衡 一、Canvas优化要点 1.优化原因: (1)Unity为了性能优化,会合并Canvas下的所有元素; (2)如果把所有面板放到一个Canvas下,会…...
【三.大模型实战应用篇】【2.智能学员辅导系统:与大模型的深度交互】
早上七点半,初三学生小林打开数学辅导APP,发现AI老师准确指出了他昨晚作业中三次跳步计算的坏习惯——这比他亲妈观察得还细致。这背后是一场发生在代码深处的"脑力风暴",让我们潜入智能辅导系统与大模型深度交互的"暗室",看看那些让教育产生化学反应的…...
【vue-echarts】——04.配置项---legend
文章目录 一、配置项-legend图例二、显示结果一、配置项-legend图例 图例组件展现了不同系列的标记,颜色和名字。可以通过点击图例控制哪些系列不显示。 代码如下 Demo4View.vue <template><div class="about">...
面试题02.02.返回倒数第k个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 注意:本题相对原题稍作改动 示例: 输入: 1->2->3->4->5 和 k 2 输出: 4 说明: 给定的 k 保证是有效的。 题解ÿ…...
剑指 Offer II 041. 滑动窗口的平均值
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20041.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BC/README.md 剑指 Offer II 041. 滑动窗口的平均值 题目描述 给定一个整数…...
OCR PDF 文件是什么?它包含什么内容?
有些 PDF 文件是通过扫描纸质书页生成的,这类文件有其独特的特点。有时,原始书籍是唯一可用的版本,因此只能通过扫描的方式获取内容。 如何识别 OCR PDF 文件? 你通常可以从外观上辨别 OCR PDF 文件——页面上的文本看起来像“锯…...
什么是最终一致性,它对后端系统的意义是什么
最终一致性(Eventual Consistency)是分布式系统中的一种一致性模型。与传统的强一致性模型不同,最终一致性并不要求系统在任何时刻都保持一致,而是保证在足够的时间后,所有节点的数据最终会达到一致的状态。换句话说,系统允许短时间内出现数据的不一致性,但最终会通过某…...
CSS3中布局方式说明
CSS3 提供了多种灵活的布局方式,适用于不同的场景和需求。以下是主要的布局方式及其特点: 1. Flexbox 布局(弹性盒子) 用途:一维布局(水平或垂直方向排列元素)。特点: 通过 display…...
【开源-常用开源c/c++日志管理模块对比】
[TOC](开源-常用开源c/c日志管理模块对比) 项目名称语言优点缺点适用场景开源代码链接spdlogC高性能,支持异步日志;丰富的格式化功能;跨平台;易于集成。依赖C11或更高版本;不适合嵌入式系统。高…...
基于log4j的自定义traceid实现
思路就是spring 做切面拦截请求,切面入口时生成traceId,然后放到MDC里面(就是threadLocal,MDC是log框架提供的工具类,能方便在配置文件里面引用插入的值)。 切面结束时traceId。 import com.sing.monitor…...
如何在网页上显示3D CAD PMI
在现代制造业中,3D CAD模型已成为产品设计和制造的核心。为了更有效地传达设计意图和制造信息,产品和制造信息(PMI)被嵌入到3D模型中。然而,如何在网页上清晰、准确地显示这些3D CAD PMI,成为了一个重要的技…...
LLMR: Real-time Prompting of Interactive Worldsusing Large Language Models
LLMR-使用大型语言模型的交互式世界实时建模 ABSTRACT 我们提出了混合现实的大语言模型(LLMR),一个使用LLM实时创建和修改交互式混合现实体验的框架。LLMR利用新颖的策略来解决理想训练数据稀缺的困难情况,或者设计目标需要综合内…...
使用 OpenLIT 对 LLM 应用进行可观测
大规模语言模型(LLM)的可观测性 随着大规模语言模型(LLM)在各个领域的广泛应用,确保这些模型的稳定性和性能变得至关重要。为了实现这一目标,可观测性(Observability)成为了一个关键…...
C与C++的区别
C 深度剖析:对比 C 语言的显著差异 在编程的浩瀚宇宙中,C 和 C 堪称两颗耀眼的巨星,各自绽放出独一无二的光彩。C 语言作为经典的结构化编程语言,多年来在系统开发、嵌入式编程等领域始终占据着举足轻重的地位。而 C 作为 C 语言…...
【极客时间】浏览器工作原理与实践-2 宏观视角下的浏览器 (6讲) - 2.6 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?
https://time.geekbang.org/column/article/118826 2.6 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的? 2.5介绍了渲染流水线中的 DOM 生成、样式计算和布局三个阶段,2.6讲解渲染流水线后面的阶段…...
开放鸿蒙认证,OpenHarmony兼容性认证介绍
Ⅰ、OpenHarmony开放鸿蒙兼容性测试认证:使用官方测试套件,对照PCS自检表中的必测项,在本地搭建的环境中对伙伴设备进行预测,直至取得合格的兼容性测试报告。 注:2025年01月01日起,不支持新产品基于老分支…...
磁盘空间不足|如何安全清理以释放磁盘空间(开源+节流)
背景: 最近往数据库里存的东西有点多,磁盘不够用 查看磁盘使用情况 df -h /dev/sda5(根目录 /) 已使用 92% 咱们来开源节流 目录 背景: 一、开源 二、节流 1.查找 大于 500MB 的文件: 1. Snap 缓存…...
【2】好未来JAVA开发工程师部分笔试题解析
编程题 1.降序的子数组最大元素和 给你一个正整数组成的数组nums,返回nums中一个降序子数组的最大可能元素和。 子数组是数组中的一个连续数字序列。 已知子数组[nums l, nums l1, … , nums r-1, nums r],若对所有l (1<i<r),nums …...
LeetCode 21. 合并两个有序链表(Python)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2 [] 输出:[] 示例 3: 输…...
Y3学习打卡
网络结构图 YOLOv5配置了4种不同大小的网络模型,分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,其中 YOLOv5s 是网络深度和宽度最小但检测速度最快的模型,其他3种模型都是在YOLOv5s的基础上不断加深、加宽网络使得网络规模扩大,在增强…...
2025-3-3 二叉树的存储结构
一、二叉树的存储结构( 顺序存储,链式存储) 1.顺序存数--(用数组) (完全二叉树)常考的基本操作: i 的左孩子 -----2i 右孩子-----2i1 i的父节点-----[i/2] 向下取整 i所在的层…...
RK3588V2--ES8388声卡适配记录
RK3588V2--ES8388声卡适配记录 1. ES8388声卡简单介绍2. 适配过程2.1 设备树配置 3. 问题分析与解决3.1 现声卡平台设备, 最终注册失败3.2 系统查看 I2C 设备3.3 怀疑是没有上拉电阻? 4. 测试阶段4.1 耳机接口测试--OK4.2 MIC测试--无法使用 5. 分析总结 1. ES8388声…...
【http://noi.openjudge.cn/】4.3算法之图论——1538:Gopher II
[【http://noi.openjudge.cn/】4.3算法之图论——1538:Gopher II] 题目 查看提交统计提问 总时间限制: 2000ms 内存限制: 65536kB 描述 The gopher family, having averted the canine threat, must face a new predator. The are n gophers and m gopher holes, each at di…...
PySide(PyQT)的视图(QGraphicsView)范例(一) 基本框架
最近学习了视图(QGraphicsView)的知识,总结一下,做一个demo以备忘。在demo中使用了场景(QGraphicsScene)、矩形框(QGraphicsRectItem)等构件,以及演示了常用的设置方法和…...
opencv 模板匹配方法汇总
在OpenCV中,模板匹配是一种在较大图像中查找特定模板图像位置的技术。OpenCV提供了多种模板匹配方法,通过cv2.matchTemplate函数实现,该函数支持的匹配方式主要有以下6种,下面详细介绍每种方法的原理、特点和适用场景。 1. cv2.T…...
_mm_shuffle_epi32解析
一 概述 _mm_shuffle_epi32和_MMSHUFFLE是与SSE指令集相关的开发工具,主要用于SIMD向量操作。 二 _mm_shuffle_epi32 函数 功能:对128位整数向量(__m128i)中的四个32位整数进行重排序 原型:__m128i _mm_shuffle_epi32 (__m128i a, int imm…...
Tauri+React+Ant Design跨平台开发环境搭建指南
TauriReactAnt Design跨平台开发环境搭建指南 一、环境配置与工具链搭建 1.1 基础环境准备 必备组件: Rust工具链(v1.77): curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh Node.js LTS(v20.11.1&a…...
《基于Selenium的论坛系统自动化测试实战报告》
一、项目背景与技术选型 项目简介 目标系统:论坛系统 核心功能:用户注册/登录、会话框发送信息、好友列表、信息发送 技术栈:html Springboot MySQL数据库 为什么选择Selenium 支持多浏览器兼容性测试(Chrome/Firefox/Edge&…...
洛谷 P11830 省选联考2025 幸运数字 题解
题意 小 X 有 n n n 个正整数二元组 ( a i , b i ) ( 1 ≤ i ≤ n ) (a_i, b_i) (1 \leq i \leq n) (ai,bi)(1≤i≤n)。他将会维护初始为空的可重集 S S S,并对其进行 n n n 轮操作。第 i ( 1 ≤ i ≤ n ) i (1 \leq i \leq n) i(1≤i≤n) 轮操作中&#…...
清华北大DeepSeek六册
「清华北大-Deepseek使用手册」 链接:https://pan.quark.cn/s/98782f7d61dc 「清华大学Deepseek整理) 1-6版本链接:https://pan.quark.cn/s/72194e32428a AI学术工具公测链接:https://pan.baidu.com/s/104w_uBB2F42Da0qnk78_ew …...
ubuntu部署gitlab-ce及数据迁移
ubuntu部署gitlab-ce及数据迁移 进行前梳理: 在esxi7.0 Update 3 基础上使用 ubuntu22.04.5-server系统对 gitlab-ce 16.10进行部署,以及将gitlab-ee 16.9 数据进行迁移到gitlab-ce 16.10 进行后总结: 起初安装了极狐17.8.3-jh 版本(不支持全局中文,就没用了) …...
什么是 MGX:MetaGPT
什么是 MGX:MetaGPT MetaGPT是由思码逸(OpenDILab)团队开发的一款专注于生成式AI驱动的软件开发框架,MGX可能是其衍生或升级的相关成果,它创新性地将大语言模型引入软件开发流程,模拟人类软件团队的协作方式,能让用户通过自然语言描述需求,即可自动生成完整的软件项目,…...
C++,leecode字符串常见API
在LeetCode上刷C题目时,熟练掌握字符串相关的常见API可以大大提高代码效率和可读性。以下是C标准库(<string>)中常用的字符串操作API: 1. 初始化和赋值 std::string s1 "hello"; // 直接初始化 std::string s2…...
Ubuntu 安装 stable-diffusion-webui-docker 常见问题处理方法
安装 Stable Diffusion WebUI Docker 工程地址 https://github.com/AbdBarho/stable-diffusion-webui-docker 第一步是 git clone 下来 Setup 阅读 README 中的 setup,进入页面 https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Setup docker …...
长时间目标跟踪算法(3)-GlobalTrack:A Simple and Strong Baseline for Long-termTracking
GlobalTrack的原始论文和源码均已开源,下载地址。 目录 背景与概述 1.1 长期视觉跟踪的挑战 1.2 现有方法的局限性 1.3 GlobalTrack的核心思想 算法原理与架构 2.1 全局实例搜索框架 2.2 Query-Guided RPN(QG-RPN) 2.3 Query-Guided RCNN&a…...
深入理解指针与回调函数:从基础到实践
引言 在C语言中,指针和回调函数是两个非常重要的概念。指针为我们提供了直接操作内存的能力,而回调函数则为我们提供了一种灵活的编程方式,使得我们可以将函数作为参数传递给其他函数,从而实现更加模块化和可复用的代码。本文将深…...
算法学习新姿势:从0开始用hello-algo搭建自己的在线学习平台
文章目录 前言1.关于hello-algo2.安装Docker和Docker compose3.本地部署hello-algo4. hello-algo本地访问5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 今天要给大家安利一款绝对不能错过的开源神器——Hello-Algo!无论你是刚踏…...
常用 nvm 命令指南
nvm(Node Version Manager) 是一个用于管理 Node.js 版本的工具,可以轻松安装、切换和卸载不同版本的 Node.js。本文将介绍常用的 nvm 命令,帮助你高效管理 Node.js 环境。 1. 列出系统中通过 nvm 安装的所有 Node.js 版本 nvm l…...
后端-Java虚拟机
Java虚拟机 Java虚拟机的组成 Java虚拟机的组成由类加载器ClassLoader、运行时数据区域(JVM管理的内存)和执行引擎(即时遍历器、解释器垃圾回收器) 类加载器加载class字节码文件中的内容到内存运行时数据区域负责管理jvm使用到…...
开源PDF解析工具olmOCR
olmOCR 是由 Allen Institute for Artificial Intelligence (AI2) 的 AllenNLP 团队开发的一款开源工具,旨在将PDF文件和其他文档高效地转换为纯文本,同时保留自然的阅读顺序。它支持表格、公式、手写内容等。 olmOCR 经过学术论文、技术文档和其他文档…...
Java里的ArrayList和LinkedList有什么区别?
大家好,我是锋哥。今天分享关于【Java里的ArrayList和LinkedList有什么区别?】面试题。希望对大家有帮助; Java里的ArrayList和LinkedList有什么区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ArrayList 和 Lin…...
Python的循环和条件判断 笔记250303
Python的循环和条件判断 Python中的循环和条件判断是编程基础,以下是关键点总结及示例: 条件判断 语法:if、elif、else,使用缩进划分代码块。逻辑运算符:and、or、not。示例:age 18 if age < 12:prin…...
浔川官方回应
浔川官方回应 近期,有用户反馈《浔川社团官方文章被 Devpress 社区收录!》一文中的文章链接,点击后出现无法访问的情况。在此,浔川社团向各位关注我们的用户致以诚挚的歉意,并就该问题作出如下说明: 经社…...
【计算机网络入门】初学计算机网络(六)
目录 1.回忆数据链路层作用 2. 组帧 2.1 四种组帧方法 2.1.1 字符计数法 2.1.2 字节填充法 2.1.3 零比特填充法 2.1.4 违规编码法 3. 差错控制 3.1 检错编码 3.1.1 奇偶校验码 3.1.2 CRC(循环冗余校验)校验码 3.2 纠错编码 3.2.1 海明校验码…...
摄像头应用编程(三):多平面视频采集
文章目录 1、前言2、环境介绍3、步骤4、应用程序编写5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 在查看摄像头类型时,大致可以分为两类:Video Capture 和 Video Capture Multiplanar。 本次应用程序主要针对类型为Video Capture Multi…...
用工厂函数简化redis配置
工厂函数(Factory Function)不同于构造函数,工厂函数就是一个普通函数,通常用于创建对象或实例。它的核心思想是通过一个函数来封装对象的创建逻辑,而不是直接使用类的构造函数。工厂函数可以根据输入参数动态地决定创…...