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

39、基于深度学习的(拼音)字符识别(matlab)

1、原理及流程

深度学习中常用的字符识别方法包括卷积神经网络(CNN)和循环神经网络(RNN)。

  1. 数据准备:首先需要准备包含字符的数据集,通常是手写字符、印刷字符或者印刷字体数据集。

  2. 数据预处理:对数据集进行预处理,包括归一化、去噪、裁剪等处理,以便更好地输入到深度学习模型中。

  3. 模型选择:选择合适的深度学习模型,常用的字符识别模型包括CNN和RNN。CNN主要用于图像数据的特征提取,RNN主要用于序列数据的建模。

  4. 模型构建:根据数据集的特点和需求构建深度学习模型,设置合适的层数、节点数和激活函数等参数。

  5. 模型训练:使用已标记好的数据集对模型进行训练,通过反向传播算法不断调整模型参数,使其能够更好地拟合数据集。

  6. 模型评估:使用未标记的数据集对训练好的模型进行评估,评估模型的准确率、召回率、F1值等指标。

  7. 模型优化:根据评估结果对模型进行调优,可以对模型结构、参数、数据集等方面进行优化。

  8. 预测与应用:使用训练好的模型对新数据进行字符识别预测,应用到实际场景中,如车牌识别、验证码识别等领域。

2、准备工作

1)无噪声拼音字符的生成

代码

function [alphabet,targets] = prprob()letterA =  [0 0 1 0 0 ...0 1 0 1 0 ...0 1 0 1 0 ...1 0 0 0 1 ...1 1 1 1 1 ...1 0 0 0 1 ...1 0 0 0 1 ]';letterB =  [1 1 1 1 0 ...1 0 0 0 1 ...1 0 0 0 1 ...1 1 1 1 0 ...1 0 0 0 1 ...1 0 0 0 1 ...1 1 1 1 0 ]';letterC =  [0 1 1 1 0 ...1 0 0 0 1 ...1 0 0 0 0 ...1 0 0 0 0 ...1 0 0 0 0 ...1 0 0 0 1 ...0 1 1 1 0 ]';letterD  = [1 1 1 1 0 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 1 1 1 0 ]';letterE  = [1 1 1 1 1 ...1 0 0 0 0 ...1 0 0 0 0 ...1 1 1 1 0 ...1 0 0 0 0 ...1 0 0 0 0 ...1 1 1 1 1 ]';letterF =  [1 1 1 1 1 ...1 0 0 0 0 ...1 0 0 0 0 ...1 1 1 1 0 ...1 0 0 0 0 ...1 0 0 0 0 ...1 0 0 0 0 ]';letterG =  [0 1 1 1 0 ...1 0 0 0 1 ...1 0 0 0 0 ...1 0 0 0 0 ...1 0 0 1 1 ...1 0 0 0 1 ...0 1 1 1 0 ]';letterH =  [1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 1 1 1 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ]';letterI =  [0 1 1 1 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 1 1 1 0 ]';letterJ =  [1 1 1 1 1 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ...1 0 1 0 0 ...0 1 0 0 0 ]';letterK =  [1 0 0 0 1 ...1 0 0 1 0 ...1 0 1 0 0 ...1 1 0 0 0 ...1 0 1 0 0 ...1 0 0 1 0 ...1 0 0 0 1 ]';letterL =  [1 0 0 0 0 ...1 0 0 0 0 ...1 0 0 0 0 ...1 0 0 0 0 ...1 0 0 0 0 ...1 0 0 0 0 ...1 1 1 1 1 ]';letterM =  [1 0 0 0 1 ...1 1 0 1 1 ...1 0 1 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ]';letterN =  [1 0 0 0 1 ...1 1 0 0 1 ...1 1 0 0 1 ...1 0 1 0 1 ...1 0 0 1 1 ...1 0 0 1 1 ...1 0 0 0 1 ]';letterO =  [0 1 1 1 0 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...0 1 1 1 0 ]';letterP =  [1 1 1 1 0 ...1 0 0 0 1 ...1 0 0 0 1 ...1 1 1 1 0 ...1 0 0 0 0 ...1 0 0 0 0 ...1 0 0 0 0 ]';letterQ =  [0 1 1 1 0 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 1 0 1 ...1 0 0 1 0 ...0 1 1 0 1 ]';letterR =  [1 1 1 1 0 ...1 0 0 0 1 ...1 0 0 0 1 ...1 1 1 1 0 ...1 0 1 0 0 ...1 0 0 1 0 ...1 0 0 0 1 ]';letterS =  [0 1 1 1 0 ...1 0 0 0 1 ...0 1 0 0 0 ...0 0 1 0 0 ...0 0 0 1 0 ...1 0 0 0 1 ...0 1 1 1 0 ]';letterT =  [1 1 1 1 1 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ]';letterU =  [1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...0 1 1 1 0 ]';letterV =  [1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...0 1 0 1 0 ...0 0 1 0 0 ]';letterW =  [1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 0 0 1 ...1 0 1 0 1 ...1 1 0 1 1 ...1 0 0 0 1 ]';letterX =  [1 0 0 0 1 ...1 0 0 0 1 ...0 1 0 1 0 ...0 0 1 0 0 ...0 1 0 1 0 ...1 0 0 0 1 ...1 0 0 0 1 ]';letterY =  [1 0 0 0 1 ...1 0 0 0 1 ...0 1 0 1 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ...0 0 1 0 0 ]';letterZ =  [1 1 1 1 1 ...0 0 0 0 1 ...0 0 0 1 0 ...0 0 1 0 0 ...0 1 0 0 0 ...1 0 0 0 0 ...1 1 1 1 1 ]';alphabet = [letterA,letterB,letterC,letterD,letterE,letterF,letterG,letterH,...letterI,letterJ,letterK,letterL,letterM,letterN,letterO,letterP,...letterQ,letterR,letterS,letterT,letterU,letterV,letterW,letterX,...letterY,letterZ];targets = eye(26);

试图效果

无噪声A B C X Y Z视图

 

 

2)有噪声拼音字符的生成

代码

有噪声A B C X Y Z视图

numNoise = 30;
Xn = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*0.2,0),1);
Tn = repmat(T,1,numNoise);

视图效果

 

 

 

3、 创建第一个神经网络

说明

针对模式识别建立的具有 25 个隐藏神经元的前馈神经网络。

由于神经网络以随机初始权重进行初始化,因此每次运行该示例进行训练后的结果都略有不同。

代码

%25 个隐藏神经元的前馈神经网络。
setdemorandstream(pi);
net1 = feedforwardnet(25);
%显示网络
view(net1);

视图效果

4、 训练第一个神经网络

说明

无噪声拼音字符数据集进行训练,当网络针对训练集或验证集不再可能有改善时,训练停止。

函数 train 将数据划分为训练集、验证集和测试集。验证集和测试集。训练集用于更新网络,验证集用于在网络过拟合训练数据之前停止网络,从而保持良好的泛化。测试集用作完全独立的测量手段,用于衡量网络针对新样本的预期表现。

代码

%当网络针对训练集或验证集不再可能有改善时,训练停止。
net1.divideFcn = '';
%函数 train 将数据划分为训练集、验证集和测试集。
%验证集和测试集。训练集用于更新网络,验证集用于在网络过拟合训练数据之前停止网络,从而保持良好的泛化。测试集用作完全独立的测量手段,用于衡量网络针对新样本的预期表现。
net1 = train(net1,X,T,nnMATLAB);

 视图结果

5、 训练第二个神经网络

说明

针对含噪数据训练第二个网络,并将其泛化能力与第一个网络进行比较。

代码

net2 = feedforwardnet(25);
net2 = train(net2,Xn,Tn,nnMATLAB);

视图效果

 6、测试两个神经网络

说明

用测试数据集对训练好的网络1和网络2进行测试,X轴表示噪声强度Y轴表示误差百分比

代码

noiseLevels = 0:.05:1;
numLevels = length(noiseLevels);
percError1 = zeros(1,numLevels);
percError2 = zeros(1,numLevels);
for i = 1:numLevelsXtest = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*noiseLevels(i),0),1);Y1 = net1(Xtest);percError1(i) = sum(sum(abs(Tn-compet(Y1))))/(26*numNoise*2);Y2 = net2(Xtest);percError2(i) = sum(sum(abs(Tn-compet(Y2))))/(26*numNoise*2);
endfigure(3)
plot(noiseLevels,percError1*100,'--',noiseLevels,percError2*100);
title('识别误差百分比');
xlabel('噪声水平');
ylabel('误差');
legend('网络1','网络2','Location','NorthWest')

试图效果

 

7、总结 

基于深度学习的拼音字符识别在MATLAB中的总体流程如下:

  1. 数据集准备:收集包含拼音字符的数据集,可以是经过标记的拼音字符图片或者声音数据。

  2. 数据预处理:对数据集进行预处理,包括图像去噪、裁剪、归一化等处理,或者对声音数据进行特征提取、转换为图像数据等处理。

  3. 构建深度学习模型:选择适合拼音字符识别任务的深度学习模型,可以选择卷积神经网络(CNN)、循环神经网络(RNN)或者组合模型等。

  4. 模型训练:使用数据集对构建好的深度学习模型进行训练,调整模型参数使其能够更好地拟合数据。

  5. 模型评估:使用未标记的数据集对训练好的模型进行评估,评估模型的准确率、召回率、F1值等指标。

  6. 模型优化:根据评估结果对模型进行调优,可以调整模型结构、超参数,增加数据增强等方式来提高模型性能。

  7. 模型应用:将训练好的深度学习模型用于拼音字符识别任务,可以将其应用到实际场景中,如语音识别、文字转换等任务中。

以上是基于MATLAB的深度学习拼音字符识别的总体流程,具体实现细节可以根据具体需求和数据集的特点进行调整和优化。

主程序代码

%% 字符识别
%prprob 定义了一个包含 26 列的矩阵 X,每列对应一个字母。定义一个字母的 5×7 位图。
[X,T] = prprob;
%plotchar第三个字母 C 绘制为一个位图。
% figure(1)
% plotchar(X(:,3))
% title('不含噪声')
%% 创建第一个神经网络
%25 个隐藏神经元的前馈神经网络。
setdemorandstream(pi);
net1 = feedforwardnet(25);
%显示网络
view(net1);%% 训练第一个神经网络
%当网络针对训练集或验证集不再可能有改善时,训练停止。
net1.divideFcn = '';
%函数 train 将数据划分为训练集、验证集和测试集。
%验证集和测试集。训练集用于更新网络,验证集用于在网络过拟合训练数据之前停止网络,从而保持良好的泛化。测试集用作完全独立的测量手段,用于衡量网络针对新样本的预期表现。
net1 = train(net1,X,T,nnMATLAB);
%% 训练第二个神经网络
%针对含噪数据训练第二个网络,并将其泛化能力与第一个网络进行比较。
%数据集加噪声
numNoise = 30;
Xn = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*0.2,0),1);
Tn = repmat(T,1,numNoise);
figure(2)
plotchar(Xn(:,3))
title('含噪声')
%创建并训练第二个网络。
net2 = feedforwardnet(25);
net2 = train(net2,Xn,Tn,nnMATLAB);%% 测试两个神经网络
noiseLevels = 0:.05:1;
numLevels = length(noiseLevels);
percError1 = zeros(1,numLevels);
percError2 = zeros(1,numLevels);
for i = 1:numLevelsXtest = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*noiseLevels(i),0),1);Y1 = net1(Xtest);percError1(i) = sum(sum(abs(Tn-compet(Y1))))/(26*numNoise*2);Y2 = net2(Xtest);percError2(i) = sum(sum(abs(Tn-compet(Y2))))/(26*numNoise*2);
endfigure(3)
plot(noiseLevels,percError1*100,'--',noiseLevels,percError2*100);
title('识别误差百分比');
xlabel('噪声水平');
ylabel('误差');
legend('网络1','网络2','Location','NorthWest')

程序文件包

相关文章:

39、基于深度学习的(拼音)字符识别(matlab)

1、原理及流程 深度学习中常用的字符识别方法包括卷积神经网络(CNN)和循环神经网络(RNN)。 数据准备:首先需要准备包含字符的数据集,通常是手写字符、印刷字符或者印刷字体数据集。 数据预处理&#xff1…...

CCF 矩阵重塑

第一题&#xff1a;矩阵重塑&#xff08;一&#xff09; 本题有两种思路 第一种 &#xff08;不确定是否正确 但是100分&#xff09; #include<iostream> using namespace std; int main(){int n,m,p,q,i,j;cin>>n>>m>>p>>q;int a[n][m];for(i…...

Aigtek高压放大器在柔性爬行机器人驱动性能研究中的应用

实验名称&#xff1a;柔性爬行机器人的材料测试 研究方向&#xff1a;介电弹性体的最小能量结构是一种利用DE材料的电致变形与柔性框架形变相结合设计的新型柔性驱动器&#xff0c;所谓最小能量是指驱动器在平衡状态时整个系统的能量最小&#xff0c;当系统在外界的电压刺激下就…...

Postman下发流表至Opendaylight

目录 任务目的 任务内容 实验原理 实验环境 实验过程 1、打开ODL控制器 2、网页端打开ODL控制页面 3、创建拓扑 4、Postman中查看交换机的信息 5、L2层流表下发 6、L3层流表下发 7、L4层流表下发 任务目的 1、掌握OpenFlow流表相关知识&#xff0c;理解SDN网络中L…...

C语言王国——数组的旋转(轮转数组)三种解法

目录 一、题目 二、分析 2.1 暴力求解法 2.2 找规律 2.3 追求时间效率&#xff0c;以空间换时间 三、结论 一、题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出…...

MySQL中CAST和CONVERT函数都用于数据类型转换

在 MySQL 中&#xff0c;CAST() 和 CONVERT() 函数都用于数据类型转换。虽然这两个函数在大多数情况下可以互换使用&#xff0c;但它们之间还是有一些细微的差别。 官方文档地址 https://dev.mysql.com/doc/refman/8.4/en/cast-functions.html#function_cast CAST() 函数 C…...

速盾:cdn影响seo吗?

CDN (Content Delivery Network) 是一个分布式网络架构&#xff0c;用于在全球范围内加速网站内容的传输和分发。它通过将网站的静态资源&#xff08;例如图片、CSS、JavaScript 文件等&#xff09;存储在多个服务器上&#xff0c;使用户可以从最接近他们位置的服务器上获取这些…...

期末算法复习

0-1背包问题&#xff08;动态规划&#xff09; 例题 算法思想&#xff1a; 动态规划的核心思想是将原问题拆分成若干个子问题&#xff0c;并利用已解决的子问题的解来求解更大规模的问题。 主要是状态转移方程和状态 算法描述&#xff1a; 初始化一个二维数组dp&#xff0…...

可穿戴设备:苹果“吃老底”、华为“忙复苏”、小米“再扩容”

配图来自Canva可画 随着产品功能的创新&#xff0c;可穿戴设备不再被简单地视为手机的延伸&#xff0c;而是被当成一种独立的、具有独特功能和优势的产品&#xff0c;受到了越来越多人的青睐。 一方面&#xff0c;技术的进步使得可穿戴设备在功能、性能和使用体验上得到显著提…...

AI数据分析:集中度分析和离散度分析

在deepseek中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个Python脚本编写的任务&#xff0c;具体步骤如下&#xff1a; 读取Excel表格&#xff1a;"F:\AI自媒体内容\AI行业数据分析\toolify月榜\toolify2023年-2024年月排行榜汇总数据.xlsx&qu…...

redis的分布式session和本地的session有啥区别

在web应用开发中&#xff0c;Session用于在多个请求之间存储用户数据。传统上&#xff0c;Session存储在服务器的内存中&#xff0c;即本地Session。然而&#xff0c;随着应用规模和复杂度的增加&#xff0c;特别是在分布式环境中&#xff0c;本地Session会遇到一些问题。这时&…...

SSH概念、用途、详细使用方法

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…...

关于电脑文件的规划思考

概述 设置C、D、E、F 四个盘 C盘&#xff1a;系统数据使用&#xff0c;操作系统、其他软件需要用到的系统性资源 D盘&#xff1a;应用软件区 的使用&#xff0c;数据库、navacat、idea、visual studio、浏览器、向日葵、虚拟机…… E盘&#xff1a;工作区&#xff1a;公司资料…...

DVWA - Brute Force

DVWA - Brute Force 等级&#xff1a;low ​ 直接上bp弱口令爆破&#xff0c;设置变量&#xff0c;攻击类型最后一个&#xff0c;payload为用户名、密码简单列表 ​ 直接run&#xff0c;长度排序下&#xff0c;不一样的就是正确的用户名和密码 ​ 另解&#xff1a; 看一下…...

安卓手机文件找回方法汇总,3个技巧,不再焦虑

我们用手机来储存各种重要的信息和文件&#xff0c;无论是珍贵的照片、重要的文档还是喜爱的音乐&#xff0c;用来记录和分享生活中的每一个瞬间。但如果不小心删除了这些文件&#xff0c;我们可能会面临数据丢失的风险&#xff0c;进而产生焦虑和不安。本文将为您揭秘手机文件…...

{}初始化

文章目录 ()初始化的问题易混淆弱检查 {}初始化{}初始化是c11推荐的初始化&#xff0c;解决了上述的问题 ()则被用于强制类型转换 ()初始化的问题 易混淆 string s();不能确定是函数定义还是对象定义 弱检查 int a(3.14);3.14 可以通过 int 定义 {}初始化 {}初始化是c11推…...

小程序外卖开发中的关键技术与实现方法

小程序外卖服务凭借其便捷性和灵活性&#xff0c;正成为现代餐饮行业的重要组成部分。开发一个功能完善的小程序外卖系统&#xff0c;需要掌握一系列关键技术和实现方法。本文将介绍小程序外卖开发中的核心技术&#xff0c;并提供具体的代码示例&#xff0c;帮助开发者理解和实…...

大数据平台之运维管理工具

大数据平台的自动化运维管理工具能够大幅提升集群管理效率&#xff0c;减少人为错误&#xff0c;提高系统的稳定性和性能。这些工具通常提供集群监控、配置管理、自动化任务执行、安全管理和故障处理等功能。以下是一些主要的大数据平台自动化运维管理工具的详细介绍&#xff1…...

[vue3]组件通信

自定义属性 父组件中给子组件绑定属性, 传递数据给子组件, 子组件通过props选项接收数据 props传递的数据, 在模版中可以直接使用{{ message }}, 在逻辑中使用props.message defineProps defineProps是编译器宏函数, 就是一个编译阶段的标识, 实际编译器解析时, 遇到后会进行…...

【react小项目】bmi-calculator

bmi-calculator 目录 bmi-calculator初始化项目01大致布局01代码 02完善样式02代码 03输入信息模块03代码 04 使用图表04代码 05详细记录信息渲染05代码 06 让数据变成响应式的06-1输入框的数据处理06-2图表&#xff0c;和记录信息的区域数据处理 07 删除功能&#xff0c;撤销功…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...