【逗老师的无线电】Debian Linux手工编译安装MMDVM

看我干了啥,在Vmware里面装了一个Debian Linux并且运行了MMDVMHost,来支持业余无线电通联
在这里插入图片描述

开始之前先举个手,有多少朋友能分清MMDVM和Pi-Star关系的?
在这里插入图片描述

MMDVM、Pi-Star和树莓派的关系

咱们先科普一下这个小知识点。各位HAM们应该总是把【Pi-Star】、【MMDVM】和【树莓派】这几个名词连在一起一起说,那么者三个东西的关系,尤其是【Pi-Star】、【树莓派】的关系是什么呢,各位HAM老哥们可能有90%以上的都傻傻分不清楚。
先说一下这三者的关系

  • MMDVM–软件、应用程序
  • Pi-Star–操作系统
  • 树莓派–硬件,计算机

举个例子,这三者的关系,基本就是Photoshop->Windows->戴尔,这三家的关系

MMDVM是英国HAM G4KLX发起的一个项目,后来经过一次转手,但是目前依然是最热门的数字无线电通信软件。注意,这玩意是个软件。同时MMDVM不光可以运行在Pi-Star操作系统中,也可以运行在Ubuntu和其他Linux,甚至是Windows里。
参见这篇帖子,就是在Windows下安装MMDVM进行无线通联。
【逗老师的无线电】宝峰神机刷OpenGD77摇身变为DMR大热点

Pi-Star是MW0MWZ前辈(是个英国佬)开发的一个集成操作系统,哥们最牛逼的地方,就是在这个系统里面集成了MMDVM。这就好比,你想装个Auto CAD到你电脑里面,但是不会装。这时候有个大神过来直接给你一个windows镜像,Windows会装吧,装完我这个Windows,里面直接就有CAD,你说爽不爽。
Pi-Star的镜像基于树莓派的官方镜像进行二次开发,同样也是Debin Linux的一个分支。所以,很多基于树莓派的官方操作系统的功能,都可以尝试在Pi-Star上进行安装。

树莓派RaspberryPi是一群英国佬(没错,还是英国佬)2012年3月,英国剑桥大学的埃本·阿普顿正式发售了当时世界上最小的ARM计算机,就是后来的树莓派。最初,树莓派是为学习计算机编程教育而设计,官方操作系统基于Linux。后来随着Windows 10 IoT的发布,用户可以用上运行Windows的树莓派。所以你没看错,这玩意也能跑Windows。
在这里插入图片描述
所以,当你想实现一个功能,其实可以倒推,需要什么软件,需要什么操作系统,需要什么硬件。这三者凑在一起,就构成了【解决方案】这个听起来很高大上的东西。
目前,大家之所以把MMDVM、Pi-Star和树莓派三个东西混在一起,是因为这套解决方案学习成本低,硬件成本适中,用户基数大,普及程度广,自带Web管理界面。所以大家不深究的话,容易把他们混成一谈。
但是要记住:

  • MMDVM不光能跑在Pi-Star上,也能跑在Windows及其他平台上
  • MMDVM不一定非要用树莓派,也可以跑在OpenWrt操作系统上进而套用其他硬件平台。
  • 树莓派不光能当热点盒子,这玩意玩法可多了,比如还能做NAS。

x86架构Debian Linux安装MMDVMHost

坐好了,现在要开始整骚活了。这次我们的目标是

  • 在x86架构的计算机上
  • 安装Debian Linux
  • 编译并安装MMDVM

这样你就拥有了一台永不关机的云端MMDVM服务器。至于这样做为了啥,请配合这篇文章一起服用,效果更佳:
【逗老师的无线电】BI1FQO教你整骚活,纯4G MMDVM热点版
在这里插入图片描述

一、安装操作系统

CentOS,Ubuntu等Linux发行版都可以,本文以Debian Linux 12作为示例。
先自行安装操作系统,没啥特殊要求,能开机能联网就行。

二、项目资源列表

感谢HAM圈的各位大神们的项目,小白不需要点进去一个一个的看,只需要记住,这些大佬们的名字即可
G4KLX、BI7JTA、BG7NYT

G4KLX前辈的MMDVMHost项目地址:
https://github.com/g4klx/MMDVM

CA6JAU前辈的MMDVM_HS项目(基本国内的热点版都是CA6JAU的开源代码)
https://github.com/juribeparada/MMDVM_HS

BI7JTA前辈的项目地址:
https://github.com/bi7jta/MMDVM-Install_RPT_N4IRS
https://www.bi7jta.org/

BG7NYT-第一个在知乎写了如何手工编译MMDVM教程的大佬
https://www.zhihu.com/tardis/bd/art/144813660

以上,感谢前辈们的工作。
本文大部分基于BI7JTA老师的项目,并更正了由于G4KLX更新MMDVMHost导致的安装脚本发生的一些变化。

三、安装

1、安装依赖环境

https://github.com/bi7jta/MMDVM-Install_RPT_N4IRS/tree/master/scripts
参考BI7JTA前辈的脚本,把所有的依赖环境挨个装一下。
或者直接复制粘贴下面的代码,无脑干就完了

# 先sudo -s一下

#scripts/build-tools.sh
apt-get install g++ -y
apt-get install make -y
apt-get install build-essential -y
apt-get install git -y

#scripts/install-mono.sh
apt-get update
apt-get upgrade
apt-get install git dirmngr
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian stretch main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
apt-get update
apt-get install mono-complete mono-devel

#scripts/required-libs.sh
apt-get install libusb-dev -y
apt-get install libnewt-dev -y
apt-get install libeditline0 -y
apt-get install libncurses5-dev -y

apt-get install bison -y
apt-get install libssl-dev -y
apt-get install libasound2-dev -y
apt-get install libcurl4-gnutls-dev -y
apt-get install php5-cli -y
apt-get install libiksemel-dev -y
apt-get install libvorbis-dev -y
apt-get install curl -y

# Nice to have utilities and tools
# is sox required or nice to have
apt-get install sox -y
apt-get install usbutils -y
apt-get install alsa-utils -y
apt-get install bc -y
apt-get install dnsutils -y

#编译新版本的MMDVMHost需要安装samplerate库
apt-get install libsamplerate0-dev


注BI7JTA Git中忽略的一个依赖,编译新版本的MMDVMHost需要安装samplerate库,参考case:
https://github.com/g4klx/MMDVMHost/issues/783

2、编译安装

推荐先下载BI1JTA老师的原项目文件

cd ~
git clone https://github.com/bi7jta/MMDVM-Install_RPT_N4IRS.git

MMDVM-System-Builder/MMDVM-System-Builder.sh

2.1、编译环境准备

# Install needed programs
# This could be pruned
#
apt-get update -y
apt-get install git-core -y
apt-get install curl -y
apt-get install g++ -y
apt-get install make -y

# For MMDVM firmware
# apt-get install python-pip -y # Where is this used?
apt-get install gdb-arm-none-eabi -y
apt-get install libusb-1.0 -y

# For Armbian Need to check this !
# apt-get install libstdc++-arm-none-eabi-newlib -y

2.2、必要文件复制

cd ~
git clone https://github.com/bi7jta/MMDVM-Install_RPT_N4IRS.git
sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/etc/* /etc
sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/lib/* /lib
sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/opt/* /opt
sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/srv/* /srv
sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/usr/* /usr
sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/var/* /var
 

2.3、下载所有依赖项目

cd /srv/Repositories/CA6JAU
git clone https://github.com/juribeparada/MMDVM_CM.git
git clone https://github.com/juribeparada/MMDVM_HS.git

cd /srv/Repositories/DG9VH
git clone https://github.com/dg9vh/MMDVMHost-Dashboard.git

## cd /srv/Repositories/DVSwitch

cd /srv/Repositories/G4KLX
git clone https://github.com/g4klx/DMRGateway.git
git clone https://github.com/g4klx/P25Clients.git
git clone https://github.com/g4klx/YSFClients.git
git clone https://github.com/g4klx/NXDNClients.git
git clone https://github.com/g4klx/MMDVMHost.git
git clone https://github.com/g4klx/MMDVMCal.git
git clone https://github.com/g4klx/MMDVM.git

cd /srv/Repositories/stm32flash
git clone https://git.code.sf.net/p/stm32flash/code stm32flash

cd /srv/Repositories/N4IRS
git clone https://github.com/N4IRS/MMDVMVersion.git

# cd /srv/Repositories/OpenDV
# Nothing here

# Copy the source directories to /usr/src
# This allows me to keep a pristine copy in /srv/Repositories

cd /srv/Repositories/CA6JAU/MMDVM_CM
cp -rf DMR2NXDN DMR2YSF NXDN2DMR YSF2DMR YSF2NXDN YSF2P25 /usr/src

cd /srv/Repositories/CA6JAU/
cp -rf MMDVM_HS /usr/src

cd /srv/Repositories/DG9VH
cp -R MMDVMHost-Dashboard/* /var/www/html/

# cd /srv/Repositories/DVSwitch
# Nothing here

cd /srv/Repositories/G4KLX
cp -rf DMRGateway MMDVM MMDVMCal MMDVMHost /usr/src

cd /srv/Repositories/G4KLX/NXDNClients
cp -rf NXDNGateway NXDNParrot /usr/src

cd /srv/Repositories/G4KLX/P25Clients
cp -rf P25Gateway P25Parrot /usr/src

cd /srv/Repositories/G4KLX/YSFClients
cp -rf YSFGateway YSFParrot /usr/src

cd /srv/Repositories/stm32flash
cp -rf stm32flash /usr/src

cd /srv/Repositories/N4IRS
cp -rf MMDVMVersion /usr/src

## Build the programs from source
## Yes, this is brute force

2.4、开始编译

本步建议一段一段的复制,看看哪里报错,哪里编译失败,再具体分析

cd /usr/src/DMR2NXDN
make clean
make
cp DMR2NXDN /opt/DMR2NXDN

cd /usr/src/DMR2YSF
make clean
make
cp DMR2YSF /opt/DMR2YSF

cd /usr/src/DMRGateway
make clean
make
cp DMRGateway /opt/DMRGateway

cd /usr/src/MMDVMCal
make clean
make
cp MMDVMCal /opt/MMDVMCal

cd /usr/src/MMDVMHost
make clean
make
cp MMDVMHost /opt/MMDVMHost

cd /usr/src/NXDN2DMR
make clean
make
cp NXDN2DMR /opt/NXDN2DMR

cd /usr/src/NXDNGateway
make clean
make
cp NXDNGateway /opt/NXDNGateway

cd /usr/src/NXDNParrot
make clean
make
cp NXDNParrot /opt/NXDNParrot

cd /usr/src/P25Gateway
make clean
make
cp P25Gateway /opt/P25Gateway

cd /usr/src/P25Parrot
make clean
make
cp P25Parrot /opt/P25Parrot

cd /usr/src/YSF2DMR
make clean
make
cp YSF2DMR /opt/YSF2DMR

cd /usr/src/YSF2NXDN
make clean
make
cp YSF2NXDN /opt/YSF2NXDN

cd /usr/src/YSF2P25
make clean
make
cp YSF2P25 /opt/YSF2P25

cd /usr/src/YSFGateway
make clean
make
cp YSFGateway /opt/YSFGateway

cd /usr/src/YSFParrot
make clean
make
cp YSFParrot /opt/YSFParrot

cd /usr/src/stm32flash
make clean
make
cp stm32flash /usr/local/sbin

cd /usr/src/MMDVMVersion
make clean
make
cp MMDVMVersion /opt/MMDVMVersion

2.5、添加服务开机启动、启用定时任务

# Enable the systemd unit files
#
systemctl enable nxdngateway.service
systemctl enable nxdnparrot.service
systemctl enable p25gateway.service
systemctl enable p25parrot.service
systemctl enable ysf2dmr.service
systemctl enable ysf2nxdn.service
systemctl enable ysf2p25.service
systemctl enable ysfgateway.service
systemctl enable ysfparrot.service
systemctl enable mmdvmhost.service
systemctl enable netcheck.service

# Populate the datafiles
#
/etc/cron.daily/DMRIDUpdateBM
/etc/cron.daily/FCSRoomsupdate
/etc/cron.daily/NXDNHostsupdate
/etc/cron.daily/NXDNIDUpdate
/etc/cron.daily/P25Hostsupdate
/etc/cron.daily/TGList-DMR_update
/etc/cron.daily/TGList-NXDN_update
/etc/cron.daily/TGList-P25_update
/etc/cron.daily/XLXHostsupdate
/etc/cron.daily/YSFHostsupdate

2.6、可选安装Dashboard

# Install the dashboard
#
apt-get install lighttpd -y

# Need to add test for Stretch vs Jessie
# apt-get install php7.0-common -y
# apt-get install php -y
apt-get install php7.0-cgi -y

chown -R www-data:www-data /var/www/html
chmod -R 775 /var/www/html

lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php

mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.html.old

systemctl restart lighttpd

# Add DVSwitch programs via apt-get install

2.7、启动服务

systemctl start nxdngateway.service
systemctl start nxdnparrot.service
systemctl start p25gateway.service
systemctl start p25parrot.service
systemctl start ysf2dmr.service
systemctl start ysf2nxdn.service
systemctl start ysf2p25.service
systemctl start ysfgateway.service
systemctl start ysfparrot.service
systemctl start mmdvmhost.service

四、配置

这里有一个坑。简单说一下吧
Pi-Star封装的系统DMR部分的通信方式是MMDVMHost->DMRGateway->BM Server
但是本文没有编译DMRGateway,需要采用MMDVMHost直连BMServer的方式。
直连这部分的配置在MMDVM.ini中。
G4KLX更新了代码,但是没有写文档,最主要的是,连MMDVM.ini中DMR Network的Address等字段也变更了。从Address=变成了Remote Address=。
算了不多说了,直接粘一个线程的MMDVM.ini配置文件案例吧。

MMDVM.ini文件路径/opt/MMDVMHost/MMDVM.ini
我把关键配置放在前面

[General]
#呼号和DMRID
Callsign=BI1FQO
Id=4606666
Timeout=600
Duplex=1
#ModeHang=10
RFModeHang=10
NetModeHang=10
Display=None
Daemon=0

[Info]
#双工上下行频率
RXFrequency=433200000
TXFrequency=439200000
Power=0.5
Latitude=40.080600
Longitude=116.32290
Height=0
Location="Changping, Beijing"
Description="China"
URL=https://ctsdn.blog.csdn.net/

[Modem]
#Port=/dev/ttyS0
UARTPort=/dev/ttyS0
UARTSpeed=115200
#配置接口需使用UARTPort和UARTSpeed字段,原Port字段无效
# Port=\\.\COM3
TXInvert=1
RXInvert=0
PTTInvert=0
TXDelay=100
RXOffset=0
TXOffset=0
DMRDelay=0
RXLevel=50
TXLevel=50
RXDCOffset=0
TXDCOffset=0
RFLevel=100
RSSIMappingFile=RSSI.dat
Trace=0
Debug=1

[DMR]
Enable=1
Beacons=0
BeaconInterval=60
BeaconDuration=3
ColorCode=8
SelfOnly=0
EmbeddedLCOnly=0
DumpTAData=1
CallHang=3
TXHang=4
ModeHang=20
OVCM=0
Id=460666651
#填写你的DMRID+BSSID后缀

[Log]
# Logging levels, 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal
DisplayLevel=1
FileLevel=2
FilePath=/var/log/mmdvm
FileRoot=MMDVM

[CW Id]
Enable=0
Time=10
# Callsign=

[DMR Id Lookup]
File=/var/lib/mmdvm/DMRIds.dat
Time=24

[NXDN Id Lookup]
File=/var/lib/mmdvm/NXDN.csv
Time=24



[Transparent Data]
Enable=0
RemoteAddress=127.0.0.1
RemotePort=40094
LocalPort=40095

[UMP]
Enable=0
# Port=\\.\COM4
Port=/dev/ttyACM1

[D-Star]
Enable=0
Module=B
SelfOnly=0
AckReply=1
AckTime=750
ErrorReply=1
RemoteGateway=0
# ModeHang=10

[DMR]
Enable=1
Beacons=0
BeaconInterval=60
BeaconDuration=3
ColorCode=8
SelfOnly=0
EmbeddedLCOnly=0
DumpTAData=1
CallHang=3
TXHang=4
ModeHang=20
OVCM=0
Id=460666651


[DMR Network]
Enable=1
#Address=4601.master.brandmeister.network
#Port=62031
#Local=62032
#以上三行废弃不用了
Jitter=360
Password="*************"
Slot1=1
Slot2=1
Debug=0
ModeHang=20
RemoteAddress=4601.master.brandmeister.network
RemotePort=62031
LocalPort=62032
Type=Direct
#上面这四行是关键,尤其是这个Type字段


################################################
#以下全是默认,需要用YSF或者P25、NXDN的同学自行修改

[System Fusion]
Enable=0
LowDeviation=0
SelfOnly=0
# TXHang=4
# DGID=1
RemoteGateway=0
# ModeHang=10

[P25]
Enable=0
NAC=293
SelfOnly=0
OverrideUIDCheck=0
RemoteGateway=0
# ModeHang=10

[NXDN]
Enable=0
RAN=1
SelfOnly=0
RemoteGateway=0
# ModeHang=10

[D-Star Network]
Enable=0
GatewayAddress=127.0.0.1
GatewayPort=20010
LocalPort=20011
# ModeHang=3
Debug=0




[System Fusion Network]
Enable=0
LocalAddress=127.0.0.1
LocalPort=3200
GatewayAddress=127.0.0.1
GatewayPort=4200
# ModeHang=3
Debug=0

[P25 Network]
Enable=0
GatewayAddress=127.0.0.1
GatewayPort=42020
LocalPort=32010
# ModeHang=3
Debug=0

[NXDN Network]
Enable=0
LocalAddress=127.0.0.1
LocalPort=14021
GatewayAddress=127.0.0.1
GatewayPort=14020
# ModeHang=3
Debug=0

[TFT Serial]
# Port=modem
Port=/dev/ttyAMA0
Brightness=50

[HD44780]
Rows=2
Columns=16

# For basic HD44780 displays (4-bit connection)
# rs, strb, d0, d1, d2, d3
Pins=11,10,0,1,2,3

# Device address for I2C
I2CAddress=0x20

# PWM backlight
PWM=0
PWMPin=21
PWMBright=100
PWMDim=16

DisplayClock=1
UTC=0

[Nextion]
# Port=modem
Port=/dev/ttyAMA0
Brightness=50
DisplayClock=1
UTC=0
#Screen Layout: 0=G4KLX 2=ON7LDS
ScreenLayout=2
IdleBrightness=20

[OLED]
Type=3
Brightness=0
Invert=0
Scroll=1

[LCDproc]
Address=localhost
Port=13666
#LocalPort=13667
DimOnIdle=0
DisplayClock=1
UTC=0

五、测试

修改完配置文件后

systemctl restart mmdvmhost.service

然后观察日志,注意把日志文件的文件名修改成当天的日期哈

tail -100f /var/log/mmdvm/MMDVM-2023-11-06.log

在这里插入图片描述
在这里插入图片描述

搞定

这里是BI1FQO,DMR ID:4606666,希望各位HAM通联愉快!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Head First 设计模式】-- 策略模式

一、背景 Head First 设计模式第一章设计模式入门–策略模式 二、工具箱的工具(本章) 1、OO基础 封装 继承 多态 抽象 2、OO原则 封装变化 面向接口编程,而非面向实现编程 组合优于继承 3、OO模式 策略模式,所谓策略模式就是定义…

操作系统:文件管理(二)文件系统

一战成硕 4.3 文件系统4.3.1 文件系统结构4.3.2 文件系统布局4.3.3 外存空闲空间管理4.3.4 虚拟文件系统 4.3 文件系统 4.3.1 文件系统结构 4.3.2 文件系统布局 文件系统在磁盘中的结构 文件系统在内存中的结构 内存中的信息用于管理文件系统并通过缓存提高性能,这…

【JavaEE】JVM 剖析

JVM 1. JVM 的内存划分2. JVM 类加载机制2.1 类加载的大致流程2.2 双亲委派模型2.3 类加载的时机 3. 垃圾回收机制3.1 为什么会存在垃圾回收机制?3.2 垃圾回收, 到底实在做什么?3.3 垃圾回收的两步骤第一步: 判断对象是否是"垃圾"第二步: 如何回收垃圾 1. JVM 的内…

数仓分层能减少重复计算,为啥能减少?如何减少?这篇文章包懂!

很多时候,看一些数据领域的文章,说到为什么做数据仓库、数据仓库要分层,我们经常会看到一些结论:因为有ABCD…等等理由,比如降低开发成本、减少重复计算等等好处 然后,多数人就记住了ABCD。但是&#xff0…

python3 阿里云api进行巡检发送邮件

python3 脚本爬取阿里云进行巡检 不确定pip能不能安装上,使用时候可以百度一下,脚本是可以使用的,没有问题的 太长时间了,pip安装依赖忘记那些了,使用科大星火询问了下,给了下面的,看看能不能使…

知识注入以对抗大型语言模型(LLM)的幻觉11.6

知识注入以对抗大型语言模型(LLM)的幻觉 摘要1 引言2 问题设置和实验2.1 幻觉2.2 生成响应质量 3 结果和讨论3.1 幻觉3.2 生成响应质量 4 结论和未来工作 摘要 大型语言模型(LLM)内容生成的一个缺点是产生幻觉,即在输…

WPF中的Binding的常见知识点与技巧

完全来源于十月的寒流,感谢大佬讲解 在XAML中,可以绑定到许多不同类型的数据源和属性。以下是一些可以绑定的常见数据源和属性: 属性:可以绑定到对象的属性,例如控件的Text、Visibility、IsEnabled等属性。 集合&am…

linux内的循环

格式 while 【 条件判断 】 do 语句体 done 上图 第一次代码,输入语句在外面,结果输入完(非hello)程序不断循环,没办法,ctrlc给程序终止了,然后把用户输入的语句放到了循环体里面…

vivo发布“蓝心千询”自然语言对话机器人

🦉 AI新闻 🚀 vivo发布“蓝心千询”自然语言对话机器人 摘要:vivo今日发布了“蓝心千询”自然语言对话机器人,基于蓝心大模型。蓝心千询可以进行知识信息的快速问答,文学创作、图片生成,甚至还能编写程序…

SAM 微调在医学上的尝试

1、2023下半年 1、 UNet与SAM结合的正确的道路SAMUS,一路SOTA没对手! https://github.com/xianlin7/SAMUS 2、 本文提出 SonoSAM:一种用于分割超声图像上感兴趣对象的快速基础模型。 https://zhuanlan.zhihu.com/p/663988684 未开源 绿色是预测的&…

流媒体服务实现H5实时预览视频

目录 背景方案业务实践细节注意 待办 背景 客户aws服务磁盘存储告急,最高可扩容16T。排查如下:主要是视频文件存在大量复制使用的情况。例如发布节目时复制、预览时复制,这样上传一份视频后最大会有四份拷贝(预览、普通发布、互动…

http中的Content-Type类型

浏览器的Content-Type 最近在做web端下载的时候需要给前端返回一个二进制的流,需要在请求头中设置一个 writer.Header().Set("Content-Type", "application/octet-stream")那么http中的Content-Type有具体有哪些呢?他们具体的使用场…

作用域,基本数据类型(常量const),转义字符,运算符

1.作用域 全局作用域:定义在所有花括号外的名字具有“全局作用域” 块作用域:在某个花括号内定义的名字具有“块作用域” 一般把具有全局作用域的变量叫做“全局变量”,具有块作用域的变量叫做“局部变量” 如果在嵌套作用域里出现重名&a…

Linux进程的优先级

Linux进程的优先级 📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容讲解Linux中进程的优先级&#xff0…

视频集中存储/云存储EasyCVR启动后查询端口是否被占用出错,该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

LINQ to SQL系列三 使用DeferredLoadingEnabled,DataLoadOption指定加载选项

介绍linq to sql 的 DataContext类DeferredLoadingEnabled属性使用,以及DataLoadOptions限定加载相关表数据的LoadWith和AssociateWith方法。 本文中举例用到的数据模型如下: Student和Class之间是多对一关系,Student和Course之间是多对多关系。 DataContext的DeferredLo…

策略模式在数据接收和发送场景的应用

在本篇文章中,我们介绍了策略模式,并在数据接收和发送场景中使用了策略模式。 背景 在最近项目中,需要与外部系统进行数据交互,刚开始交互的系统较为单一,刚开始设计方案时打算使用了if else 进行判断: if(…

宝塔面板使用Supervisor进程守护插件,配置守护Mysql的操作教程。

本篇文章主要讲解,在宝塔面板中使用Supervisor进程守护插件,配置守护Mysql的操作教程。 作者:任聪聪 日期:2023年11月5日 一、安装守护进程插件 安装插件一、进程守护插件 安装说明:在软件商店中搜索“进程守护”&am…

elasticsearch下载和安装(linux)看这一篇就够了

配置java环境(11版本以上) 1.下载安装包 我是放在usr下的java里了 2.解压 tar -zxvf jdk-17_linux-x64_bin.tar.gz3.配置环境变量 vim /etc/profile在文件的最下面添加 JAVA_HOME/usr/java/jdk-17.0.9 #你自己的安装路径 JRE_HOME$JAVA_HOME/jre C…

项目实战:组件扫描实现(1)-扫描类路径所有文件

1、ComponentScan 组件扫描类 一下知识本人都是在Maven工程下总结的,所以目录结构会不一样这个类的作用是扫描所有的classes目录下的所有的字节码文件,找到相应的类,然后找到相应类上的注解 package com.csdn.mymvc.core; import java.io.Fi…