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

Java 二维码

Java 二维码

**技术:**谷歌 ZXing 实现

首先添加依赖

<!--	二维码依赖	--><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.5.1</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency>

使用ZXing 生成二维码的方法

public static void erweima() throws WriterException, IOException {String s = new String("你好,我是你爹!");//第一步 :设置二维码相关参数String charset = "utf-8";//首先需要创建一个map集合,来存储二维码的 配置信息Map map = new HashMap();//设置二维码的误差校正级别 例如墨水不清晰,打印出来的清晰度,拍出来的图像//L 7% M 15% Q 25% H 30%  容错率,容错率越高,二维码越容易被识别map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);//设置二维码的字符集map.put(EncodeHintType.CHARACTER_SET,charset);//设置二维码四周的留白map.put(EncodeHintType.MARGIN,2);//第二步:创建 ZXing 对象,MultiFormatWriter(多格式写入)//通过 MultiFormatWriter 创建一个二维码对象,MultiFormatWriter writer = new MultiFormatWriter();
//        writer.encode(内容 , 什么格式的二维码 , 二维码宽度 , 二维码高度 , 二维码参数);//BarcodeFormat 枚举 二维码类型 QR_CODE 最普通的   Aztec code//返回 位矩阵对象 (内部实际上是 一个二维数组,每一个元素是boolean类型的  true代表黑色,false代表白色)BitMatrix encode = writer.encode(s, BarcodeFormat.QR_CODE, 50, 50, map);//获得矩阵的宽度和高度int width = encode.getWidth();int height = encode.getHeight();//生成二维码图片BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//编写一个嵌套循环 遍历 位矩阵对象 填充二维码图片for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {//判断当前坐标是否是黑色boolean color = encode.get(x, y);//如果是黑色,就设置为黑色if (color) {bufferedImage.setRGB(x, y, 0x000000);  //   0x000000是黑色} else {bufferedImage.setRGB(x, y, 0xffffff); //   0xffffff是白色}}}String path = "D:\\Users\\lenovo\\Desktop\\xxl-job代码\\xxl-job\\xxl-job-admin\\src\\main\\resources\\static";File file = new File(path+"\\erweima.png");ImageIO.write(bufferedImage, "png", file);System.out.println("图片生成成功");}

给二维码添加logo

	public static void erweima() throws WriterException, IOException {String s = new String("你好,我是你爹!");//第一步 :设置二维码相关参数String charset = "utf-8";//首先需要创建一个map集合,来存储二维码的 配置信息Map map = new HashMap();//设置二维码的误差校正级别 例如墨水不清晰,打印出来的清晰度,拍出来的图像//L 7% M 15% Q 25% H 30%  容错率,容错率越高,二维码越容易被识别map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);//设置二维码的字符集map.put(EncodeHintType.CHARACTER_SET,charset);//设置二维码四周的留白map.put(EncodeHintType.MARGIN,2);//第二步:创建 ZXing 对象,MultiFormatWriter(多格式写入)//通过 MultiFormatWriter 创建一个二维码对象,MultiFormatWriter writer = new MultiFormatWriter();
//        writer.encode(内容 , 什么格式的二维码 , 二维码宽度 , 二维码高度 , 二维码参数);//BarcodeFormat 枚举 二维码类型 QR_CODE 最普通的   Aztec code//返回 位矩阵对象 (内部实际上是 一个二维数组,每一个元素是boolean类型的  true代表黑色,false代表白色)BitMatrix encode = writer.encode(s, BarcodeFormat.QR_CODE, 800, 800, map);//获得矩阵的宽度和高度int width = encode.getWidth();int height = encode.getHeight();//生成二维码图片BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//编写一个嵌套循环 遍历 位矩阵对象 填充二维码图片for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {//判断当前坐标是否是黑色boolean color = encode.get(x, y);//如果是黑色,就设置为黑色if (color) {bufferedImage.setRGB(x, y, 0x000000);  //   0x000000是黑色} else {bufferedImage.setRGB(x, y, 0xffffff); //   0xffffff是白色}}}

添加部分:

//给二维码添加logoFile file1 = new File("D:\\Users\\lenovo\\Desktop\\詹姆斯蓝色chosen1.jpg");Image logo = ImageIO.read(file1);  //logo图片//对获取到的log进行缩放int logoHeight = logo.getHeight(null);int logoWidth = logo.getWidth(null);if (logoWidth > 60){logoWidth = 60;}if (logoHeight > 60){logoHeight = 60;}//下面对logo进行缩放 重要    返回一个缩放之后的logo//使用平滑缩放算法(Image.SCALE_SMOOTH) , 避免锯齿Image logoimage = logo.getScaledInstance(logoWidth, logoHeight, Image.SCALE_SMOOTH);//将缩放之后的 logo 放到二维码上//获取2D画笔Graphics2D graphics2D = bufferedImage.createGraphics();//指定 从哪里开始画   (横,纵坐标)int x = (800 - logoWidth) / 2;int y = (800 - logoHeight) / 2;//将缩放之后的logo画上去graphics2D.drawImage(logoimage, x, y, null);//让图片圆润点Shape shape = new RoundRectangle2D.Float(x, y, logoWidth, logoHeight, 10, 10);//logo 边框的粗细graphics2D.setStroke(new BasicStroke(2f));//给logo画graphics2D.draw(shape);//释放画笔graphics2D.dispose();
		String path = "D:\\Users\\lenovo\\Desktop\\xxl-job代码\\xxl-job\\xxl-job-admin\\src\\main\\resources\\static";File file = new File(path+"\\erweima.png");ImageIO.write(bufferedImage, "png", file);System.out.println("图片生成成功");}

技术: Git Hub开源项目 qrcode 实现

首先添加 依赖

<!--		基于 Github QRcode 实现二维码--><dependency><groupId>com.github.liuyueyi.media</groupId><artifactId>qrcode-plugin</artifactId><version>2.5.2</version></dependency>

代码实现——黑白二维码

	public static void qrcode(){//获取 二维码 内容String url = "https://s.weibo.com/weibo?q=%23%E4%B8%80%E8%A7%89%E9%86%92%E6%9D%A53%E4%B8%AA%E4%B8%AD%E5%9B%BD%E4%BA%BA%E4%B8%8A%E5%A4%A9%E4%BA%86%23&t=31&band_rank=1&Refer=top";try {//生成黑白的二维码BufferedImage bufferedImage = QrCodeGenWrapper.of(url).asBufferedImage();//下载 二维码 图片String path = "D:\\Users\\lenovo\\Desktop\\xxl-job代码\\xxl-job\\xxl-job-admin\\src\\main\\resources\\static";File file = new File(path + "\\ercode.png");//参数一 :BufferedImage对象 , 参数二:图片格式,参数三:输出的地址ImageIO.write(bufferedImage, "png", file);System.out.println("qrcode 生成二维码成功!");} catch (Exception e) {throw new RuntimeException(e);}}

代码实现——带 logo 二维码

public static void qrcode(){//获取 二维码 内容String url = "https://baike.baidu.com/item/%e5%8b%92%e5%b8%83%e6%9c%97%c2%b7%e8%a9%b9%e5%a7%86%e6%96%af/1989503";//生成二维码try {!		//logo 图片!		File file1 = new File("D:\\Users\\lenovo\\Desktop\\詹姆斯蓝色chosen1.jpg");!		//获得图片的输入流!		InputStream inputStream = Files.newInputStream(file1.toPath());//生成黑白的BufferedImage bufferedImage = QrCodeGenWrapper.of(url)!				.setLogo(inputStream)   //设置 logo 图片!				.setLogoRate(7)  //设置 logo 占 二维码的比例  九分之一!				.setLogoStyle(QrCodeOptions.LogoStyle.ROUND)  //将 logo 设置为 圆弧.asBufferedImage();String path = "D:\\Users\\lenovo\\Desktop\\xxl-job代码\\xxl-job\\xxl-job-admin\\src\\main\\resources\\static";File file = new File(path + "\\ercode.png");//参数一 :BufferedImage对象 , 参数二:图片格式,参数三:输出的地址ImageIO.write(bufferedImage, "png", file);System.out.println("qrcode 生成二维码成功!");} catch (Exception e) {throw new RuntimeException(e);}//下载 二维码 图片}

代码实现——彩色的二维码

public static void qrcode(){//获取 二维码 内容String url = "https://baike.baidu.com/item/%e5%8b%92%e5%b8%83%e6%9c%97%c2%b7%e8%a9%b9%e5%a7%86%e6%96%af/1989503";//生成二维码try {//logo 图片File file1 = new File("D:\\Users\\lenovo\\Desktop\\詹姆斯蓝色chosen1.jpg");//获得图片的输入流InputStream inputStream = Files.newInputStream(file1.toPath());//生成黑白的BufferedImage bufferedImage = QrCodeGenWrapper.of(url)!				.setDrawPreColor(Color.CYAN) //设置二维码的颜色.setLogo(inputStream)   //设置 logo 图片.setLogoRate(7)  //设置 logo 占 二维码的比例  九分之一.setLogoStyle(QrCodeOptions.LogoStyle.ROUND)  //将 logo 设置为 圆弧.asBufferedImage();String path = "D:\\Users\\lenovo\\Desktop\\xxl-job代码\\xxl-job\\xxl-job-admin\\src\\main\\resources\\static";File file = new File(path + "\\ercode.png");//参数一 :BufferedImage对象 , 参数二:图片格式,参数三:输出的地址ImageIO.write(bufferedImage, "png", file);System.out.println("qrcode 生成二维码成功!");} catch (Exception e) {throw new RuntimeException(e);}//下载 二维码 图片}

代码实现——带有背景图

public static void qrcode(){//获取 二维码 内容String url = "https://baike.baidu.com/item/%e5%8b%92%e5%b8%83%e6%9c%97%c2%b7%e8%a9%b9%e5%a7%86%e6%96%af/1989503";//生成二维码try {//logo 图片File file1 = new File("D:\\Users\\lenovo\\Desktop\\詹姆斯蓝色chosen1.jpg");//获得图片的输入流InputStream inputStream = Files.newInputStream(file1.toPath());//生成黑白的BufferedImage bufferedImage = QrCodeGenWrapper.of(url)!				.setBgImg(inputStream) //设置背景图片!				.setBgOpacity(0.4f)  //设置透明度 0-1 越大越透明.asBufferedImage();String path = "D:\\Users\\lenovo\\Desktop\\xxl-job代码\\xxl-job\\xxl-job-admin\\src\\main\\resources\\static";File file = new File(path + "\\ercode.png");//参数一 :BufferedImage对象 , 参数二:图片格式,参数三:输出的地址ImageIO.write(bufferedImage, "png", file);System.out.println("qrcode 生成二维码成功!");} catch (Exception e) {System.out.println("报错了");e.printStackTrace();}//下载 二维码 图片}

代码实现——设置特殊形状

public static void qrcode(){//获取 二维码 内容String url = "https://baike.baidu.com/item/%e5%8b%92%e5%b8%83%e6%9c%97%c2%b7%e8%a9%b9%e5%a7%86%e6%96%af/1989503";//生成二维码try {//生成黑白的BufferedImage bufferedImage = QrCodeGenWrapper.of(url)!				.setDrawEnableScale(true)  //启动 二维码绘制时的缩放     设置形状必须开启!!!!				.setDrawStyle(QrCodeOptions.DrawStyle.DIAMOND)   //设置二维码的样式 为钻石.asBufferedImage();String path = "D:\\Users\\lenovo\\Desktop\\xxl-job代码\\xxl-job\\xxl-job-admin\\src\\main\\resources\\static";File file = new File(path + "\\ercode.png");//参数一 :BufferedImage对象 , 参数二:图片格式,参数三:输出的地址ImageIO.write(bufferedImage, "png", file);System.out.println("qrcode 生成二维码成功!");} catch (Exception e) {System.out.println("报错了");e.printStackTrace();}//下载 二维码 图片}

代码实现——生成图片填充二维码

public static void qrcode(){//获取 二维码 内容String url = "https://baike.baidu.com/item/%e5%8b%92%e5%b8%83%e6%9c%97%c2%b7%e8%a9%b9%e5%a7%86%e6%96%af/1989503";//生成二维码try {File file1 = new File("D:\\Users\\lenovo\\Desktop\\詹姆斯蓝色chosen1.jpg");InputStream inputStream = Files.newInputStream(file1.toPath());//生成黑白的BufferedImage bufferedImage = QrCodeGenWrapper.of(url)
!					.setErrorCorrection(ErrorCorrectionLevel.H)  //设置二维码的 容错率
!					.setDrawStyle(QrCodeOptions.DrawStyle.IMAGE)  //绘制二维码时 采用图片填充
!					.addImg(1,1,inputStream).asBufferedImage();String path = "D:\\Users\\lenovo\\Desktop\\xxl-job代码\\xxl-job\\xxl-job-admin\\src\\main\\resources\\static";File file = new File(path + "\\ercode.png");//参数一 :BufferedImage对象 , 参数二:图片格式,参数三:输出的地址ImageIO.write(bufferedImage, "png", file);System.out.println("qrcode 生成二维码成功!");} catch (Exception e) {System.out.println("报错了");e.printStackTrace();}//下载 二维码 图片}

相关文章:

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...