【2024 Optimal Control 16-745】Julia语法
Lecture 2
θ
和它的导数符号是通过 Julia 中的变量命名方式实现的
-
变量
θ
的输入:- 在 Julia 中,
θ
是一个合法的变量名,就像普通的字母x
或y
一样。 - 要输入
θ
,可以使用以下方法:- 在 Jupyter Notebook 或 Julia REPL 中直接键入
\theta
,然后按 Tab 键,Julia 会自动将其转化为θ
。 - 这是 Julia 支持的 Unicode 字符的一部分,可以直接作为变量名。
- 在 Jupyter Notebook 或 Julia REPL 中直接键入
- 在 Julia 中,
-
变量
θ̇
的输入:θ̇
是带点的变量(表示导数),它也是 Julia 的一个合法变量名。- 键入
\theta
,后按 Tab 键,键入\dot
,后按 Tab 键
-
变量
θ̈
的输入:θ̈
是加速度(带两个点的变量名)。- 键入
\theta
,后按 Tab 键,键入\ddot
,后按 Tab 键
θ
和θ̇
是 Julia 中的 Unicode 变量名,可以通过快捷输入实现。- 在代码中,这些符号只是普通变量名,它们的含义通过上下文和赋值来表达:
θ
是角度。θ̇
是角速度。θ̈
是角加速度,计算公式是 − ( g / l ) sin ( θ ) -(g/l) \sin(θ) −(g/l)sin(θ)。
.
使得操作符能够逐个元素地应用于整个数组或集合,而不需要显式地使用循环
在 Julia 中,等号前面的 .
是一个 广播(broadcasting) 操作符,它的作用是让一个操作应用于整个数组或容器,而不仅仅是单一的元素。这是 Julia 中非常常见和强大的特性。
x_hist[:,1] .= x0
x_hist[:,1]
:这是对x_hist
数组的访问,表示提取x_hist
的第一列(所有行,第一列)。.=
:这是广播赋值操作符。它表示对x_hist[:,1]
的每个元素执行赋值操作,等价于逐元素地把x0
的每个值赋给x_hist[:,1]
的每个元素。x0
:这是一个向量,通常是初始状态向量,比如[0.1; 0]
,表示摆的初始角度和角速度。
示例
假设 x0
是 [0.1, 0]
,而 x_hist[:,1]
是一个长度为 2 的列向量(例如 [0, 0]
),那么:
-
无广播(普通赋值):
如果直接使用=
(没有点操作符),会发生维度不匹配的错误,因为你不能将一个列向量直接赋值给数组的某一列。x_hist[:,1] = x0 # 这会报错
-
使用广播赋值:
使用.=
后,x0
的每个元素都会依次赋值给x_hist[:,1]
的每个元素:x_hist[:,1] .= x0 # 正确:x0 的每个元素逐个赋值给 x_hist[:,1]
总结
.
操作符使得赋值操作可以应用到整个数组或容器的每个元素,而不仅仅是简单的元素赋值。.=
用于广播赋值,使得多个值可以逐元素地赋给目标数组或集合。
这种广播机制使得在 Julia 中处理数组和矩阵时更加简洁高效。
解释匿名函数 x -> fd_pendulum_rk4(x, 0.1)
在 Julia 中,匿名函数是一种无需命名的函数,通常用于临时计算。形式为:
x -> expression
其中,x
是输入参数,expression
是处理该参数的表达式。
代码部分
x -> fd_pendulum_rk4(x, 0.1)
这是一个匿名函数,具体含义如下:
-
输入参数:
x
是匿名函数的输入参数,代表当前状态变量,通常为一个向量。例如,对于摆动系统,x
可能是 x = [ angle ; angular velocity ] x = [\text{angle}; \text{angular velocity}] x=[angle;angular velocity](角度和角速度)。
-
调用
fd_pendulum_rk4
:- 匿名函数内部调用了
fd_pendulum_rk4
函数,这是一个实现四阶龙格-库塔(RK4)积分方法的函数。 fd_pendulum_rk4(x, 0.1)
的两个参数:x
: 当前状态(例如 x = [ 角度 ; 角速度 ] x = [\text{角度}; \text{角速度}] x=[角度;角速度])。0.1
: 时间步长 h h h,表示模拟的离散时间间隔。
- 匿名函数内部调用了
-
输出结果:
- 函数返回 RK4 方法计算的状态更新结果,即从状态 x x x 经一步积分后的新状态 x n + 1 x_{n+1} xn+1。
- 该结果是一个新的状态向量,表示在给定时间步长下,系统从状态 x x x 演化到的下一个状态。
用途
匿名函数 x -> fd_pendulum_rk4(x, 0.1)
的核心作用是:
- 将输入状态 x x x(如摆的当前角度和角速度)映射为通过 RK4 方法计算得到的下一个状态。
- 在调用
ForwardDiff.jacobian
时,匿名函数为ForwardDiff
提供了所需的输入-输出关系。
示例
假设:
- 初始状态为 x = [ π / 4 ; 0 ] x = [\pi/4; 0] x=[π/4;0](角度 π / 4 \pi/4 π/4,角速度 0)。
- 时间步长 h = 0.1 h = 0.1 h=0.1。
匿名函数的计算流程如下:
# 定义匿名函数
f = x -> fd_pendulum_rk4(x, 0.1)# 调用匿名函数
new_state = f([pi/4; 0])
结果 new_state
是通过 RK4 积分计算出的下一步状态(新的角度和角速度)。
为什么使用匿名函数?
-
简洁性:
- 不需要显式定义一个新函数,而是直接将
fd_pendulum_rk4
封装成满足特定需求的函数(固定步长为 0.1)。
- 不需要显式定义一个新函数,而是直接将
-
灵活性:
- 匿名函数可以动态封装不同的参数和逻辑。例如,步长可以通过匿名函数灵活指定。
-
与
ForwardDiff.jacobian
配合:ForwardDiff.jacobian
需要输入一个函数,该函数的输入是状态 x x x,输出是对应的更新结果。匿名函数很好地满足这一要求。
总结
- 匿名函数
x -> fd_pendulum_rk4(x, 0.1)
将状态变量 x x x 映射为通过 RK4 方法计算得到的下一个状态。 - 它的主要作用是为
ForwardDiff.jacobian
提供输入-输出映射关系,以计算状态更新过程的雅可比矩阵。
Lecture 3
∂r \ r
表示 矩阵左除
在 Julia 中,表达式 ∂r \ r
表示 矩阵左除,也就是 求解线性方程组 的一种简洁方式。
线性方程组的求解
线性方程组的一般形式是:
A ⋅ x = b A \cdot x = b A⋅x=b
其中:
- A A A 是系数矩阵(这里对应
∂r
)。 - x x x 是未知量向量(这里对应 Δ x \Delta x Δx)。
- b b b 是右侧的已知向量(这里对应
r
)。
A \ x
的含义是 求解 x x x 的值,即:
x = A − 1 ⋅ b x = A^{-1} \cdot b x=A−1⋅b
- 这相当于将 A A A 的逆矩阵 A − 1 A^{-1} A−1 左乘到 b b b 上,求解 x x x 的值。
但是,显式求逆(即 A − 1 A^{-1} A−1)的计算代价很高,且可能会引入数值不稳定性。因此,∂r \ r
使用了一种数值高效的方式解决这个问题。
Julia 的 \
运算符
- 在 Julia 中,
A \ b
是求解线性方程组 A ⋅ x = b A \cdot x = b A⋅x=b 的符号,表示“将矩阵 A A A 左除向量 b b b”。 - 实现时,Julia 使用优化的数值线性代数方法(如 LU 分解、QR 分解或 Cholesky 分解)来高效求解,而不是直接计算矩阵的逆。
数值计算的优势
- 高效性: 求解 A ⋅ x = b A \cdot x = b A⋅x=b 的方法通常比显式逆矩阵的计算更高效。
- 数值稳定性: 显式计算逆矩阵可能会导致数值不稳定性(尤其当矩阵接近奇异时),而直接求解方程组能够减少误差。
- 灵活性: Julia 的
\
运算符会自动选择最适合的分解算法(如 LU、QR 或其他方法)来解决问题,适用于稠密矩阵或稀疏矩阵。
梯度和雅可比矩阵在 Julia 中的使用规则
- 梯度 (
gradient
): 用于标量值函数,返回一个列向量。 - 雅可比矩阵 (
jacobian
): 用于矢量值函数,返回一个矩阵。 - 在实际使用中,必须明确函数的输入和输出维度,误用可能导致报错。
1. 梯度(gradient)
梯度是用于标量值函数的,它返回的是一个列向量。
例子
using ForwardDiff# 定义一个标量函数
f(x) = x[1]^2 + x[2]^2 + x[3]^2# 对 f 求梯度
x = [1.0, 2.0, 3.0]
grad = ForwardDiff.gradient(f, x)
println("梯度: ", grad)
输出
- 解析:
- 函数 f ( x ) = x 1 2 + x 2 2 + x 3 2 f(x) = x_1^2 + x_2^2 + x_3^2 f(x)=x12+x22+x32。
- 梯度为 ∇ f = [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , ∂ f ∂ x 3 ] T = [ 2 x 1 , 2 x 2 , 2 x 3 ] T \nabla f = [\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \frac{\partial f}{\partial x_3}]^T = [2x_1, 2x_2, 2x_3]^T ∇f=[∂x1∂f,∂x2∂f,∂x3∂f]T=[2x1,2x2,2x3]T。
- 结果为
[2.0, 4.0, 6.0]
。
2. 雅可比矩阵(Jacobian)
雅可比矩阵用于矢量值函数,返回的是一个矩阵。
例子
using ForwardDiff# 定义一个矢量值函数
g(x) = [x[1]^2, x[1]*x[2], x[2]^2]# 对 g 求雅可比矩阵
x = [1.0, 2.0]
jacobian = ForwardDiff.jacobian(g, x)
println("雅可比矩阵: ")
println(jacobian)
输出
- 解析:
-
函数 g ( x ) = [ x 1 2 , x 1 x 2 , x 2 2 ] g(x) = [x_1^2, x_1 x_2, x_2^2] g(x)=[x12,x1x2,x22]。
-
雅可比矩阵为:
J = [ ∂ g 1 ∂ x 1 ∂ g 1 ∂ x 2 ∂ g 2 ∂ x 1 ∂ g 2 ∂ x 2 ∂ g 3 ∂ x 1 ∂ g 3 ∂ x 2 ] J = \begin{bmatrix} \frac{\partial g_1}{\partial x_1} & \frac{\partial g_1}{\partial x_2} \\ \frac{\partial g_2}{\partial x_1} & \frac{\partial g_2}{\partial x_2} \\ \frac{\partial g_3}{\partial x_1} & \frac{\partial g_3}{\partial x_2} \end{bmatrix} J= ∂x1∂g1∂x1∂g2∂x1∂g3∂x2∂g1∂x2∂g2∂x2∂g3 = [ 2 x 1 0 x 2 x 1 0 2 x 2 ] \begin{bmatrix} 2x_1 & 0 \\ x_2 & x_1 \\ 0 & 2x_2 \end{bmatrix} 2x1x200x12x2
-
在 x = [ 1.0 , 2.0 ] x = [1.0, 2.0] x=[1.0,2.0] 时,结果为:
[ 2.0 0.0 2.0 1.0 0.0 4.0 ] \begin{bmatrix} 2.0 & 0.0 \\ 2.0 & 1.0 \\ 0.0 & 4.0 \end{bmatrix} 2.02.00.00.01.04.0
-
3. 错误调用的情况
错误调用 gradient
对矢量值函数
如果尝试对矢量值函数调用 gradient
会导致报错,因为梯度只适用于标量值函数。
例子
g(x) = [x[1]^2, x[1]*x[2], x[2]^2]
x = [1.0, 2.0]
grad = ForwardDiff.gradient(g, x) # 错误
报错信息
- 原因:
gradient
只能对标量值函数使用,而这里的 g ( x ) g(x) g(x) 是矢量值函数。
错误调用 jacobian
对标量值函数
如果尝试对标量值函数调用 jacobian
,理论上应返回梯度的转置,但通常会导致报错。
例子
f(x) = x[1]^2 + x[2]^2
x = [1.0, 2.0]
jacobian = ForwardDiff.jacobian(f, x) # 错误
报错信息
- 原因:
jacobian
期望输入是矢量值函数,而这里的 f ( x ) f(x) f(x) 是标量值函数。
Lecture 4
Kronecker 积(Kronecker Product)
Kronecker 积的定义
给定两个矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n 和 B ∈ R p × q B \in \mathbb{R}^{p \times q} B∈Rp×q,它们的 Kronecker 积 A ⊗ B A \otimes B A⊗B 是一个大小为 ( m p ) × ( n q ) (mp) \times (nq) (mp)×(nq) 的矩阵。具体构造规则如下:
- A ⊗ B A \otimes B A⊗B 将矩阵 A A A 的每个元素 a i j a_{ij} aij 替换为该元素与矩阵 B B B 的乘积 a i j B a_{ij}B aijB。
数学表达为:
A ⊗ B = [ a 11 B a 12 B … a 1 n B a 21 B a 22 B … a 2 n B ⋮ ⋮ ⋮ a m 1 B a m 2 B … a m n B ] A \otimes B = \begin{bmatrix} a_{11} B & a_{12} B & \dots & a_{1n} B \\ a_{21} B & a_{22} B & \dots & a_{2n} B \\ \vdots & \vdots & & \vdots \\ a_{m1} B & a_{m2} B & \dots & a_{mn} B \\ \end{bmatrix} A⊗B= a11Ba21B⋮am1Ba12Ba22B⋮am2B………a1nBa2nB⋮amnB
Kronecker 积的计算方法
假设:
A = [ 1 2 3 4 ] , B = [ 0 5 6 7 ] A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix}, \quad B = \begin{bmatrix} 0 & 5 \\ 6 & 7 \\ \end{bmatrix} A=[1324],B=[0657]
计算 A ⊗ B A \otimes B A⊗B:
A ⊗ B = [ 1 ⋅ B 2 ⋅ B 3 ⋅ B 4 ⋅ B ] = [ [ 0 5 6 7 ] [ 0 10 12 14 ] [ 0 15 18 21 ] [ 0 20 24 28 ] ] A \otimes B = \begin{bmatrix} 1 \cdot B & 2 \cdot B \\ 3 \cdot B & 4 \cdot B \\ \end{bmatrix}= \begin{bmatrix} \begin{bmatrix} 0 & 5 \\ 6 & 7 \\ \end{bmatrix} & \begin{bmatrix} 0 & 10 \\ 12 & 14 \\ \end{bmatrix} \\ \begin{bmatrix} 0 & 15 \\ 18 & 21 \\ \end{bmatrix} & \begin{bmatrix} 0 & 20 \\ 24 & 28 \\ \end{bmatrix} \\ \end{bmatrix} A⊗B=[1⋅B3⋅B2⋅B4⋅B]= [0657][0181521][0121014][0242028]
最终结果为:
A ⊗ B = [ 0 5 0 10 6 7 12 14 0 15 0 20 18 21 24 28 ] A \otimes B = \begin{bmatrix} 0 & 5 & 0 & 10 \\ 6 & 7 & 12 & 14 \\ 0 & 15 & 0 & 20 \\ 18 & 21 & 24 & 28 \\ \end{bmatrix} A⊗B= 0601857152101202410142028
Kronecker 积的性质
- 尺寸:
如果 A A A 是 m × n m \times n m×n, B B B 是 p × q p \times q p×q,那么 A ⊗ B A \otimes B A⊗B 的大小为 ( m p ) × ( n q ) (mp) \times (nq) (mp)×(nq)。 - 分布律:
( A + C ) ⊗ B = A ⊗ B + C ⊗ B (A + C) \otimes B = A \otimes B + C \otimes B (A+C)⊗B=A⊗B+C⊗B - 结合律:
( A ⊗ B ) ⊗ C = A ⊗ ( B ⊗ C ) (A \otimes B) \otimes C = A \otimes (B \otimes C) (A⊗B)⊗C=A⊗(B⊗C) - 与标量的关系:
( α A ) ⊗ B = A ⊗ ( α B ) (\alpha A) \otimes B = A \otimes (\alpha B) (αA)⊗B=A⊗(αB)
Kronecker 积的应用
-
生成重复矩阵:
- 在 Julia 中,
kron(ones(m), A)
会生成一个矩阵,其中矩阵 A A A 的每一行重复 m m m 次。 - 类似地,
kron(ones(m)', A)
会生成一个矩阵,其中矩阵 A A A 的每一列重复 m m m 次。
- 在 Julia 中,
-
向量化操作:
- Kronecker 积常用于将向量化表达与矩阵展开结合。比如,将矩阵 A A A 的每一项与另一个矩阵 B B B 关联。
-
量子计算:
- Kronecker 积在量子力学中用于描述复合量子系统的状态和操作,比如计算张量积态。
-
系统理论和信号处理:
- Kronecker 积用于构造大规模系统矩阵,特别是在多维信号处理中的应用。
在 Julia 中的实现
在 Julia 中,kron
函数用于计算 Kronecker 积,语法为:
C = kron(A, B)
在equality-constraints.ipynb代码中的作用
在 plot_landscape
函数中,Kronecker 积被用来生成网格点:
kron(ones(Nsamp), LinRange(-4, 4, Nsamp)')
:- 生成一个矩阵,其中每一行是从 − 4 -4 −4 到 4 4 4 的序列,表示 x x x 坐标。
kron(ones(Nsamp)', LinRange(-4, 4, Nsamp))
:- 生成一个矩阵,其中每一列是从 − 4 -4 −4 到 4 4 4 的序列,表示 y y y 坐标。
这样,通过 Kronecker 积可以快速构造二维网格,用于绘制等高线图。
相关文章:

【2024 Optimal Control 16-745】Julia语法
Lecture 2 θ和它的导数符号是通过 Julia 中的变量命名方式实现的 变量 θ 的输入: 在 Julia 中,θ 是一个合法的变量名,就像普通的字母 x 或 y 一样。要输入 θ,可以使用以下方法: 在 Jupyter Notebook 或 Julia REP…...

Opencv+ROS实现摄像头读取处理画面信息
一、工具 ubuntu18.04 ROSopencv2 编译器:Visual Studio Code 二、原理 图像信息 ROS数据形式:sensor_msgs::Image OpenCV数据形式:cv:Mat 通过cv_bridge()函数进行ROS向opencv转换 cv_bridge是在ROS图像消息和OpenCV图像之间进行转…...

网络安全,文明上网(2)加强网络安全意识
前言 在当今这个数据驱动的时代,对网络安全保持高度警觉已经成为每个人的基本要求。 网络安全意识:信息时代的必备防御 网络已经成为我们生活中不可或缺的一部分,信息技术的快速进步使得我们对网络的依赖性日益增强。然而,网络安全…...

深度学习实战图像缺陷修复
这里写目录标题 概述1. 图像缺陷修复的研究背景2. 传统图像缺陷修复方法的局限性(1) 基于纹理合成的方法(2) 基于偏微分方程(PDE)的方法 3. 深度学习在图像缺陷修复中的兴起(1) 深度学习的基本思路(2) 深度学习方法的优势(3) 关键技术的引入 4. 深度学习…...

jenkins 2.346.1最后一个支持java8的版本搭建
1.jenkins下载 下载地址:Index of /war-stable/2.346.1 2.部署 创建目标文件夹,移动到指定位置 创建一个启动脚本,deploy.sh #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/opt/projects/jenkins # 服务名称。同时约定部…...

【数据库原理】创建与维护表,DDL数据定义语言
数据描述语言(数据定义语言) 就是管理数据库整个库,整个表,表的属性列的语句。 常用词儿就是数据库或表的增删改查:CREATE创建、DROP删除、ALTER修改、SHOW查看、USE进入表。 表的字段控制:PRIMARY KEY主键…...

驾驭Go语言中的不确定性:深入错误处理机制
驾驭Go语言中的不确定性:深入错误处理机制 在Go语言的编程世界中,错误处理是确保程序健壮性的关键。Go语言通过显式的错误返回值和panic/recover机制,提供了一套独特的错误处理策略。本文将深入探讨Go语言中的错误处理,包括原理、技术细节和实际案例,帮助读者在实际编程中…...

3D Gaussian Splatting在鱼眼相机中的应用与投影变换
paper:Fisheye-GS 1.概述 3D 高斯泼溅 (3DGS) 因其高保真度和实时渲染而备受关注。然而,由于独特的 3D 到 2D 投影计算,将 3DGS 适配到不同的相机型号(尤其是鱼眼镜头)带来了挑战。此外,基于图块的泼溅效率低下,尤其是对于鱼眼镜头的极端曲率和宽视野,这对于其更广泛…...

【Unity踩坑】在Mac上安装Cocoapods失败
在集成Unity Ad时,如果是第一次在iOS上集成,会在Mac上安装Cocoapods。 安装时提示下面的错误: Error installing cocoapods:The last version of drb (> 0) to support your Ruby & RubyGems was 2.0.5. Try installing it with gem…...

uni-app 认识条件编译,了解多端部署
一. 前言 在使用 uni-app 进行跨平台开发的过程中,经常会遇到需要针对不同平台或不同环境进行条件编译的情况。条件编译是一种在编译过程中根据指定条件选择不同代码路径的技术,可以帮助我们在不同平台或环境下编写不同的代码,以适应不同的平…...

SPA 首屏加载慢的原因及解决方案:结合实际项目的详细讲解
在现代前端开发中,单页面应用程序 (SPA) 的首屏加载速度是用户体验的关键因素之一。首屏加载慢会直接影响用户对网站的第一印象,甚至导致用户流失。因此,优化首屏加载速度是每个前端开发者需要重点关注的内容。 1. 什么是首屏加载? 首屏加载指的是用户访问一个网站或应用…...

vue3+ts el-tabel 搜索组件
爷爷页面 <template> <searchstyle"z-index: 9999":options"options"placeholder"请选择时间,或输入名称、单选、多个勾选、模糊查询"search"onSearch"></search> </template> <script lan…...

leetcode 排序算法汇总
快速排序 def quicksort(arr): if len(arr) < 1: return arr else: pivot arr[len(arr) // 2] # 选择中间值作为基准 left [x for x in arr if x < pivot] # 小于基准的放左边 middle [x for x in arr if x pivot] # 等…...

【C】错误的变量定义导致sprintf()输出错误
问题描述 刚刚写一个用AT指令透传相关的函数,需要用到sprintf()拼接字符串。 结果发现sprintf()拼接出来的内容是错误的,简化后的代码如下: const char AT_CIPSEND_FIX_LENGTH_HEADER[11] "ATCIPSEND"; // 错误的࿰…...

python基础导包
Python项目代码结构与导包详解 目录 引言 Python项目的基本结构 2.1 单文件项目2.2 多模块项目2.3 包结构项目2.4 示例项目结构 模块与包 3.1 模块(Module)3.2 包(Package)3.3 子包(Subpackage) 导包&a…...

【含开题报告+文档+PPT+源码】基于SSM的电影数据挖掘与分析可视化系统设计与实现
开题报告 随着互联网的普及和数字娱乐产业的蓬勃发展,电影作为一种重要的娱乐方式,已经深入人们的日常生活。然而,面对海量的电影资源,用户在选择观影内容时常常感到困惑和无所适从。传统的电影推荐方式,如人工筛选、…...

strlwr(arr);的模拟实现(c基础)
hi , I am 36 适合对象c语言初学者 strlwr(arr);函数是把arr数组变为小写字母,并返回arr 链接介绍一下strlwr(arr);(c基础)-CSDN博客 下面进行My__strlwr(arr);模拟实现 #include<stdio.h> //返回值为arr(地址),于是用指针变量,原数组为字符型…...

LCR 002. 二进制求和
一.题目: . - 力扣(LeetCode) 二.原始解法-利用二进制逢二进一: 自己实现的时候忽略了一点,就是进位是会滚动的,不是进位一次就结束,很复杂跳过 三.正确解法及好的讲解、力扣解法参考…...

MySQL-C3P0连数据库报错问题
MySQL-C3P0连数据库报错问题 No suitable driver found for 首先检查MySQL数据库版本与依赖版本是否一致,如8.0.40数据库,需要使用8.0以上的依赖。检查c3p0的依赖版本,需要符合系统应用特性检查c3p0.xml配置文件的地址,需要在reso…...

云计算期中作业:Spark机器学习问题解决
在原有pdf教程教程上,做一个补充 idea内搭建环境 导入依赖 就直接利用之前的作业工程项目里直接写,所以依赖基本上不用再导入了,如果要导入,看自己依赖的版本号,不要直接复制教程,比如我的: …...

计算机网络socket编程(6)_TCP实网络编程现 Command_server
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(6)_TCP实网络编程现 Command_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论…...

RabbitMQ 集群
文章目录 前言单机多节点搭建集群创建RabbitMQ节点停止服务并重置将节点加入到集群中查看集群状态宕机 结论 前言 RabbitMQ 作为消息中间件,可以与多个生产者和消费者进行绑定,但是如何只有一台 RabbitMQ 服务的话,那么这个 RabbitMQ 就需要…...

从零开始:使用 Spring Boot 开发图书管理系统
如何利用是springboot搭建一个简单的图书管理系统,下面让我们一起来看看吧 文章目录 项目结构1. 主类 LibraryApplication.java功能与注意事项: 2. 模型类 Book.java功能与注意事项: 3. 数据仓库接口 BookRepository.java功能与注意事项&…...

速盾:海外服务器使用CDN加速有什么优势?
CDN(Content Delivery Network)是指一种分布式网络架构,将内容分发到全球多个节点服务器上,使用户能够就近获取所需内容。海外服务器使用CDN加速,具有以下几个优势: 提高访问速度:CDN将内容复制…...

(二)手势识别——动作模型训练【代码+数据集+python环境(免安装)+GUI系统】
(二)手势识别——动作模型训练【代码数据集python环境(免安装)GUI系统】 背景意义 随着互联网的普及和机器学习技术的进一步发展,手势识别技术开始使用深度学习等方法进行手势识别,如Convolutional Neural…...

window系统下使用open-webui+ollama部署大模型
前面一篇博文中讲述了window下用ollama+AnythingLLM部署本地知识库,但是个人感觉anythingllm不是很好用,还不如直接用cmd窗口,而且仅能本机使用,如果想部署到服务器上面供其他人访问,完全不可行,但是使用open-webui+ollama或者独立的open-webui救可以实现。 使用open-web…...

一加ACE 3 Pro手机无法连接电脑传输文件问题
先说结论:OnePlus手机无法连接电脑传输数据的原因,大概率是一加数据线的问题。尝试其他手机品牌的数据线(比如华为),再次尝试。 连接电脑方法: 1 打开开发者模式(非必要操作) 进入…...

因果机器学习EconML | 客户细分案例——基于机器学习的异质性处理效果估计
机器学习的最大承诺之一是在众多应用领域中实现决策自动化。在大多数数据驱动的个性化决策场景中出现的一个核心问题是对异质性处理效果的估计:作为处理样本的一组可观察特征的函数,干预对感兴趣结果的影响是什么?例如,这个问题出…...

找到最大“葫芦”组合
文章目录 问题描述解题思路分析1. 数据预处理2. 特殊情况处理3. 普通情况计算4. 结果输出 Java代码实现复杂度分析与优化 在经典德州扑克中,“葫芦”是一种较强的牌型。它由五张牌组成,其中三张牌面值相同,另外两张牌面值也相同。本文将探讨一…...

shell(9)完结
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...