20230720在ubuntu22.04系统下载+解密+合并ts切片的步骤

news2024/11/26 18:23:43

20230720在ubuntu22.04系统下载+解密+合并ts切片的步骤
2023/7/20 23:06


1、视频源头,打开时效肯定有时间限制的!
【并且不同时间打开,下载链接/参数会有区别的!以前的链接就会失效/出错了!】

https://app1ce7glfm1187.h5.xiaoeknow.com/v2/course/alive/l_64af6130e4b03e4b54da1681?type=2&app_id=app1cE7gLFM1187&pro_id=term_645c69388953e_Nhew9A&available=true&share_user_id=u_5e59118832c25_IrOax1kylJ&share_type=5&scene=%E5%88%86%E4%BA%AB&share_scene=1&entry=2&entry_type=2002
2023-07-15 1530逆势增长:新一代企业经营者的能力构建-高手知路.ts


2、使用python脚本将下载的ts切片顺序命名,方便将来的/下一步合并:
(暂时最高支持6000个ts切片,如果有需要/更多可以更改循坏的终点值)
001.ts-999.ts
1000.ts-6000.ts

D:\ZIP\20230715\delete-jin6.py
#with open("5060_XhZCF6k4srMrcrGX_24481610.m3u8") as f:
#with open("5060_tZ8MCtBms2EFQi76_85905257.m3u8") as f:
#with open("5060_BHDBEMAMThXAMkzC_83736491.m3u8") as f:
#with open("5060_6f4aaa46b800eb11g_65368069.m3u8") as f:
#with open("playlist_eof.m3u8") as f:
#with open("playlist.f3.m3u8") as f:
with open("v.f146750.m3u8") as f:
#with open("v.f421220.m3u8") as f:
#with open("v.f146750.m3u8") as f:
    lines = f.readlines()

for line in lines:
    #if line[0] == 'h':
    #if line[0] == 'p':
    if line[0] == 'v':
    #if line[0] == '1':
    #if line[0] == '2':
    #if line[0] == '3':
    #if line[0] == '4':
    #if line[0] == '5':
    #if line[0] == '6':
    #if line[0] == '7':
    #if line[0] == '8':
    #if line[0] == '9':
        #print(line.rstrip())
        print("https://btt-vod.xiaoeknow.com/9764a7a5vodtransgzp1252524126/d362ace83270835010715022023/drm/"+line.rstrip())
        #print(line.rstrip())


Microsoft Windows [版本 10.0.19045.2311]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>cd D:\ZIP\20230715

C:\Users\Administrator>d:

D:\ZIP\20230715>dir
 驱动器 D 中的卷是 SOFT
 卷的序列号是 0ACA-475A

 D:\ZIP\20230715 的目录

2023/07/22  23:02    <DIR>          .
2023/07/22  23:02    <DIR>          ..
2023/07/22  23:02           950,966 1574.txt
2023/07/20  23:12           946,492 1574旧的.txt
2023/07/22  23:01               950 delete-jin6.py
2023/07/22  23:01           615,787 v.f146750.m3u8
2023/07/20  22:54           615,787 v.f146750旧的.m3u8
2023/07/18  23:42             3,333 新建文本文档-旧的.txt
2023/07/22  23:01             4,169 新建文本文档.txt
               7 个文件      3,137,484 字节
               2 个目录 24,042,561,536 可用字节

D:\ZIP\20230715>python delete-jin6.py


原理:
(一)将原始的m3u8处理为真实的下载链接:【】
原始:m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="https://app.xiaoe-tech.com/get_video_key.php?edk=CiC4VtGs01Wqn9bzplV30xTHXBpeJ584cjeCi2paoN1uuxCO08TAChiaoOvUBCokYjRhNjFiNTgtMmVhNy00OWYxLTgwZGMtZTE0NTIyODc5YWIy&fileId=3270835010715022023&keySource=VodBuildInKMS",IV=0x00000000000000000000000000000000
#EXTINF:2.000000,
v.f146750_0.ts?start=0&end=108479&type=mpegts&sign=5766b75a00b62cece0007a8dcf49d6cd&t=64b9f2c3&us=ZviMNiFKSh
#EXTINF:2.000000,
v.f146750_0.ts?start=108480&end=216399&type=mpegts&sign=5766b75a00b62cece0007a8dcf49d6cd&t=64b9f2c3&us=ZviMNiFKSh
#EXTINF:2.000000,


(二)从猫抓中拷贝的部分真实路径:
https://btt-vod.xiaoeknow.com/9764a7a5vodtransgzp1252524126/d362ace83270835010715022023/drm/v.f146750.m3u8?sign=5766b75a00b62cece0007a8dcf49d6cd&t=64b9f2c3&us=ZviMNiFKSh&time=1689864706616&uuid=u_6165733764809_rUxpVMZk1O
https://btt-vod.xiaoeknow.com/9764a7a5vodtransgzp1252524126/d362ace83270835010715022023/drm/v.f146750_0.ts?start=0&end=108479&type=mpegts&sign=5766b75a00b62cece0007a8dcf49d6cd&t=64b9f2c3&us=ZviMNiFKSh
https://btt-vod.xiaoeknow.com/9764a7a5vodtransgzp1252524126/d362ace83270835010715022023/drm/v.f146750_0.ts?start=108480&end=216399&type=mpegts&sign=5766b75a00b62cece0007a8dcf49d6cd&t=64b9f2c3&us=ZviMNiFKSh


(三)将m3u8中以v开头的行真实链接和从猫抓中拷贝的部分真实路径【头】合并!:1574.txt
将字符串合并得到:最终的真实的下载链接:
https://btt-vod.xiaoeknow.com/9764a7a5vodtransgzp1252524126/d362ace83270835010715022023/drm/v.f146750_0.ts?start=0&end=108479&type=mpegts&sign=5766b75a00b62cece0007a8dcf49d6cd&t=64b9f2c3&us=ZviMNiFKSh
https://btt-vod.xiaoeknow.com/9764a7a5vodtransgzp1252524126/d362ace83270835010715022023/drm/v.f146750_0.ts?start=108480&end=216399&type=mpegts&sign=5766b75a00b62cece0007a8dcf49d6cd&t=64b9f2c3&us=ZviMNiFKSh


3、下载加密的ts视频切片:
D:\ZIP\ts1574.py
import requests
from multiprocessing import Pool

def mission(url,n):
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
    print('*****')
    response=requests.get(url,headers=headers)
    print('-----')
    #f=open("./1/%03d.ts"%n,"wb")
    f=open("./1574/%03d.ts"%n,"wb")
    f.write(response.content)      
    f.close()
    print("%03d.ts OK..."%n)


if __name__ == "__main__":
    #f = open("f:\\p1\\1574.txt")
    #f = open("g:\\1575\\1574.txt")
    #f = open("1574.txt")
    f = open("d:\\ZIP\\1574.txt")
    
    pool=Pool(20)  
    #for n in range(1,1574):
    #for n in range(1,2000):
    #for n in range(1,4000):
    for n in range(1,6000):
        line = f.readline()
        #pool.apply_async(mission,(line,n))
        pool.apply_async(mission,(line.rstrip(),n))
    pool.close()
    pool.join()
    
    print('\n 2022/9/13 23:01-finish')
    print(n)


Microsoft Windows [版本 10.0.19045.2311]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>cd d:\ZIP\

C:\Users\Administrator>
C:\Users\Administrator>d:

d:\ZIP>
d:\ZIP>python ts1574.py


4、生成通过openssl以AES-128加密模式解密ts切片的脚本并解密ts切片:
write.py
# openssl aes-128-cbc -d -in 001.ts -out 001xx.ts  -nosalt -iv 00000000000000000000000000000000 -K 34961199b37742b8b9174b6102af4a9c
for n in range(1,6000):
    #print("https://btt-vod.xiaoeknow.com/522ff1e0vodcq1252524126/da99c7ef3270835010800009264/"+line.rstrip())
    #print("openssl aes-128-cbc -d -in 000.ts -out 000xx.ts  -nosalt -iv 00000000000000000000000000000000 -K 0b53fbec72cb3a6d4d9c8efbc23a025e"+line.rstrip())
    #print("openssl aes-128-cbc -d -in 000.ts -out 000xx.ts  -nosalt -iv 00000000000000000000000000000000 -K 0b53fbec72cb3a6d4d9c8efbc23a025e")
    #f=open("./1574/%03d.ts"%n,"wb")
    #print("openssl aes-128-cbc -d -in %03d.ts -out 000xx.ts  -nosalt -iv 00000000000000000000000000000000 -K 0b53fbec72cb3a6d4d9c8efbc23a025e"%n)
    #print("openssl aes-128-cbc -d -in %03d.ts -out xx/%03d.ts  -nosalt -iv 00000000000000000000000000000000 -K 0b53fbec72cb3a6d4d9c8efbc23a025e"%n, %n)
    #print("openssl aes-128-cbc -d -in %03d.ts -out xx/%03d.ts  -nosalt -iv 00000000000000000000000000000000 -K 0b53fbec72cb3a6d4d9c8efbc23a025e"%n%n)
    #print("openssl aes-128-cbc -d -in %03d.ts -out xx/%03d.ts  -nosalt -iv 00000000000000000000000000000000 -K 0b53fbec72cb3a6d4d9c8efbc23a025e"%n%n)
    #print("{} + {} = {}".format(1,2,3))
    #print("openssl aes-128-cbc -d -in {%03d}.ts -out xx/{%03d}.ts  -nosalt -iv 00000000000000000000000000000000 -K 0b53fbec72cb3a6d4d9c8efbc23a025e".format(n, n))
    #print("openssl aes-128-cbc -d -in {}.ts -out xx/{}.ts  -nosalt -iv 00000000000000000000000000000000 -K 0b53fbec72cb3a6d4d9c8efbc23a025e".format(n, n))
    #'{value:0>6d}'.format(value=6666)
    print("openssl aes-128-cbc -d -in {:0>3d}.ts -out xx/{:0>3d}.ts  -nosalt -iv 00000000000000000000000000000000 -K 0b53fbec72cb3a6d4d9c8efbc23a025e".format(n, n))

 

 


Microsoft Windows [版本 10.0.19045.2311]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>cd D:\ZIP

C:\Users\Administrator>d:

D:\ZIP>dir
 驱动器 D 中的卷是 SOFT
 卷的序列号是 0ACA-475A

 D:\ZIP 的目录

2023/07/22  23:43    <DIR>          .
2023/07/22  23:43    <DIR>          ..
2023/07/22  23:39             4,368 12jia.py
2023/07/22  23:28    <DIR>          1574
2023/07/22  23:02           950,966 1574.txt
2023/07/22  23:10       495,640,050 1574a只有加密的.zip
2023/07/22  23:38       994,470,172 1574b加密+解密.zip
2023/07/22  23:02    <DIR>          20230715
2023/07/20  22:58             1,189 get_video_key.mhtml
2023/07/20  23:00                16 get_video_key.php
2023/07/22  23:41       500,611,288 output.ts
2023/07/22  12:31               994 ts1574.py
2023/07/19  20:34             1,750 write.py
2023/03/18  19:04             4,992 !!!!20160908如何将多段ts文件合并成一个ts文件.txt
              10 个文件  1,991,685,785 字节
               4 个目录 24,044,519,424 可用字节

D:\ZIP>
D:\ZIP>python write.py > 1574\decrypt.bat

D:\ZIP\1574>decrypt.bat


5、合并切片:
Z:\zip\12jia.py

temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(1,999):
    #temp = "./1574/xx/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%03d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output1.ts"
url = url + temp

f=open("./1574/xx/1.bat","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(1000,2000):
    #temp = "./1574/xx/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output2.ts"
url = url + temp

f=open("./1574/xx/2.bat","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(2001,3000):
    #temp = "./1574/xx/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output3.ts"
url = url + temp

f=open("./1574/xx/3.bat","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
#for n in range(3001,3389):
for n in range(3001,4000):
    #temp = "./1574/xx/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output4.ts"
url = url + temp

f=open("./1574/xx/4.bat","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(4001,5000):
    #temp = "./1574/xx/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output5.ts"
url = url + temp

f=open("./1574/xx/5.bat","w")
f.write(url)
f.close()

temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(5001,6000):
    #temp = "./1574/xx/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output6.ts"
url = url + temp

f=open("./1574/xx/6.bat","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(6001,7000):
    #temp = "./1574/xx/%04d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output7.ts"
url = url + temp

f=open("./1574/xx/7.bat","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(7001,8000):
    #temp = "./1574/xx/%04d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output8.ts"
url = url + temp

f=open("./1574/xx/8.bat","w")
f.write(url)
f.close()

temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(8001,9000):
    #temp = "./1574/xx/%04d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output9.ts"
url = url + temp

f=open("./1574/xx/9.bat","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(9001,10000):
    #temp = "./1574/xx/%03d.ts"%n
    temp = "%04d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output10.ts"
url = url + temp

f=open("./1574/xx/10.bat","w")
f.write(url)
f.close()


temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(10001,11000):
    #temp = "./1574/xx/%03d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%04d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output11.ts"
url = url + temp

f=open("./1574/xx/11.bat","w")
f.write(url)
f.close()

temp = ""
url = "ffmpeg -i \"concat:"

#for n in range(1,10):
for n in range(11001,12000):
    #temp = "./1574/xx/%05d.ts"%n
    temp = "%03d.ts|"%n
    url = url + temp
    #print(temp)
    #print(url)

temp = "%05d.ts"%(n+1)
url = url + temp

    
temp = "\" -c copy output12.ts"
url = url + temp

f=open("./1574/xx/12.bat","w")
f.write(url)
f.close()


D:\ZIP\1574\xx>
D:\ZIP\1574\xx>1.bat
D:\ZIP\1574\xx>2.bat
D:\ZIP\1574\xx>3.bat
D:\ZIP\1574\xx>4.bat
D:\ZIP\1574\xx>5.bat

D:\ZIP\1574\xx>ffmpeg -i "concat:output1.ts|output2.ts|output3.ts|output4.ts|output5.ts" -c copy output.ts
D:\ZIP\1574\xx>
【5.bat需要拿掉后面没有的文件/ts切片!】

参考资料:
https://www.cnblogs.com/faberbeta/p/ffmpeg001.html
Linux 下使用 ffmpeg 大批量合并 ts 文件, mp4切割文件为m3u8


https://blog.csdn.net/oncealong/article/details/82785642
hls视频的加解密示例


https://blog.csdn.net/nizhengjia888/article/details/78041945
解密HLS中的AES加密


https://blog.csdn.net/oncealong/article/details/82785447
使用openssl命令加解密 aes-128-cbc的简单示例


https://blog.csdn.net/ddddfang/article/details/92838200
xxd命令


https://blog.csdn.net/y534560449/article/details/116531326
!!!!使用 FFmpeg 生成 ts 切片并使用 AES-128 加密


https://blog.csdn.net/beyond706/article/details/111772810
!!!!使用openssl m3u8解密 EXT-X-KEY:METHOD=AES-128,URI=xxx


https://blog.csdn.net/u014470361/article/details/90705336
ubuntu16.04安装ffmpeg最新版


https://blog.csdn.net/huangjingshui/article/details/75003771
如何查看openssl版本号

openssl version
openssl version -a

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

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

相关文章

深“扒”云原生高性能分布式文件系统JuiceFS

JuiceFS 是一款面向云原生设计的高性能分布式文件系统&#xff0c;在 Apache 2.0 开源协议下发布。提供完备的 POSIX 兼容性&#xff0c;可将几乎所有对象存储接入本地作为海量本地磁盘使用&#xff0c;亦可同时在跨平台、跨地区的不同主机上挂载读写。 JuiceFS 简介 JuiceFS…

【100天精通python】Day13:面向对象编程_多态和封装,实战模拟电影院的自动售票机选票页面

目录 1 多态&#xff08;Polymorphism&#xff09; 2 封装&#xff08;Encapsulation&#xff09; 3 总结 4 实战&#xff1a;模拟电影院的自动售票机选票页面 在 Python 中&#xff0c;多态和封装是面向对象编程的两个重要概念。 1 多态&#xff08;Polymorphism&#xf…

GoogleLeNet Inception V1

文章目录 Inception V1Inception Modulenative versionInception module with dimensionality reduction1 * 1网络的降维说明 多个Softmax的输出整体结构 GoogleLeNet主要是把深度扩充到了22层&#xff0c;能增加网络深度而不用担心训练精度和梯度消失问题。 总共是提出了4个版…

【stm32L152】段码屏驱动注解、MX_LCD_Init()初始化失败的解决方法

文章目录 断码屏驱动补充MX_LCD_Init()驱动初始化失败 断码屏驱动补充 已经有大神写过较详细的教程&#xff1a;https://blog.csdn.net/CSDN_Gao_16/article/details/115463499&#xff0c;但这篇博文仍然比较抽象&#xff0c;我看了好多遍才看明白-_-||&#xff0c;为了节省和…

金融中的数学:贝叶斯公式

1.贝叶斯定理 贝叶斯定理是概率论中的一项重要定理&#xff0c;用于在已知某一事件的条件下&#xff0c;求另一事件发生的概率。它是根据条件概率推导出来的&#xff0c;得名于英国数学家托马斯贝叶斯。 贝叶斯定理可以表示为&#xff1a; 这个式子就是贝叶斯公式&#xff0c…

LabVIEW使用自定义模板和示例项目来开发LabVIEW项目

LabVIEW使用自定义模板和示例项目来开发LabVIEW项目 创建项目时&#xff0c;LabVIEW将显示“创建项目”对话框&#xff0c;以帮助您选择模板或示例项目来作为开发起点。如果要使用您创建的项目作为自定义模板和示例项目&#xff0c;您必须将每个项目的源文件和元数据添加到相应…

算法与数据结构(四)--队列

一.队列的基本概念 队列是另一种特殊的表&#xff0c;这种表只在表首&#xff08;也称为队首&#xff09;进行删除操作&#xff0c;只在表尾进行插入操作。队列的修改是按先进先出的规则进行的&#xff0c;所以队列又称为先进先出表&#xff0c;First In First Out&#xff0c…

高温介电参数测试

高温介电参数测试 在新材料科研领域&#xff0c;高温介电参数的测量是众多高校和研究所经常会面临的问题。精科声学所事业部电子和专业的高温介电系统集成商合作&#xff0c;使用 JKZC-YDZK03A型高温压电阻抗综合分析仪进行配套系统集成&#xff0c;满足客户高温介电测量和曲线…

什么是 web3?

在百度搜索引擎输入 “Web3”、“大厂”。跳出来基本都是这样的标题. 以及如今的互联网行业 “哀鸿遍野”&#xff0c;不仅内卷&#xff0c;还裁员。然后掀起一阵风&#xff0c;猛吹 Web3 的好&#xff0c;数据回归用户……最后再 “威逼利诱” 一下&#xff0c;Web3 就是 20 年…

【业务功能篇50】ObjectMapper-将java对象转为json字符串

ObjectMapper可以实现Java对象和json字符串间互相转换&#xff0c;我们经常用到的是它的Java对象转json字符串功能。 这里目的是 Java对象 json字符串相互转换 api 【json字符串转为Java对象&#xff1a;readValue(json字符串,类.class)】【Java对象转为json字符串&#xff1a…

读kafka生产端源码,窥kafka设计之道(下)

背景 在上一篇文章《读kafka生产端源码&#xff0c;窥kafka设计之道&#xff08;上&#xff09;》 留下了kafka设计上比较优秀的一个点&#xff1b;内存的循环使用。本篇文章准备盘盘它。 好奇 为什么 kafka减少发送消息时向JVM频繁申请内存&#xff0c;就可以降低JVM GC的执…

idea 设置了 vm options后无法启动

今天想扩展ideaj的JVM 设置了 vm options后无法启动 找了很久&#xff0c;重新卸载后安装也没有用 后面直接打开idea的bat文件 找到自己idea使用的.vmoptions文件&#xff0c;我是因为之前idea有缓存&#xff0c;一直用的我修改的文件&#xff0c;后面删了就可以启动了

看了我项目中的商品功能设计,同事也开始悄悄模仿了...

商品功能作为电商系统的核心功能&#xff0c;它的设计可谓是非常重要的。就算不是电商系统中&#xff0c;只要是涉及到需要交易物品的项目&#xff0c;商品功能都具有很好的参考价值。今天就以mall项目中的商品功能为例&#xff0c;来聊聊商品功能的设计与实现。 mall项目简介 …

前端实习第一周周记

第一天 第一天来的时候&#xff0c;十点左右就开始跑代码了&#xff0c;公司发了电脑&#xff0c;但由于自己的电脑环境比较齐全&#xff0c;所以就先用自己的电脑跑的代码。 一共是两个项目&#xff0c;一个pc类似于管理系统&#xff0c;还有一个是微信小程序。 拉代码的过…

3DVR全景旅游,最新数字化智慧文旅

导语&#xff1a; 随着科技的飞速发展&#xff0c;3DVR全景旅游正以其独特的特点和无限的优势&#xff0c;成为当今智慧文旅的领航者。穿戴上VR设备&#xff0c;只需一个轻轻的点击&#xff0c;你将被带入一个全新的数字世界&#xff0c;领略美景、探索奇迹。让我们一起深入了…

el-Cascader 中div上绑定keyDown事件

keydown&#xff0c;keyup&#xff0c;keypress 事件默认是给页面上可以聚焦的元素绑定键盘事件&#xff0c;例如input输入框&#xff0c;点击输入框即代表聚焦在该元素上。那么想要给div或者其他不能聚焦的元素上使用键盘事件怎么处理呢&#xff1f;这里用到tabindex属性。 …

Idea maven窗口 展示不分级 maven层级混乱

1. 正在写分布式im 开源项目&#xff1a;nami-im: 分布式im, 集群 zookeeper netty kafka nacos rpc主要为gate&#xff08;长连接服务&#xff09; logic &#xff08;业务&#xff09; lsb &#xff08;负载均衡&#xff09;store&#xff08;存储&#xff09; - Gitee.com …

redis - 学习笔记

一、NOSQL 1、概述 泛指非关系型数据库 关系型数据库&#xff1a;表格、行、列 2、特点 方便拓展大数据量&#xff0c;高性能&#xff08;1s写8w次&#xff0c;读取11w&#xff0c;NOSQL的缓存记录级&#xff0c;是一种细粒度的缓存&#xff0c;性能比较高&#xff09;数据…

网安第二天笔记

ssh 22端口 账号密码登陆、证书登录 smtp 25端口 邮件协议 DNS 53 DHCP 67 68端口 四个包 1.DHCP服务器&#xff1a;服务器管理IP地址池和配置参数 2.客户端请求&#xff1a;发送DHCP广播请求&#xff0c;discover消息 3.DHCP服务器回应&#xff1a;收到discover会回复offer…

Vue2.x和Vue3.x面试常问知识点-面试题

SPA单页面的理解&#xff0c;它的优缺点分别是什么&#xff1f; 是什么 SPA&#xff08; single page application &#xff09;仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。 一旦页面加载完成&#xff0c;SPA 不会因为用户的操作而进行页面的重新加载或跳转 而…