Lang–Kobayashi方程实现混沌python实现混沌序列图像

news2025/2/4 18:51:26

Lang–Kobayashi方程描述为:

在这里插入图片描述

第一部分(Drive laser)是描述的驱动激光器,第二部分(Response laser)描述的是响应激光器。实验结构图如下:
单向耦合半导体激光器中混沌同步的模型
虚线框表示响应激光器中的闭环配置。开环中响应激光器无反馈,产生的时间序列与驱动激光器相同,而闭环配置对于响应激光器添加了反馈,产生的时间序列与驱动激光器不同。
开环配置产生的混沌时间序列如下:

Figure 3开环配置混沌时间序列(蓝色为驱动激光器,红色为响应激光器,黑色为延迟驱动激光)

Figure 4开环配置三种混沌时间序列对比

开环配置产生的混沌时间序列如下:

在这里插入图片描述

开环配置中驱动与响应和延时之间的对比:

在这里插入图片描述

闭环配置产生的混沌时间序列:

在这里插入图片描述

闭环配置中驱动与响应和延时之间的对比:

在这里插入图片描述混沌序列的横坐标为时间序列,点与点之间的间隔为定值。纵坐标为各中电场振幅的平方。混沌与噪声十分相似,又有很大不同:混沌是指非线性动力学系统的复杂演化行为,具有确定性的规律,但对初始条件极其敏感。噪声是指随机性的信号或干扰,以无规律的、随机的成分为特征,会对信号进行干扰和扰动。混沌系统的行为是由特定方程或规则决定的,而噪声是一个随机过程。混沌系统表现出的行为是非周期性的,而噪声通常不具备明确的周期性。

闭环配置数值模拟python代码:

import math
import matplotlib.pyplot as plt
C = 2.99792458e8
M = 6
r3Dri = 0.008
r3Res = 0.008
JRatio = 1.3
LDri = 0.6
LRes = 0.6
LInj = 1.2
detun = -4.0e9
kapInjRatio = 12.5
r2 = 0.556
tauIn = 8.0e-12
lambdaa = 1.537e-6
Gn = 8.4e-13
N0 = 1.4e24
tauP = 1.927e-12
tauS = 2.04e-9
alpha = 3.0
Nth = float
Jth = float
J = float
kapDri = float
kapRes = float
kapInj = float
tauDri = float
tauRes = float
tauInj = float
omega0 = float
phaseShiftDri = float
phaseShiftRes = float
phaseShiftInj = float
DELAY_MAX = 100000
eDelayDri = [0.0]*DELAY_MAX
phiDelayDri = [0.0]*DELAY_MAX
eDelayRes = [0.0]*DELAY_MAX
phiDelayRes = [0.0]*DELAY_MAX
eDelayInj = [0.0]*DELAY_MAX
phiDelayInj = [0.0]*DELAY_MAX
delayDriNum = int
delayResNum = int
delayInjNum = int
delayDriIndex = int
delayResIndex = int
delayInjIndex = int
def calcParameter(h):
    global tauRes, tauInj, J, kapInj, kapDri, kapRes, tauDri, omega0, phaseShiftDri, phaseShiftRes, phaseShiftInj, delayResNum, delayInjNum, delayDriNum
    Nth = N0 + 1.0 / tauP / Gn
    Jth = Nth / tauS
    J = JRatio * Jth
    kapDri = (1 - r2 * r2) * r3Dri / r2 / tauIn
    kapRes = (1 - r2 * r2) * r3Res / r2 / tauIn
    kapInj = kapInjRatio * kapDri
    tauDri = 2.0 * LDri / C
    tauRes = 2.0 * LRes / C
    tauInj = LInj / C
    omega0 = 2.0 * math.pi*C/lambdaa
    phaseShiftDri = math.fmod(omega0 * tauDri, 2.0 * math.pi)
    phaseShiftRes = math.fmod((omega0 - 2.0 * math.pi * detun) * tauRes, 2.0 * math.pi)
    phaseShiftInj = math.fmod(omega0 * tauInj, 2.0 * math.pi)
    delayDriNum = int(tauDri / h)
    delayResNum = int(tauRes / h)
    delayInjNum = int(tauInj / h)

def initializeDelay(a):
    global delayDriIndex,delayInjIndex,delayResIndex,DELAY_MAX
    delayDriIndex = 0
    delayResIndex = 0
    delayInjIndex = 0
    for item in range(DELAY_MAX):
        eDelayDri[item] = a[0]
        phiDelayDri[item] = a[1]
    for item in range(DELAY_MAX):
        eDelayRes[item] = a[3]
        phiDelayRes[item] = a[4]
    for item in range(DELAY_MAX):
        eDelayInj[item] = 0.0
        phiDelayInj[item] = 0.0


def laser(x,b,theta):
    global kapRes,kapInj,kapDri,delayResIndex,delayInjIndex,delayDriIndex,J
    b[0] = 1.0 / 2.0 * (Gn * (x[2] - N0) - 1.0 / tauP) * x[0] + kapDri * eDelayDri[delayDriIndex] * math.cos(theta[0])
    b[1] = alpha / 2.0 * (Gn * (x[2] - N0) - 1.0 / tauP) - kapDri * eDelayDri[delayDriIndex]/ x[0] * math.sin(theta[0])
    b[2] = J - x[2] / tauS - Gn * (x[2] - N0) * x[0] * x[0]
    b[3] = 1.0 / 2.0 * (Gn * (x[5] - N0) - 1.0 / tauP) * x[3] + kapRes * eDelayRes[delayResIndex] * math.cos(theta[1]) + kapInj * eDelayInj[delayInjIndex] * math.cos(theta[2])
    b[4] = alpha / 2.0 * (Gn * (x[5] - N0) - 1.0 / tauP) - kapRes * eDelayRes[delayResIndex] / x[3] * math.sin(theta[1]) - kapInj * eDelayInj[delayInjIndex] / x[3] * math.sin(theta[2])
    b[5] = J - x[5] / tauS - Gn * (x[5] - N0) * x[3] * x[3]

def rungeKutta(a, h, t):
    global delayDriIndex,delayInjIndex,delayResIndex,phaseShiftRes,phaseShiftInj,phaseShiftDri
    x=[0.0]*M
    b=[[0.0]*M]*4
    theta=[0.0]*3
    theta[0] = math.fmod(phaseShiftDri + a[1] - phiDelayDri[delayDriIndex], 2.0 * math.pi)
    theta[1] = math.fmod(phaseShiftRes + a[4] - phiDelayRes[delayResIndex], 2.0 * math.pi)
    theta[2] = math.fmod(phaseShiftInj + a[4] - phiDelayInj[delayInjIndex] - 2.0 * math.pi * detun * t, 2.0 * math.pi)
    for item in range(4):
        for jtem in range(M):
            if item == 0:
                x[jtem] = a[jtem]
            if item == 1:
                x[jtem] = a[jtem] + h * b[0][jtem] / 2.0
            if item == 2:
                x[jtem] = a[jtem] + h * b[1][jtem] / 2.0
            if item == 3:
                x[jtem] = a[jtem] + h * b[2][jtem]
        laser(x, b[item], theta)
    for item in range(M):
        a[item] += h * (b[0][item] + 2.0 * b[1][item] + 2.0 * b[2][item] + b[3][item]) / 6.0
    eDelayDri[delayDriIndex] = a[0]
    eDelayRes[delayResIndex] = a[3]
    eDelayInj[delayInjIndex] = a[0]
    phiDelayDri[delayDriIndex] = a[1]
    phiDelayRes[delayResIndex] = a[4]
    phiDelayInj[delayInjIndex] = a[1]
    delayDriIndex = (delayDriIndex + 1) % delayDriNum
    delayResIndex = (delayResIndex + 1) % delayResNum
    delayInjIndex = (delayInjIndex + 1) % delayInjNum

if __name__ == "__main__":
    a = [0.0]*M
    t = float
    h = 5.0e-12
    transient = 5000.0e-9
    tMax = 50.0e-9
    trans = int(transient / h)
    n = int(tMax / h)
    div = 10
    a[0] = 1.3e10
    a[1] = 0.0
    a[2] = 1.90e24
    a[3] = 1.4e10
    a[4] = 0.0
    a[5] = 1.85e24
    initializeDelay(a)
    calcParameter(h)
    for item in range(trans):
        t = h*item
        rungeKutta(a, h, t)
        pass
    timevalue = []
    DI = []
    RI = []
    DDI = []
    for item in range(n):
        t = h*(trans + item)
        if item % div == 0:
            print(h*item*1e9, end=' ')
            timevalue.append(h*item*1e9)
            print(a[0] * a[0] * 1e-20, end=' ')
            DI.append(a[0] * a[0] * 1e-20)
            print(a[3] * a[3] * 1e-20, end=' ')
            RI.append(a[3] * a[3] * 1e-20)
            print(eDelayDri[delayDriIndex] * eDelayDri[delayDriIndex] * 1e-20)
            DDI.append(eDelayDri[delayDriIndex] * eDelayDri[delayDriIndex] * 1e-20)
        rungeKutta(a, h, t)
plt.subplot(3, 1, 1)
plt.plot(timevalue, DI, color='blue')
plt.title("Drive Intensity")
plt.subplot(3, 1, 2)
plt.plot(timevalue, RI, color='red')
plt.title("Response Intensity")
plt.subplot(3,1,3)
plt.plot(timevalue,DDI,color='black')
plt.title("Delayed Drive Intensity")
plt.show()
plt.plot(timevalue, DI, color='blue', label='Drive Intensity')
plt.plot(timevalue, RI, color='red', label='Response Intensity')
plt.plot(timevalue, DDI, color='black', label='Delayed Drive Intensity')
plt.legend(loc='upper left', bbox_to_anchor=(0.01, 0.87))
plt.ylim(1, 18)
plt.show()

开环配置数值模拟python代码:

import math
import matplotlib.pyplot as plt
C=2.99792458e8#光速
M=6#方程的数量
r3Dri=0.008#驱动器外镜反射率
JRatio=1.3#归一化注入电流
LDri=0.6#驱动器外腔长度
LInj=1.2#驱动器和相应激光器之间的距离
detun=0.0e9#光频失谐频率
kapInjRatio=1.0#注入强度比驱动反馈强度
r2=0.556#内镜反射率
tauIn=8.0e-12#内腔往返时间
lambdaa=1.537e-6#光的波长
Gn=8.4e-13#增益系数
N0=1.4e24#透明载流子密度
tauP=1.927e-12#光子寿命
tauS=2.04e-9#载体寿命
alpha=3.0#参数
DELAY_MAX=100000#延迟的最大数组大小
J=float#注入电流
kapDri=float
kapInj=float
tauDri=float
tauInj=float
delayDriNum=int
delayInjNum=int
delayDriIndex=int
delayInjIndex=int
omega0=float
phaseShiftDri=float
phaseShiftInj=float
eDelayDri=[0]*DELAY_MAX
phiDelayDri=[0]*DELAY_MAX
eDelayInj=[0]*DELAY_MAX
phiDelayInj=[0]*DELAY_MAX
def calcParameter(h):
    global J,kapInj,phaseShiftInj,phaseShiftDri,delayInjNum,delayDriNum,tauS,JRatio,kapInj,kapDri,tauInj,tauDri,omega0,kapInjRatio,lambdaa,C
    Nth = N0 + 1.0 / tauP / Gn#阈值载流子密度
    Jth = Nth / tauS#阈值注入电流
    J = JRatio * Jth#注入电流
    kapDri = (1 - r2 * r2) * r3Dri / r2 / tauIn#驱动反馈强度
    kapInj = kapInjRatio * kapDri#从驱动到响应的注射强度
    tauDri = 2.0 * LDri / C#驱动的外腔往返时间
    tauInj = LInj / C#从驱动到响应的耦合时间
    omega0 = 2.0 * math.pi * C /lambdaa#光角频率
    phaseShiftDri = math.fmod(omega0 * tauDri, 2.0 * math.pi)#驱动的初始相移
    phaseShiftInj = math.fmod(omega0 * tauInj, 2.0 * math.pi)#耦合的初始相移
    delayDriNum = int(tauDri/h)
    delayInjNum = int(tauInj/h)
def initializeDelay(a):
    global delayDriIndex,delayInjIndex,DELAY_MAX
    delayDriIndex = delayInjIndex = 0
    for item in range(DELAY_MAX):
        eDelayDri[item] = a[0]
        phiDelayDri[item] = a[1]
    for item in range(DELAY_MAX):
        eDelayInj[item] = 0.0
        phiDelayInj[item] = 0.0
        pass
    pass
def laser(x,b,theta):
    global delayDriIndex,delayInjIndex,Gn,N0,tauP,kapInj,kapDri,alpha,J,tauS
    b[0] = 1.0 / 2.0 * (Gn * (x[2] - N0) - 1.0 / tauP) * x[0] + kapDri * eDelayDri[delayDriIndex] * math.cos(theta[0])
    b[1] = alpha / 2.0 * (Gn * (x[2] - N0) - 1.0 / tauP) - kapDri * eDelayDri[delayDriIndex] / x[0] * math.sin(theta[0])
    b[2] = J - x[2] / tauS - Gn * (x[2] - N0) * x[0] * x[0];
    b[3] = 1.0 / 2.0 * (Gn * (x[5] - N0) - 1.0 / tauP) * x[3] + kapInj * eDelayInj[delayInjIndex] * math.cos(theta[1])
    b[4] = alpha / 2.0 * (Gn * (x[5] - N0) - 1.0 / tauP) - kapInj * eDelayInj[delayInjIndex] / x[3] * math.sin(theta[1])
    b[5] = J - x[5] / tauS - Gn * (x[5] - N0) * x[3] * x[3];
def rungeKutta(a,h,t):
    global delayDriIndex,delayInjIndex,M,phaseShiftDri,phaseShiftInj,detun,delayDriNum,delayInjNum
    x=[0]*M
    b=[[0]*M]*4
    theta=[0]*2
    theta[0] = math.fmod(phaseShiftDri + a[1] - phiDelayDri[delayDriIndex], 2.0 * math.pi)
    theta[1] = math.fmod(phaseShiftInj + a[4] - phiDelayInj[delayInjIndex] - 2.0 * math.pi * detun * t, 2.0 * math.pi)
    for item in range(4):
        for jtem in range(M):
            if item == 0:
                x[jtem] = a[jtem]
            if item == 1:
                x[jtem] = a[jtem] + h * b[0][jtem] / 2.0
            if item == 2:
                x[jtem] = a[jtem] + h * b[1][jtem] / 2.0
            if item == 3:
                x[jtem] = a[jtem] + h * b[2][jtem]
        laser(x, b[item], theta)
    for item in range(M):
        a[item] += h * (b[0][item] + 2.0 * b[1][item] + 2.0 * b[2][item] + b[3][item]) / 6.0
    #更新延迟数组
    eDelayDri[delayDriIndex] = a[0]
    eDelayInj[delayInjIndex] = a[0]
    phiDelayDri[delayDriIndex] = a[1]
    phiDelayInj[delayInjIndex] = a[1]
    delayDriIndex = (delayDriIndex + 1) % delayDriNum
    delayInjIndex = (delayInjIndex + 1) % delayInjNum
if __name__ == "__main__":
    a = [0] * M
    h = 5.0e-12#计算步长
    transient = 5000.0e-9#瞬态时间
    tMax = 50.0e-9#时间步长
    trans = int(transient / h)
    n = int(tMax / h)
    div = 10#绘图间隔
    a[0] = 1.3e10#驱动的电场振幅
    a[1] = 0.0#用于驱动的电场相位
    a[2] = 1.90e24#驱动载流子密度
    a[3] = 1.4e10#响应的电场振幅
    a[4] = 0.0#响应的电场相位
    a[5] = 1.85e24#响应载流子密度
    time_value=[]#时间序列
    DI=[]#驱动强度
    RI=[]#反应强度
    DDI=[]#延迟驱动强度
    initializeDelay(a)
    calcParameter(h)#过渡过程计算的数学模型
    for item in range(trans):
        t = h * item
        rungeKutta(a, h, t)
    for item in range(n):
        t = h * (trans + item)
        if item % div == 0:
            print(h * item * 1e9, end=' ')
            time_value.append(h * item * 1e9)
            print(a[0] * a[0] * 1e-20, end=' ')
            DI.append(a[0] * a[0] * 1e-20)
            print(a[3] * a[3] * 1e-20, end=' ')
            RI.append(a[3] * a[3] * 1e-20)
            print(eDelayDri[delayDriIndex] * eDelayDri[delayDriIndex] * 1e-20)
            DDI.append(eDelayDri[delayDriIndex] * eDelayDri[delayDriIndex] * 1e-20)
        rungeKutta(a, h, t)
plt.subplot(3,1,1)
plt.plot(time_value,DI,color='blue')
plt.title("Drive Intensity")
plt.subplot(3,1,2)
plt.plot(time_value,RI,color='red')
plt.title("Response Intensity")
plt.subplot(3,1,3)
plt.plot(time_value,DDI,color='black')
plt.title("Delayed Drive Intensity")
plt.show()
plt.plot(time_value,DI,color='blue',label='Drive Intensity')
plt.plot(time_value,RI,color='red',label='Response Intensity')
plt.plot(time_value,DDI,color='black',label='Delayed Drive Intensity')
plt.legend(loc='upper left', bbox_to_anchor=(0.01, 0.87))
plt.ylim(1,19)
plt.show()

运行的代码,依照光通信大书中附件的c语言代码改写成的python代码,运用的积分思想是数学中的四阶龙格库塔的方法,对于上次的模型的代码修改还在进行中。欢迎佬们对上次二阶龙格库塔解混沌方程的方法进行指导!

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

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

相关文章

C#电源串口调试

目的 记录串口调试的遇到的一些问题以及相应的解决方法 1.串口定义:串口是计算机与其他硬件传输数据的通道,在计算机与外设通信时起到重要作用 2.串口通信的基础知识 C#中的串口通信类 C#使用串口通信类是SerialPort(),该类使用方法是 new 一个 SerialPort对象 为S…

【大模型实践】基于文心一言的对话模型设计

文心一言(英文名:ERNIE Bot)是百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动、回答问题、协助创作,高效便捷地帮助人们获取信息、知识和灵感。文心一言从数万亿数据和数千亿知识…

Git 配置多个 SSH-Key

Git 配置多个 SSH-Key (两个都是gitee) 先看图,官网固然重要,但是不完全行(因为官网示例是一个gitee一个github),现在想是想多个都是gitee在他上面稍微更改即可 一般不对遇到这种问题&#xf…

Kylin基础知识点解析与应用探索

目录 学习目标: 学习内容: 学习时间: 学习产出: Kylin简介 什么是Kylin Kylin的历史和发展 Kylin在大数据领域的地位和作用 Kylin架构 Kylin的组成部分和模块 Kylin的工作原理和流程 Kylin与其他大数据组件的关系和集成 Kylin功能…

ffmpeg 硬件解码零拷贝unity 播放

ffmpeg硬件解码问题 ffmpeg 在硬件解码,一般来说,我们解码使用cuda方式,当然,最好的方式是不要确定一定是cuda,客户的显卡不一定有cuda,windows 下,和linux 下要做一些适配工作,最麻…

Python知识(2/20):Python基本数据类型

1. Python基本数据类型 Python 中基本的数据类型主要有整型(int)、浮点型(float)、布尔型(bool)、 字符串(str)。 1.1 整型-int 对于整数类型来说,Python 的特殊之处在…

通过navcat的ssh连接 将一个服务器当作跳板连接远程mysql

文章目录 通过ssh连接一个服务器当作跳板连接远程mysql 通过ssh连接一个服务器当作跳板连接远程mysql 简单来说 一共三台机器 windows Linux(入口) Linux(mysql) windows 可以通过ssh 私钥连接Linux(入口)…

数据分析基础之《numpy(4)—ndarry运算》

一、逻辑运算 当我们要操作符合某一条件的数据时,需要用到逻辑运算 1、运算符 满足条件返回true,不满足条件返回false # 重新生成8只股票10个交易日的涨跌幅数据 stock_change np.random.normal(loc0, scale1, size(8, 10))# 获取前5行前5列的数据 s…

小程序隐私保护指引组件wx.getPrivacySetting

问题:项目里使用了获取微信昵称的input标签,发现上线后获取不到微信昵称 解决方案去更新隐私保护协议 然后重新进入小程序就会弹出弹框 2.自己自定义一个隐私保护提示,以下是我的组件 在component里面创建privacyPopup文件夹 privacyPopup.…

裸色打底裤:“光腿神器”怎么就成了“美丽刑具”?

近日,裸色打底裤因其隐形又保暖、拍照显得像真的光腿一般的效果,一直有着“光腿神器”的美誉,在冬天销量十分可观。然而,最近关于“光腿神器的危害有多大”的话题登上热搜,引发了广泛关注。 裸色打底裤作为一种时尚单…

Ubuntu 常用命令之 chown 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 chown 命令在 Ubuntu 系统中用于改变文件或目录的所有者和组。这个命令的基本格式是 chown [选项]... [所有者][:[组]] 文件...。 chown 命令的主要参数有 -c 或 --changes:类似 verbose,但只在发生改变时…

【快速解决】python数据可视化时候无法显示中文字符的问题/图表中无法显示中文字符

目录 问题展示 解决方法 运行效果展示 问题展示 解决方法 加入以下代码即可 import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False运行效果展示 成功运行出来 🌌点击下方个人名片,交流会…

如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1

本系列将分成三个部分,您将学习如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana,以及如何在 Grafana 上创建一个简单的控制面板。Prometheus 和 Grafana 是 Kubernetes 最受欢迎的两种开源监控工具。学习如何使用 Helm 集成这两个工具&#x…

15张超级有用的电商模版

电商即电子商务(Electronic Commerce) ,是利用计算机技术、网络技术和远程通信技术,实现电子化、数字化和网络化的整个商务过程。本专题包含电商运营策略、电商平台底层逻辑、营销流程设计等模板内容。 如果你是一个电商小白,你需要以下的电…

爬虫实战案例 -- 爬取豆瓣读书网页内容

进入网站检查信息 , 确定请求方式以及相关数据 找到爬取目标位置 开始敲代码 # 链接网站 def url_link(url):res requests.get(url,headers headers)response res.textparse_data(response)# 爬取信息 def parse_data(data):msg <li\sclass"media\sclearfix…

【沁恒蓝牙mesh】CH58x DataFlash 详解

本文主要介绍了 沁恒蓝牙芯片 CH58x 的 DataFlash 分区以及读写操作以及原理 &#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是喜欢记录零碎知识点的小菜鸟。&#x1f60e;&#x1f4dd; 个人主页&#xff1a;欢迎访问我的 Ethernet_Comm 博…

恶意软件样本行为分析——Process Monitor和Wireshark

1.1 实验名称 恶意软件样本行为分析 1.2 实验目的 1) 熟悉 Process Monitor 的使用 2) 熟悉抓包工具 Wireshark 的使用 3) VMware 的熟悉和使用 4) 灰鸽子木马的行为分析 1.3 实验步骤及内容 第一阶段&#xff1a;熟悉 Process Monitor 的使用 利用 Process …

ElasticSearch 数据分片

一、ElasticSearch 分片 ElasticSearch集群中有许多个节点(Node)&#xff0c;每一个节点实例就是一个实例&#xff1b;数据分布在分片之间。集群的容量和性能主要取决于分片如何在节点上如何分配。将数据分片是为了提高可处理的容量和易于进行水平扩展&#xff0c;为分片做副本…

Centos安装Docker及使用

文章目录 配置要求Centos安装Docker卸载docker&#xff08;可选&#xff09;安装docker首先需要大家虚拟机联网&#xff0c;安装yum工具然后更新本地镜像源&#xff1a;然后输入安装docker命令&#xff1a;查看docker的版本 启动docker关闭防火墙接着通过命令启动docker 配置镜…

Maven将Jar包打入本地仓库

Maven将Jar包打入本地仓库 Maven将Jar包打入本地仓库嘚吧嘚下载Maven配置Maven新建MAVEN_HOME编辑Path验证Maven配置 Jar包打入Maven仓库 Maven将Jar包打入本地仓库 嘚吧嘚 最近项目用到一个Jar包&#xff0c;不能从远程仓库拉取&#xff0c;只有一个Jar包&#xff0c;所以需…