卷积神经网络-从零开始构建一个卷积神经网络
目录
一、什么是卷积神经网络CNN
1.1、核心概念
1.2、卷积层
二、什么是卷积计算
2.1、卷积计算的例子:
2.2、点积
2.3、卷积与点积的关系
2.4、Padding(填充)
2.4.1、Padding的主要作用
1、控制输出特征图尺寸
2、保留边缘信息
3. 支持深层网络训练
2.4.2、Stride
2.5、多通道卷积计算
2.6、多卷积核卷积计算
2.6.1、基本工作原理
2.6.2、具体操作方法
2.7、特征图大小
三、卷积核是如何检测特定模式或特征的?
3.1、边缘检测的原理
3.2、不同类型的特征检测
3.3、卷积层API
四、池化层
4.1、什么是池化层
4.2、如何进行池化层的计算
4.3、多通道池化计算
4.4、池化层API
五、图像分类案例
5.1、CIFAR10 数据集
5.2、搭建图像分类网络
5.3、编写训练函数
5.4、加载训练好的模型
5.5、模型优化
1. 增加卷积核输出通道
2. 增加全连接层的参数量
3. 调整学习率
4. 调整优化方法
5. 修改激活函数
6、其他重要改进
一、什么是卷积神经网络CNN
1.1、核心概念
卷积神经网络(Convolutional Neural Network)是含有卷积层的神经网络,卷积层的作用是用来自动学习,提取图像特征,CNN网络主要由三部分构成:卷积层,池化层和全连接成构成:
- 卷积层负责提取图像中的局部特征;
- 池化层用来大幅降低参数量级(降维);
- 全连接层用来输出想要的结果。
1.2、卷积层
主要功能是通过卷积运算从输入数据中提取特征,卷积层使用一组科学系的滤波器(filters)或者卷积核(kernels),这些滤波器在输入数据上滑动并计算卷积,每个滤波器会检测输入数据中的特定模式,如边缘,纹理等,主要参数:
- 滤波器大小:通常为3×3、5×5等
- 步长(stride):滤波器每次移动的像素数
- 填充(padding):在输入边缘添加像素以控制输出尺寸
卷积核其实就是一个小的数值矩阵,通常是正方形,比如3*3,5*5等大小,这个矩阵中的每个数值都是可以学习和调整的参数
- 如果卷积核是3×3大小,那它就像一个小窗口,一次只能看到图像的一小部分(3×3像素区域)
- 这个窗口在整个图像上滑动,每到一个位置就计算一次"匹配度"(点积)
在神经网络中,卷积核的值不是手动设计的,而是通过训练自动学习的
二、什么是卷积计算
卷积是数学中的一种特殊运算,在信号处理和深度学习领域有广泛的应用,
- 开始时,卷积核的值是随机初始化的
- 网络通过大量图像进行训练
- 根据任务的需要,卷积核的值会被逐渐调整
- 训练完成后,第一层的卷积核通常会学习到边缘、纹理等低级特征
- 更深层的卷积核则会学习到更复杂的特征,如眼睛、鼻子、轮廓等
在图像处理和卷积神经网络中,使用的是二位离散卷积:
(I * K)[i,j] = ∑∑ I[i+m,j+n]K[m,n]
卷积计算是:
- 将卷积核翻转180度
- 将翻转后的卷积核在输入数据上滑动
- 在每个位置计算卷积核与对应输入区域的元素乘积之和
在卷积神经网络中实际使用的是互相关(cross-correlation)而非严格数学定义的卷积,区别在于互相关不需要翻转卷积核
2.1、卷积计算的例子:
假设我们有一个5×5的输入矩阵和一个3×3的卷积核:
输入;
1 2 3 1 2
3 1 2 1 3
2 3 1 2 1
1 2 3 1 2
3 1 2 1 3
卷积核:
1 0 1
0 1 0
1 0 1
计算单个输出位置的值,例如输出的[0,0]位置:
- 取输入的左上角3×3区域
- 将其与卷积核对应元素相乘后求和
- 结果为: 1×1 + 2×0 + 3×1 + 3×0 + 1×1 + 2×0 + 2×1 + 3×0 + 1×1 = 8
2.2、点积
在代数形式中,点积等于对应元素的乘积和:
A·B = a₁×b₁ + a₂×b₂ + ... + aₙ×bₙ
点积可以理解为:
- 一个向量在另一个向量方向上的投影长度与另一向量长度的乘积
- 两个向量相似度的度量(夹角余弦)
- 对应位置元素乘积的总和
假设有两个三维向量:
- A = [2, 3, 4]
- B = [1, 5, 2]
它们的点积为:
A·B = 2×1 + 3×5 + 4×2 = 2 + 15 + 8 = 25
2.3、卷积与点积的关系
在卷积运算中,我们实际上是在计算卷积核与输入的局部区域之间的点积:
- 卷积核可以视为一个向量(将矩阵展平)
- 输入的每个局部区域也可以视为一个向量
- 卷积结果中的每个元素是对应局部区域与卷积核的点积
总的来说,点积是卷积计算的基础操作,而卷积则是在不同位置重复应用点积的过程,用于检测输入数据中的局部模式或特征
2.4、Padding(填充)
Padding是指在输入数据(通常是图像)的边缘的周围添加额外的像素值,再进行卷积操作,在卷积操作中,卷积核(滤波器)会在输入上滑动并计算卷积值,当卷积核位于边缘时,如果不使用padding,卷积核会“悬空”,无法完全覆盖输入数据,导致输出特征图的尺寸小于输入,padding最常见的填充值是0(zero padding)
2.4.1、Padding的主要作用
1、控制输出特征图尺寸
Padding最重要的作用是控制卷积操作后输出特征图的空间尺寸
如果不适用padding,输出特征图的尺寸会按照以下公式计算:
输出尺寸 = (输入尺寸 - 卷积核尺寸) / 步长 + 1
例如,对于32×32的输入图像,使用5×5的卷积核和步长为1时,输出特征图将是28×28。
而当添加padding后,可以保持输出特征图与输入相同尺寸("Same padding"),计算公式为:
padding = (卷积核尺寸 - 1) / 2 (当步长为1时)
2、保留边缘信息
不使用padding时,图像边缘的像素只被卷积操作使用一次,而中心区域的像素则被多次使用,这导致模型对边缘信息的学习不足。
添加padding后,边缘像素参与的卷积计算次数增加,使得模型能够更好地保留和学习图像边缘的特征信息,提高特征提取的效果。
3. 支持深层网络训练
在深层CNN中,如果每次卷积都不使用padding,特征图的尺寸会迅速减小,可能只经过几层就变得很小,限制了网络的深度。
使用padding可以保持特征图尺寸,使得我们能够构建更深的网络架构,从而学习更复杂的特征表示。
2.4.2、Stride
按照步长为1来移动卷积核,计算特征图:
如果把Stride增大为2,也可以提取特征图:
2.5、多通道卷积计算
实际中的图像是几多个通道组成的,多通道卷积就是使用一组滤波器(filter)在多个通道上同时滑动,每个滤波器负责检查自己对应的那一层,每个滤波器在各自位置上计算卷积,然后将各自卷积计算的值相加,得到一个新的特征图
2.6、多卷积核卷积计算
当使用多个卷积核进行特征提取时,每个卷积核就像是一个专门的"探测器",负责寻找输入数据中的不同模式或特征
2.6.1、基本工作原理
使用多个卷积核时,特征提取的过程是这样的:
- 并行探测:每个卷积核独立地在输入数据上滑动,生成自己的特征图。
- 特征图集合:假设有N个卷积核,就会产生N个特征图,每个特征图代表输入数据中一种特定的特征。
- 特征整合:这N个特征图组合在一起,形成下一层的输入,包含了丰富的特征信息
2.6.2、具体操作方法
- 卷积核设计:
-
- 使用不同初始权重的多个卷积核
- 每个卷积核尺寸通常相同,但内部权重不同
- 常见的卷积核数量从几个到几百个不等
- 特征图生成:
-
- 每个卷积核产生一个特征图
- 如果有64个卷积核,就会得到64个特征图
- 批量规范化和激活:
-
- 对特征图应用批量规范化使训练更稳定
- 通过ReLU等激活函数引入非线性
- 特征组合:
-
- 将所有特征图在通道维度上堆叠
- 得到的多通道输出传递给下一层
多个卷积核工作就像多个专家同时分析同一个问题
- 有的卷积核可能专注于检测边缘
- 有的可能擅长识别纹理
- 有的可能对特定颜色变化敏感
- 有的可能检测特定形状
通过这种"集体智慧"的方式,网络能够提取更全面、更丰富的特征信息,为后续的分类或检测任务提供更好的基础。
2.7、特征图大小
输出特征图的大小与以下参数息息相关:
- size: 卷积核/过滤器大小,一般会选择为奇数,比如有 11 、33、5*5
- Padding: 零填充的方式
- Stride: 步长
计算方法:
- 输入图像大小: W x W
- 卷积核大小: F x F
- Stride: S
- Padding: P
- 输出图像大小: N x N
相关文章:
卷积神经网络-从零开始构建一个卷积神经网络
目录 一、什么是卷积神经网络CNN 1.1、核心概念 1.2、卷积层 二、什么是卷积计算 2.1、卷积计算的例子: 2.2、点积 2.3、卷积与点积的关系 2.4、Padding(填充) 2.4.1、Padding的主要作用 1、控制输出特征图尺寸 2、保留边缘信息 3. 支持深层网络训练 2.4.2、Str…...
Linux 常用命令集合
以下是一份 Linux 常用命令集合,涵盖文件操作、系统管理、网络管理、权限管理、进程管理等常见任务,并附上代码示例: 1. 文件与目录操作 命令作用示例ls列出目录内容ls -l(详细列表) ls -a(显示隐藏文件&a…...
STM32f103 标准库 零基础学习之按键点灯(不涉及中断)
注意,此次代码不涉及中断,不涉及中断,不涉及中断 目录 1.初始化LED 2.初始化按键 3.粗略的延时函数 4.判断引脚电平 5.通过异或反转电平 开始 │ ├── 初始化LED(GPIOA Pin1 推挽输出) ├── 初始化按键&…...
【c++】【数据结构】二叉搜索树详解
目录 二叉搜索树的定义二叉搜索树的模拟实现查找函数循环版递归版 插入函数循环版递归版 删除函数循环版递归版 二叉搜索树的定义 二叉搜索树是一种特别的二叉树,是二叉树的搜索特化版。学过排序的都知道,在数组有序的情况下二分查找可以以极高的频率找…...
高精地图数据错误的侵权责任认定与应对之道
首席数据官高鹏律师团队 在自动驾驶与智慧交通快速发展的今天,高精地图作为核心基础设施,其数据准确性直接关系到公共安全。然而,技术并非完美,一旦因地图数据错误导致事故或损失,比如当自动驾驶汽车因高精地图数据错…...
Python训练营打卡——DAY22(2025.5.11)
复习日 学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 泰坦尼克号——来自灾难的机器学习 数据来源: kaggle泰坦里克号人员生还预测 挑战 泰坦尼克号沉没是历史上最臭名昭著的海难之一。 1912年4月15日,在被普…...
【计算机视觉】OpenCV实战项目 :Image_Cartooning_Web_App:基于深度学习的图像卡通化
Image_Cartooning_Web_App:基于深度学习的图像卡通化Web应用深度解析 1. 项目概述2. 技术原理与模型架构2.1 核心算法2.2 系统架构 3. 实战部署指南3.1 环境配置3.2 模型部署3.3 处理流程示例 4. 常见问题与解决方案4.1 模型加载失败4.2 显存溢出4.3 边缘伪影 5. 关…...
王道计算机网络知识点总结
计算机网络知识点总结 一、计算机网络体系结构 (一)计算机网络概述 计算机网络概念:互连的、自治的计算机系统的集合,目的是资源共享,组成包括多台自治计算机,规则是网络协议。 计算机网络的组成&#…...
Java学习笔记(对象)
一、对象本质 状态(State):通过成员变量(Field)描述 行为(Behavior):通过成员方法(Method)实现 class Person {String name;int age;void eat() {System.o…...
并发笔记-给数据上锁(二)
文章目录 核心挑战 (The CRUX)29.1 并发计数器 (Concurrent Counters)1. 简单非并发计数器 (Figure 29.1)2. 同步计数器(单锁版本 - Coarse-Grained Lock, Figure 29.2)3. 可伸缩计数:近似/懒惰计数器 (Approximate/Sloppy Counter, Figure 2…...
Three.js + React 实战系列 - 页脚区域 Footer 组件 ✨
对个人主页设计和实现感兴趣的朋友可以订阅我的专栏哦!!谢谢大家!!! 为个人主页画上完美句号:设计一个美观实用的页脚组件 在完成 Hero、About、Projects、Contact 等模块后,我们为整个页面添上…...
基于Flask、Bootstrap及深度学习的水库智能监测分析平台
基于Flask、Bootstrap及深度学习的水库智能监测分析平台 项目介绍 本项目是基于Flask框架构建的水库智能监测分析平台,集水库数据管理、实时监测预警、可视化分析和智能预测功能于一体。 预测水位的预警级别:蓝色预警没有超过正常水位且接近正常水位1米…...
JavaSE核心知识点02面向对象编程02-08(异常处理)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 JavaSE核心知识点02面向对象编程02-08&#…...
7系列 之 SelectIO 资源
背景 《ug471_7Series_SelectIO.pdf》介绍了Xilinx 7 系列 SelectIO 的输入/输出特性及逻辑资源的相关内容。 第 1 章《SelectIO Resources》介绍了输出驱动器和输入接收器的电气特性,并通过大量实例解析了各类标准接口的实现。 第 2 章《SelectIO Logic Resource…...
【目标检测系列】YOLOV1解读
目标检测系列文章 目录 目标检测系列文章📄 论文标题🧠 论文逻辑梳理1. 引言部分梳理 (动机与思想) 📝 三句话总结🔍 方法逻辑梳理🚀 关键创新点🔗 方法流程图关键疑问解答Q1: 关于 YOLOv1 中的 "conf…...
GIF图像技术介绍
以下是对GIF格式的详细介绍,涵盖其定义、发展历程、技术特性、应用场景及与其他格式的对比: 一、GIF的定义与起源 GIF(Graphics Interchange Format,图形交换格式)由美国CompuServe公司于1987年推出,旨在解决早期互联网带宽不足的问题。其开发者Steve Wilhite采用LZW无损…...
【TI MSPM0】CCS工程管理
一、关于WORKSPACE 1.导入工程路径 导入工程时,实际是将工程从原路径复制到了Workspace路径下(默认是在C盘user路径下) 2.工程保存备份 关于工程的保存,可以右击文件夹,点击Reveal打开文件夹 将对应的文件夹进行复…...
牛客周赛 Round 92-题解
牛客周赛 Round 92-题解 A-小红的签到题 code #include<iostream> #include<string> using namespace std; string s; int main() {int n;cin >> n;cout << "a_";for (int i 0; i < n - 2; i )cout << b;return 0; }B-小红的模…...
iVX 图形化编程平台:结合 AI 原生开发的革新与实践
一、技术架构:重构 AI 与编程的交互逻辑 1. 信息密度革命:从线性代码到图形化语义单元 传统文本编程存在显著的信息密度瓶颈。以 "按钮点击→条件判断→调用接口→弹窗反馈" 流程为例,Python 实现需定义函数、处理缩进并编写 30 …...
微服务架构中如何保证服务间通讯的安全
在微服务架构中,保证服务间通信的安全至关重要。服务间的通信通常是通过HTTP、gRPC、消息队列等方式实现的,而这些通信链路可能面临多种安全风险。为了应对这些风险,可以采取多种措施来保证通信安全。 常见的服务间通信风险 1.数据泄露:在服务间通信过程中,敏感数据可能会…...
长短期记忆网络(LSTM)深度解析:从理论到实践的全方位指南
一、LSTM基础理论:超越传统RNN的记忆架构 1.1 RNN的长期依赖问题 传统循环神经网络(RNN)在处理长序列时面临的根本挑战是梯度消失/爆炸问题。当序列长度超过10-20个时间步时,RNN难以学习到早期时间步的信息。数学上,这源于反向传播过程中梯度的链式法则: 复制 下载 ∂…...
FramePack AI图片生成视频 v1.1 整合包
今天,我兴奋地要为大家介绍一款革命性的AI工具——FramePack,这是一个让人眼前一亮的图生视频整合包。想象一下,在2025年5月11日的今天,哪怕你的电脑显存仅有6G,你也可以轻松创造艺术! FramePack的神奇之处…...
在 C++中,指针数组与数组指针的区别
1. 指针数组:本质上是一个数组,数组中的每个元素都是一个指针。也就是说,这个数组存储的是多个指针变量,这些指针可以指向不同的对象(比如不同的变量、数组等) 。 2. 数组指针:本质上是一个指针,这个指针指向一个数组。即它指向的是数组的首地址,通过这个指针可以操作…...
Ubuntu 24服务器部署abp vnext应用程序的完整教程
一、服务器配置 1、安装Nginx 2、安装.NetCore SDK 或.NetCore 运行时 以上两步参考 《UbuntuNginxSupervisord部署.net core web应用程序_nginx部署netcore-CSDN博客》 二、abp vnext程序部署 1、程序发布 使用VS进行发布 2、程序上传 使用winSCP工具 3、openiddict…...
Ingrees 控制器与 Ingress 资源的区别
在 Kubernetes 中,单纯的 Ingress 资源定义文件(YAML)本身不会直接创建 Pod。Ingress 的作用是定义路由规则(如将外部流量路由到集群内的服务),而实际处理流量的 Pod 是由 Ingress 控制器(如 Ng…...
动态路由实现原理及前端控制与后端控制的核心差异
在 Web 开发领域,动态路由是构建灵活、高效应用的关键技术之一。它能够根据不同的条件和请求,动态地决定页面的跳转和数据的加载,极大提升用户体验。本文将深入剖析动态路由的实现原理,并详细探讨前端控制和后端控制两种模式的最大…...
stm32 WDG看门狗
目录 stm32 WDG看门狗一、WDG基础知识1)WDG(Watchdog)看门狗简介 二、IWDG独立看门狗1)IWDG键寄存器2)IWDG超时时间 三、WWDG窗口看门狗1)WWDG框图2)WWDG工作特性3)WWDG超时时间4&am…...
MySQL索引详解(下)(SQL性能分析,索引使用)
索引是MySQL性能优化的核心,但如何精准分析查询瓶颈、合理设计索引,是开发者必须掌握的技能。本文结合实战案例,系统讲解SQL性能分析工具链与索引使用技巧,帮助读者构建高性能数据库系统。 一、SQL性能分析:从宏观到微…...
添加文字标签
上节我们学会了如何在地图中标记位置,那么可不可以为地图添加文字注释呢?答案是肯定的,我们依旧以广州塔为例. //添加文字标签和广告牌var label viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(113.3191,23.109,100),label:{text:"广州塔",font:&…...
数据并行基础概念知识
架构分为PS与ring-allreduce;方法主要是zero系列zeroDP123、ZeroR 、Zero-offerload、Zero-Infinite、Zero 相关博客介绍的很清楚,在这里总结一下 图解系列很通透,通俗易懂1 更详细的介绍后面几种方式,提供动图链接2 提供混合精度…...
Linux系列(3)----用户和用户组管理、系统管理
声明: 本文参考 ❤️肝下25万字的《决战Linux到精通》笔记,你的Linux水平将从入门到入魔❤️【建议收藏】_linux笔记 小小明-CSDN博客 不理解的命令需要自己操作一遍 方可理解 不知道怎么租用服务器并链接的看这个文章 如何租用服务器并通过ssh连接…...
【沉浸式求职学习day36】【初识Maven】
沉浸式求职学习 Maven1. Maven项目架构管理工具2.下载安装Maven3.利用Tomcat和Maven进入一个网站 Maven 为什么要学习这个技术? 在Java Web开发中,需要使用大量的jar包,我们手动去导入,这种操作很麻烦,PASS!…...
Nipype 简单使用教程
Nipype 简单使用教程 基础教程**一、Nipype 核心概念与工作流构建****1. 基本组件****2. 工作流构建步骤** **二、常用接口命令速查表****1. FSL 接口****2. FreeSurfer 接口****3. ANTS 接口****4. 数据处理接口** **三、高级特性与最佳实践****1. 条件执行(基于输…...
DA14585墨水屏学习(2)
一、user_svc2_wr_ind_handler函数 void user_svc2_wr_ind_handler(ke_msg_id_t const msgid,struct custs1_val_write_ind const *param,ke_task_id_t const dest_id,ke_task_id_t const src_id) {// sprintf(buf2,"HEX %d :",param->length);arch_printf("…...
【LeetCode Hot100 | 每日刷题】排序数组
912. 排序数组 - 力扣(LeetCode) 题目: 给你一个整数数组 nums,请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。 示例 1&…...
leetcode热题100——day26
21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 AC代码 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # …...
Python httpx库终极指南
一、发展历程与技术定位 1.1 历史演进 起源:httpx 由 Encode 团队开发,于 2019 年首次发布,目标是提供一个现代化的 HTTP 客户端,支持同步和异步操作,并兼容 HTTP/1.1 和 HTTP/2。背景: requests 库虽然功…...
#Redis黑马点评#(五)Redisson详解
目录 一 基于Redis的分布式锁优化 二 Redisson 1 实现步骤 2 Redisson可重入锁机制 3 Redisson可重试机制 4 Redisson超时释放机制 5 RedissonMultiLock解决主从一致性 三 Redis优化秒杀 一 基于Redis的分布式锁优化 二 Redisson Redisson是一个在Redis的基础上实现的…...
redis存储结构
一、存储结构 存储转换: string int:字符串长度 ≤ 20 且能转成整数raw:字符串长度 > 44embstr:字符串长度 ≤ 44附加:CPU 缓存中基本单位为 cacheline 64 字节 list quicklist(双向链表)zi…...
wordpress自学笔记 第三节 独立站产品和类目的三种展示方式
wordpress自学笔记 摘自 超详细WordPress搭建独立站商城教程-第三节 独立站产品和类目的三种展示方式,2025 WordPress搭建独立站教程#WordPress建站教程https://www.bilibili.com/video/BV1rwcteuETZ?spm_id_from333.788.videopod.sections&vd_sourcea0af3b…...
Python 自动化脚本开发秘籍:从入门到实战进阶(6/10)
摘要:本文详细介绍了 Python 自动化脚本开发的全流程,从基础的环境搭建到复杂的实战场景应用,再到进阶的代码优化与性能提升。涵盖数据处理、文件操作、网络交互、Web 测试等核心内容,结合实战案例,助力读者从入门到进…...
封装和分用(网络原理)
UDP/TCP协议知识及相关机制 优质好文推荐👆👆 我们如果想要了解封装与分用,先需要了解TCP/IP五层协议~~ 该图的右边就是TCP/IP五层协议~~需要先理解一下各层是什么含义~ 应用层:直接为用户应用程序提供网络服务和通信协议。它定…...
MySQL数据库容灾设计案例与SQL实现
MySQL数据库容灾设计案例与SQL实现 一、主从复制容灾方案 1. 配置主从复制 -- 在主库执行(创建复制账号) CREATE USER repl_user% IDENTIFIED BY SecurePass123!; GRANT REPLICATION SLAVE ON *.* TO repl_user%;-- 查看主库状态(记录File…...
各类有关NBA数据统计数据集大合集
这些数据我已上传大家在CSDN上直接搜索就可以! 一、【2022-2023 NBA球员统计】数据集 关键词: 篮球 描述: 语境 该数据集每场比赛包含2022-2023常规赛NBA球员统计数据。 请注意,由团队更改产生了重复的球员名称。 * [2021-2022 NBA播放器统计]&#…...
【基于 LangChain 的异步天气查询5】多轮对话天气智能助手
目录 项目概述 1. 天气查询功能 2. 多轮对话与聊天 3. 语音输入与输出 4. 历史记录管理 5. 项目结构 6. 核心功能流程 7. 项目特色 🗂️ 项目目录结构 📄 chat_runnable.py 📄 main.py 📄 history_manager.py 📄 weather_runnable.py 📄 tools.py �…...
图片转ICO图标工具
图片转ICO图标 可批量操作 下载地址: 链接:https://pan.quark.cn/s/6312c565ec98 这个工具是一个批量图片转ICO图标的神器,有了它,以后再也不用为ICO格式的转换烦恼!而且这个软件特别小巧,完全不用安装。…...
istio in action之服务网格和istio组件
微服务和服务网格 微服务 微服务将大系统拆解成一个个独立的、小型的服务单元。每个服务可以独立部署、快速迭代,团队可以自主决策,大大降低了变更风险。当然,微服务不是万能药,它需要强大的自动化和DevOps实践作为支撑。而Isti…...
5 从众效应
引言 有一个成语叫做三人成虎,意思是说,有三个人谎报市上有老虎,听者就信以为真。这种人在社会群体中,容易不加分析地接受大多数人认同的观点或行为的心理倾向,被称为从众效应。 从众效应(Bandwagon Effec…...
超市销售管理系统 - 需求分析阶段报告
1. 系统概述 超市销售管理系统是为中小型超市设计的信息化管理解决方案,旨在通过信息化手段实现商品管理、销售处理、库存管理、会员管理等核心业务流程的数字化,提高超市运营效率和服务质量,同时为管理者提供决策支持数据。 2. 业务需求分…...
懒人美食帮SpringBoot订餐系统开发实现
概述 快速构建一个订餐系统,今天,我们将通过”懒人美食帮”这个基于SpringBoot的订餐系统项目,为大家详细解析从用户登录到多角色权限管理的完整实现方案。本教程特别适合想要学习企业级应用开发的初学者。 主要内容 1. 用户系统设计与实现…...