机器学习课程学习周报十五
机器学习课程学习周报十五
文章目录
- 机器学习课程学习周报十五
- 摘要
- Abstract
- 一、机器学习部分
- 1. 统计推断与贝叶斯推断
- 2. GMM和EM算法补充
- 3. 马尔可夫链蒙特卡罗法
- 3.1 蒙特卡罗法
- 3.2 马尔可夫链
- 3.3 Diffusion模型中的马尔可夫链
- 总结
摘要
本周的学习涵盖了统计推断和贝叶斯推断的基本概念,深入探讨了高斯混合模型中的EM算法及其有效性证明。此外,还介绍了马尔可夫链蒙特卡罗方法中的蒙特卡罗法及其应用。最后,通过Diffusion模型中的马尔可夫链,理解了如何实现图像生成的降噪过程。
Abstract
This week’s study covered fundamental concepts of statistical and Bayesian inference, with an in-depth exploration of the EM algorithm in Gaussian Mixture Models and its effectiveness. Additionally, the Monte Carlo method within Markov Chain Monte Carlo techniques was introduced and applied. Finally, the denoising process in image generation was understood through the Markov chain in the Diffusion model.
一、机器学习部分
1. 统计推断与贝叶斯推断
统计推断(Statistical Inference)指的是根据观察样本去推断总体特征(即模型/分布的参数),它的方法包括参数估计和假设检验等。
贝叶斯推断(Bayesian Inference)是一种基于贝叶斯定理的统计推断方法,它的核心思想是要建立对参数的主观信念(“验”),并要根据观察去完成从初始信念(“先验”)到校正信念(“后验”)的更新。这种主观信念是参数的分布,而推断最终还要从后验分布中选择一个确定的参数值。
例如:如果取分布最高点的对应参数值(通常被称为后验众数),就称为极大后验估计(MAP, Maximum A Posteriori)。
从贝叶斯公式来看:
p ( z ∣ x ) = p ( z ) ⋅ p ( x ∣ z ) p ( x ) p(z|x) = p(z) \cdot \frac{{p(x|z)}}{{p(x)}} p(z∣x)=p(z)⋅p(x)p(x∣z)
z z z是要估计的参数(也包括隐变量), p ( z ) p(z) p(z)是先验分布(初始信念), p ( z ∣ x ) p(z|x) p(z∣x)是后验分布(校正信念)。这种校正是通过在先验上乘了一个校正因子 p ( x ∣ z ) p ( x ) \frac{{p(x|z)}}{{p(x)}} p(x)p(x∣z)得到的。其中,分子 p ( x ∣ z ) {p(x|z)} p(x∣z)是条件似然,是校正因子的关键部分,决定着先验到后验的形状变化;而分母 p ( x ) {p(x)} p(x)是边际似然,又叫证据(因为只跟观察 x x x有关),它与我们关心的 z z z无关,因此也常被称为归一化因子(因为就算我们不去管分母,等号左右的函数形状也已经一致,只需要把等号右边归一化到积分为1的概率分布即可。不过实际上,归一化也并不好计算,因为显然我们不知道 x x x的分布,而积分 p ( x ) = ∫ z p ( x ∣ z ) d z p(x) = \int_z {p(x|z)dz} p(x)=∫zp(x∣z)dz又是难以计算的,许多方法都试图绕过计算归一化因子这个点,如GAN模型。
2. GMM和EM算法补充
为了证明EM算法的迭代是有效的,先引入凸函数和琴生不等式的预备知识。

利用GMM中的概率表达式代入EM算法中。

EM算法的第一步:E-step求期望

EM算法的第二步:M-step求参数的最大(条件极值,使用拉格朗日乘数法)

3. 马尔可夫链蒙特卡罗法
3.1 蒙特卡罗法
蒙特卡罗法(Monte Carlo method),也称统计模拟方法,是通过从概率模型的随机抽样进行近似数值计算的方法。统计学和机器学习的目的是基于数据对概率分布的特征进行推断,蒙特卡罗法要解决的问题是,假设概率分布的定义已知,通过抽样或者概率分布的随机样本,并通过得到的随机样本对概率分布的特征进行分析。比如,从样本得到经验分布,从而估计总体分布;或者从样本计算出样本均值,从而估计总体期望,所以蒙特卡罗法的核心是随机抽样(random sampling)。
一般的蒙特卡罗法有直接抽样法、接受-拒绝抽样法、重要性抽样法等。接受-拒绝抽样法、重要性抽样法适合于概率密度函数复杂(如密度函数含有多个变量,各变量相互不独立,密度函数形式复杂),不能直接抽样的情况。
这里介绍接受-拒绝抽样法(accept-reject sampling method),随机变量为 x x x,其概率密度函数为 p ( x ) p(x) p(x)。目的是得到该概率分布的随机样本,以对这个概率分布进行分析。基本思想如下:若 p ( x ) p(x) p(x)不可以直接抽样,找一个可以直接抽样的分布,称为建议分布(proposal distribution)。假设 q ( x ) q(x) q(x)是建议分布的概率密度函数,并且有 q ( x ) q(x) q(x)的 c c c倍一定大于等于 p ( x ) p(x) p(x),其中 c > 0 c > 0 c>0。按照 q ( x ) q(x) q(x)进行抽样,假设得到的结果是 x ∗ {x^*} x∗,再按照 p ( x ∗ ) c q ( x ∗ ) \frac{{p({x^*})}}{{cq({x^*})}} cq(x∗)p(x∗)的比例随机决定是否接受 x ∗ {x^*} x∗。

直观上,落到 p ( x ∗ ) p({x^*}) p(x∗)范围内的就接受(蓝色),落到 p ( x ∗ ) p({x^*}) p(x∗)范围外的就决绝(红色)。接受-拒绝法实际是按照 p ( x ) p(x) p(x)的涵盖面积(或涵盖体积)占 c q ( x ) {cq({x})} cq(x)的涵盖面积(或涵盖体积)的比例进行抽样。

接受拒绝法的优点是很容易实现,缺点是效率可能不高。如果 p ( x ) p(x) p(x)的涵盖体积占 c q ( x ) {cq({x})} cq(x)的涵盖体积的比例很低,就会导致拒绝的比例很高,抽样的效率很低。并且落入蓝色范围内的样本不是一定会被接受,还要经过随机检验才会被接受。
3.2 马尔可夫链
考虑一个随机变量的序列 X = { X 0 , X 1 , ⋯ , X t , ⋯ } X = \left\{ {{X_0},{X_1}, \cdots ,{X_t}, \cdots } \right\} X={X0,X1,⋯,Xt,⋯},这里 X t {{X_t}} Xt表示时刻 t t t的随机变量, t = 0 , 1 , 2 , ⋯ t = 0,1,2, \cdots t=0,1,2,⋯。每个随机变量 X t {{X_t}} Xt的取值集合相同,称为状态空间,表示为 S S S。随机变量可以是离散的,也可以是连续的。以上随机变量的序列构成随机过程(stochastic process)。
假设在时刻0的随机变量 X 0 {{X_0}} X0遵循概率分布 P ( X 0 ) = π 0 P\left( {{X_0}} \right) = {\pi _0} P(X0)=π0,称为初始状态分布。在某个时刻 t ≥ 1 t \ge 1 t≥1的随机变量 X t {{X_t}} Xt与前一个时刻的随机变量 X t − 1 {X_{t - 1}} Xt−1之间有条件分布 P ( X t ∣ X t − 1 ) P({X_t}|{X_{t - 1}}) P(Xt∣Xt−1),如果 X t {X_t} Xt只依赖于 X t − 1 {X_{t - 1}} Xt−1,而不依赖于过去的随机变量 { X 0 , X 1 , ⋯ , X t − 2 } \left\{ {{X_0},{X_1}, \cdots ,{X_{t - 2}}} \right\} {X0,X1,⋯,Xt−2},这一性质称为马尔可夫性,即:
P ( X t ∣ X 0 , X 1 , ⋯ , X t − 1 ) = P ( X t ∣ X t − 1 ) , t = 1 , 2 , ⋯ P({X_t}|{X_0},{X_1}, \cdots ,{X_{t - 1}}) = P({X_t}|{X_{t - 1}}),t = 1,2, \cdots P(Xt∣X0,X1,⋯,Xt−1)=P(Xt∣Xt−1),t=1,2,⋯
具有马尔可夫性的随机序列 X = { X 0 , X 1 , ⋯ , X t , ⋯ } X = \left\{ {{X_0},{X_1}, \cdots ,{X_t}, \cdots } \right\} X={X0,X1,⋯,Xt,⋯}称为马尔可夫链(Markov chain),或马尔可夫过程(Markov process)。条件概率分布 P ( X t ∣ X t − 1 ) P({X_t}|{X_{t - 1}}) P(Xt∣Xt−1)称为马尔可夫链的转移概率分布。转移概率分布决定了马尔可夫链的特性。
马尔可夫的直观解释是“未来只依赖于现在(假设现在已知),而与过去无关”。这个假设在许多应用中是合理的。
若转移概率分布 P ( X t ∣ X t − 1 ) P({X_t}|{X_{t - 1}}) P(Xt∣Xt−1)与 t t t无关,即
P ( X t + s ∣ X t − 1 + s ) = P ( X t ∣ X t − 1 ) , t = 1 , 2 , ⋯ , s = 1 , 2 , ⋯ P({X_{t + s}}|{X_{t - 1 + s}}) = P({X_t}|{X_{t - 1}}),t = 1,2, \cdots ,s = 1,2, \cdots P(Xt+s∣Xt−1+s)=P(Xt∣Xt−1),t=1,2,⋯,s=1,2,⋯
则称该马尔可夫链为时间齐次的马尔可夫链(time homogenous Markov chain)
以上定义的是一阶马尔可夫链,可以扩展到n阶马尔可夫链,满足n阶马尔可夫性
P ( X t ∣ X 0 , X 1 , ⋯ , X t − 2 , X t − 1 ) = P ( X t ∣ X t − n , ⋯ , X t − 2 , X t − 1 ) P({X_t}|{X_0},{X_1}, \cdots ,{X_{t - 2}},{X_{t - 1}}) = P({X_t}|{X_{t - n}}, \cdots ,{X_{t - 2}},{X_{t - 1}}) P(Xt∣X0,X1,⋯,Xt−2,Xt−1)=P(Xt∣Xt−n,⋯,Xt−2,Xt−1)
3.3 Diffusion模型中的马尔可夫链
对于计算机而言,实现图像生成,一副图像就是一个 H × W × C H \times W \times C H×W×C维的矩阵,如何生成这样的一个矩阵?Diffusion的做法是先随机创建一个噪点图,有没有可能让一幅噪点图变成“米老鼠”呢?显然想要做到这点似乎非常困难。
我们换个思路:现在假如我们已经有一组噪点图 X T {X_T} XT和“米老鼠” X 0 {X_0} X0之间的过渡图片,如下:

从直觉上来说,**将过渡序列中的上一张图片转变成下一张图片,显然要比直接从噪点图 变成 “米老鼠”要容易得多。**这个直观的认知其实是Diffusion模型区别于其他生成模型(如GAN)的特别之处。

由于这个序列当中,每一张图都比上一张图要更清晰(噪点更少),因此我们称这个过程为降噪(denoise)。 X t → X t − 1 {X_t} \to {X_{t - 1}} Xt→Xt−1的降噪过程,在概率论中可以通过采样实现。为了从 X t {X_{t}} Xt采样得到 X t − 1 {X_{t - 1}} Xt−1,我们需要知道条件概率:
q ( x t − 1 ∣ x t ) q({x_{t - 1}}|{x_t}) q(xt−1∣xt)
假如任意 t = 1 , 2 , ⋯ , T t = 1,2, \cdots ,T t=1,2,⋯,T的 q ( x t − 1 ∣ x t ) q({x_{t - 1}}|{x_t}) q(xt−1∣xt)都是已知的。我们记号 ∼ \sim ∼表示“依概率采样”,那么将噪点图 X T {X_T} XT转变为“米老鼠” X 0 {X_0} X0的整个采样过程,可以形式化表示为,给定噪点图 X T {X_T} XT:
X T − 1 ∼ q ( x T − 1 ∣ X T ) ⋯ X 2 ∼ q ( x 2 ∣ X 3 ) , X 1 ∼ q ( x 1 ∣ X 2 ) , X 0 ∼ q ( x 0 ∣ X 1 ) {X_{T - 1}} \sim q({x_{T - 1}}|{X_T}) \cdots {X_2} \sim q({x_2}|{X_3}),{X_1} \sim q({x_1}|{X_2}),{X_0} \sim q({x_0}|{X_1}) XT−1∼q(xT−1∣XT)⋯X2∼q(x2∣X3),X1∼q(x1∣X2),X0∼q(x0∣X1)
整个采样过程,构成了一个马尔可夫链,假如我们有了 q ( x t − 1 ∣ x t ) q({x_{t - 1}}|{x_t}) q(xt−1∣xt)这个转移概率,就能按步骤将噪点图转化为“米老鼠”,所以问题是如何求出 q ( x t − 1 ∣ x t ) q({x_{t - 1}}|{x_t}) q(xt−1∣xt)这个函数?答案就是机器学习。
机器学习的训练数据是什么?虽然“降噪”似乎很难,但是添加噪点却挺容易。比如给定一张原始图片 X 0 {X_0} X0我们总可以通过朝原始图增加噪点生成图片 X 1 {X_1} X1,然后进一步增加噪点,直到图片变成一幅完全随机的噪点图 X T {X_{T}} XT。这个过程也是通过随机过程的采样来实现,我们记这个随机过程对应的“转移概率”是 q ( x t ∣ x t − 1 ) q({x_t}|{x_{t - 1}}) q(xt∣xt−1),那么整个添加噪点的过程就可以形式化表示为,给定米老鼠图 X 0 {X_0} X0:
X 1 ∼ q ( x 1 ∣ X 0 ) , X 2 ∼ q ( x 2 ∣ X 1 ) , X 3 ∼ q ( x 3 ∣ X 2 ) , ⋯ , X T ∼ q ( x T ∣ X T − 1 ) {X_1} \sim q({x_1}|{X_0}),{X_2} \sim q({x_2}|{X_1}),{X_3} \sim q({x_3}|{X_2}), \cdots ,{X_T} \sim q({x_T}|{X_{T - 1}}) X1∼q(x1∣X0),X2∼q(x2∣X1),X3∼q(x3∣X2),⋯,XT∼q(xT∣XT−1)
给定一个图片数据集,我们对其中的任一图片进行一次这种采样操作,我们就得到了一组连续过渡的图片序列,也就是一条训练数据。
总结
本周完善了上周学习的EM算法,并且开始学习马尔可夫链蒙特卡罗法,马尔可夫链在Diffusion模型中有特别重要的应用。接来的一周将从理论继续学习马尔可夫链蒙特卡罗法,并结合着实际应用中的Diffusion模型进行参照。
相关文章:
机器学习课程学习周报十五
机器学习课程学习周报十五 文章目录 机器学习课程学习周报十五摘要Abstract一、机器学习部分1. 统计推断与贝叶斯推断2. GMM和EM算法补充3. 马尔可夫链蒙特卡罗法3.1 蒙特卡罗法3.2 马尔可夫链3.3 Diffusion模型中的马尔可夫链 总结 摘要 本周的学习涵盖了统计推断和贝叶斯推断…...
rabbitMq------客户端模块
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言消费者模块信道管理模块管理的字段提供的接口 信道内存管理连接管理类 前言 在RabbitMQ中,提供服务的是信道,因此在客⼾端的实现中&…...
地理定位营销与开源AI智能名片O2O商城小程序的融合与发展
摘要:本文阐述地理定位营销的概念、手段及其在商业中的应用,探讨开源AI智能名片O2O商城小程序如何与地理定位营销相结合,为企业营销带来新的机遇与挑战。 一、引言 在当今数字化营销的时代,地理定位营销已成为一种重要的营销手段…...
解决Vue应用中遇到路由刷新后出现 404 错误
解释: Vue 应用中遇到路由刷新后出现 404 错误,通常是因为 Vue 应用是个单页应用(SPA),它通过 Vue Router 管理路由,通过 HTML5 History Mode 实现页面导航无需重新加载页面。当直接访问非首页的路由或者刷…...
在window10下使用directml加速phi-3模型的一些记录
1.安装anaconda,安装python 安装torch等参考网上资料非常多 不细描述 2.参考微软官网【在windows上通过DirectML启用Pytorch文档,检查系统版本 检查gpu版本 3.参考微软官网【在windows上通过DirectML启用Pytorch】文档,安装torch_directml模…...
通信工程学习:什么是OSPF开放式最短路径优先
OSPF:开放式最短路径优先 OSPF(Open Shortest Path First,开放式最短路径优先)是一种内部网关协议(IGP),被广泛应用于计算机网络中,特别是在构建大型和复杂的网络时。以下是对OSPF的…...
《中国电子报》报道: 安宝特AR为产线作业者的“秘密武器
近日,中国电子报在其文章《下一代工业智能终端重新定义制造业》中对安宝特的增强现实(AR)解决方案给予了高度评价,称其为产线作业者的“秘密武器”。这一创新技术改变了传统制造业的作业方式,使得操作人员能够在生产过…...
【Android】Handler消息机制
文章目录 前言概述核心组件概述Android消息机制概述 Android消息机制分析ThreadLocal的工作原理ThreadLocal基础ThreadLocal实现原理 MessageQueueLooperHandler的工作原理总结 前言 本文用于记录Android的消息机制,主要是指Handler的运行机制。部分内容参考自《An…...
大数据必懂知识点:Parquet、ORC还是Avro作为数据存储格式,哪种在性能和压缩率上更优
目录 第一章 相关理论 1.1 Parquet格式介绍 1.1.1 起源与发展 1.1.2 特点与优势 1.2 ORC格式介绍 1.3 Avro格式介绍 1.3.1 跨语言支持 1.3.2 动态映射 1.3.3 丰富的数据模式 1.3.4 数据模式灵活性 第二章 种格式性能比较 2.1 读写性能对比 2.2 查询性能对比 2.3 压…...
P1387 最大正方形
题目描述 在一个nm 的只包含 0 和 1 的矩阵里找出一个不包含 0 的最大正方形,输出边长。 输入格式 输入文件第一行为两个整数n,m(1≤n,m≤100),接下来 n 行,每行 m 个数字,用空格隔开,0 或 1。 输出格式 一个整数…...
Python知识点:如何使用Multiprocessing进行并行任务管理
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 如何在Python中使用Multiprocessing进行并行任务管理 在现代编程中,…...
React常见优化问题
在React开发中,性能优化是一个重要且持续的过程,旨在提升应用的响应速度和用户体验。以下是一些常见的React优化问题详解,并附上相应的代码示例。 1. 避免不必要的组件渲染 React组件的渲染是由其props或state的变化触发的。但是,…...
css 简单网页布局——浮动(一)
1. 三种布局方式 1.1 标准流 1.2 浮动的使用 1.3 简述浮动 1.3.1 浮动三大特性 <style>.out {border: 1px red solid;width: 1000px;height: 500px;}.one {background-color: aquamarine;width: 200px;height: 100px;}.two {background-color: blueviolet;width: 200px;h…...
设计模式(3)builder
需求: 对于复杂的对象,我们只需要 通过 设置一些参数,就可以得到相对应的 实例。 简单来说, 需求就是用一个类 通过方法返回一个 新建的对象,而且可以通过方法去设置这个对象 public interface CarBuilder {void se…...
Day01-MySQL数据库介绍及部署
Day01-MySQL数据库介绍及部署 1、数据库服务概述介绍1.1 企业中为什么需要数据库?1.2 数据库服务作用1.3 数据库服务分类 2、数据库服务安装部署2.1 数据库版本应用2.2 数据库服务程序下载2.3 数据库软件安装方式2.3.1 二进制安装步骤 3、数据库服务初始化介绍3.1 安…...
分享一个餐饮连锁店点餐系统 餐馆食材采购系统Java、python、php三个版本(源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...
解决跨域问题
第一种 让后端解决 第二种 通过代理来解决 首先可以先搭建后端接口 解决则参照vue-cli官网 首先新建一个vue.config.js文件 然后在项目的根目录新建两个文件夹 开发环境和生产环境 然后可以使用环境变量 系统会自动识别你是生产环境还是开发环境 然后在封装的axios中配…...
面试知识储备-多线程
1.线程的概念 线程使得在一个程序中可以同时执行多个任务。在 Java 应用程序中,多个线程可以同时运行,例如一个线程可以处理用户输入,另一个线程可以进行后台数据处理。 2.创建线程的方式 (1)重写thread类中的run方法…...
边缘计算插上AI的翅膀会咋样?
人工智能(Artificial Intelligence,AI)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学,是新一轮产业革命的重要驱动力量。2022年底发布的ChatGPT将人工智能技术上升到了一个新的高度。如今&#x…...
脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO
原文链接:CSDN-脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO Integer-Valued Training and Spike-Driven Inference Spiking Neural Network for High-performance …...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
