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

一文弄懂梯度下降算法

1、引言

在上一篇文章中,我们介绍了如何使用线性回归和成本损失函数为房价数据找到最拟合的线。不过,我们也看到,测试多个截距值可能既繁琐又低效。在本文中,我们将深入探讨梯度下降算法,这是一种更加强大的技术,可以帮助我们找到完美的截距并进而优化模型。我们将探究其背后的数学原理,看看如何将其应用到线性回归问题中。

闲话少说,我们直接开始吧!

2、梯度下降

梯度下降是一种强大的优化算法,旨在快速有效地找到曲线的最低点。将这一过程形象化的最佳方式就是想象你站在山顶,山谷中有一个装满黄金的宝箱在等着你。

在这里插入图片描述

然而,山谷的确切位置却不得而知,因为外面一片漆黑,什么也看不见。此外,你还想赶在其他人之前到达山谷(因为您想独自拥有所有宝藏)。梯度下降算法可以帮助你驾驭地形,高效快速地到达最佳点。在每个点上,它都会告诉你需要走多少步,朝哪个方向走。

同样,梯度下降算法的处理步骤也可以应用于线性回归问题。为了直观地展示寻找最小值的过程,让我们绘制 MSE 曲线。我们已经知道该曲线的方程为:
在这里插入图片描述

从上一篇文章中,我们知道问题中的 MSE 方程为:
在这里插入图片描述

如果我们把视角放大,就会发现在上式中代入一系列截距值,就能得到一条 MSE 曲线(与我们的山谷相似)。因此,让我们输入 10,000 个截距值,就能得到这样一条曲线:
在这里插入图片描述

我们的目标是达到 MSE 曲线的底部,我们可以通过下面的来步骤实现这一目标。

3、步骤一:随机初始化

在这种情况下,我们可以从截距值随机初始化开始,这里假设我们最初猜测的截距值为 0。

4、 步骤二:计算梯度值

曲线在某一点处的梯度值用该点的切线表示(切线是曲线在该点与曲线相切的一种特殊说法)。例如,在 A 点,当截距等于 0 时,MSE 曲线的梯度可用红色切线表示。

在这里插入图片描述

为了确定具体梯度值,我们需要运用微积分的知识。具体来说,梯度等于曲线相对于给定点截距的导数,计算公式表示为:
在这里插入图片描述

我们据此,计算 MSE曲线在截距为零处的导数如下:
在这里插入图片描述

现在,为了求出在A点的梯度,我们将 A 点的截距值代入上式。由于截距 = 0,所以 A 点的导数为:
在这里插入图片描述

因此,当截距为0时,梯度值为-190。

注意:当我们接近最佳值时,梯度值将趋近于零。在最佳值处,梯度值等于零。相反,离最佳值越远,梯度值越大

由此我们可以推断,步长应该与梯度有关,因为梯度会告诉我们应该迈小步还是大步。这意味着,当曲线的梯度值接近 0 时,我们就应该迈小步,因为我们已经接近最优值了。而如果梯度较大,我们就应该迈大步,以便更快地达到最优值。

注意:如果我们迈出了超级大的一步,那么我们可能会跳得很大,错过最佳点。因此,我们需要小心谨慎。

在这里插入图片描述

5、步骤三:更新

由于我们看到步长和梯度成正比,因此步长是通过梯度乘以一个预先确定的常量值(称为学习率)来确定的:
在这里插入图片描述

学习率控制步长的大小,确保步长不会过大或过小。

实际上,学习率通常是一个小正数,即 ≤ 0.001。但对于我们的问题,让我们把它设为 0.1。

因此,当截距为 0 时,计算步长公式为:

在这里插入图片描述

根据上述计算出的步长,我们使用以下任何一个等效公式更新截距(又称更改当前位置):

在这里插入图片描述

要在这一步中找到新的截距,我们只需要代入相关的值,如下:

在这里插入图片描述

求解得到新的截距 = 19。现在将这个值代入MSE 等式,我们会发现截距为 19 时的 MSE = 8064.095。我们又一步就接近了最佳值,降低了 MSE。

在这里插入图片描述

即使观察我们的图表,也会发现截距为 19 的新直线比截距为 0 的旧直线更适合我们的数据,如下:

在这里插入图片描述

6、步骤四:重复

接着我们使用更新后的截距值来重复步骤 2 和 3。

例如,由于本次迭代的新截距值为 19,因此在步骤 2 之后,我们将计算这一新点的梯度:
在这里插入图片描述

我们发现,在截距值 19 处,MSE 曲线的梯度为-152(如下图中红色切线所示)。

在这里插入图片描述

接下来,根据步骤 3,我们来计算步长:
在这里插入图片描述

随后,更新截距值:
在这里插入图片描述

现在,我们可以将截距为 19 的直线与截距为 34.2 的新直线进行比较,如下:
在这里插入图片描述

我们可以看到,新的直线更加符合数据的分布。总体而言,MSE 越来越小。
在这里插入图片描述

而我们的步长却越来越小:
在这里插入图片描述

我们反复重复这一过程,直到趋近于最优解:
在这里插入图片描述

当我们向曲线的最小点前进时,我们发现步长越来越小。13 步之后,梯度下降算法估计截距值为 95,这将被确认为 MSE 曲线的最小点。很明显,这种方法比我们在上一篇文章中看到的 "暴力 "方法更有效。

现在我们有了截距的最佳值,线性回归模型就应该是这样:
在这里插入图片描述

线性回归方程线可视化是这样的:
在这里插入图片描述

最佳拟合线,截距=95,斜率=0.069

最后,回到马克朋友的问题–他的 2400 平方英尺的房子应该卖多少钱?
在这里插入图片描述

将 2400 平方英尺的房屋面积代入上式,计算结果如下:

在这里插入图片描述

然后就可以了。我们可以告诉我们这位杞人忧天的朋友马克,根据他所在社区的 3 所房子的情况,他应该以 26.06 万美元左右的价格出售自己的房子。

7、 为什么梯度下降有用?

为了说明这一点,请考虑这样一种情况:我们试图到达曲线 C 的最小点,记为 x*。而我们目前在 A 点,位于 x* 的左边:
在这里插入图片描述

如果我们求出曲线在 A 点相对于 x 的导数(表示为 dC(x)/dx),会得到一个负值(这意味着梯度是向下倾斜的)。我们还观察到,我们需要向右移动才能到达 x*。因此,我们需要增加 x 才能达到最小值 x*。
在这里插入图片描述

由于 dC(x)/dx 为负值,x-𝛂*dC(x)/dx 将大于 x,从而向 x* 移动。

同样,如果我们位于最小点 x* 右侧的 A 点,那么我们会得到一个正梯度(梯度向上倾斜),即 dC(x)/dx

在这里插入图片描述

因此, x-𝛂*dC(x)/dx 将小于 x,从而向 x* 移动。

8、梯度下降什么时候停止?

因此,当某一点的梯度接近 0 或在最小点附近时,步长也将接近 0,表明算法已达到最优解。
在这里插入图片描述

当我们接近最小点时,梯度接近 0,因此步长也接近 0

通常,最小步长 = 0.001 或更小

在这里插入图片描述

尽管如此,梯度下降法也有一个在终止前的步数限制,称为 “最大步数”。

通常,最大步数 = 1000 或更大

因此,即使步长大于最小步长,如果步数超过最大步数,梯度下降算法也会停止。

9、多个局部最优解

到目前为止,我们一直在处理一条很容易确定最小点的曲线(这类曲线称为凸曲线)。但如果我们有一条不那么漂亮的曲线(技术上又称非凸曲线),看起来像这样呢?
在这里插入图片描述

在这里,我们可以看到 B 点是全局最小值(实际最小值),而 A 点和 C 点是局部最小值(可能会被混淆为全局最小值的点,但其实不是)。因此,如果一个函数有多个局部最小值和一个全局最小值,并不能保证梯度下降一定能找到全局最小值。此外,找到哪个局部最小值还取决于初始猜测的位置(如梯度下降的步骤 1 所示)。

在这里插入图片描述

以上面这条非凸曲线为例,如果初始猜测点位于block A 或block C,梯度下降算法会宣布最小点分别位于局部最小点 A 或 C,而实际上它应该位于 B。

现在的问题是,我们如何做出正确的初始化猜测?

答案并不简单:从上图中可以看出,如果我们对 x 的最小值猜测是 0,因为它位于图块 A 中,那么它将导致局部最小值 A 的出现。此外,如果可行的话,使用不同的初始化猜测运行算法并比较其结果,可以让我们了解猜测之间是否存在显著差异。这有助于更有效地确定全局最小值。

10、总结

本文重点介绍了如何利用梯度下降法来求解线性回归问题,并给出了详细的图例说明。

您学废了吗?

相关文章:

一文弄懂梯度下降算法

1、引言 在上一篇文章中,我们介绍了如何使用线性回归和成本损失函数为房价数据找到最拟合的线。不过,我们也看到,测试多个截距值可能既繁琐又低效。在本文中,我们将深入探讨梯度下降算法,这是一种更加强大的技术&…...

确认偏差:金融市场交易中的隐形障碍

确认偏差,作为一种深刻影响交易员决策与表现的心理现象,其核心在于个体倾向于寻求与既有信念相符的信息,而自动过滤或轻视与之相悖的资讯。这种认知偏见严重扭曲了交易者的决策过程,导致他们过分依赖符合既有观念的数据&#xff0…...

Linux系统之部署linkding书签管理器

Linux系统之部署linkding书签管理器 一、linkding介绍1.1 linkding简介1.2 linkding特点二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本四、部署Node.js 环境4.1 下载Node.js安装包4.2 解压Node.js安装包4.3 …...

springcloud-gateway 路由加载流程

问题 Spring Cloud Gateway版本是2.2.9.RELEASE,原本项目中依赖服务自动发现来自动配置路由到微服务的,但是发现将spring.cloud.gateway.discovery.locator.enabledfalse 启动之后Gateway依然会将所有微服务自动注册到路由中,百思不得其解&a…...

双减期末考试成绩怎么公布?

考试一直是衡量学生学习成果的重要手段。不过,随着"双减"政策的实施,我们就不得不重新审视传统的成绩公布方式。期末考试成绩,这个曾经让无数学生心跳加速的数字,如今该如何以一种更加合理、公正的方式呈现给学生和家长…...

2, 搭建springCloud 项目 测试demo

上篇文章 新建了父依赖服务,这篇文章就建两个demo测试服务。 因为后面需要做服务间的通讯测试,所以至少需要建两个服务 建个子模块 同样的方式建连个demo服务 给java 和resources目录添加属性 在resources目录下建一个applications.yml文件,…...

RabbitMQ消息积压比较厉害,然后突然丢弃

RabbitMQ中的消息积压陡降通常表明某些突发事件或操作已经显著减少了队列中的消息数量。这种现象可能由多种原因引起,以下是一些可能的原因及其解释: 消费者处理速度突然增加 原因: 你的消费者(消费者应用或服务)可能在某个时间点…...

QT中的样式表.qss文件

一、前言 qt中样式表的改变有几种方法,第一种就是直接在ui界面对应的组件右键修改样式表,还有一种就是直接在程序里面修改样式表,我知道的还有一种就是qss文件,这个文件就是将在程序中写的修改样式表的语句写道qss文件中&#xff…...

HTML图片链接缓存问题解决

关于解决HTML使用图片链接出现的缓存问题处理 1、项目上明明替换了图片却没发现更新,得去浏览器设置清除浏览器缓存或者其它一些操作才能解决,这也太麻烦了!加载过一次不会再加载第二次,其实这时候就存在浏览器图片缓存情况&…...

一个人 三个月 干了二十万

相信很多人是被这个标题吸引进来的,但我并不是标题党,我也很讨厌标题党,这篇文章也不在乎流量,更多的是想记录下。 出来创业三个多月了,给大家汇报一下这段时间的业绩吧。一个人,三个多月,干了…...

设计模式之【工厂模式、适配器模式】

工厂模式(Factory Pattern) 定义: 工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法使一个类的实例化延迟到其子类。 主要类型: 简单工厂模式&…...

云计算:重塑数字时代的基石

目录 一、引言 二、云计算的定义与特点 三、云计算的发展历程 四、云计算的应用场景 五、云计算面临的挑战 六、云计算的未来发展趋势 七、结语 一、引言 随着信息技术的飞速发展,云计算已经逐渐渗透到我们生活的方方面面。从个人用户的在线存储、在线办公&…...

C# SocketUDP服务器,组播

SocketUDP 自己即是服务器又是客户端 ,在发消息只需要改成对方ip和端口号即可 前提对方必须开启服务器 socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.107.72"), 8080)); 控件:Button,TextBox,RichTextBox 打开自己服务器 public…...

上市公司绿色投资者原始数据+计算代码(2008-2022年)

数据简介:“绿色”信号,意味着潜在环境风险更低,从而绿色投资者降低了对绿色债券的风险补偿要求,推动了信用利差的收窄。因此,绿色投资者会通过投资者风险意识影响债券信用风险。绿色投资者在推动企业绿色可持续发展方…...

Redis-主从复制-测试主从模式下的读写操作

文章目录 1、在主机6379写入数据2、在从机6380上写数据报错3、从机只能读数据,不能写数据 1、在主机6379写入数据 127.0.0.1:6379> keys * (empty array) 127.0.0.1:6379> set uname jim OK 127.0.0.1:6379> get uname "jim" 127.0.0.1:6379>…...

Linux系统应用与设置(3):串口调试(minicom)

目录 1. 简述 2. 安装minicom 3. 配置串口参数 4. 打开相应的通信端口 5. 设置 6. 发送字符数据 7. 发送HEX(十六进制) 1. 简述 在Linux系统中,minicom是一个功能强大的串口通信工具,可用于与外部设备进行字符和HEX数据的收…...

Qt | windows Qt6.5.3安卓环境搭建成功版(保姆级教程)

01、第一章 Qt6.5.3安装 资源 Qt 国内下载地址清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/qt/archive/online_installers/Qt 阿里云盘下载Qt 安卓开发https://www.alipan.com/s/kNaues6CHaG点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极…...

Chrome Extension如何让work flow在页面刷新、跳转继续执行任务

从Electron到Chrome Extension:流程自动化的跨平台探索 在之前的项目中,我使用Electron成功实现了一个流程自动化应用,它极大地提高了工作效率。然而,当面对Chrome扩展程序(Extension)的需求时,我意识到需要一种新的策略来应对浏览器环境下的限制。特别是Chrome Extens…...

数据库调优厂商 OtterTune 宣布停止运营

昨天刷到消息,得知数据库优化厂商 OtterTune 停止了运营。OtterTune 的成员主要来自 CMU Andy Pavlo 教授领导的数据库实验室。公司正式成立于 2021 年 5 月,融资了 1450 万美金。 按照 Andy 教授的说法,公司是被一个收购 offer 搞砸了。同时…...

4、面向对象-typescript

从面向过程转向面向对象,是一个由简易到复杂的过程,主要更多的考虑到对象的属性,方法,行为等。 一、类,对象 类:更偏向于模板,属于抽象类型,指向大类或泛指。 对象&#xff…...

大数据学习之分布式数据采集系统Flume学习

分布式数据采集系统Flume学习 一、Flume架构 1.1 Hadoop业务开发流程 1.2 Flume概述 flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。 支持在日志系统中定制各类数据发送方,用于收集数据; 同时,Flume提供对数据进行简单处理&…...

谁用谁夸,为什么BI零售数据分析方案这么受欢迎?

在当今数字化时代,零售行业竞争激烈,如何快速准确地获取数据洞察,成为企业制胜的关键。奥威BI零售数据分析方案,凭借其全面、高效、智能的特点,赢得了广大零售企业的青睐,成为市场上的热门选择。 奥威BI零…...

多路h265监控录放开发-(14)通过PaintCell自定义日历控件继承QCalendarWidget的XCalendar类

首先创建一个新类XCalendar继承QCalendarWidget类&#xff0c;然后在UI视图设计器中把日历提升为XCalendar&#xff0c;通过这个函数自己设置日历的样式 xcalendar.h #pragma once #include <QCalendarWidget> class XCalendar :public QCalendarWidget { public:XCal…...

安卓速度下载v1.0.5/聚合短视频解析下载

功能特色 短视频下载与高级管理 – 支持短视频下载&#xff0c;为您提供一系列高级视频管理功能包括视频内容提取、智能防重复技术、视频体积压缩以及视频转换成GIF图片等&#xff1b; 磁-力链接下载升级 – 现支持磁力链接下载&#xff0c;实现边下载边播放的便捷体验&#x…...

从赛题切入谈如何学习数学建模

1.引言 &#xff08;1&#xff09;今天学习了这个汪教授的这个视频&#xff0c;主要是对于一个赛题的介绍讲解&#xff0c;带领我们通过这个赛题知道数学建模应该学习哪些技能&#xff0c;以及这个相关的经验&#xff0c;我感觉这个还是让我自己受益匪浅的 &#xff08;2&…...

江山欧派杯2024全国华佗五禽戏线上线下观摩交流比赛在亳州开幕

6月28日&#xff0c;2024全国华佗五禽戏线上线下观摩交流比赛在安徽省亳州市开幕。 此次比赛是由安徽省亳州市文化旅游体育局和安徽省非物质文化遗产保护中心主办、亳州市华佗五禽戏协会&#xff08;国家级非遗华佗五禽戏保护单位&#xff09;和亳州市传统华佗五禽戏俱乐部&…...

怪兽充电一季度由盈转亏:营收大幅下滑,消费者投诉不断

《港湾商业观察》施子夫 日常生活中&#xff0c;关于移动充电宝“乱扣费”、“充电功率低”的吐槽之声不绝于耳。而原先风靡一时的共享充电宝也被不少网友吐槽为“充电刺客”&#xff0c;足以可见共享充电宝虽作为大众使用频率较高的移动电源产品&#xff0c;但负面评价声音同…...

激光与相机融合标定汇总:提升融合算法的精度与可靠性(附github地址)

前言 随着科技的飞速发展&#xff0c;激光技术与相机技术的融合已成为推动智能化影像发展的重要力量。这种融合不仅提高了成像的精度和效率&#xff0c;还为相关行业带来了革命性的变革。在这篇博客中&#xff0c;我们将深入探讨激光与相机融合标定的原理及其在各个领域的应用…...

市场拓展招聘:完整指南

扩大招聘业务会给你带来很多挑战&#xff0c;更不用说你已经在处理的问题了。助教专业人士每周花近13个小时为一个角色寻找候选人。此外&#xff0c;客户的需求也在不断变化&#xff0c;招聘机构之间的竞争也在加剧。毫无疑问&#xff0c;对增长有战略的方法会有很大的帮助。一…...

Leetcode 501:二叉搜索树中的众数

给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如果树中有不止一个众数&#xff0c;可以按 任意顺序 返回。 假定 BST 满足如下定义&#xf…...

esp8266 GPIO

功能综述 ESP8266 的 16 个通⽤ IO 的管脚位置和名称如下表所示。 管脚功能选择 功能选择寄存器 PERIPHS_IO_MUX_MTDI_U&#xff08;不同的 GPIO&#xff0c;该寄存器不同&#xff09; PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);PERIPHS_IO_MUX_为前缀。后面的…...

ingress相关yaml文件报错且相关资源一切正常解决方法

今天在执行ingress相关文件的时候莫名其妙报错了&#xff0c;问了别人得知了这个方法 执行ingress相关文件报错 01.yaml是我自己创建关于ingress的yaml文件 报错信息 且相关资源一切正常 解决方法 kubectl get validatingwebhookconfigurations删除ingress-nginx-admissio…...

重要通知:据最新TEMU要求所有欧区车灯都需要能效标签(eu energy lable)

重要通知&#xff1a; 据最新TEMU要求&#xff0c;所有“欧区车灯”都需要能效标签&#xff08;eu energy lable&#xff09;&#xff0c;目前已下架欧区站点&#xff0c;上传成功后可恢复。 灯具类欧盟EU ENERGY LABEL 近日有不少欧洲站卖家收到TEMU平台商品要求卖家们发布的…...

JAVA SDK 整合 AI 大语言模型

目前主流模型厂商的 SDK 并没有很好的支持 JAVA 环境&#xff0c;主流还是使用的 Python &#xff0c;如果希望将 AI 功能集成到业务中来&#xff0c;则需要找找有没有一些现成的开源项目&#xff0c;但是这种项目一般需要谨慎使用&#xff0c;以防有偷取 app_key 等风险问题 前…...

【Apache Doris】如何实现高并发点查?(原理+实践全析)

【Apache Doris】如何实现高并发点查&#xff1f;&#xff08;原理实践全析&#xff09; 一、背景说明二、原理介绍三、环境信息四、Jmeter初始化五、参数预调六、用例准备七、高并发实测八、影响因素九、总结 本文主要分享 Apache Doris 是如何实现高并发点查的&#xff0c;以…...

解决SpringMVC使用MyBatis-Plus自定义MyBaits拦截器不生效的问题

自定义MyBatis拦截器 如果是SpringBoot项目引入Component注解就生效了&#xff0c;但是SpringMVC不行 import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.parameter.ParameterHandler; import org.apache.ibatis.executor.statement.StatementHandler; i…...

Swagger与RESTful API

1. Swagger简介 在现代软件开发中&#xff0c;RESTful API已成为应用程序间通信的一个标准。这种架构风格通过使用标准的HTTP方法来执行网络上的操作&#xff0c;简化了不同系统之间的交互。API&#xff08;应用程序编程接口&#xff09;允许不同的软件系统以一种预定义的方式…...

MySQL84 -- ERROR 1524 (HY000): Plugin ‘msql_native_password‘ is not loaded.

【问题描述】 MySQL 8.4版本&#xff0c;配置用户使用mysql_native_password认证插件验证用户身份&#xff0c;报错&#xff1a; 【解决方法】&#xff08;Windows, MySQL 8.4) 1、修改MySQL配置文件my.ini&#xff0c;在[mysqld]段添加mysql_native_passwordON。 2、管理员…...

将Excel中的错误值#N/A替换成心仪的字符串,瞬间爱了……

常用表格的人都晓得&#xff0c;看到满屏悦动的#N/A&#xff0c;心情都会不好。把它替换成自己心仪的字符&#xff0c;瞬间就爱了。 (笔记模板由python脚本于2024年06月13日 19:32:37创建&#xff0c;本篇笔记适合常用Excel&#xff0c;喜欢数据的coder翻阅) 【学习的细节是欢悦…...

AI大模型日报#0628:谷歌开源9B 27B版Gemma2、AI首次实时生成视频、讯飞星火4.0发布

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xff01;《AI大模型日报》今日要点&#xf…...

【随笔】提高代码学习水平(以更高的视角看事物)

最近&#xff0c;我感觉到自己的代码水平似乎卡在了一个瓶颈。似乎只想着数仓&#xff0c;Hive&#xff0c;Spark技术优化&#xff0c;但只要稍微离开这几个点&#xff0c;我就感到无所适从。我开始反思&#xff0c;或许&#xff0c;我应该总结一下自己的学习方法。 1.站的高&…...

游戏AI的创造思路-技术基础-深度学习(5)

继续深度学习技术的探讨&#xff0c;填坑不断&#xff0c;头秃不断~~~~~ 目录 3.5. 自编码器&#xff08;AE&#xff09; 3.5.1. 定义 3.5.2. 形成过程 3.5.3. 运行原理 3.5.3.1.运行原理及基本框架 3.5.3.2. 示例代码 3.5.4. 优缺点 3.5.5. 存在的问题和解决方法 3.5…...

基于SpringBoot养老院管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…...

餐饮点餐的简单MySQL集合

ER图 模型图&#xff08;没有进行排序&#xff0c;混乱&#xff09; DDL和DML /* Navicat MySQL Data TransferSource Server : Mylink Source Server Version : 50726 Source Host : localhost:3306 Source Database : schooldbTarget Server Type …...

STM32驱动-ads1112

汇总一系列AD/DA的驱动程序 ads1112.c #include "ads1112.h" #include "common.h"void AD5726_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE );//PORTA、D时钟使能 G…...

数据结构与算法高频面试题

初级面试题及详细解答 当涉及到数据结构与算法的初级面试题时&#xff0c;通常涉及基本的数据结构操作、算法复杂度分析和基本算法的应用。 1. 什么是数组&#xff1f;数组和链表有什么区别&#xff1f; 解答&#xff1a; 数组&#xff1a;是一种线性数据结构&#xff0c;用…...

uni-app的showModal提示框,进行删除的二次确认,可自定义确定或取消操作

实现效果&#xff1a; 此处为删除的二次确认示例&#xff0c;点击删除按钮时出现该提示&#xff0c;该提示写在js script中。 实现方式&#xff1a; 通过uni.showModal进行提示&#xff0c;success为确认状态下的操作自定义&#xff0c;此处调用后端接口进行了删除操作&#…...

5款提高工作效率的免费工具推荐

SimpleTex SimpleTex是一款用于创建和编辑LaTeX公式的简单工具。它能够识别图片中的复杂公式并将其转换为可编辑的数据格式。该软件提供了一个直观的界面&#xff0c;用户可以在编辑LaTeX代码的同时实时预览公式的效果&#xff0c;无需额外的编译步骤。此外&#xff0c;SimpleT…...

区块链的技术架构:节点、网络和数据结构

区块链技术听起来很高大上&#xff0c;但其实它的核心架构并不难理解。今天我们就用一些简单的例子和有趣的比喻&#xff0c;来聊聊区块链的技术架构&#xff1a;节点、网络和数据结构。 节点&#xff1a;区块链的“细胞” 想象一下&#xff0c;区块链就像是一个大型的组织&a…...

pdfmake不能设置表格边框颜色?

找到pdfmake>build>pdfmake.js中&#xff1a; 找到定义的“TableProcessor.prototype.drawVerticalLine”和“TableProcessor.prototype.drawHorizontalLine”两个方法&#xff1a; 重新定义borderColor: var borderColor this.tableNode.table.borderColor||"#…...