【开源免费】二维码批量识别-未来之窗——C#-仙盟创梦IDE
二维码批量识别工具,借助先进图像识别技术,能快速准确读取大量二维码信息。适用于物流与供应链管理,如库存盘点和货物追踪;可用于资产管理,像固定资产盘点与设备巡检;还能助力数据收集与市场调研,比如问卷调查与活动签到。它能将识别信息导出为 Excel 等常见表格,表格结构清晰,方便用户对海量二维码数据高效采集、整理与分析,大幅提升工作效率。
一、工具概述
二维码批量识别工具是一款专门设计用于高效处理大量二维码的软件应用。它利用先进的图像识别技术,能够快速准确地读取众多二维码所包含的信息,并将这些信息按照用户需求进行整理和导出,极大地提高了数据采集和处理的效率。
二、主要用途
(一)物流与供应链管理
- 库存盘点:在仓库管理中,货物通常贴有包含产品信息(如名称、规格、批次、生产日期等)的二维码标签。通过二维码批量识别工具,工作人员只需使用扫码设备快速扫描仓库内的货物二维码,即可瞬间获取所有货物信息,并自动生成库存清单。这不仅节省了大量手动记录的时间,还避免了人工录入可能产生的错误,确保库存数据的准确性。
- 货物追踪:从货物的生产下线到最终送达客户手中,每个环节都可以通过二维码进行标识。在运输过程中,物流人员可以使用该工具在各个节点批量扫描货物二维码,实时更新货物的位置和状态信息。这样,企业管理者和客户都能够随时了解货物的运输进度,提高物流透明度,便于及时处理可能出现的问题,如延误、丢失等。
(二)资产管理
- 固定资产管理:对于企业或机构的固定资产,如办公设备、电子仪器、家具等,为每件资产贴上二维码标签,记录资产编号、购置日期、使用部门、使用人等详细信息。利用二维码批量识别工具,管理人员可以定期对资产进行快速盘点,轻松掌握资产的分布、使用状况,及时发现闲置或丢失的资产,优化资产配置,提高资产利用率。
- 设备巡检:在工业生产、电力设施、通信基站等领域,需要对大量设备进行定期巡检以确保其正常运行。通过为设备附上二维码,巡检人员使用工具批量扫描设备二维码,不仅能快速获取设备的基本信息和历史巡检记录,还可以实时录入本次巡检的结果(如设备运行参数、是否存在故障等)。这些数据能够及时反馈到管理系统,方便管理人员对设备进行状态评估和维护决策。
(三)数据收集与市场调研
- 问卷调查:在市场调研、学术研究等场景中,可将问卷链接生成二维码印刷在问卷上或通过线上渠道发布。受访者通过扫描二维码填写问卷。收集问卷时,使用二维码批量识别工具可以快速获取所有问卷的反馈信息,并将其整理成结构化的数据表格。这样大大简化了数据收集和整理的流程,使研究人员能够更快速地进行数据分析,得出有价值的结论。
- 活动签到:在各类会议、培训、展会等活动中,为参会人员发送包含个人信息的二维码电子邀请函。活动现场,工作人员使用批量识别工具快速扫描二维码完成签到,同时自动记录签到时间等信息。这些数据可导出为表格,方便活动组织者统计参会人数、分析参会人员的来源和行为等,为后续活动策划提供参考。
三、导出表格功能
该工具支持将识别出的二维码信息导出为常见的表格格式,如 Excel 表格。导出的表格具有清晰的结构,每一行对应一个二维码的信息,每一列代表不同的信息字段(如二维码类型、内容、扫描时间等)。用户可以根据实际需求对表格进行进一步的编辑、分析和处理,例如筛选特定信息、进行数据排序、计算统计数据等。通过这种方式,二维码批量识别工具不仅实现了信息的快速采集,还为后续的数据管理和决策提供了便利。
核心源码
namespace CyberWin.Work.Trade.Net.Ynwlzc.QrBatch
{public class Form1 : Form{private IContainer components;private Button btn_打开图片;private PictureBox barCodeImg;private Button btn_读取二维码;private TextBox ContentTxt;private FolderBrowserDialog folderBrowserDialog1;private DataGridView dgv_fileqr;private Button btn_浏览文件夹;private TextBox txt_folder;private Button btn_savebatch;private Button btn_batch_解码;private Button btn_列举文件;private DataGridViewTextBoxColumn FileName;private DataGridViewTextBoxColumn QR;private DataGridViewTextBoxColumn status;private DataGridViewTextBoxColumn FileFullPath;private Button button1;private Button button_读取二维码TH;protected override void Dispose(bool disposing){if (disposing && this.components != null)this.components.Dispose();base.Dispose(disposing);}private void InitializeComponent(){this.btn_打开图片 = new Button();this.barCodeImg = new PictureBox();this.btn_读取二维码 = new Button();this.ContentTxt = new TextBox();this.folderBrowserDialog1 = new FolderBrowserDialog();this.dgv_fileqr = new DataGridView();this.FileName = new DataGridViewTextBoxColumn();this.QR = new DataGridViewTextBoxColumn();this.status = new DataGridViewTextBoxColumn();this.FileFullPath = new DataGridViewTextBoxColumn();this.btn_浏览文件夹 = new Button();this.txt_folder = new TextBox();this.btn_savebatch = new Button();this.btn_batch_解码 = new Button();this.btn_列举文件 = new Button();this.button1 = new Button();this.button_读取二维码TH = new Button();((ISupportInitialize) this.barCodeImg).BeginInit();((ISupportInitialize) this.dgv_fileqr).BeginInit();this.SuspendLayout();this.btn_打开图片.Location = new Point(869, 32);this.btn_打开图片.Name = "btn_打开图片";this.btn_打开图片.Size = new Size(87, 32);this.btn_打开图片.TabIndex = 0;this.btn_打开图片.Text = "打开图片";this.btn_打开图片.UseVisualStyleBackColor = true;this.btn_打开图片.Click += new EventHandler(this.btn_打开图片_Click);this.barCodeImg.Location = new Point(511, 56);this.barCodeImg.Name = "barCodeImg";this.barCodeImg.Size = new Size(302, 273);this.barCodeImg.SizeMode = PictureBoxSizeMode.Zoom;this.barCodeImg.TabIndex = 1;this.barCodeImg.TabStop = false;this.btn_读取二维码.Location = new Point(869, 70);this.btn_读取二维码.Name = "btn_读取二维码";this.btn_读取二维码.Size = new Size(87, 30);this.btn_读取二维码.TabIndex = 2;this.btn_读取二维码.Text = "读取二维码";this.btn_读取二维码.UseVisualStyleBackColor = true;this.btn_读取二维码.Click += new EventHandler(this.btn_读取二维码_Click);this.ContentTxt.Location = new Point(12, 349);this.ContentTxt.Name = "ContentTxt";this.ContentTxt.Size = new Size(536, 21);this.ContentTxt.TabIndex = 3;this.dgv_fileqr.AllowUserToAddRows = false;this.dgv_fileqr.AllowUserToDeleteRows = false;this.dgv_fileqr.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;this.dgv_fileqr.Columns.AddRange((DataGridViewColumn) this.FileName, (DataGridViewColumn) this.QR, (DataGridViewColumn) this.status, (DataGridViewColumn) this.FileFullPath);this.dgv_fileqr.Location = new Point(12, 32);this.dgv_fileqr.Name = "dgv_fileqr";this.dgv_fileqr.ReadOnly = true;this.dgv_fileqr.RowTemplate.Height = 23;this.dgv_fileqr.SelectionMode = DataGridViewSelectionMode.FullRowSelect;this.dgv_fileqr.Size = new Size(493, 311);this.dgv_fileqr.TabIndex = 4;this.FileName.HeaderText = "文件名";this.FileName.Name = "FileName";this.FileName.ReadOnly = true;this.QR.HeaderText = "二维码";this.QR.Name = "QR";this.QR.ReadOnly = true;this.status.HeaderText = "状态";this.status.Name = "status";this.status.ReadOnly = true;this.FileFullPath.HeaderText = "文件路径";this.FileFullPath.Name = "FileFullPath";this.FileFullPath.ReadOnly = true;this.btn_浏览文件夹.Location = new Point(403, 3);this.btn_浏览文件夹.Name = "btn_浏览文件夹";this.btn_浏览文件夹.Size = new Size(75, 23);this.btn_浏览文件夹.TabIndex = 5;this.btn_浏览文件夹.Text = "浏览文件夹";this.btn_浏览文件夹.UseVisualStyleBackColor = true;this.btn_浏览文件夹.Click += new EventHandler(this.btn_浏览文件夹_Click);this.txt_folder.Location = new Point(12, 3);this.txt_folder.Name = "txt_folder";this.txt_folder.Size = new Size(379, 21);this.txt_folder.TabIndex = 6;this.btn_savebatch.Location = new Point(690, 3);this.btn_savebatch.Name = "btn_savebatch";this.btn_savebatch.Size = new Size(114, 21);this.btn_savebatch.TabIndex = 7;this.btn_savebatch.Text = "导出结果";this.btn_savebatch.UseVisualStyleBackColor = true;this.btn_savebatch.Click += new EventHandler(this.btn_savebatch_Click);this.btn_batch_解码.Location = new Point(565, 3);this.btn_batch_解码.Name = "btn_batch_解码";this.btn_batch_解码.Size = new Size(119, 21);this.btn_batch_解码.TabIndex = 8;this.btn_batch_解码.Text = "批量读取二维码";this.btn_batch_解码.UseVisualStyleBackColor = true;this.btn_batch_解码.Click += new EventHandler(this.btn_batch_解码_Click);this.btn_列举文件.Location = new Point(484, 3);this.btn_列举文件.Name = "btn_列举文件";this.btn_列举文件.Size = new Size(75, 23);this.btn_列举文件.TabIndex = 9;this.btn_列举文件.Text = "列举文件";this.btn_列举文件.UseVisualStyleBackColor = true;this.btn_列举文件.Click += new EventHandler(this.btn_列举文件_Click);this.button1.Location = new Point(869, 106);this.button1.Name = "button1";this.button1.Size = new Size(87, 30);this.button1.TabIndex = 10;this.button1.Text = "裁剪";this.button1.UseVisualStyleBackColor = true;this.button1.Click += new EventHandler(this.button1_Click);this.button_读取二维码TH.Location = new Point(869, 151);this.button_读取二维码TH.Name = "button_读取二维码TH";this.button_读取二维码TH.Size = new Size(87, 30);this.button_读取二维码TH.TabIndex = 11;this.button_读取二维码TH.Text = "读取二维码TH";this.button_读取二维码TH.UseVisualStyleBackColor = true;this.button_读取二维码TH.Click += new EventHandler(this.button_读取二维码TH_Click);this.AutoScaleDimensions = new SizeF(6f, 12f);this.AutoScaleMode = AutoScaleMode.Font;this.ClientSize = new Size(1000, 377);this.Controls.Add((Control) this.button_读取二维码TH);this.Controls.Add((Control) this.button1);this.Controls.Add((Control) this.btn_列举文件);this.Controls.Add((Control) this.btn_batch_解码);this.Controls.Add((Control) this.btn_savebatch);this.Controls.Add((Control) this.txt_folder);this.Controls.Add((Control) this.btn_浏览文件夹);this.Controls.Add((Control) this.dgv_fileqr);this.Controls.Add((Control) this.ContentTxt);this.Controls.Add((Control) this.btn_读取二维码);this.Controls.Add((Control) this.barCodeImg);this.Controls.Add((Control) this.btn_打开图片);this.Name = nameof (Form1);this.Text = "未来之窗二维码批量识别工具";((ISupportInitialize) this.barCodeImg).EndInit();((ISupportInitialize) this.dgv_fileqr).EndInit();this.ResumeLayout(false);this.PerformLayout();}public Form1() => this.InitializeComponent();private void btn_打开图片_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;openFileDialog.Filter = "图形文件(*.jpg)|*.jpg";if (openFileDialog.ShowDialog() != DialogResult.OK)return;this.barCodeImg.Image = Image.FromFile(openFileDialog.FileName);}private void btn_读取二维码_Click(object sender, EventArgs e){DecodingOptions decodingOptions = new DecodingOptions();decodingOptions.PossibleFormats = (IList<BarcodeFormat>) new List<BarcodeFormat>(){BarcodeFormat.QR_CODE};BarcodeReader barcodeReader = new BarcodeReader();barcodeReader.Options = decodingOptions;Result result = barcodeReader.Decode(this.barCodeImg.Image as Bitmap);if (result == null){this.ContentTxt.Text = "读取失败";int num = (int) MessageBox.Show("读取失败");}else{this.ContentTxt.Text = result.Text;int num = (int) MessageBox.Show("读取成功,内容:" + result.Text);}}private void btn_浏览文件夹_Click(object sender, EventArgs e){if (this.folderBrowserDialog1.ShowDialog() != DialogResult.OK)return;this.txt_folder.Text = this.folderBrowserDialog1.SelectedPath;}private void ListPicFromFolder(string path){foreach (FileSystemInfo fileSystemInfo in new DirectoryInfo(path).GetFileSystemInfos()){if (fileSystemInfo is FileInfo){FileInfo fileInfo = (FileInfo) fileSystemInfo;Console.WriteLine(Path.GetDirectoryName(fileInfo.FullName));string extension = Path.GetExtension(fileInfo.FullName);string withoutExtension = Path.GetFileNameWithoutExtension(fileInfo.FullName);if (extension == ".jpg")this.addFiletodata(withoutExtension, fileInfo.FullName);}}}private void addFiletodata(string filname, string FileFullPath) => this.dgv_fileqr.Rows.Add((object) filname, (object) "", (object) "0", (object) FileFullPath);private void btn_列举文件_Click(object sender, EventArgs e) => this.ListPicFromFolder(this.txt_folder.Text);private void btn_savebatch_Click(object sender, EventArgs e){SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;saveFileDialog.Filter = "未来之窗 Excel 文件(*.xls)|*.xls";if (saveFileDialog.ShowDialog() != DialogResult.OK)return;CL_HTML.导出_DataGridView_ToHtmlExcel(this.dgv_fileqr, saveFileDialog.FileName, "未来之窗二维码导出");}private void btn_batch_解码_Click(object sender, EventArgs e){if (this.dgv_fileqr.Rows.Count < 1)return;string str = "1";foreach (DataGridViewRow row in (IEnumerable) this.dgv_fileqr.Rows){string filename = row.Cells["FileFullPath"].Value.ToString();if (filename.Length > 5){string qr = this._parseQr(filename);row.Cells["QR"].Value = (object) qr;}row.Cells["status"].Value = (object) str;}}public string _parseQr(string filename){this.barCodeImg.Image = Image.FromFile(filename);DecodingOptions decodingOptions = new DecodingOptions();decodingOptions.PossibleFormats = (IList<BarcodeFormat>) new List<BarcodeFormat>(){BarcodeFormat.QR_CODE};BarcodeReader barcodeReader = new BarcodeReader();barcodeReader.Options = decodingOptions;Result result = barcodeReader.Decode(this.barCodeImg.Image as Bitmap);string str;if (result == null){this.ContentTxt.Text = "读取失败";str = "读取失败";}else{this.ContentTxt.Text = result.Text;str = result.Text;}return str;}private void button1_Click(object sender, EventArgs e) => this.barCodeImg.Image = (Image) Form1.Cut(new Bitmap(this.barCodeImg.Image), 272, 692, 570, 570);public static Bitmap Cut(Bitmap b){if (b == null)return (Bitmap) null;int x = b.Width * 3 / 4;int y = 0;int width = b.Width / 4;int height = b.Height / 4;try{Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format24bppRgb);Graphics graphics = Graphics.FromImage((Image) bitmap);graphics.DrawImage((Image) b, new Rectangle(0, 0, width, height), new Rectangle(x, y, width, height), GraphicsUnit.Pixel);graphics.Dispose();return bitmap;}catch{return (Bitmap) null;}}public static Bitmap Cut(Bitmap b, int StartX, int StartY, int iWidth, int iHeight){if (b == null)return (Bitmap) null;int width = b.Width;int height = b.Height;if (StartX >= width || StartY >= height)return (Bitmap) null;if (StartX + iWidth > width)iWidth = width - StartX;if (StartY + iHeight > height)iHeight = height - StartY;try{Bitmap bitmap = new Bitmap(iWidth, iHeight, PixelFormat.Format24bppRgb);Graphics graphics = Graphics.FromImage((Image) bitmap);graphics.DrawImage((Image) b, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(StartX, StartY, iWidth, iHeight), GraphicsUnit.Pixel);graphics.Dispose();return bitmap;}catch{return (Bitmap) null;}}private void button_读取二维码TH_Click(object sender, EventArgs e) => this.ContentTxt.Text = new QRCodeDecoder().decode((QRCodeImage) new QRCodeBitmapImage(new Bitmap(this.barCodeImg.Image)));}
源码demo 开源
https://download.csdn.net/download/cybersnow/90746505https://download.csdn.net/download/cybersnow/90746505
二维码批量识别: 二维码批量识别工具,借助先进图像识别技术,能快速准确读取大量二维码信息。适用于物流与供应链管理,如库存盘点和货物追踪;可用于资产管理,像固定资产盘点与设备巡检;还能助力数据收集与市场调研,比如问卷调查与活动签到。它能将识别信息导出为 Excel 等常见表格,表格结构清晰,方便用户对海量二维码数据高效采集、整理与分析,大幅提升工作效率https://gitee.com/cybersnow/yberWin_Work_Trade_Net_Ynwlzc_QrBatch
相关文章:
【开源免费】二维码批量识别-未来之窗——C#-仙盟创梦IDE
二维码批量识别工具,借助先进图像识别技术,能快速准确读取大量二维码信息。适用于物流与供应链管理,如库存盘点和货物追踪;可用于资产管理,像固定资产盘点与设备巡检;还能助力数据收集与市场调研࿰…...
n8n工作流自动化平台的实操:解决中文乱码
解决问题: 通过ftp读取中文内容的文件,会存在乱码,如下图: 解决方案 1.详见《安装 iconv-lite》 2.在code节点,写如下代码: const iconv require(iconv-lite);const items $input.all(); items.forEa…...
MCP 探索:MCP 集成的相关网站 Smithery、PulseMCP 等
简简单单 Online zuozuo :本心、输入输出、结果 文章目录 MCP 探索:MCP 集成的相关网站 Smithery、PulseMCP 等前言一、MCP 集成基础二、利用热门资源平台集成三、集成常见 MCP 服务四、管理集成的 MCP 能力五、集成示例借鉴六、数据交互与安全管理MCP 探索:MCP 集成的相关网…...
linux的时间轮
时间轮:高效管理海量定时任务的利器 1. 引言:为什么需要时间轮? 在许多应用场景中,我们都需要管理大量的定时任务,例如: 网络连接的超时检测。分布式系统中的心跳检测。缓存条目的过期淘汰。需要延迟执行…...
《操作系统真象还原》第十二章(2)——进一步完善内核
文章目录 前言可变参数的原理实现系统调用write更新syscall.h更新syscall.c更新syscall-init.c 实现printf编写stdio.h编写stdio.c 第一次测试main.cmakefile结果截图 完善printf修改main.c 结语 前言 上部分链接:《操作系统真象还原》第十二章(1&#…...
MIT6.S081-lab8前置
MIT6.S081-lab8前置 注:本部分除了文件系统还包含了调度的内容。 调度 调度涉及到保存寄存器,恢复寄存器,就这一点而言,和我们的 trap 很像,但是实际上,我们实现并不是复用了 trap 的逻辑,我…...
Java从入门到精通 - Java语法
Java 语法 此笔记参考黑马教程,仅学习使用,如有侵权,联系必删 文章目录 Java 语法01 变量详解1. 变量里的数据在计算机中的存储原理1.1 二进制1.2 十进制转二进制的算法1.3 计算机中表示数据的最小单元总结1.4 字符在计算机中是如何存储的呢…...
【CF】Day50——Codeforces Round 960 (Div. 2) BCD
B. Array Craft 题目: 思路: 有点意思的构造 首先题目告诉我们 y < x,这是一个重要的条件 我们先来考虑简单情况,假如可以放0进去,那么我们只需要在 y ~ x 之间全放 1 ,其余都是 0 即可,但…...
MySQL 日期加减函数详解
MySQL 日期加减函数详解 1. DATE_ADD 函数 基本语法 DATE_ADD(date, INTERVAL expr unit)功能 在指定日期/时间上添加一个时间间隔 参数说明 date:要处理的日期/时间值(可以是DATE, DATETIME或TIMESTAMP类型)expr:要添加的间…...
NV189NV195美光固态闪存NV197NV199
NV189NV195美光固态闪存NV197NV199 在存储技术持续迭代的2025年,美光固态闪存NV189、NV195、NV197、NV199系列凭借其差异化的性能定位,正在重新定义数据存储的边界。本文将从技术参数、场景适配、行业价值等维度,为不同领域的专业人士提供深度…...
C语言-回调函数
回调函数 通过函数指针调用函数,而这个被调用的函数称为回调函数 回调函数是C语言中一种强大的机制,允许将函数作为参数传递给其他函数,从而在特定时机由后者调用。它的核心在于函数指针的使用 以下是回调函数的使用例子 先创建好一个函数…...
启发式算法-蚁群算法
蚁群算法是模拟蚂蚁觅食行为的仿生优化算法,原理是信息素的正反馈机制,蚂蚁通过释放信息素来引导同伴找到最短路径。把问题的元素抽象为多条路径,每次迭代时为每只蚂蚁构建一个解决方案,该解决方案对应一条完整的路径,…...
DeepSeek与MySQL:开启数据智能新时代
目录 一、引言:技术融合的力量二、DeepSeek 与 MySQL:技术基石2.1 DeepSeek 技术探秘2.2 MySQL 数据库深度解析 三、DeepSeek 与 MySQL 集成:从理论到实践3.1 集成原理剖析3.2 集成步骤详解 四、应用案例:实战中的价值体现4.1 电商…...
Modbus 通讯协议(超详细,简单易懂)
目录 一、协议中的寄存器定义 二、协议概述 三、使用串口的Modbus 报文帧 编辑 3.1、Modbus ASCII 模式 3.2、Modbus RTU 模式 3.3、功能码概要 3.4、Modbus 报文分析 四、什么是RS-485 RS-232? 一、协议中的寄存器定义 阅读 Modbus 协议时会发现它的概念别扭…...
单细胞测序试验设计赏析(一)
单细胞测序试验设计赏析(一) 单细胞测序试验设计中,单细胞测序技术通常会结合其它的技术来共同说明问题,或者结合年龄、性别等临床数据,进行分层分析说明问题以下以发表文章来进行一定的分析。 Single-cell RNA seque…...
ES6入门---第二单元 模块三:对象新增、
一:对象简洁语法: 1、变量简洁 <script>let name Strive;let age 18;let json {name, //name:name,age //age:age};console.log(json);</script> 2、函数简洁 let json {name, //name:name,age, //age:age/* showA:functi…...
多元随机变量协方差矩阵
主要记录多元随机变量数字特征相关内容。 关键词:多元统计分析 二元随机变量(X, Y) 说明:可以理解变量中的 X为身高、Y为体重 总体协方差 σ X Y c o v ( X , Y ) E [ ( X − μ X ) ( Y − μ Y ) ] E ( X Y ) − μ X μ Y \sigma_{XY}cov(X, Y)E[…...
计算机网络-同等学力计算机综合真题及答案
计算机网络-同等学力计算机综合真题及答案 (2003-2024) 2003 年网络 第二部分 计算机网络(共 30 分) (因大纲变动因此 2004 年真题仅附真题,不作解析。) 一、填空题(共 10 分&#…...
[案例二] 菜单条制作(Menuscript)与工具条制作(Toolbar)
最近五一正好毕业论文盲审,抽时间研究一下菜单条制作(Menuscript)与工具条制作(Toolbar)的制作,在NX二次开发中唐康林老师已经讲的很详细了,在这里只对视频中的内容进行总结,并且根据自己的想法进行补充。在里海博主的直播教学中发现一个很有趣的NX图标工具,本人大概做了一…...
bellard.org : QuickJS 如何使用 qjs 执行 js 脚本
参阅上一篇:Fabrice Bellard(个人网站:bellard.org)介绍 Fabrice Bellard(个人网站:bellard.org)是计算机领域最具影响力的程序员之一,其贡献跨越多个技术领域并持续推动开…...
计组复习笔记 3
前言 继续做例题。昨天做到第一个就把我难住了。可恶。 4.1 地址码越长,操作码越短。因为两者加起来是指令字,指令字的大小一般是固定的。扩展编码按照操作码从短到长进行编码。算了先放一下。我先看一下别的复习资料。等会儿再看这个题。 鼓励自己 …...
GCD 深入解析:从使用到底层实现
前言 Grand Central Dispatch (GCD) 是 Apple 基于 C 语言开发的一套完整的并发编程框架。它不仅仅是一个简单的线程管理工具,而是一个高度优化的并发编程解决方案。GCD 的设计理念是将并发编程的复杂性封装在框架内部,为开发者提供简单易用的接口。本文…...
JavaScript中的AES加密与解密:原理、代码与实战
前言 关于有js加密、js解密,js业务相关,找jsjiami官网站长v。 另外前段时间做了个单子跑单了,出售TEMU助手。eller点kuajingmaihuo点com的全自动化助手,可以批量合规,批量实拍图,批量资质上传等。 一、A…...
计算机组成原理实验(7) 堆指令部件模块实验
实验七 堆指令部件模块实验 一、实验目的 1、掌握指令部件的组成方式。 2、熟悉指令寄存器的打入操作,PC计数器的设置和加1操作,理解跳转指令的实现过程。 二、实验要求 按照实验步骤完成实验项目,掌握数据打入指令寄存器IR1、PC计数器的…...
Windows系统下Node.js环境部署指南:使用nvm管理多版本
Windows系统下Node.js环境部署指南:使用nvm管理多版本 一、Node.js介绍二、为什么需要nvm?三、安装前的准备工作1. 本次环境说明2. 卸载现有Node.js(如有) 三、nvm-windows安装步骤1. 下载安装包2. 安装过程3. 验证安装 四、使用n…...
数据结构*队列
队列 什么是队列 是一种线性的数据结构,和栈不同,队列遵循“先进先出”的原则。如下图所示: 在集合框架中我们可以看到LinkedList类继承了Queue类(队列)。 普通队列(Queue) Queue中的方法 …...
C语言蓝桥杯真题代码
以下是不同届蓝桥杯C语言真题代码示例,供参考: 第十三届蓝桥杯省赛 C语言大学B组 真题:卡片 题目:小蓝有很多数字卡片,每张卡片上都是数字1-9。他想拼出1到n的数列,每张卡片只能用一次,求最大的…...
Sharding-JDBC分库分表中的热点数据分布不均匀问题及解决方案
引言 在现代分布式应用中,使用Sharding-JDBC进行数据库的分库分表是提高系统性能和扩展性的常见策略。然而,在实际应用中,某些特定的数据(如最新订单、热门商品等)可能会成为“热点”,导致这些部分的数据处…...
Dagster中的Ops与Assets:数据管道构建的两种选择
Dagster是一个强大的数据编排平台,它提供了多种工具来帮助数据工程师构建可靠的数据管道。在Dagster中,Ops和Assets是两种核心概念,用于定义数据处理逻辑。本文将全面介绍Ops的概念、特性及其使用方法,特别补充了Op上下文和Op工厂…...
thonny提示自动补全功能
THONNY IDE 自动补全功能配置 在 Thonny IDE 中启用和优化自动补全功能可以显著提升编程体验。为了确保该功能正常工作,需要确认几个设置选项。 配置自动补全 Thonyy IDE 的自动补全默认情况下是开启的。如果发现自动补全未按预期运行,可以通过调整首选…...
PyTorch_阿达玛积
阿达玛积指的是矩阵对应位置的元素相乘,可以使用乘号运算符,也可以使用mul函数来完成计算。 代码 import torch import numpy as np # 1. 使用 mul 函数 def test01():data1 torch.tensor([[1, 2], [3, 4]])data2 torch.tensor([[5, 6], [7, 8]])dat…...
蓝桥杯 摆动序列
摆动序列 原题目链接 题目描述 如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列。 即对于任意整数 i(i ≥ 1)满足: a₂ᵢ < a₂ᵢ₋₁,a₂ᵢ₊₁ > a₂ᵢ 小明想知道&…...
AI 与生物技术的融合:开启精准医疗的新纪元
在科技飞速发展的今天,人工智能(AI)与生物技术的融合正在成为推动医疗领域变革的重要力量。精准医疗作为现代医学的重要发展方向,旨在通过深入了解个体的基因信息、生理特征和生活方式,为患者提供个性化的治疗方案。AI…...
三、shell脚本--运算符与表达式:让脚本学会“思考”
一、算术运算符:加减乘除取模 在我们写shell脚本时,做点基本的数学运算还是经常需要的。常用的算术运算符跟我们平时学的一样: : 加- : 减* : 乘 (小提示:有时候在某些命令里可能需要写成 \*)/ : 除 (在 Shell 里通常是取整数部分…...
c++ 指针参数传递的深层原理
指针参数传递的深层原理 理解为什么可以修改指针指向的内容但不能直接修改指针本身,需要深入理解指针在内存中的表示方式和函数参数传递机制。 1. 指针的内存表示 指针本质上是一个变量,它存储的是另一个变量的内存地址。在内存中: 假设有…...
【查看.ipynp 文件】
目录 如何打开 .ipynb 文件? 如果确实是 .ipynp 文件: .ipynp 并不是常见的 Jupyter Notebook 文件格式。通常,Jupyter Notebook 文件的扩展名是 .ipynb(即 Interactive Python Notebook)。如果你遇到的是 .ipynb 文…...
C++ 简单工厂模式详解
简单工厂模式(Simple Factory Pattern)是最简单的工厂模式,它不属于GoF 23种设计模式,但它是工厂方法模式和抽象工厂模式的基础。 概念解析 简单工厂模式的核心思想是: 将对象的创建逻辑集中在一个工厂类中 客户端不…...
ubuntu使用apt安装软件
1、使用apt list |grep jdk查看要安装的软件 此处以jdk为例 2、执行名称:安装指定版本的软件 sudo apt install openjdk-11-jdk...
TFT(薄膜晶体管)和LCD(液晶显示器)区别
TFT(薄膜晶体管)和LCD(液晶显示器)是显示技术中常见的术语,二者既有联系又有区别。以下是它们的核心区别和关系: 1. 基本概念 LCD(液晶显示器) LCD是一种利用液晶材料特性控制光线通…...
【文献阅读】中国湿地随着保护和修复的反弹
一、研究背景 滨海湿地是全球最具生态价值的生态系统之一,广泛分布在河口、潮间带、泻湖和盐沼等地带,在调节气候、水质净化、生物栖息以及防止海岸侵蚀等方面发挥着关键作用。然而,近年来滨海湿地正面临严峻威胁,全球估计约有50%…...
用Ensaio下载GIS数据
文章目录 简介重力场绘制 简介 Ensaio在葡萄牙语中是随笔的意思,是一个用于下载开源数据集的python库。其底层基于Pooch来下载和管理数据。 Ensaio可通过pip或者conda来安装 pip isntall ensaio conda install ensaio --channel conda-forge由于这个库功能较为单…...
【算法基础】递归算法 - JAVA
一、递归基础 1.1 什么是递归算法 递归算法是一种通过函数调用自身来解决问题的方法。简单来说,就是"自己调用自己"。递归将复杂问题分解为同类的更简单子问题,直到达到易于直接解决的基本情况。 1.2 递归的核心要素 递归算法由两个关键部…...
连续变量与离散变量的互信息法
1. 互信息法简介 互信息(Mutual Information, MI) 是一种衡量两个变量之间相互依赖程度的统计量,它来源于信息论。互信息可以用于评估特征与目标变量之间的相关性,无论这些变量是连续的还是离散的。互信息法是一种强大的特征选择…...
java_Lambda表达式
1、背景 lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。lambda表达式就和方法一样样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式和一个代码块)。La…...
Python Cookbook-6.17 NuIl对象设计模式的实现
任务 你想减少代码中的条件声明,尤其是针对特殊情况的检查。 解决方案 一种常见的代表“这里什么也没有”的占位符是 None,但我们还可以定义一个类,其行为方式和这种占位符相似,而且效果更好: class Null(object):Null对象总是…...
Java接口全面教程:从入门到精通
目录 接口的基本概念 接口的特性 1. 访问修饰符 2. 接口中的常量 3. 接口中的方法 3.1 抽象方法(传统用法) 3.2 默认方法(Java 8 引入) 3.3 静态方法(Java 8 引入) 3.4 私有方法(Java …...
Power Query精通指南3:数据库(查询折叠与数据隐私)、批量合并文件、自定义函数
文章目录 九、批量合并文件9.1 案例背景9.2 合并文件的标准流程9.3 示例:合并文件9.3.1 连接到文件夹9.3.1.1 连接到本地 / 网络文件夹9.3.1.2 连接到 SharePoint 文件夹9.3.1.3 连接到 OneDrive for Business9.3.1.4 连接到其他文件系统 9.3.2 筛选文件9.3.3 合并文…...
Python 学习
这里主要是为了记录我学习Python的过程,更多是使我规范书写Pyhton语言! 1. 第一章 Python 定义:一种解释型的语言,区别于其他的高级语言,逐行翻译进行执行。 过程:首先编写编程语言,利用Pytho…...
生成式 AI 的优势
在科技飞速发展的今天,人工智能已经不再是一个遥不可及的概念,而是逐渐渗透到我们生活的方方面面。其中,生成式 AI 更是如同一颗璀璨的新星,在人工智能的浩瀚星空中闪耀着独特的光芒。它究竟有哪些令人瞩目的优势,又为何会成为我们这个时代无法忽视的存在呢? 生成式 AI …...
Hal库下备份寄存器
首先要确保有外部电源给VBAT供电 生成后应该会有这两个文件(不知道为什么生成了好几次都没有,复制工程在试一次就有了) 可以看到stm32f407有20个备份寄存器 读写函数 void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t Backup…...