基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(五)

系列文章目录

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(一)

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(二)

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(三)

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(四)

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(五)

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(六)


目录

  • 系列文章目录
  • 前言
  • 总体设计
    • 系统整体结构图
    • 系统流程图
  • 运行环境
  • 模块实现
    • 1. 数据预处理
    • 2. 数据增强
    • 3. 普通CNN模型
      • 1)模型结构
      • 2)模型优化
      • 3)模型训练
      • 4)模型保存
    • 4. 残差网络模型
      • 1)残差网络的介绍
      • 2)模型结构
      • 3)模型训练
      • 4)模型保存
    • 5. 模型生成
      • 1)搭建Django项目
      • 2)输入图片并预测
      • 3)链接数据库
      • 4)美化网页
  • 其他相关博客
  • 工程源代码下载
  • 其它资料下载


在这里插入图片描述

前言

本项目以卷积神经网络(CNN)模型为基础,对收集到的猫咪图像数据进行训练。通过采用数据增强技术和结合残差网络的方法,旨在提高模型的性能,以实现对不同猫的种类进行准确识别。

首先,项目利用CNN模型,这是一种专门用于图像识别任务的深度学习模型。该模型通过多个卷积和池化层,能够有效地捕捉图像中的特征,为猫的种类识别提供强大的学习能力。

其次,通过对收集到的数据进行训练,本项目致力于建立一个能够准确辨识猫的种类的模型。包括各种猫的图像,以确保模型能够泛化到不同的种类和场景。

为了进一步提高模型性能,采用了数据增强技术。数据增强通过对训练集中的图像进行旋转、翻转、缩放等操作,生成更多的变体,有助于模型更好地适应不同的视角和条件。

同时,引入残差网络的思想,有助于解决深层网络训练中的梯度消失问题,提高模型的训练效果。这种结合方法使得模型更具鲁棒性和准确性。

最终,通过本项目,实现了对猫的种类进行精准识别的目标。这对于宠物领域、动物学研究等方面都具有实际应用的潜力,为相关领域提供了一种高效而可靠的工具。

总体设计

本部分包括系统整体结构图和系统流程图。

系统整体结构图

系统整体结构如图所示。

在这里插入图片描述

系统流程图

系统流程如图所示。

在这里插入图片描述

运行环境

本部分包括计算型云服务器、Python环境、TensorFlow环境和MySQL环境。

详见博客。

模块实现

本项目包括5个模块:数据预处理、数据增强、普通CNN模型、残差网络模型、模型生成。下面分别给出各模块的功能介绍及相关代码。

1. 数据预处理

打开浏览器,分别搜索布偶猫、孟买猫、暹罗猫和英国短毛猫的图片。用批量下载器下载图片,筛选出特征明显的图片作为数据集。使用的图片包含101张布偶猫、97张孟买猫、101张逼罗猫以及85张英国短毛猫,共计384张图片。(其中在工程代码中/cat_kind_model/cat_data_100/cat_kind_model/cat_data_224也可下载)

详见博客。

2. 数据增强

所谓数据增强,是通过翻转、旋转、比例缩放、随机裁剪、移位、添加噪声等操作对现有数据集进行拓展。本项目中数据量较小,无法提取图片的深层特征,使用深层的残差网络时易造成模型过拟合。

详见博客。

3. 普通CNN模型

处理图片数据格式后,转换为数组作为模型的输入,并根据文件名提取标签,定义模型结构、优化器、损失函数和性能指标。本项目使用Keras提供类似VGG的卷积神经网络。

1)模型结构

详见博客。

2)模型优化

详见博客。

3)模型训练

详见博客。

4)模型保存

详见博客。

4. 残差网络模型

本部分包括残差网络的介绍、模型结构以及模型训练。

1)残差网络的介绍

详见博客。

2)模型结构

详见博客。

3)模型训练

详见博客。

4)模型保存

详见博客。

5. 模型生成

模型应用主要有3部分:一是从本地相册输入猫的图片;二是把输入的图片转换成数据,在输入训练好的模型中进行预测;三是根据预测结果输出数据库中预存的相关信息。

1)搭建Django项目

使用快捷键win+R,输入cmd后回车,打开命令行。

进入虚拟环境:

cd H: # anaconda的安装路径
cd ProgramData\Anaconda3\Scripts
activate tensorflow

创建Django项目:

django-admin startproject cat_kind_view

进入项目目录,创建一个名为cat的应用:

cd cat_kind_view
python manage.py startapp cat

用PyCharm打开创建的项目,如图所示。

在这里插入图片描述

cat_kind_view/cat/views.py文件中添加网页想要展示的内容,相关代码如下:

from django.shortcuts import render  #导入各种模块
from django.http import HttpResponse
from catclass import settings
from . import models
from .prediction import testcat
import json
#创建视图
def index(request):return render(request, 'index.html')
def catinfo(request):if request.method == "POST":f1 = request.FILES['pic1']#用于识别fname = '%s/pic/%s' % (settings.MEDIA_ROOT, f1.name)with open(fname, 'wb') as pic:for c in f1.chunks():pic.write(c)#用于显示fname1 = './static/img/%s' % f1.namewith open(fname1, 'wb') as pic:for c in f1.chunks():pic.write(c)num = testcat(f1.name)if(num == 0):num = 4#通过ID获取猫的信息name = models.Catinfo.objects.get(id = num)return render(request, 'info.html', {'nameinfo': name.nameinfo, 'feature': name.feature, 'livemethod': name.livemethod, 'feednn': name.feednn, 'feedmethod': name.feedmethod, 'picname': f1.name})else:return HttpResponse("上传失败!")
def appupload(request):if request.method == "POST":f1 = request.FILES['pic1']#用于识别fname = '%s/pic/%s' % (settings.MEDIA_ROOT, f1.name)with open(fname, 'wb') as pic:for c in f1.chunks():pic.write(c)#用于显示fname1 = './static/img/%s' % f1.namewith open(fname1, 'wb') as pic:for c in f1.chunks():pic.write(c)num = testcat(f1.name)if (num == 0):num = 4#通过ID获取猫的信息name = models.Catinfo.objects.get(id = num)return render(request, 'app.html', {'nameinfo': name.nameinfo, 'feature': name.feature, 'livemethod': name.livemethod, 'feednn': name.feednn, 'feedmethod': name.feedmethod, 'picname': f1.name})else:return HttpResponse("上传失败!")
#在cat_kind_view/cat目录下新建urls.py
from django.conf.urls import url
from . import views
urlpatterns = [url(r'^$', views.index),url(r'^info/', views.catinfo),url(r'^appupload/', views.appupload)
]
#在cat_kind_view/ cat_kind_view/urls.py文件中加上新建的urls
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [url(r'^admin/', include(admin.site.urls)),url(r'^', include('cat.urls')),  #连接到cat/urls
]
#在cat_kind_view/cat_kind_view/settings.py中做如下改动
#定义应用
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','cat'  # 加上自己的APP
]
#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans'    #修改语言为汉语
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'  #修改时区为上海

2)输入图片并预测

创建保存输入图片的文件夹在cat_kind_view/cat目录下添加prediction.py。此文件的功能是处理输入的图片,并用训练好的模型进行预测。

import os  #导入各种模块
from PIL import Image
import numpy as np
import keras
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Flatten
from keras.optimizers import SGD
from keras.layers import Conv2D, MaxPooling2D
def prepicture(picname):  #定义预处理img = Image.open('./media/pic/' + picname)new_img = img.resize((100, 100), Image.BILINEAR)new_img.save(os.path.join('./media/pic/', os.path.basename(picname)))
def read_image2(filename):img = Image.open('./media/pic/' + filename).convert('RGB')return np.array(img)
def testcat(picname):#预处理图片变成100*100prepicture(picname)x_test = []x_test.append(read_image2(picname))x_test = np.array(x_test)x_test = x_test.astype('float32')x_test /= 255keras.backend.clear_session()model = Sequential()#输入为三通道的100*100图像#应用32个卷积滤波器,每个大小为3*3model.add(Conv2D(32,(3,3),activation='relu',input_shape=(100,100,3)))model.add(Conv2D(32, (3, 3), activation='relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Dropout(0.25))model.add(Conv2D(64, (3, 3), activation='relu'))model.add(Conv2D(64, (3, 3), activation='relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Dropout(0.25))model.add(Flatten())model.add(Dense(256, activation='relu'))model.add(Dropout(0.5))model.add(Dense(4, activation='softmax'))sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])model.load_weights('./cat/cat_weight.h5')    #使用训练好的模型预测classes = model.predict_classes(x_test)[0]#target = ['布偶猫', '孟买猫', '暹罗猫', '英国短毛猫']#print(target[classes])return classes

3)链接数据库

本部分相关代码如下:

#在cat_kind_view/cat_kind_view/settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'catkind',     #数据库名'USER': 'root',         #用户名'PASSWORD': 'root',    #密码'HOST': '127.0.0.1','PORT': '3306',}
}
#在cat_kind_view/cat /__init__.py中引入数据库
import pymysql
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()
#在cat_kind_view/cat /__init__.py中写入数据库中的名称和格式
from django.db import models
#创建模型
class Catinfo(models.Model):name = models.CharField(max_length=10)nameinfo = models.CharField(max_length=1000)feature = models.CharField(max_length=1000)livemethod = models.CharField(max_length=1000)feednn = models.CharField(max_length=1000)feedmethod = models.CharField(max_length=1000)

在命令行终端输入以下命令,生成迁移文件0001_initial.py

python manage.py makemigrations

在命令行终端输入以下命令执行迁移,在数据库中生成对应表。

python manage.py migrate

Navicat for MySQL中打开数据库,发现由Django生成一些列表,如图所示,cat_catinfo是在应用cat中由catinfo类生成的表。

在这里插入图片描述

cat_catinfo表中添加不同种类猫的相关信息,如图所示。

在这里插入图片描述

这些信息根据预测结果(标签)与主键ID一一对应,把表中的信息显示在网页上。

4)美化网页

本部分相关代码如下:

#在cat_kind_view/cat_kind_view/settings.py 
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],  #加入模板路径'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]
#静态文件(CSS, JavaScript, Images)
#参考https://docs.djangoproject.com/en/3.0/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')  #加上static路径,界面美化
]
MEDIA_ROOT = os.path.join(BASE_DIR, "./media") #加上media路径,界面美化

美化网页部分代码目录如图所示。

在这里插入图片描述

static/css/style.css设置首页格式,如背景、字体、各部件的类型、颜色等。

body,ul,li,dl,dt,dd,p,ol,h1,h2,h3,h4,h5,h6,form,img,table,fieldset,legend {margin: 0;padding: 0;
}
html,body {height: 100%;width: 100%;
}
ul,li,ol {list-style: none;
}
img,fieldset {border: 0;
}
img {display: block;
}
a {text-decoration: none;color: #333;
}
h1,h2,h3,h4,h5,h6 {font-weight: 100;
}
body {font-size: 12px;font-family: "微软雅黑";
}
input,a {outline: none;
}
* {box-sizing: border-box;
}
.bc {background: url(../img/image001.jpg) no-repeat;background-size: 100% 100%;
}
.main1 {width: 100%;height: 100%;padding-top: 100px;padding-left: 100px;
}
.main {width: 600px;height: 500px;background-color: rgba(255,255,255,0.3);box-shadow: 0px 0px 5px 5px #888888;
}
.title {width: 100%;height: 55px;padding-top: 20px;
}
.title p {font-size: 30px;text-align: center;
}
.select {width: 100%;height: 200px;
}
.xfile {width: 200px;height: 100px;display: none;border: 0px;
}
.xxfile,.xxsub {width: 300px;height: 60px;background-color: rgba(0,0,0,0.5);margin-top: 50px;margin-left: 150px;font-size: 25px;border-radius: 10px;border: 0px;color: white;font-family: "微软雅黑";transition: linear 0.2s;
}
.xxfile:hover,.xxsub:hover {color: black;background-color: rgba(255,255,255,0.5);
}
.select .xxsub {margin-top: 30px;
}
.foot {width: 100%;height: 245px;padding-top: 30px;
}
.foot ul {display: flex;justify-content: space-around;
}
.foot dl {height: 30px;font-size: 16px;line-height: 30px;
}
.foot dd {height: 40px;font-size: 26px;line-height: 40px;
}

static/css/info.css设置信息页格式,如背景、字体、各部件的类型、颜色等。

body,ul,li,dl,dt,dd,p,ol,h1,h2,h3,h4,h5,h6,form,img,table,fieldset,legend {margin: 0;padding: 0;
}
ul,li,ol {list-style: none;
}
img,fieldset {border: 0;
}
img {display: block;
}
a {text-decoration: none;color: #333;
}
h1,h2,h3,h4,h5,h6 {font-weight: 100;
}
body {font-size: 12px;font-family: "微软雅黑";color: black;
}
input,a {outline: none;
}
* {box-sizing: border-box;
}
body {background: url(../img/lianzhengaijiujiu003.jpg) no-repeat;background-size: cover;
}
.top {width: 1000px;height: 40px;background-color: cornflowerblue;margin: 0 auto;line-height: 40px;font-size: 24px;color: white;padding-left: 20px;
}
.m1 {width: 1000px;height: 210px;margin: 0 auto;margin-top: 20px;display: flex;justify-content: space-between;
}
.catlogo {width: 210px;height: 210px;padding: 4px;border: 1px solid gray;
}
.catlogo img {width: 200px;height: 200px;
}
.catname {width: 770px;font-size: 18px;padding: 10px;text-align: justify;background: rgba(255,255,255,0.7);border-radius: 10px;
}
.m2,.m3 {width: 1000px;height: 400px;display: flex;justify-content: space-between;margin: 0 auto;margin-top: 10px;
}
.feature {width: 400px;height: 400px;text-align: justify;background: rgba(255,255,255,0.7);border-radius: 10px;
}
.live {width: 560px;height: 400px;text-align: justify;background: rgba(255,255,255,0.7);border-radius: 10px;
}
.featt,.maintitle,.methodtitle {width: 100%;height: 40px;line-height: 40px;font-size: 24px;color: white;padding-left: 20px;background: cornflowerblue;
}
.nn {font-size: 18px;margin: 8px;
}
.m3 {height: 450px;
}
.feedmethod {width: 510px;height: 440px;text-align: justify;background: rgba(255,255,255,0.7);border-radius: 10px;
}
.feedmain {width: 450px;height: 440px;text-align: justify;background: rgba(255,255,255,0.7);border-radius: 10px;
}
.footcat {position: fixed;right: 0;bottom: 0;width: 200px;height: 300px;
}

static/templates/index.html首页显示的内容:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="/static/css/style.css" />
<script type="text/javascript" src="/static/js/cat.js" ></script>
<title>猫的种类识别</title>
</head>
<body class="bc">
<div class="main1">
<div class="main"><div class="title"><p>The&nbsp;&nbsp;&nbsp;Kinds&nbsp;&nbsp;&nbsp;Of&nbsp;&nbsp;&nbsp;Cats&nbsp;&nbsp;&nbsp;Identification</p></div><div class="select"><form action="/info/" method="post" enctype="multipart/form-data">{% csrf_token %}<input type="file" class="xfile" id="btn_file" name="pic1"/><button type="button" onclick="F_Open_dialog()" class="xxfile">选择图片</button><br /><input type="submit" class="xxsub" value="种类识别"/></form></div><div class="foot"><ul><li><ol><dd>识别的种类</dd><dl>布偶猫</dl><dl>孟买猫</dl><dl>暹罗猫</dl><dl>英国短毛猫</dl></ol></li><li><ol><dd>应用说明</dd><dl>上传图片均为jpg</dl><dl>识别精度大约90%以上</dl></ol></li></ul></div>
</div>
</div>
</body>
</html>

static/templates/app.html信息页显示的内容:

<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<script src="/static/js/mui.min.js"></script>
<link href="/static/css/mui.min.css" rel="stylesheet"/>
<link rel="stylesheet" type="text/css" href="/static/css/appinfo.css"/>
</head>
<body>
<header class="mui-bar mui-bar-nav ihead"><a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left iha"></a><h1 class="mui-title">识别结果</h1>
</header>
<div class="mui-scroll-wrapper">
<div class="mui-scroll">
<div class="ifhead ihh">种类</div>
<div class="ipic"><img src="/static/img/{{ picname }}" /><div class="iname"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ nameinfo }}</p></div>
</div>
<div class="ifhead">外形特征</div>
<div class="ifeature"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ feature }}</p>
</div>
<div class="ifhead">生活习性</div>
<div class="ifeature"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ livemethod }}</p>
</div>
<div class="ifhead">饲养须知</div>
<div class="ifeature"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ feednn }}</p>
</div>
<div class="ifhead">饲养方法</div>
<div class="ifeature"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ feedmethod }}</p>
</div>
</div>
</div>
<script type="text/javascript" charset="utf-8">
mui.init();
mui('.mui-scroll-wrapper').scroll({deceleration: 0.0005 //flick 减速系数,系数越大,滚动速度越慢,滚动距离越小,默认值0.0006
});
</script>
</body>
</html>

其他相关博客

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(一)

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(二)

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(三)

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(四)

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(六)

工程源代码下载

详见本人博客资源下载页


其它资料下载

如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载》
这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

butterfly蝴蝶分类

一、分类原因 由于植物分类所使用的数据集存在一定问题&#xff0c;修改起来比较麻烦&#xff0c;本次采用kaggle的ButterflyMothsImageClassification数据集&#xff0c;对100这种蝴蝶进行分类。 二、100中蝴蝶类别 ‘ADONIS’,‘AFRICAN GIANT SWALLOWTAIL’,‘AMERICAN S…

基于ssm高校推免报名系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把高校推免报名管理与现在网络相结合&#xff0c;利用java技术建设高校推免报名管理系统&#xff0c;实现高校推免报名的信息化。则对于进一步提高高校推免报名管理发展&#xff0c;丰富高校推免报名管理经验能起到不少的促进作用。…

Tomcat 部署论坛

一、安装好mysql数据库和jdk之后 开始部署论坛 用Navicat Premium 15连接mysql数据库并创建jforum数据库 下载版本 点击安装选择minninum点击下一步 点击一下一步 选择默认安装路径 安装验证&#xff0c;在安装完毕且启动Apache Tomcat&#xff0c;通过浏览器访问tomcat的80…

【QT】非常简单的登录界面实现

本系列是作者自学实践过程的记录 本文是关于登录界面设计 有问题欢迎讨论 效果图&#xff1a; 一、创建项目和主界面 创建Qt Widget Application 这里我们使用qmake而不是cmake 这是主界面&#xff0c;登录界面等后面再创建&#xff0c;这里要勾选上generate form&#xff0…

如何提高React组件的渲染效率的?在React中如何避免不必要的render?

面试官&#xff1a;说说你是如何提高组件的渲染效率的&#xff1f;在React中如何避免不必要的render&#xff1f; 一、是什么 react 基于虚拟 DOM 和高效 Diff 算法的完美配合&#xff0c;实现了对 DOM 最小粒度的更新&#xff0c;大多数情况下&#xff0c;React 对 DOM 的渲染…

RocketMQ系统性学习-SpringCloud Alibaba集成RocketMQ以及消费收发实战

文章目录 Spring Cloud Alibaba 集成 RocketMQ 最佳实践集成依赖DashBoard消息收发实战 Spring Cloud Alibaba 集成 RocketMQ 最佳实践 SpringBoot 相对于 SSM 来说已经很大程度上简化了开发&#xff0c;但是使用 SpringBoot 集成一些第三方的框架&#xff0c;还是需要花费一些…

Seata使用详解

分布式事务介绍分布式事务的优缺点CAP理论介绍Base理论介绍CAP和BASE之间有什么区别Seata介绍Seata支持的事务模式介绍Seata的架构Seata应用场景Seata集群部署Seata集群部署的优缺点Seata在Java中的使用案例Seata在Java中的代码示例Seata与SpringBoot2.x的整合Seata与SpringBoo…

SpringIOC之BeanExpressionContextAccessor

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

NXP应用随记(六):S32K3xx的时钟与PIN简介

目录 1、S32K3基础时钟 1.1、关键功能 1.2、时钟产生模块 1.3、系统时钟 1.4、模式输入模块 1.5、时钟监控模块 2、S32DS时钟与外设配置工具 2.1、创建一个PIT模块 3、IO配置 3.1、IO资源分析 3.2、IO配置工具 1、S32K3基础时钟 S32K3有五个时钟源 1、快速内部 RC 晶…

0基础学java-day22(多用户即时通信系统)

一、QQ 聊天项目演示 聊天通讯系统 在运运行过程出现的异常&#xff0c;应该是类的序列化不一致导致的 1 项目 QQ 演示 2 为什么选择这个项目 只做核心部分&#xff0c;界面相对弱化 3 项目开发流程 3.1 需求分析 3.2 界面设计 3.2.1 用户登录 3.2.2 拉取在线用户列表 …

【C++】对象特性:无参有参构造函数,拷贝构造函数,析构函数

目录 对象的初始化和清理1.1 构造函数和析构函数1.2 构造函数的分类及调用1.3 拷贝构造函数调用时机1.4 构造函数调用规则1.5 深拷贝与浅拷贝 对象的初始化和清理 生活中我们买的电子产品都基本会有出厂设置&#xff0c;在某一天我们不用时候也会删除一些自己信息数据保证安全。…

再看参数校验

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 写一个接口&#xff0c…

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜D

先看目录&#xff0c;除了2018年比较怪&#xff0c;其他最多2个D&#xff08;数学只有两个弟弟&#xff0c;一个大弟&#xff0c;一个小弟&#xff09; 文章目录 2023真题&#xff08;2023-16&#xff09;-D 2022真题&#xff08;2022-21&#xff09;-D-分析选项⇒是否等价⇒是…

issue阶段的选择电路的实现

1-of-M的仲裁电路 为什么要实现oldest-first 功能的仲裁呢&#xff1f; 这是考虑到越是旧的指令&#xff0c;和它存在相关性的指令也就越多&#xff0c;因此优先执行最旧的指令&#xff0c;则可以唤醒更多的指令&#xff0c;能够有效地提高处理器执行指令的并行度,而且最旧的指…

urllib2 HTTP头部注入

文章目录 注入原理例题 [SWPU 2016]web7 注入原理 参考文章 应用场景是具有SSRF漏洞&#xff0c;结合CRLF注入 我们以redis数据库为例&#xff0c;当存在SSRF时我们伪造以下请求 http://127.0.0.1%0d%0aCONFIG%20SET%20dir%20%2ftmp%0d%0aCONFIG%20SET%20dbfilename%20evil%…

扑克牌炸金花

1.创建类 使用权限修饰符定义所需要参数&#xff0c;使用this关键字生成方法 public class gamejinhua { private String suit;//花色 private int rank;//数字 public gamejinhua(String suit, int rank) { this.suit suit; this.rank rank; } 2.使用快捷键生成get和…

车载软件易受攻击,如何规避嵌入式软件漏洞

在汽车开发中&#xff0c;汽车网络安全至关重要&#xff0c;特别是现在汽车软件变得日益互联。阅读本文&#xff0c;了解如何预防汽车网络安全漏洞。 为什么汽车网络安全很重要&#xff1f; 如今&#xff0c;互联汽车的解决方案远不只有简单的从A点到B点。通过实时数据共享、应…

RK3399平台开发系列讲解(内核入门篇)网络协议的分层

🚀返回专栏总目录 文章目录 一、应用层二、传输层三、网络层四、数据链路层(Data Link Layer)五、物理层沉淀、分享、成长,让自己和他人都能有所收获!😄 📢对于多数的应用和用户而言,使用互联网的一个基本要求就是数据可以无损地到达。用户通过应用进行网络通信࿰

【数组Array】力扣-1109 航班预订统计

目录 题目描述 解题过程 题目描述 这里有 n 个航班&#xff0c;它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings &#xff0c;表中第 i 条预订记录 bookings[i] [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti &#xff08;包含 firsti 和 lasti &#xff…

从 MySQL 到 DolphinDB,Debezium + Kafka 数据同步实战

Debezium 是一个开源的分布式平台&#xff0c;用于实时捕获和发布数据库更改事件。它可以将关系型数据库&#xff08;如 MySQL、PostgreSQL、Oracle 等&#xff09;的变更事件转化为可观察的流数据&#xff0c;以供其他应用程序实时消费和处理。本文中我们将采用 Debezium 与 K…