VoIP通话-基于SIP协议的Asterisk(零)-Demo

news2024/10/7 11:26:00

文章首发及后续更新:https://mwhls.top/4116.html,无图/无目录/格式错误/更多相关请至首发页查看。
新的更新内容请到mwhls.top查看。
欢迎提出任何疑问及批评,非常感谢!

VoIP通话-基于SIP协议的Asterisk

这篇为 Demo,是我记录的初稿,该系列的后续文章都是从这里延伸的。

目录
项目说明
项目内容
项目介绍
资料搜集
基本了解
IP 电话
Ubuntu 安装及配置
Ubuntu 安装
Ubuntu 环境配置
GCC 安装
c-ares 安装
oSIP 与 eXosip 安装
下载安装
查阅文档
安装 Asterisk
配置 sip.conf
配置 extensions.conf
重启并检查
WSL 端口映射
其它 IP 电话软件测试
X-lite
转机
测试 IP 通话
方向选择
开放热点及测试
安卓登录 ZoiPer
关闭防火墙再次测试 ping
Linphone 与 ZoiPer 通话
下载与使用
通话
查阅资料
通话
局域网内的通信失败
说明
可能原因
更多测试

项目说明

项目内容

  • 基于 Linux 编译并搭建 oSIP 系统并通过 IP 电话通信测试

项目介绍

  • 在 Linux 中编译安装 oSIP 或 eXosip。
  • 安装 mysql。
  • 使用 IP 电话通信测试。

资料搜集

基本了解

  • oSIP
    • oSIP 在 GitHub 上开源了,并且给出了安装流程,但没有给出使用方式。
  • eXosip
    • eXosip 与 oSIP 一样在 GitHub 上开源了,是 oSIP 的扩展版本,同样只有安装,没有使用。
  • IP 电话
    • 搜索 oSIP IP电话 时,没有其他人的实现。
  • 方向选择
    • 现在已知了 oSIP 的安装方式,但不知如何与 IP 电话联系起来,但根据经验,可能是 oSIP 搭建通信链路与其它设备连接,IP 电话使用该链路与其它设备通信。
    • 那么接下来应该先使用 IP 电话,看看缺了什么东西,或是哪些部分和 oSIP 相关。

IP 电话

  • 软件选择
    • 查阅资料了解到有的 IP 电话软件支持多客户端,考虑到需要 IP 电话通信,因此选择有 Windows、Linux、Android 客户端的软件。
  • 下载安装 ZoiPer
    • 官网:https://www.zoiper.com/
    • 安装方式很朴素,略过。
  • 启动 ZoiPer
    • 启动,选择免费账户运行。
    • 登录页面右侧说明可以用 VoIP 账号登录,猜测可能 oSIP 启动后会给出 VoIP 相关信息。
      oSIP1.pngoSIP1.png
    • 出于礼貌点击一下创建账号,发现要求选择服务提供商。
  • 方向选择:
    • ZoiPer 的登录使用的是 VoIP 账户,且创建账户时需要选择服务提供商,那么可推测 oSIP 运行后会给出 VoIP 信息。
    • 因此接下来可查阅手册,或 oSIP 相关文章,看看是否会给出 VoIP 信息。
    • 在 eXosip 里面搜到了 VoIP 的信息,网上较少 eXosip+VoIP 的文章,因此接下来先安装 eXosip。

Ubuntu 安装及配置

Ubuntu 安装

  • 安装方式
    • 本来是想用 docker 的,但是这 docker 真是绝啊,上一次是不能和宿主机通信,搞得我再本地又安了一次环境,这次直接启动不了了,可恶。
    • 但我又不想按那两个虚拟机,用起来不是很顺手,所以选择了 Win11 的 WSL Linux:https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package
    • 下载地址:https://aka.ms/wslubuntu2004
  • 安装
    • 很朴素的安装方式,甚至不用选择,因此略过。
    • 报错:参考的对象类型不支持尝试的操作。
    • 卸载小黑盒加速器。
    • 绝,真是绝,见:https://github.com/microsoft/WSL/issues/4194
  • 进入与退出:
    • 命令行输入 wsl 进入 ubuntu
    • 输入 exit 退出至 windows。
    • 报错:安装其中一个文件系统时出现错误。有关详细信息,请运行'dmesg'。
    • 网上说 wsl --update 然后 wsl --shutdown 即可,但我没成功。
    • 我用 Tabby 里的 WSL 运行起来了,它似乎是运行了 C:\Windows\system32\wsl.exe 文件。
  • 注意
    • 20.04的阿里源和清华源都用不了,好像是啥生命周期结束了?反正我没解决掉,上次我是用桌面版的换源,那玩意可好使了,但是这个没有,得先换源才能下载,可恶。
    • 所以我又下了 22.04 的:https://www.microsoft.com/store/apps/9PN20MSR04DW
    • 22的我用微软商店更快,而且更小,1G变500M,22k变9M,NB。
  • *注意2**:可能是源的问题,我 22.04 也出问题,最后找到了个 163 源,正常,大家可以先试试再换版本。

Ubuntu 环境配置

  • 换源:
    • 参考:https://blog.csdn.net/xiangxianghehe/article/details/122856771
    • cd /etc/apt
    • sudo vim s,按 a 进入输入模式,粘贴下载源,按 esc 进入模式选择,输入冒号,输入 wq 保存退出。
    • sudo cp sources.list sources.list.bak,备份下载源
    • sudo mv s sources.list,覆盖下载源,一个个删不如覆盖来的快。
    • 163源:
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
  • 更新:
    • sudo apt update
    • sudo apt upgrade

GCC 安装

  • 安装原因:
    • 查阅 eXosip 安装说明,发现推荐前置 c-ares,而 c-ares 需要 C 编译器,因此安装 GCC。
    • 无 C 编译器报错:configure: error: no acceptable C compiler found in $PATH
  • 参考:https://blog.csdn.net/wjl18270365476/article/details/122659969
  • 安装:sudo apt install build-essential

c-ares 安装

  • 下载:http://c-ares.haxx.se/
  • 安装:
    • ./configure
    • make
    • sudo make install

oSIP 与 eXosip 安装

  • 参考:https://blog.csdn.net/mgledu/article/details/125100008

下载安装

  • 下载:
    • oSIP: http://ftp.gnu.org/gnu/osip/libosip2-3.6.0.tar.gz
    • eXosip:http://download.savannah.nongnu.org/releases/eXosip/libeXosip2-3.6.0.tar.gz
  • 解压:
    • tar -xf libeXosip2-3.6.0.tar.gz
    • tar -xf libosip2-3.6.0.tar.gz
  • 安装 oSIP:
    • cd libosip2-3.6.0/
    • ./configure
    • make -j8
    • sudo make install
  • 安装 eXosip:
    • ./configure
    • `make’
    • sudo make install

查阅文档

  • 文档:https://www.antisip.com/#exosip2-toolkit

  • VoIP 账号注册:

    • 文档最后:Test with our sip service: sip.antisip.com
    • 点进去发现有 VoIP,遂注册
    • 登录 ZoiPer:
    • 使用注册的 VoIP 账号登录 ZoiPer,所有协议均无效,但可进入界面。
  • 发现文献:

    • 发现一篇硕士学位论文,虽然有介绍代码,但看不懂。
    • 基于oSIP协议栈的VoIP网关功能研究与实现
  • 发现文章:

    • 看到一篇 CSDN 的文章,提到用 Asterisk 搭建,想到或许可以曲线救国。

    • 自己动手搭建免费VoIP服务器

安装 Asterisk

  • 参考:自己动手搭建免费VoIP服务器
  • 安装:sudo apt install asterisk
  • 备份配置文件:
    • sudo cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup
    • sudo cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup

配置 sip.conf

  • sudo vim /etc/asterisk/sip.conf
  • 说明:这里和参考的那篇不同,因为我看到后面有重复设置,为了避免被后面设置项覆盖,我选择修改后增加内容,而非博主的直接增加。
  • 修改
    • context=default
    • tcpenable = yes
  • 添加
[general]
bindport = 5060
bindaddr = 0.0.0.0
tcpbindaddr = 0.0.0.0

[1001]
type = friend
username = 1001
secret=1001
host=dynamic
disallow = all
allow = ulaw
transport = udp
context=from-1001

[1002]
type = friend
username = 1002
secret = 1002
host = dynamic
disallow = all
allow = ulaw
transport = udp
context=from-1002

OSIP2.pngOSIP2.png

配置 extensions.conf

  • sudo vim /etc/asterisk/extensions.conf
  • 说明:同样与参考的那篇不同,我发现已经有该参数了,所以省去。
  • 添加
[from-1001]
exten => 1001,1,Answer()
exten => 1001,n,Dial(SIP/${EXTEN},20,tr)
exten => 1001,n,Hangup

[from-1002]
exten => 1002,1,Answer()
exten => 1002,n,Dial(SIP/${EXTEN},20,tr)
exten => 1002,n,Hangup

OSIP3.pngOSIP3.png

重启并检查

  • sudo /etc/init.d/asterisk restart
  • 查看 Linux 端口:
    • sudo lsof -i:5060
    • 有 asterisk 进程。
  • 查看 Windows 端口:
    • netstat -aon| findstr 5060,无进程
    • tasklist | findstr asterisk,无进程
  • ZoiPer 无法连接:
    • 发现 WSL 端口未映射至 Windows。

WSL 端口映射

  • 安装 net-tools
    • sudo apt install net-tools
  • 查看 WSL ip 地址:
    • ifconfig
    • 即 eth0 的 inet,172.31.220.163
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.31.220.163  netmask 255.255.240.0  broadcast 172.31.223.255
        inet6 fe80::215:5dff:feb5:9751  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:b5:97:51  txqueuelen 1000  (Ethernet)
        RX packets 23127  bytes 30204687 (30.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15749  bytes 1157545 (1.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 端口映射
    • netsh interface portproxy add v4tov4 listenport=5060 listenaddress=0.0.0.0 connectport=5060 connectaddress=172.31.220.163
    • 检查:netsh interface portproxy show all

OSIP4.pngOSIP4.png

  • 检查 5060 端口:
    • netstat -aon| findstr 5060
    • 输出: TCP 0.0.0.0:5060 0.0.0.0:0 LISTENING 5824
  • ZoiPer 依然无法连接:
    • 尝试 X-lite:https://x-lite.en.softonic.com/

其它 IP 电话软件测试

  • 原因:ZoiPer 无法连接,不确定是什么原因,先试试其它软件。

X-lite

  • 参考:安装、配置和测试Asterisk过程中遇到的问题及解决方法
  • 下载:https://x-lite.en.softonic.com/
  • 无法安装,疑似系统不兼容

转机

  • 过了几天我再来试,我找到了 asterisk 官方教程:
    • http://www.asterisk.org.cn/asterisk-cn-doc/doc/295240.html
  • 发现他说的是 Asterisk 的 IP 地址,但我并不知道 Asterisk 的 IP,我知道 wsl 的 IP,即上面 ifconfig 的以太网 ip。
  • 使用账号 1001 密码 1001,ip 172.31.220.163:5060,成功连接
  • OSIP5.pngOSIP5.png
  • OSIP6.pngOSIP6.png

测试 IP 通话

方向选择

  • 如何通话?
    • ZoiPer 有 Windows 版本和安卓版本,因此使用 Windows 客户端与安卓客户端通话
  • 如何建立连接?
    • 基于程序员的常识,我们需要在同一个局域网下才能互联。
    • 当然,如果我有公网 IP,那我直接跟公网互连,我现在的 Asterisk 安装在本地的 WSL 中,本地没有公网 IP。
    • 考虑到校园网是一个局域网,那么用校园网连接是一个选择。但我宿舍校园网 wifi 很烂,所以不考虑。
    • 那么唯一的选择就是开放热点,服务器在电脑上,所以电脑开热点,手机连接。

开放热点及测试

  • 吐槽:
    • 开放热点怎么要我连接网络?而且我明明连了宽带,结果还是电脑连接校园网 wifi。
  • ping
    • 电脑 ping 手机-√:
    • 查看热点连接的设备信息。我在电脑的设置-热点里看的
    • ping 通。
    • 电脑 ping WSL-√:
    • ping 通。
    • 这个其实没必要测,不过可以凑数
    • WSL ping 电脑:
    • 没 ping 通
    • WSL ping 手机-√:
    • ping 通,同电脑 ping 手机的 IP。
    • 手机 ping WSL:
    • 使用 WSL ifconfig 的 IP,无法 ping 通。
    • 使用电脑 ipconfig 中 WSL 的 IP,无法 ping 通
    • 没 ping 通
    • 手机 ping 电脑:
    • 没 ping 通。
    • 总结:
    • 电脑能 ping 万物,但万物不能 ping 电脑,WSL 能 ping 手机。

安卓登录 ZoiPer

  • 登录
    • 使用电脑登录 ZoiPer 的 IP 连接,提示错误,且后面协议均 Not found
    • 使用 ipconfig 的 WSL IP,同样 Not found
    • 使用 127.0.0.1,同样 Not found
    • 使用本机地址,即电脑 ping 手机的 IP,能 ping 通,但 Not found
  • 可能错误原因
    • 防火墙

关闭防火墙再次测试 ping

  • WSL ping 电脑-√
    • 很多 IP 都能 ping 通。
  • 手机 ping 电脑-√
    • wifi IP 可 ping 通。
  • 手机 ping WSL
    • 无法 ping 通
  • 吐槽
    • 手机可以 ping 热点中显示的 ip,电脑、WSL 也可以 ping 通这个 ip,那么防火墙的关闭确实有有效的。
    • 并且手机 ping 该 ip 延时为 0.2ms,而电脑、WSL ping 延时为 70ms,那么该 ip 确实是手机的。
  • 换思路
    • 手机无法 ping 通 WSL,也就无法连上 Asterisk 服务器,需要改换思路。
    • 改用 ZoiPer 的 PC 端与其它 ip 电话的 PC 端通话。

Linphone 与 ZoiPer 通话

下载与使用

  • https://www.linphone.org/
  • 使用 Asterisk 创建的两个账户,以及一个未创建的账户登录。
    • 两个账户正常,未创建的账户报错,且识别到为 Asterisk 服务器,测试通过。

通话

  • 测试通话,两个软件互相拨打,均 Not found

查阅资料

  • 发现文章:VoIP语音通话研究【基础篇:环境搭建】
    • 该文章也是用同一PC上的两个IP电话互相拨打,但用的是同一个软件。
    • 博主提到使用 sip show peers 看用户,发现其 Host 不是 WSL ifconfig 的,而是 Windows ipconfig的,也许是 ip 的问题。
    • OSIP7.pngOSIP7.png
    • 测试该 Host 的 ip 是否可行。
    • 可行!
    • NB!
    • 此外,进入到上图的 asterisk 通信界面后能查看日志,上图是我用错误账号登录时的报错。

通话

  • 下图为 ZoiPer 的1001账户向 Linphone 的1002账户拨打
  • OSIP8.pngOSIP8.png
  • 下图为 Linphone 的1002账户向ZoiPer 的1001账户拨打
  • OSIP9.pngOSIP9.png
  • 下图为两个软件的拨打历史
  • OSIP10.pngOSIP10.png
  • 下图为两个软件的拨打时的截图,当我说话时,有声音
  • OSIP11.pngOSIP11.png
  • 拨打六分钟后的通话记录
  • OSIP12.pngOSIP12.png

局域网内的通信失败

说明

  • 由本机开放局域网,由其它安卓与电脑设备与本设备连接。
  • 关闭双方防火墙后,局域网内电脑与手机间可相互 ping 通,WSL 可 ping 通局域网内设备,但 WSL 不可被局域网内其它设备 ping 通。
  • 换句话说,架设于 WSL 的 Asterisk 服务器,可以与其它设备通信,但其它设备不能与服务器通信,这也导致了其它设备无法登陆 VoIP 账户,也就无法进行 IP 通话。

可能原因

  • 我查了局域网设备无法连接 WSL 服务器的一些文章,他们通过端口映射让 WSL 端口映射至宿主机,这也是我前面有做的一点,但是这样只能让宿主机与 WSL 服务器通信,无法让局域网设备与 WSL 服务器通信。
  • 猜测可能是 WSL 的一些限制,因为 WSL 实际上是与宿主机同时运行的,且共用一个存储系统,从这些地方可以认为 WSL 实际上是宿主机的软件。
  • 然而,WSL 查询不到宿主机的进程,其占用的端口也不会在宿主机体现,那 WSL 也不会是一个宿主机的软件,不是属于一个将 linux 命令在 Windows 上处理的软件,更像是在 Windows 外的一条通路,Win 操作在 Win 路执行,Linux 操作在 WSL 路执行。
  • 当然,考虑到这个报错:安装其中一个文件系统时出现错误。有关详细信息,请运行'dmesg'。贯穿我这台 WSL 的始终,我更愿意相信是我这个 WSL 的毛病,毕竟微软都已经单独设计出了一个端口映射,没必要还搞啥七七八八的让局域网连不了吧?

更多测试

  • 有思路,还没做

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

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

相关文章

LabVIEW如何实现高性能串口助手-附代码

LabVIEW基本上还是在Windows系统下进行开发。在Windows下&#xff0c;提供了非常多的系统接口&#xff0c;供应用开发时调用来实现各种功能&#xff0c;在LabVIEW里面也是可以通过对这些系统接口进行封装&#xff0c;形成LabVIEW里面的控件&#xff0c;供LabVIEW程序开发时调用…

mongo实时导入到clickhouse案例(包含复杂嵌套json的解析)

(一)案例介绍 本案例是把Mongo数据库的数据通过FlinkCDC实时导入到Kafka&#xff0c;消费Kafka数据把维表数据写入到MySQL。读取MySQL维表数据和消费Kafka的数据通过Flink SQL Join后导入到ClickHouse。 (二) maven依赖 <?xml version"1.0" encoding"UTF-…

数字人的生死疲劳

你看好数字人吗&#xff1f;这个问题在今天似乎颇难回答。如果从宏观趋势上看&#xff0c;数字人的利好要素似乎已经达到了一个空前的高度。比如有市场分析机构预测&#xff0c;到2026年中国AI数字人的市场规模将突破100亿人民币&#xff0c;整体市场呈现高速增长态势。又比如今…

git基础之三|初始化本地库、新建文件、提交代码、版本回退、穿梭等使用命令集合【2022最全版】

Git作为版本管理的软件&#xff0c;在我们的协同工作中非常重要。因此&#xff0c;对于Git的常见命令&#xff0c;如新建、编辑文件、提交版本、版本回退等操作必须要熟悉。 Git常用命令一、初始化本地库1、创建项目文件夹2、右击选择Git bash3、在bash中输入4、查看创建的结果…

mysql索引中最左前缀原则

最左前缀原则 最先匹配最左边的索引&#xff0c;匹配上就继续&#xff0c;如果匹配不上就检索不到 (a,b,c是索引) where后面的条件有没有给a对应的条件 不给定a等于几&#xff0c;是没法儿查询出结果的&#xff0c; 因为辅助聚簇索引是把索引按照组合索引的顺序存到一起的&…

IoTDB 可实现的基本操作 —— 数据写入、删除、导出、元数据管理、时区设置 | 小白教程文档(四)...

前言上篇教程介绍了 Apache IoTDB 处理时序数据时&#xff0c;能够实现的部分具体功能和具体的操作命令&#xff0c;包括数据导入、基本查询、和聚合查询。本篇将继续介绍 Apache IoTDB 可实现的其他功能和相关 SQL 语句命令&#xff0c;包括数据的写入、删除、导出、元数据操作…

python 解析库Beautiful Soup的安装

Beautiful Soup的安装一、Beautiful Soup的安装1.1 安装lxml库1.2 安装beautifulsoup41.3 验证beautifulsoup4能否运行一、Beautiful Soup的安装 Beautiful Soup是Python的一个HTML或XML的解析库&#xff0c;使用它可以很方便地从网页中提取数据。它的解析器是依赖于lxml库的&…

数组元素循环右移问题

目录 1008 数组元素循环右移问题 输入格式: 输出格式: 输入样例: 输出样例: 代码长度限制 时间限制 内存限制 思路: 1.右移函数 1.2函数代码: 2.main函数中 2.2main函数代码: 完整代码: 时间复杂度: 总结: 题目的链接: 1008 数组元素循环右移问题 一个数组A中存有…

MongoDB(一)【概念介绍安装】

MongoDB 概念以及安装 官方文档&#xff1a;https://www.mongodb.com/docs/manual/ 简介 官方介绍 MongoDB是一个文档数据库&#xff0c;旨在方便应用开发和扩展 百度百科 MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解…

【web前端期末大作业】html在线网上书店 基于html制作我的书屋(23页面)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

反序列化漏洞原理

序列化及其出现场景 ●远程和进程间通信&#xff08;RPC/IPC&#xff09; ●连线协议、Web服务、消息代理 ●缓存/持久性存储区 ●数据库、缓存服务器、文件系统 ●HTTP cookie、HTML参数、API身份验证令牌 序列化 (serialize)是将对象的状态信息转换为可以存储或传输的形…

基于java+springmvc+mybatis+jsp+mysql的电动车实名制挂牌管理系统

项目介绍 电动车实名制挂牌管理系统的需求和管理上的不断提升&#xff0c;电动车实名制挂牌管理的潜力将无限扩大&#xff0c;电动车实名制挂牌管理系统在业界被广泛关注&#xff0c;本网站及对此进行总体分析&#xff0c;将电动车实名制挂牌信息管理的发展提供参考。电动车实…

微信接入ChatGPT,使用Node+ChatGPT+Wechaty做一个微信机器人

目录 前言 准备工作 起步 实践 写在最后 前言 接上篇文章&#xff1a;站在巨人的肩膀上&#xff0c;用NodeChatGPT模块实现一个接口_DieHunter1024的博客-CSDN博客 我将ChatGPT模块的使用介绍了一下&#xff0c;使用自己的session发送请求达到调用ChatGPT进行聊天的目的&…

动态规划——背包问题(2)

文章目录多重背包的单调队列优化例题思路代码二维费用背包问题例题背包问题装法的总结&#xff1a;至多、恰好、至少背包最多装V体积背包恰好装V体积背包最少装V体积例题求解方案数初始化和循环顺序例题求解具体方案思路例题考察思维的一些题目多重背包与分组背包机器分配金明的…

原生JS开发手机端H5项目总结(FamilyChallenge)

一、 插件文件 &#xff08;可多选&#xff09; JQuery &#xff08;操作dom&#xff09;lottie.js &#xff08;播放动效&#xff09;preload-0.6.2.min.js&#xff08;资源预加载&#xff09;jweixin-1.6.0.js &#xff08;h5跳转微信小程序&#xff09;TweenMax.min.js &am…

Lidar based off-road negative obstacle detection and analysis(论文翻译)

&#xff08;机翻 自己留作资料的 大家辩证使用 论文地址&#xff1a;https://ieeexplore.ieee.org/document/6083105&#xff09; Abstract: 无人驾驶地面车辆 (UGV) 要想在越野地形中高速行驶&#xff0c;就必须实时分析和了解周围的地形&#xff1a;它必须知道它打算去哪里&…

备忘录模式

一、备忘录模式 1、定义 备忘录模式&#xff08;Memento Pattern&#xff09;又称作快照模式&#xff08;Snapshot Pattern&#xff09;&#xff0c;指在不破坏封装的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在对象之外保存这个状态。这样以后就可将该对象恢复…

你好,Cartesi Rollups Alpha 0.8.0

支持 Arbitrum 和 Optimism 部署&#xff0c;并使内部增强。我们通过这个新版本支持在Optimism和Arbitrum L2 链上的部署&#xff0c;为 Cartesi Rollups DApp 开发人员带来了更低的延迟和更低的gas费用。我们致力于提高 Cartesi 技术的多样性和性能提升&#xff0c;并且通过 R…

【MySQL】视图

文章目录视图基本使用视图规则与限制视图 视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据,视图的数据变化会影响到基表,基表的数据变化也会影响到视图, 主要作用是,将表的内容,常用需要的部分创建一个部分,这样使用视图的时候,可以减…

CAS:1407166-70-4,NODA-GA-NHS ester大环化合物供应

基本信息 名称&#xff1a; NODA-GA-NHS ester 2,2′-(7-(1-carboxy-4-((2,5-dioxopyrrolidin-1-yl)oxy)-4-oxobutyl)-1,4,7-triazonane-1,4-diyl)diacetic acid CAS编号&#xff1a;1407166-70-4 分子式&#xff1a;C19H28N4O10&#xff0c;HPF6&#xff0c;TFA 分子量&a…