使用最新版的wvp和ZLMediaKit搭建Gb28181测试服务器

文章目录

  • 说明
  • 安装
    • 1.安装nodejs
      • 简介
      • 安装步骤
    • 2.安装java环境
    • 3.安装mysql
      • 安装
      • 修改密码
    • 4.安装redis
    • 5.安装编译器
    • 6.安装cmake
    • 7.安装依赖库
    • 8.编译ZLMediaKit
    • 9.编译wvp-GB28181-pro
  • 配置
    • 1.ZLMediaKit配置
    • 2.wvp-GB28181-pro配置
      • 2.1.配置ZLMediaKit连接信息
      • 2.2.28181服务器的配置
      • 2.3.配置web服务器
      • 2.4.数据库配置
        • 2.4.1.修改root用户的密码
        • 2.4.2.删除以前wvp相关数据库
        • 2.4.3.删除mysql数据库中wvp相关表格
        • 2.4.4.数据库连接配置修改
        • 2.4.5.建立并导入数据库
      • 2.5.跨域配置
  • 运行
    • 准备运行脚本
      • ZLMediaKit.sh
      • wvp_gb28181.sh
    • 运行服务
  • 使用国标设备对接国标服务器
  • 云端录像

说明

前段时间发布了一系列GB28181测试环境的搭建,最近整理一下服务器和模拟设备一个完整的博客,不需要设备就可以熟悉GB28181协议.

安装

主机建议使用Ubuntu 22.04.5 LTS x86_64及以上版本.

1.安装nodejs

简介

到nodejs官网下载最新LTS版本. 因为nodejs依赖glic库,所以ubuntu使用最新的LTS版本.

当前nodejs依赖glibc2.28版本,为了确保nodejs能正常运行,需要先查询系统的glibc版本.

strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_
#输出如下信息
......
GLIBC_2.27
GLIBC_2.28
GLIBC_2.29
GLIBC_2.30
GLIBC_2.31
GLIBC_2.32
GLIBC_2.33
GLIBC_2.34
GLIBC_2.35

安装步骤

#解压缩
tar -Jxf node-v20.9.0-linux-x64.tar.xz#移动位置
sudo mv node-v20.9.0-linux-x64/ /opt#编辑/etc/profile内容
export PATH="/opt/node-v20.9.0-linux-x64/bin:$PATH"#使环境变量使能
source /etc/profile#查看nodejs是否正常安装
node -v
v20.9.0
npm -v
10.1.0

2.安装java环境

sudo apt install -y openjdk-11-jre maven#确认java安装成功
java -version
#输出版本信息
openjdk 11.0.21 2023-10-17
OpenJDK Runtime Environment (build 11.0.21+9-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.21+9-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)#maven
mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.24, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "6.5.0-18-generic", arch: "amd64", family: "unix"

3.安装mysql

安装

#移除以前的mysql相关
sudo apt remove --purge mysql-\*
#安装mysql
sudo apt install mysql-server mysql-client
#查看是否启动
systemctl status mysql
#手动启动
systemctl start mysql
#查看mysql版本
mysql --version

修改密码

#免密进入mysql
sudo mysql -uroot
#your_new _password 修改成用户密码
alter user 'root'@'localhost' identified with mysql_native_password by 'your_new _password';
#然后就可以使用密码登录了
mysql -u root -puse mysql;
#root账号可以访问所有主机
update user set host='%' where user= 'root';
#ERROR 1046 (3D000): No database selected
flush privileges;
#授权
grant all on *.* to 'root'@'%';
flush privileges;
quit;

4.安装redis

sudo apt update
sudo apt install redis-server#启动
redis-server#查看Redis是否正常
systemctl status redis
redis-cli
#输入ping返回PONG表示正常

5.安装编译器

sudo apt install build-essential
g++ --version
g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

6.安装cmake

官网https://cmake.org/下载最新稳定版本 cmake-3.27.8-linux-x86_64.tar.gz, 这样的好处可以方便查找帮助文档,方便查看cmake内部的资料.

tar -zxvf cmake-3.27.8-linux-x86_64.tar.gz
sudo mv cmake-3.27.8-linux-x86_64 /opt/
sudo vim /etc/profile
#增加
export PATH="/opt/cmake-3.27.8-linux-x86_64/bin:$PATH"
source /etc/profile
cmake --version
#显示安装成功
cmake version 3.27.8CMake suite maintained and supported by Kitware (kitware.com/cmake).

/opt/cmake-3.27.8-linux-x86_64/doc/cmake/html为网页帮助文档.

7.安装依赖库

sudo apt install -y libssl-dev
sudo apt install -y libsdl1.2-dev
sudo apt install -y libavcodec-dev
sudo apt install -y libavutil-dev
sudo apt install -y ffmpeg

8.编译ZLMediaKit

git clone https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
git submodule update --init
git submodule status 08c094ea14f259ecf0c356e6243cb47ee96ce292 3rdpart/ZLToolKit (heads/master)69098a18b9af0c47549d9a271c054d13ca92b006 3rdpart/jsoncpp (1.9.0-178-g69098a18)cf83ebc62e65ae6f3b73bc5ebd06cb0b2da49fa5 3rdpart/media-server (v1.0.0-173-gcf83ebc6)b02d2a4c1abf95db45e50bb77d789defa0fcc4b7 www/webassist (heads/main)
#编译
mkdir build
cd build
cmake ..
make -j4

编译结果在release目录下,主要有三部分组成:

  • MediaServer 进程

    cd ZLMediaKit/release/linux/Debug
    #通过-h可以了解启动参数
    ./MediaServer -h
    
  • c api 的 SDK

头文件在ZLMediaKit/api/include
库文件为:ZLMediaKit/release/linux/Debug/libmk_api.so
  • test_开头的测试程序

相关代码在ZLMediaKit/tests目录下,你可以对照代码启动测试进程。

9.编译wvp-GB28181-pro

git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git#1.编译前端页面
cd wvp-GB28181-pro/web_src/
npm --registry=https://registry.npmmirror.com install
npm run build
#编译完成后会生成目录: wvp-GB28181-pro/src/main/resources/static#2.生成可执行jar
cd wvp-GB28181-pro
mvn package
#编译后生成文件: wvp-GB28181-pro/target/wvp-pro-2.7.3-10250742.jar#3.生成war
cd wvp-GB28181-pro
mvn package -P war
#编译后生成文件: wvp-GB28181-pro/target/wvp-pro-2.7.3-10250742.war

配置

目录结构如下

.
├── config #配置文件
├── record #录像保存
├── wvp-GB28181-pro 
└── ZLMediaKit

把所有的配置文件放到config目录中

cp wvp-GB28181-pro/target/classes/配置详情.yml config
cp ZLMediaKit/release/linux/Debug/config.ini config

最终config目录内容如下:

config
├── wvp_gb28181.sh #wvp-GB28181-pro运行脚本
├── wvp_gb28181.yml #wvp-GB28181-pro配置文件
├── ZLMediaKit.ini #ZLMediaKit配置文件
└── ZLMediaKit.sh #ZLMediaKit运行脚本

1.ZLMediaKit配置

[api]#和 wvp_gb28181.yml 中 media:secret: 一致secret=BkPj2ca6QPpY5RccREJq4kAOu9ZEt70x[general]#和 wvp_gb28181.yml 中 media:id: 一致mediaServerId=FQ3TF8yT83wh5Wvz[http]#和 wvp_gb28181.yml 中 media:http-port: 一致port=80[rtp_proxy]#和 wvp_gb28181.yml 中 media:rtp:port-range: 一致port_range=30000-35000	

2.wvp-GB28181-pro配置

2.1.配置ZLMediaKit连接信息

media:#和ZLMediaKit设置一致secret: BkPj2ca6QPpY5RccREJq4kAOu9ZEt70xid: FQ3TF8yT83wh5Wvzhttp-port: 80rtp:port-range: 30000,30500# [必须修改] zlm服务器的内网IPip: 192.168.137.2hook-ip: 192.168.137.2

2.2.28181服务器的配置

sip:ip: 192.168.137.2# [可选] 没有任何业务需求,仅仅是在前端展示的时候用show-ip: 192.168.137.2# [可选] 28181服务监听的端口port: 5061# [可选]domain: Local1# [可选]id: 32050950002000005001# [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验password: eLTE@com123    

2.3.配置web服务器

#web访问
server:port: 18080

2.4.数据库配置

2.4.1.修改root用户的密码
#查看数据库状态
systemctl status mysql
#进入mysql
mysql -u root -p#更改root用户密码为root123,并修改为root用户可以使用任何电脑访问所有数据库
use mysql;
update user set host='%' where user= 'root';
flush privileges;
select host,user,plugin from user where user='root';
alter user 'root'@'%' identified with mysql_native_password by 'root123';
flush privileges;
grant all on *.* to 'root'@'%';
flush privileges;
2.4.2.删除以前wvp相关数据库
#显示所有数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wvp                |
| wvp2               |
+--------------------+
6 rows in set (0.00 sec)#显示当前数据库select database();
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)#删除wvp相关数据库
mysql> drop database wvp;
Query OK, 17 rows affected (0.32 sec)mysql> drop database wvp2;
Query OK, 0 rows affected (0.01 sec)
2.4.3.删除mysql数据库中wvp相关表格
#显示mysql数据库中所有表格
mysql> show tables;
+------------------------------------------------------+
| Tables_in_mysql                                      |
+------------------------------------------------------+
| columns_priv                                         |
| component                                            |
| db                                                   |
| default_roles                                        |
| engine_cost                                          |
| func                                                 |
| general_log                                          |
| global_grants                                        |
| gtid_executed                                        |
| help_category                                        |
| help_keyword                                         |
| help_relation                                        |
| help_topic                                           |
| innodb_index_stats                                   |
| innodb_table_stats                                   |
| password_history                                     |
| plugin                                               |
| procs_priv                                           |
| proxies_priv                                         |
| replication_asynchronous_connection_failover         |
| replication_asynchronous_connection_failover_managed |
| replication_group_configuration_version              |
| replication_group_member_actions                     |
| role_edges                                           |
| server_cost                                          |
| servers                                              |
| slave_master_info                                    |
| slave_relay_log_info                                 |
| slave_worker_info                                    |
| slow_log                                             |
| tables_priv                                          |
| time_zone                                            |
| time_zone_leap_second                                |
| time_zone_name                                       |
| time_zone_transition                                 |
| time_zone_transition_type                            |
| user                                                 |
| wvp_cloud_record                                     |
| wvp_device                                           |
| wvp_device_alarm                                     |
| wvp_device_channel                                   |
| wvp_device_mobile_position                           |
| wvp_gb_stream                                        |
| wvp_log                                              |
| wvp_media_server                                     |
| wvp_platform                                         |
| wvp_platform_catalog                                 |
| wvp_platform_gb_channel                              |
| wvp_platform_gb_stream                               |
| wvp_resources_tree                                   |
| wvp_stream_proxy                                     |
| wvp_stream_push                                      |
| wvp_user                                             |
| wvp_user_role                                        |
+------------------------------------------------------+
54 rows in set (0.00 sec)#删除wvp相关表格
drop table wvp_cloud_record;
drop table wvp_device;
drop table  wvp_device_alarm;;
drop table  wvp_device_channel;
drop table  wvp_device_mobile_position;
drop table  wvp_gb_stream;
drop table  wvp_log;
drop table  wvp_media_server;
drop table  wvp_platform;
drop table  wvp_platform_catalog;
drop table  wvp_platform_gb_channel;
drop table  wvp_platform_gb_stream;
drop table  wvp_resources_tree;
drop table  wvp_stream_proxy;
drop table  wvp_stream_push;
drop table  wvp_user;
drop table  wvp_user_role;
2.4.4.数据库连接配置修改

原来的

        dynamic:primary: masterdatasource:master:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/wvp2?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=trueusername: rootpassword: root123hikari:connection-timeout: 20000             # 是客户端等待连接池连接的最大毫秒数initialSize: 50                       # 连接池初始化连接数maximum-pool-size: 200                # 连接池最大连接数minimum-idle: 10                       # 连接池最小空闲连接数idle-timeout: 300000                  # 允许连接在连接池中空闲的最长时间(以毫秒为单位)max-lifetime: 1200000                 # 是池中连接关闭后的最长生命周期(以毫秒为单位)share:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/wvp269_1?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=trueusername: root

修改为

        dynamic:primary: masterdatasource:master:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/wvp2?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=trueusername: rootpassword: root123hikari:connection-timeout: 20000             # 是客户端等待连接池连接的最大毫秒数initialSize: 50                       # 连接池初始化连接数maximum-pool-size: 200                # 连接池最大连接数minimum-idle: 10                       # 连接池最小空闲连接数idle-timeout: 300000                  # 允许连接在连接池中空闲的最长时间(以毫秒为单位)max-lifetime: 1200000                 # 是池中连接关闭后的最长生命周期(以毫秒为单位)    
2.4.5.建立并导入数据库
#复制数据库
cp wvp-GB28181-pro/数据库/2.7.3/初始化-mysql-2.7.3.sql config/mysql.sql
create DATABASE wvp2;
use wvp2;
source /home/multimedia/gb28181/wvp_zlm_platform/config/mysql.sql;
flush privileges;
exit

2.5.跨域配置

# [根据业务需求配置]
user-settings:# 跨域配置,不配置此项则允许所有跨域请求,配置后则只允许配置的页面的地址请求, 可以配置多个allowed-origins:- http://localhost:8008- http://192.168.137.2:8008

运行

准备运行脚本

ZLMediaKit.sh

WVP_ZLM_PLATFORM_PATH=/home/multimedia/gb28181/wvp_zlm_platform
ZLMEDIAKIT_MEDIASERVER=${WVP_ZLM_PLATFORM_PATH}/ZLMediaKit/release/linux/Debug/MediaServer
ZLMEDIAKIT_CONFIG_FILE=${WVP_ZLM_PLATFORM_PATH}/config/ZLMediaKit.inisudo ${ZLMEDIAKIT_MEDIASERVER} -c ${ZLMEDIAKIT_CONFIG_FILE}

wvp_gb28181.sh

WVP_ZLM_PLATFORM_PATH=/home/multimedia/gb28181/wvp_zlm_platform
WVP_GB28181_JAR=${WVP_ZLM_PLATFORM_PATH}/wvp-GB28181-pro/target/wvp-pro-2.7.3-10250742.jar
WVP_GB28181_CONFIG_FILE=${WVP_ZLM_PLATFORM_PATH}/config/wvp_gb28181.ymlsudo java -jar ${WVP_GB28181_JAR} --spring.config.location=${WVP_GB28181_CONFIG_FILE}

运行服务

每个脚本需要一个终端窗口

#需要先运行ZLMediaKit
ZLMediaKit.sh
#测试
http://192.168.137.2/
https://192.168.137.2/webassist/?secret=BkPj2ca6QPpY5RccREJq4kAOu9ZEt70x
https://192.168.137.2/webrtc#然后运行wvp_gb28181
./wvp_gb28181.sh
#测试
http://192.168.137.2:18080/#/login
#用户名: admin
#密码: admin

使用国标设备对接国标服务器

可能手头没有国标设备,为了方便验证国标服务器是否搭建成功,这里使用国标模拟设备进行对接测试.国标模拟设备选择 http://happytimesoft.com/的国标模拟设备,下载地址为 http://happytimesoft.com/products/gb28181-device/index.html,支持windows x86,windows x64, linux,andorid等,这里使用windows x64版本.

下载后解压修改配置文件gb28181device.cfg,其他保持不变.

<?xml version="1.0" encoding="utf-8"?>
<config>                    <server_ip>192.168.137.2</server_ip><server_port>5061</server_port><server_id>32050950002000005001</server_id><server_domain>Local1</server_domain><device_id>32050950002000005067</device_id><device_name>myTestDevice</device_name><password>eLTE@com123</password><channel><cid>32050950001320418045</cid><cname>myTestCh1</cname></channel>
</config>

双击GB28181Device.exe运行国标模拟设备,在国标设备页面显示出设备

在这里插入图片描述

虚拟设备控制台显示如下信息说明注册成功

Happytime GB28181 Device V7.0
Registering to the platform 192.168.137.2
sip_ntf_cb, evt : PUEVT_REGING
sip server date : 2024-10-28T14:58:32.148
sip_ntf_cb, evt : PUEVT_REG_PASS

http://192.168.137.2:18080中打开’国标设备->通道->播放’,即可正常播放,效果如下图

在这里插入图片描述

云端录像

参考官网文档: https://doc.wvp-pro.cn/#/

由于需要验证音频是否正常,录像后发送到手机端播放.

摘录官方文档说明
云端录像 云端录像是对录制在zlm服务下的录像文件的管理,录像的文件路径默认在ZLM/www/record下。

  • 国标设备是否录像: 可以再WVP的配置中user-settings.record-sip设置为true那么每次点播以及录像回放都会录像;
  • 推流设备是否录像: 可以再WVP的配置中user-settings.record-push-live设置为true;
  • 拉流代理的是否录像: 在添加和编辑拉流代理时可以指定, 每次点播都会进行录像
  • 录像文件存储路径配置: 可以修改media.record-path来修改录像路径,但是如果有旧的录像文件,请不要迁移,因为数据库记录了每一个录像的绝对路径,一旦修改会造成找到文件,无法定时移除以及播放
  • 录像保存时间: 可以修改media.record-day来修改录像保存时间,单位是天;

保证如下设置即可:

# [根据业务需求配置]
user-settings:# 国标是否录制record-sip: true

在国标设备页面设置开启音频,然后播放,此时会在ZLMediaKit相应目录下录制文件.

例如:

/home/multimedia/gb28181/wvp_zlm_platform/ZLMediaKit/release/linux/Debug/www/record/rtp
tree
.
├── 32050950002000005065_32050950002000005061
│   └── 2024-10-28
│       ├── 15-42-12-0.mp4
│       └── 15-44-26-0.mp4
├── 32050950002000005065_32050950002000005062
│   └── 2024-10-28
│       └── 15-44-00-0.mp4
├── 32050950002000005065_32050950002000005063
│   └── 2024-10-28
│       └── 15-44-40-0.mp4
└── 32050950002000005067_32050950001320418045└── 2024-10-28└── 15-36-13-0.mp4

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python程序设计 生成器

1. 基础概念 在讲迭代之前&#xff0c;先搞清楚这些名词&#xff1a; 循环&#xff08;loop&#xff09;&#xff0c;指的是在满足条件的情况下&#xff0c;重复执行同一段代码。比如&#xff0c;while 语句。迭代&#xff08;iterate&#xff09;&#xff0c;指的是按照某种…

mac m1 docker本地部署canal 监听mysql的binglog日志

mac m1 docker本地部署canal监听mysql的binglog日志(虚拟机同理) 根据黑马视频部署 1.docker 部署mysql 1.docker拉取mysql 镜像 因为m1是arm架构.需要多加一条信息 正常拉取 docker pull mysql:tagm1拉取 5.7的版本. tag需要自己指定版本 docker pull --platform linux/x…

[linux]docker基础

常见命令 Docker最常见的命令就是操作镜像、容器的命令&#xff0c;详见官方文档: Docker Docs 案例: 查看DockerHub&#xff0c;拉取Nginx镜像&#xff0c;创建并运行Nginx容器 在DockerHub中搜索Nginx镜像 拉取Nginx镜像 查看本地镜像列表 把镜像保持到本地 查看保持命令的…

C++builder中的人工智能(10)神经网络中的Sigmoid函数

在这篇文章中&#xff0c;我们将探讨最受欢迎的激活函数之一——Sigmoid函数。我们将解释什么是Logistic函数&#xff0c;以及它与Sigmoid函数的区别&#xff0c;并展示如何在C应用中使用这些函数。 目录 人工神经网络&#xff08;ANN&#xff09;中的激活函数是什么&#xff…

cursor:如何注销帐号和使用流量

点击右上角的设定图标 点击管理 在弹出的网页点登入 点”continue" 点SETING 了解最新信息请扫码关注&#xff1a;

如何选择适合小团队的项目管理工具?免费与开源软件推荐

目录 一、小团队项目管理工具的重要性 二、热门项目管理工具介绍 &#xff08;一&#xff09;禅道 &#xff08;二&#xff09;Trello &#xff08;三&#xff09;Asana &#xff08;四&#xff09;JIRA 三、免费项目管理软件推荐 &#xff08;一&#xff09;ES 管理器 …

Scaffold-ETH 2:颠覆传统开发的区块链神器,快速构建你的去中心化应用!

目录 引言一、Scaffold-eth框架二、前期准备三、搭建Scaffold-ETH 2&#xff08;一&#xff09;使用npx create-ethlatest进行设置&#xff08;二&#xff09;使用git clone进行设置1、克隆仓库&#xff1a;2、进入到此目录3、安装依赖项 四、配置Scaffold ETH-2的开发环境&…

kafka+zookeeper的搭建

kafka从2.8版本开始&#xff0c;就可以不用配置zookeeper了&#xff0c;但是也可以继续配置。我目前使用的kafka版本是kafka_2.12-3.0.0.tgz&#xff0c;其中前面的2.12表示是使用该版本的scala语言进行编写的&#xff0c;而后面的3.00才是kafka当前的版本。 通过百度网盘分享…

恢复rm -rf删除的数据

注&#xff1a;本文演示的是ext4文件系统格式数据恢复 系统版本&#xff1a;ubuntu16.04 恢复数据目录&#xff1a;数据盘&#xff08;非根&#xff09;目录 恢复工具&#xff1a;extundelete 0.2.4 恢复所有被删除数据 ext4magic 恢复指定目录数据 一、注意事项&#xff1a; …

Elasticsearch(三):Elasticvue使用及DSL执行新增、查询操作

Elasticvue使用及DSL执行CURD 1 概述2 什么是Elasticsearch DSL3 基本结构4 客户端工具介绍4.1 索引介绍4.2 创建简单索引4.3 创建相对完整的索引4.4 插入数据4.4.1 基本插入操作4.4.2 批量插入操作 5 常用的DSL查询类型5.1 match查询5.1.1 match工作原理5.1.2 operator 参数5.…

静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和测试(主)工程、设备CPU架构

1.1库的概念 库&#xff1a;程序代码的集合&#xff0c;编译好的二进制文件加上头文件供使用&#xff0c;共享程序代码的一种方式。 1.2库的分类 根据开源情况分为&#xff1a;开源库&#xff08;能看到具体实现&#xff09;、闭源库&#xff08;只公开调用的的接口&#xf…

C++【string类,模拟实现string类】

&#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏: C专栏 目录 为什么学习string类 C语言中的字符串 标准库中的string类 auto和范围for auto关键字 迭代器 范围for string类的常用接口说明和使用 1. string类对象的常见构造 2.string类对象的容量操作 3…

Me-LLaMA——用于医疗领域的新型开源大规模语言模型

摘要 大规模语言模型的出现是提高病人护理质量和临床操作效率的一个重大突破。大规模语言模型拥有数百亿个参数&#xff0c;通过海量文本数据训练而成&#xff0c;能够生成类似人类的反应并执行复杂的任务。这在改进临床文档、提高诊断准确性和管理病人护理方面显示出巨大的潜…

关于在VS中使用Qt不同版本报错的问题

最开始需要配置的地方 首先看一下我的Qt有关的环境变量&#xff1a; Path环境变量里&#xff1a; 这里就是把对应Qt编译器环境下的bin目录放进来&#xff1a;比如你使用的是msvc2017_64或者MinGW QMAKESPEC环境变量&#xff1a; 这个就选择Qt对应的编译器目录下的\mkspecs\w…

Windows Server 怎么关闭IE增强安全配置(关闭IE弹窗)

首先第一步打开IE浏览器&#xff0c;根据下图所示&#xff0c;访问网页时会弹出警告窗口。 打开【控制面板】图标。查看方式改为小图标&#xff0c;打开【管理工具】 第五步进入【管理工具】页面后&#xff0c;找到并双击【服务器管理器】选项。 第六步在弹出的窗口中&#…

中肿团队提出的“免疫三明治”(放疗+化疗+免疫治疗),成功登上柳叶刀肿瘤|顶刊精析·24-11-08

小罗碎碎念 该研究首次发现在同期放化疗基础上增加特瑞普利单抗&#xff08;PD-1抗体&#xff09;新辅助和辅助治疗显著提高了高危局部晚期鼻咽癌患者生存率。 如果大家看完这篇推送以后&#xff0c;有什么好的医工交叉点子&#xff0c;欢迎和我一起探讨&#xff01;&#xff0…

Golang--协程和管道

1、概念 程序&#xff1a; 是为完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。(程序是静态) 进程&#xff1a; 是程序的一次执行过程。正在运行的一个程序&#xff0c;进程作为资源分配的单位&#xff0c;在内存中会为每个进程分配不同的内存区域&#xff0…

动力商城-02 环境搭建

1.父工程必须满足&#xff1a;1.1删除src目录 1.2pom 2.依赖继承 //里面的依赖&#xff0c;后代无条件继承<dependencies></dependencies>//里面的依赖&#xff0c;后代想要继承&#xff0c;得自己声明需要使用&#xff0c;可以不写版本号&#xff0c;自动继承&l…

JavaWeb开发9

ResponseBody 类型&#xff1a;方法注解、类注解 位置&#xff1a;Controller方法上/类上 作用&#xff1a;将方法返回值直接响应&#xff0c;如果返回值类型是实体对象/集合&#xff0c;将会转换为JSON格式响应 说明&#xff1a;RestControllerControllerResponseBody; 统…

夜天之书 #103 开源嘉年华纪实

上周在北京参与了开源社主办的 2024 中国开源年会。其实相比于有点明显班味的“年会”&#xff0c;我的参会体验更像是经历了一场中国开源的年度嘉年华。这也是在会场和其他参会朋友交流时共同的体验&#xff1a;在开源社的 COSCon 活动上&#xff0c;能够最大限度地一次性见到…