当前位置: 首页 > news >正文

C#生成二维码和条形码

C# 实现二维码和条形码生成:从入门到实战

文章目录

  • C# 实现二维码和条形码生成:从入门到实战
    • 一、引言
    • 二、准备工作
      • 2.1 开发环境搭建
      • 2.2 引入相关库
    • 三、生成条形码
      • 3.1 条形码基本概念
      • 3.2 使用[ZXing.Net](https://ZXing.Net)生成条形码
        • 3.2.1 核心代码实现
        • 3.2.2 代码调用与测试
    • 四、生成二维码
      • 4.1 二维码基本概念
      • 4.2 使用[ZXing.Net](https://ZXing.Net)生成二维码
        • 4.2.1 核心代码实现
        • 4.2.2 代码调用与测试
    • 五、生成带 Logo 的二维码
      • 5.1 实现思路
      • 5.2 代码实现

一、引言

最近项目开发中遇到了使用字符串生成二维码和条形码的需求,所以对这些知识做一个总结,方便后续参考。

二、准备工作

2.1 开发环境搭建

本文使用的开发工具是 Visual Studio 2022,创建的是WPF应用程序,项目创建过程不再赘述。

2.2 引入相关库

在 C# 中生成二维码和条形码,我们将使用ZXing.Net库。这是一个开源的库,支持生成和解析多种格式的二维码和条形码。下面是引入ZXing.Net库的详细步骤:

(1)在 Visual Studio 的 “解决方案资源管理器” 中,右键点击项目名称,选择 “管理 NuGet 程序包”。

(2)在打开的 “NuGet 包管理器” 窗口中,切换到 “浏览” 选项卡。

(3)在搜索框中输入 “ZXing.Net”,然后点击搜索按钮。

(4)在搜索结果中找到 “ZXing.Net” 包,点击 “安装” 按钮。

(5)阅读并接受许可协议,等待安装完成。

(6)安装完成后,在 “解决方案资源管理器” 的 “依赖项”->“包” 中可以看到 “ZXing.Net”,这表示库已经成功引入项目。

三、生成条形码

3.1 条形码基本概念

条形码是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符 。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。常见的条形码类型有 Code 39、Code 128、EAN-13 等。Code 39 码可表示数字、字母等信息,常用于工业、图书及票证的自动化管理;Code 128 码能表示 ASCII 0 到 ASCII 127 共计 128 个 ASCII 字符,在物流包裹追踪等场景中常用;EAN-13 码是国际物品编码协会制定的一种商品用条码,通用于全世界,我们日常购买的商品包装上所印的条码很多就是 EAN-13 码 ,由前缀部分、制造厂商代码、商品代码和校验码组成。条形码的应用场景极为广泛,在零售行业,收银员通过扫描商品的条形码,能快速获取商品的价格、名称等信息,完成结账流程,同时也方便商家进行库存管理;在物流行业,货物上的条形码记录了货物的发货地、目的地、订单号等信息,方便物流公司对货物进行分拣、运输和追踪。

3.2 使用ZXing.Net生成条形码

3.2.1 核心代码实现

下面是使用ZXing.Net生成条形码的 C# 代码示例:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZXing.Common;namespace ZXing.Net.Example
{public class BarcodeGenerator{public static Bitmap GenerateBarcode(string content, BarcodeFormat format, int width, int height, int margin){//创建BarcodeWriter对象,用于生成条形码BarcodeWriter writer = new BarcodeWriter();//设置条形码的编码格式,例如Code 128、Code 39等writer.Format = format;//设置条形码的相关参数writer.Options = new EncodingOptions{//设置条形码的宽度Width = width,//设置条形码的高度Height = height,//设置条形码的边距Margin = margin};//调用Write方法生成条形码图片,传入要编码的内容return writer.Write(content);}}
}
3.2.2 代码调用与测试

在主程序或测试方法中,可以这样调用上述生成条形码的方法:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace ZXing.Net.Example
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();//要生成条形码的内容string content = "1234567890";//选择条形码格式,这里使用Code 128BarcodeFormat format = BarcodeFormat.CODE_128;//条形码宽度int width = 300;//条形码高度int height = 100;//条形码边距int margin = 10;//调用生成条形码的方法Bitmap barcodeBitmap = BarcodeGenerator.GenerateBarcode(content, format, width, height, margin);//使用System.Drawing.Common中的Image类来显示图片using (System.Drawing.Image image = barcodeBitmap){//这里可以将image保存到文件系统或者显示在界面上,以下是简单保存到文件的示例image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);}BitmapImage bitmapImage = BitmapToBitmapImage(barcodeBitmap);testBarcode.Source = bitmapImage;}private BitmapImage BitmapToBitmapImage(System.Drawing.Bitmap bitmap){BitmapImage bitmapImage = new BitmapImage();using (System.IO.MemoryStream ms = new System.IO.MemoryStream()){bitmap.Save(ms, ImageFormat.Png);bitmapImage.BeginInit();bitmapImage.StreamSource = ms;bitmapImage.CacheOption = BitmapCacheOption.OnLoad;bitmapImage.EndInit();bitmapImage.Freeze();}return bitmapImage;}}
}

四、生成二维码

4.1 二维码基本概念

二维码,又称二维条码,是一种用特定几何图形按黑白相间的方式在二维方向上记录数据信息的图形 。它的编码原理基于计算机的 “0” 和 “1” 比特流概念,通过黑白小方块(几何形体)来表示文字数值信息 。比如,黑色小方块代表 “1”,白色小方块代表 “0” ,这些小方块按特定规则排列,就能存储丰富的信息。

二维码具有诸多显著特点。首先是信息容量大,与一维条形码相比,它能够在有限的空间内存储更多的信息,像文本、图片、网址、文件等都能被存储。例如,火车票上的二维码就包含了车次、座位号、乘车人身份信息等大量内容 。其次,二维码纠错能力强,当二维码部分被污损、遮挡时,凭借其纠错算法,扫描设备仍能准确识别其中的信息 。一般来说,二维码的纠错等级可分为 L(7% 容错率)、M(15% 容错率)、Q(25% 容错率)、H(30% 容错率)四个等级 ,以 H 等级为例,即便有 30% 的码字损坏,也能正常解码。另外,二维码制作成本低,只需借助普通的图形处理软件和打印机,就能轻松生成和打印,而且它的识读速度快,在移动支付、信息查询等场景中,用户只需瞬间就能完成扫码操作。

常见的二维码类型有 QR Code、PDF417、Data Matrix 等 。QR Code 是目前应用最为广泛的二维码,像微信、支付宝的付款码、收款码等都采用了 QR Code 格式,它具有超高速识读的特性,很适合在工业自动化生产线管理等领域应用;PDF417 是一种堆叠式二维码,可表示数字、字母、二进制数据及汉字,信息密度高,常用于证件管理、执照年检等场景,比如一些国家的身份证、驾驶证上就使用了 PDF417 码来存储个人信息 ;Data Matrix 是一种矩阵式二维码,其突出特点是密度高,最小尺寸小,特别适用于小零件的标识,像电子元器件、精密仪器等产品上常常能看到 Data Matrix 码 。

二维码的应用场景十分广泛,在移动支付领域,人们通过扫描二维码就能快速完成支付,实现无现金交易,极大地提高了交易效率和便利性;在信息查询方面,博物馆的展品介绍、图书的相关信息等都能通过二维码来展示,用户扫描二维码即可获取详细内容;在身份识别领域,电子身份证、电子护照等都利用二维码来存储个人身份信息,方便快捷且安全可靠。

4.2 使用ZXing.Net生成二维码

4.2.1 核心代码实现

以下是使用ZXing.Net生成二维码的 C# 代码示例:

using System.Drawing;
using ZXing.Common;namespace ZXing.Net.Example
{public class QrCodeGenerator{public static Bitmap GenerateQRCode(string content, int width, int height, int margin){//创建BarcodeWriter对象,用于生成二维码BarcodeWriter writer = new BarcodeWriter();//设置二维码的编码格式为QR_CODEwriter.Format = BarcodeFormat.QR_CODE;//设置二维码的相关参数writer.Options = new EncodingOptions{//设置二维码的宽度Width = width,//设置二维码的高度Height = height,//设置二维码的边距Margin = margin};//调用Write方法生成二维码图片,传入要编码的内容return writer.Write(content);}}
}
4.2.2 代码调用与测试

在主程序或测试方法中,可以按照以下方式调用上述生成二维码的方法:

using System.Drawing;
using System.Windows;namespace ZXing.Net.Example
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();//要生成二维码的内容string content = "https://www.csdn.net/";//二维码宽度int width = 200;//二维码高度int height = 200;//二维码边距int margin = 5;//调用生成二维码的方法Bitmap qrCodeBitmap = QrCodeGenerator.GenerateQRCode(content, width, height, margin);//使用System.Drawing.Common中的Image类来显示图片using (System.Drawing.Image image = qrCodeBitmap){//这里可以将image保存到文件系统或者显示在界面上,以下是简单保存到文件的示例image.Save("qrcode.png", System.Drawing.Imaging.ImageFormat.Png);}}}
}

五、生成带 Logo 的二维码

5.1 实现思路

生成带 Logo 的二维码,我们可以分两步进行。首先,利用前面介绍的方法,借助ZXing.Net库先生成一个普通的二维码图片。然后,加载事先准备好的 Logo 图片,根据二维码图片的大小,合理调整 Logo 图片的尺寸,使其能够完美地融入二维码中。最后,使用System.Drawing命名空间下的Graphics类,将调整好大小的 Logo 图片绘制到二维码图片的中心位置,从而得到带 Logo 的二维码图片。

5.2 代码实现

以下是生成带 Logo 二维码的完整 C# 代码:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZXing.Common;namespace ZXing.Net.Example
{public class QrCodeWithLogoGenerator{public static Bitmap GenerateQRCodeWithLogo(string content, int width,int height, int margin, string logoPath){//先生成普通二维码BarcodeWriter writer = new BarcodeWriter();writer.Format = BarcodeFormat.QR_CODE;writer.Options = new EncodingOptions{Width = width,Height = height,Margin = margin};//加载Logo图片Bitmap logoBitmap = new Bitmap(logoPath);//计算Logo图片在二维码中的大小和位置int logoWidth = Math.Min((int)(width * 0.2), logoBitmap.Width);int logoHeight = Math.Min((int)(height * 0.2), logoBitmap.Height);int logoX = (width - logoWidth) / 2;int logoY = (height - logoHeight) / 2;//将Logo图片绘制到二维码图片上Bitmap qrCodeBitmap = writer.Write(content);using (Graphics g = Graphics.FromImage(qrCodeBitmap)){g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;g.DrawImage(logoBitmap, new Rectangle(logoX, logoY, logoWidth, logoHeight));}return qrCodeBitmap;}}
}

在主程序或测试方法中调用该方法的示例代码如下:

using System.Drawing;
using System.Windows;namespace ZXing.Net.Example
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();//要生成二维码的内容string content = "https://www.csdn.net/";//二维码宽度int width = 300;//二维码高度int height = 300;//二维码边距int margin = 10;//Logo图片路径string logoPath = "logo.png";//调用生成带Logo二维码的方法Bitmap qrCodeWithLogoBitmap = QrCodeWithLogoGenerator.GenerateQRCodeWithLogo(content, width, height, margin, logoPath);//使用System.Drawing.Common中的Image类来显示图片using (System.Drawing.Image image = qrCodeWithLogoBitmap){//这里可以将image保存到文件系统或者显示在界面上,以下是简单保存到文件的示例image.Save("qrcode_with_logo.png", System.Drawing.Imaging.ImageFormat.Png);}}}
}

width, height, margin, logoPath);

        //使用System.Drawing.Common中的Image类来显示图片using (System.Drawing.Image image = qrCodeWithLogoBitmap){//这里可以将image保存到文件系统或者显示在界面上,以下是简单保存到文件的示例image.Save("qrcode_with_logo.png", System.Drawing.Imaging.ImageFormat.Png);}}
}

}


相关文章:

C#生成二维码和条形码

C# 实现二维码和条形码生成&#xff1a;从入门到实战 文章目录 C# 实现二维码和条形码生成&#xff1a;从入门到实战一、引言二、准备工作2.1 开发环境搭建2.2 引入相关库 三、生成条形码3.1 条形码基本概念3.2 使用[ZXing.Net](https://ZXing.Net)生成条形码3.2.1 核心代码实现…...

2025.5.8总结(中期审视)

今日记录&#xff1a; 晚上&#xff0c;主管找我聊了关于中期绩效审视的问题。 首先就是让我汇报上半年的工作进展&#xff0c;汇报完后&#xff0c;感觉体现不出自己的工作量&#xff0c;这确实考验个人的汇报能力。 汇报完工作后&#xff0c;主管开始给我提了一些建设性的…...

Pyinstaller编译EXE及反编译

文章目录 适用范围示例文件编译EXE反编译EXE准备工具编译pycdc反编译 反编译得到的文件相关资源下载 适用范围 实测 python3.9可以反编译。从pycdc源代码看&#xff0c;似乎支持到python 3.13。 示例文件 demo.py import sys from PyQt5 import QtWidgets, QtCore, QtGui c…...

3.2.3 掌握RDD转换算子 - 3. 扁平映射算子 - flatMap()

在本节课中&#xff0c;我们深入学习了Spark RDD的flatMap()算子。flatMap()与map()类似&#xff0c;但每个元素可以返回0到多个元素&#xff0c;最终将所有结果合并为一个RDD。通过案例演示&#xff0c;我们首先对单词文件进行了统计&#xff0c;通过map()将每行文本转换为单词…...

深入解析 C# 常用数据结构:特点、区别与优缺点分析

在软件开发中&#xff0c;选择合适的数据结构是提高代码效率和性能的关键。在 C# 中&#xff0c;我们常用的数据结构包括 List、Array、Dictionary<TKey, TValue>、HashSet、Queue、Stack 和 LinkedList。每种数据结构有不同的特点、优缺点和适用场景。本文将结合代码&am…...

LeetCode第284题 - 窥视迭代器

题目 解答一 package leetcode.editor.cn; //leetcode submit region begin(Prohibit modification and deletion) // Java Iterator interface reference: // https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.htmlimport java.util.Iterator; import java.ut…...

克里金模型+多目标优化+多属性决策!Kriging+NSGAII+熵权TOPSIS!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 克里金模型多目标优化多属性决策&#xff01;KrigingNSGAII熵权TOPSIS&#xff01;&#xff01;matlab2023b语言运行&#xff01; 1.克里金模型&#xff08;Kriging Model&#xff09;是一种基于空间统计学的插值方法…...

驱动开发硬核特训 · Day 30(下篇): 深入解析 lm48100q I2C 音频编解码器驱动模型(基于 i.MX8MP)

作者&#xff1a;嵌入式Jerry 视频教程请关注 B 站&#xff1a;“嵌入式Jerry” 一、背景与目标 在本篇中&#xff0c;我们围绕 TI 的 lm48100q 音频编解码器 展开&#xff0c;深入讲解其作为 I2C 外设如何集成至 Linux 内核音频子系统&#xff08;ASoC&#xff09;&#xff0…...

【RAG】indexing 中的 Hierarchical Indexing(分层索引)

Hierarchical Indexing&#xff08;分层索引&#xff09; 关键词解析&#xff1a; Splits (分割): 原始文档被分割成较小的块。Cluster (聚类): 将语义上相似的文档块分组在一起。Summaries (摘要): 为每个聚类或更高层次的节点生成摘要。RAPTOR (Recursive Abstractive Proc…...

【LeetCode 42】接雨水(单调栈、DP、双指针)

题面&#xff1a; 思路&#xff1a; 能接雨水的点&#xff0c;必然是比两边都低&#xff08;小&#xff09;的点。有两种思路&#xff0c;一种是直接计算每个点的最大贡献&#xff08;也就是每个点在纵向上最多能接多少水&#xff09;&#xff0c;另一种就是计算每个点在横向上…...

【软件设计师:数据库】13.数据库控制与安全

一、数据库语言SQL SQL是结构化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。 SQL 语言简洁、方便实用、功能齐全,已成为目前应用最广的关系数据库语言。SQL既是自含式语言(联机交互),又是嵌入式语言(宿主语…...

PWN基础-ROP技术-ret2syscall-64位程序栈溢出利用

前置 ret2syscall 的基础我们就不做过多讲解了 利用思路与 32 位类似&#xff0c;只是传参的寄存器是&#xff1a; rdi -> rsi -> rdx -> rcx -> r8 -> r9 我们这里只用到前三个就可以了&#xff0c;以及 rax 还有一个区别就是&#xff1a; 32 位系统调用最…...

基于大模型预测的产钳助产分娩全方位研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与方法 二、产钳助产分娩概述 2.1 产钳助产定义与历史 2.2 适用情况与临床意义 三、大模型预测原理与数据基础 3.1 大模型技术原理 3.2 数据收集与处理 3.3 模型训练与验证 四、术前预测与准备 4.1 大模型术前风险预…...

二叉树结构的深入学习

目录 1. 节点结构 1.1.值&#xff08;val&#xff09; 1.2.左右孩子节点 2.本质 3.类型 4.遍历方式 树是一种递归的数据结构。具有一个根节点和多个子节点&#xff0c;形成邻接关系&#xff0c;每个节点可以有零个或多个子节点。 树的定义是递归的&#xff0c;由根节点的…...

SVT-AV1源码学习-EbMotionEstimation.h 学习

#ifndef EbMotionEstimation_h //防止文件呗重复包含的宏定义开始标记 #define EbMotionEstimation_h 定义头文件标识符 #include "definitions.h" //包含定义文件 #include "coding_unit.h" //包含编码单元相关文件 #include "me_process.h" //…...

代理服务器

1.准备3台虚拟机 1台当做代理服务器&#xff1b;2台当做真实访问服务器&#xff1b;可以再来一台虚拟机当客户机&#xff0c;也可以使用主机来当客户机。 依次配置服务器 真实服务器&#xff08;配置文件无需更改&#xff09;&#xff1a; 代理服务器&#xff1a; 35 ups…...

数值分析——条件数

1. 条件数的定义与计算 条件数&#xff08;Condition Number&#xff09;用于量化矩阵或函数对输入误差的敏感程度&#xff0c;反映问题的“良态”或“病态”特性。 矩阵条件数的定义 对于一个非奇异方阵 A&#xff0c;其条件数定义为&#xff1a; κ(A)∥A∥⋅∥A−1∥ 其…...

C++ STL 入门:map 键值对容器

C STL 入门&#xff1a;map 键值对容器 一、核心特性与适用场景 map 是 C STL 提供的关联式键值容器&#xff0c;基于红黑树实现&#xff0c;具备以下核心特征&#xff1a; 特性表现形式底层原理键唯一性不允许重复键值红黑树节点键值唯一约束自动排序元素按键升序排列红黑树…...

ESP32-CAM开发板学习(一)

一、Arduino IDE搭建ESP32开发环境 1、安装 Arduino IDE 软件&#xff0c;在官网下载压缩包解压直接使用 官网链接: Arduino IDE 2、修改软件语言&#xff0c;单击左上角 File → Preferences…&#xff0c;把Language改成中文(简体)&#xff0c;保存 3、安装esp32开发板库…...

Arm核的Ubuntu系统上安装Qt

Arm核的Ubuntu系统上安装Qt 一、准备工作 确保可以连接网络 二、安装gcc 1、判断gcc是否安装 命令行输入:gcc -v 2、如果没有安装 输入命令安装: sudo apt install gcc 三、安装g++ 1、判断g++是否安装 命令行输入:g++ -v...

C++GO语言微服务和服务发现

目录 01 03-go-micro简介 02 04-服务发现的简单认识 03 05-consul的安装 04 06-consul常用的命令 05 07-注册服务到consul并验证 06 08-consul健康检查 07 09-consul结合grpc使用-上&#xff08;只实现grpc远程调用&#xff09; 08 10-consul结合grpc使用-中&#xff08…...

【随笔】Google学术:but your computer or network may be sending automated queries.

文章目录 一、问题复述二、问题原因三、解决 前提&#xff1a;你的xxx是自己做的&#xff0c;你自己可以管理&#xff0c;而不是用的那些劣质✈场。 一、问题复述 &#x1f7e2;如下图所示&#xff1a;可以打开谷歌学术&#xff0c;但是一搜索就是这个界面。 二、问题原因 …...

JavaSE核心知识点02面向对象编程02-02(封装、继承、多态)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点02面向对象编程02-02&#…...

Ubuntu 服务器管理命令笔记

这份命令笔记涵盖了 Ubuntu 服务器管理的各个方面&#xff0c;包括系统更新、用户管理、安全配置、网络诊断等&#xff0c;适合日常使用与技术分享。 系统管理命令 sudo apt update && sudo apt upgrade -y # 更新系统 sudo reboot …...

航电系统之数据传输与交换篇

航电系统的数据传输与交换是航空电子领域的核心技术&#xff0c;直接关系到飞行安全、效率及任务执行能力。以下从技术架构、关键协议、应用场景、发展趋势与挑战四个维度进行系统阐述&#xff1a; 一、技术架构与核心组件 航电系统数据传输与交换采用分层化、模块化设计&…...

MATLAB 在医疗行业的应用

MATLAB 在医疗行业的应用 MATLAB 是一种强大的技术计算和模拟平台&#xff0c;在医疗行业中有着广泛的应用。日益处于数字化和智能化进程中的医疗行业&#xff0c;需要应用很多高性能的工具来支撑设备设计&#xff0c;信号分析&#xff0c;AI 项目开发等。本文将全面介绍 MATL…...

基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】

基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】 一、引言 在当今数据驱动的时代&#xff0c;机器学习和深度学习技术被广泛应用于各类预测任务中。其中&#xff0c;卷积神经网络&#xff08;CNN&#xff09;因其在处理具有空间结构的数据方面表现出色&#xff0…...

第一次被AI指点出文章的问题

二十年&#xff0c;几乎从未收到过这种程度的反馈。大部分意见都是有效的批评。 1.前言 关于链家左晖的一篇评论稿 这篇文章有什么问题吗&#xff1f;所有方面都可以谈&#xff0c;包括叙述&#xff0c;用词&#xff0c;重复&#xff0c;真实性&#xff0c;偏见&#xff0c;…...

红黑树的应用场景 —— 进程调度 CFS 与内存管理

一、红黑树在操作系统中的“实战”应用 &#x1f4cc; 1. 进程调度器&#xff1a;CFS&#xff08;Completely Fair Scheduler&#xff09; CFS 是 Linux 的默认调度器&#xff08;从 2.6.23 起&#xff09;&#xff0c;它使用红黑树维护就绪队列。 ✨ 为什么用红黑树&#x…...

RHEL8搭建FOU隧道

RHEL8搭建FOU隧道 搭建FOU隧道升级内核装载模块启用 IPv4 数据包转发功能升级iproute 配置 FOU 隧道k2接收端配置k1发送端配置双向配置k1 作为接收端配置一次。k2 作为发送端配置一次。配置接口状态配置路由的下一跳IP配置路由隧道测试 参考链接&#xff1a; 搭建FOU隧道 FOU是…...

单片机自动排列上料控制程序 下

/***************上料时间参数显示******************/ void dis_timea(uchar s) { uchar x,y; uint i0; A1s/100; A2(s-A1*100)/10; A3s-A1*100-A2*10; …...

科技成果鉴定测试有哪些内容?又有什么作用?

科技成果鉴定测试是评价科技成果质量和水平的方法之一&#xff0c;通过测试&#xff0c;可以对科技成果的技术优劣进行评估&#xff0c;从而为科技创新提供参考和指导。 一、科技成果鉴定测试的内容   1.技术评审&#xff1a;通过技术专家对项目进行详细的技术分析&#xff…...

【万字长文】深入浅出 LlamaIndex 和 LangChain:从RAG到智能体,轻松驾驭LLM应用开发

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

一文读懂Nginx应用之 HTTP负载均衡(七层负载均衡)

目录 一、HTTP负载均衡简介 (一)、概述 (二)、upstream模块核心参数 1、server指令参数 2、负载均衡策略指令参数 (1)、轮询(Rond Robin) (2)、最少连接(least_conn) (3)、一致性哈希(Consistent Hash) (4)、IP哈希(IP Hash) 3、长连接指令参数 二、环境规划 三、N…...

【LeetCode】删除排序数组中的重复项 II

题目 链接 思路 双指针 我好聪明啊&#xff0c;自己想出了这个双指针的办法&#xff0c;哈哈哈哈哈哈哈&#xff0c;太高兴了 代码 class Solution(object):def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""nlen…...

vite 初始化react项目

一. 初始化 npm create vitelatestProject name 项目名&#xff0c;例如&#xff1a;todo-listSelect a framework 选&#xff1a;ReactSelect a variant 选&#xff1a;TypeScript npm install //安装依赖 npm run dev //启动项目这样一个简单的react项目就实现了。 二.…...

LeetCode 216.组合总和 III:回溯算法实现与剪枝优化

目录 问题描述解决思路 回溯法剪枝优化 代码实现复杂度分析示例测试总结与扩展 1. 问题描述 给定两个整数 k 和 n&#xff0c;要求找出所有满足以下条件的组合&#xff1a; 组合包含 k 个不同的数字。组合中数字的和等于 n。组合中的数字范围为 [1, 9]&#xff0c;且每个数字…...

【Bootstrap V4系列】学习入门教程之 组件-下拉菜单(Dropdowns)高级用法

Bootstrap V4系列 学习入门教程之 组件-下拉菜单&#xff08;Dropdowns&#xff09;高级用法 下拉菜单&#xff08;Dropdowns&#xff09;高级用法一、Directions 方向1.1 Dropup1.2 Dropright1.3 Dropleft 二、Menu items 菜单项2.1 Active 活动2.2 Disabled 禁用 三、Menu co…...

xiaopiu原型设计工具笔记

文章目录 有没有行组件是否支持根据图片生成原型呢? 其他官网 做项目要用到原型设计&#xff0c;还是那句话&#xff0c;遇到的必须会用&#xff0c;走起。 支持本地也支持线上。 有没有行组件 是这样&#xff0c;同一行有多个字段&#xff0c;如何弄的准确点呢? 目前只会弄…...

【hadoop】案例:Sqoop迁移仓库数据

1 数据导出&#xff1a;Hive导入MySQL [hadoophadoop1 sqoop]$ bin/sqoop export \ > --connect jdbc:mysql://localhost/weather \ > --username root \ > --password 123456 \ > --table mean_temperature \ > --export-dir /user/hive/warehouse/mydb/mean…...

南邮计科电工电子实验第五次课与非门设计数字锁逻辑电路小测答案

第五次课测试 题量: 16 满分: 100 一. 单选题&#xff08;共10题&#xff0c;62.2分&#xff09; 1. (单选题)下列哪个电路是基本的组合逻辑电路&#xff1f; A. 触发器B. 计数器C. 半加器D. 积分器 我的答案:C:半加器;正确答案:C:半加器; 6.2分 知识点&#xff1a; 组合…...

基于PyQt5的报警器实现说明

基于PyQt5的报警器实现说明 一、概述 本程序是一个基于PyQt5框架实现的报警器控制程序&#xff0c;通过串口与外部设备进行通信&#xff0c;向设备发送特定的十六进制指令来实现报警器的不同功能。PyQt5是Python中用于创建图形用户界面&#xff08;GUI&#xff09;的强大工具…...

pyorch中tensor的理解与操作(一)

tensor 是PyTorch 中一个最基本的数据集合类型&#xff0c; 本文注意针对该结构类型&#xff0c;说明它的存储方式以及主要的操作方法。 tensor其实是一个多维数组&#xff08;元素的数据类型需一致&#xff09;&#xff0c;类似于 NumPy 的 ndarrays&#xff0c;但可以在 GPU …...

用react实现一个简单的三页应用

下面是一个使用 React Router 的简单示例&#xff0c;演示了如何在 React 应用中实现页面之间的导航。 &#x1f6e0;️ 第一步&#xff1a;使用 Vite 创建项目 npm create vitelatest my-router-app -- --template react cd my-router-app npm install&#x1f680; 第二步&a…...

OCCT中的布尔运算

OCCT 中的布尔运算是其几何建模的核心功能之一&#xff0c;主要用于实体的合并、切割和相交操作。以下是详细介绍及经典示例程序&#xff1a; 一、OCCT布尔运算的核心类 OCCT 通过 BRepAlgoAPI 命名空间下的类实现布尔运算&#xff0c;主要包括&#xff1a; BRepAlgoAPI_Fus…...

SpringBoot的自动配置和起步依赖原理

关于Spring Boot的自动配置和起步依赖&#xff0c;我想结合最新的实现机制来展开说明。先说自动配置——这是Spring Boot最核心的"约定优于配置"思想的落地体现。举个例子&#xff0c;当我们创建一个新的Spring Boot项目时&#xff0c;只要在pom.xml里添加了spring-b…...

沃伦森电气高压动态无功补偿装置助力企业电能优化

在工业生产的复杂电能环境中&#xff0c;电能质量直接影响企业的生产效率和运营成本。XX光伏科技有限公司作为一家快速发展的制造企业&#xff0c;随着生产规模的不断扩大&#xff0c;其内部电网面临功率因数过低、电压波动频繁等问题&#xff0c;导致供电部门罚款增加、设备故…...

VUE——自定义指令

Vue自定义指令概述 Vue自定义指令可以封装一些 dom 操作&#xff0c;扩展额外功能。它们允许开发者直接对DOM元素进行低层次操作&#xff0c;自定义指令可以响应Vue的响应式系统&#xff0c;从而在数据变化时触发相应的DOM更新。 自定义指令语法 自定义指令的常用钩子函数&am…...

Redis协议与异步方式

1.redis pipeline 通过一次发送多次请求命令&#xff0c;为了减少网络传输时间。 注意&#xff1a;pipeline 不具备事务性。 2.redis 事务 事务&#xff1a;用户定义一系列数据库操作&#xff0c;这些操作视为一个完整的逻辑处理工作单元&#xff0c;要么全部执行&#xff0c;…...

systemd vs crontab:Linux 自动化运行系统的全面对比

在 Linux 系统运维和开发中&#xff0c;任务调度与服务管理 是不可或缺的一环。无论是定期备份、日志轮转&#xff0c;还是启动后台服务&#xff0c;自动化机制都能极大地提高系统的可靠性与效率。两种最常用的自动化工具是&#xff1a; crontab&#xff1a;传统的基于时间的任…...