当前位置: 首页 > news >正文

39. 实战:基于api接口实现视频解析播放(32接口,窗口化操作,可导出exe,附源码)

目录

前言

目的

思路

代码实现

需要导入的模块

1. 导入解析网站列表,实现解析过程

2. 设计UI界面

3. 设置窗口居中和循环执行

4. 注意事项

完整源码

运行效果

总结


前言

本节将类似34. 实战:基于某api实现歌曲检索与下载(附完整源代码),也将基于api实现视频解析播放的功能,并且还实现了用户UI界面,随后大家也可以用py2exe等库导出exe来永久保存可执行文件。

本例具有32个接口供大家解析,一般前面的就能够顺利解析出来了,看大家喜好~


目的

实现输入任意视频链接,在用户UI窗口选择解析接口,点击解析按钮自动跳转到系统默认浏览器进行播放。


思路

1. 导入解析网站列表,实现解析过程

2. 设计UI界面

3. 设置窗口居中和循环执行

4. 注意事项


代码实现

需要导入的模块

from urllib import parse
import tkinter.messagebox as msgbox
import tkinter as tk
import webbrowser
import re

1. 导入解析网站列表,实现解析过程

    """函数说明:视频播放"""def video_play(self):# 视频解析网站地址# port_1 = 'https://jx.618g.com/?url='port_1 = 'https://im1907.top/?jx='port_2 = 'https://jx.jsonplayer.com/player/?url='port_3 = 'https://jx.aidouer.net/?url='port_4 = 'https://jx.xmflv.com/?url='port_5 = 'https://okjx.cc/?url='port_6 = 'https://www.nxflv.com/?url='port_7 = 'https://www.yemu.xyz/?url='port_8 = 'https://jx.m3u8.tv/jiexi/?url='port_9 = 'https://jx.blbo.cc:4433/?url='port_10 = 'https://api.qianqi.net/vip/?url='port_11 = 'https://jx.nnxv.cn/tv.php?url='port_12 = 'https://bd.jx.cn/?url='port_13 = 'https://123.1dior.cn/?url='port_14 = 'https://www.ckplayer.vip/jiexi/?url='port_15 = 'https://www.ckmov.vip/api.php?url='port_16 = 'https://jx.playerjy.com/?url='port_17 = 'https://ckmov.ccyjjd.com/ckmov/?url='port_18 = 'https://www.ckmov.com/?url='port_19 = 'https://www.h8jx.com/jiexi.php?url='port_20 = 'https://svip.bljiex.cc/?v='port_21 = 'https://api.jiexi.la/?url='port_22 = 'https://jiexi.janan.net/jiexi/?url='port_23 = 'https://www.mtosz.com/erzi.php?url='port_24 = 'https://www.administratorw.com/video.php?url='port_25 = 'https://www.pangujiexi.cc/jiexi.php?url='port_26 = 'https://www.gai4.com/?url='port_27 = 'https://go.yh0523.cn/y.cy?url='port_28 = 'https://www.1717yun.com/jx/ty.php?url='port_29 = 'https://jx.4kdv.com/?url='port_30 = 'https://www.8090g.cn/?url='port_31 = 'https://jx.dj6u.com/?url='port_32 = 'https://jx.000180.top/jx/?url='# 正则表达是判定是否为合法链接if re.match(r'^https?:/{2}\w.+$', self.url.get()):port_num = self.v.get()port_url_referer = locals()[f'port_{port_num}']# 视频链接获取ip = self.url.get()# 视频链接加密ip = parse.quote_plus(ip)# 浏览器打开webbrowser.open(port_url_referer + self.url.get())else:msgbox.showerror(title='错误', message='视频链接地址无效,请重新输入!')

这里用locals函数实现基于变量名称的字符串检索变量对应值的操作,还是值得一学的。如果是全局变量就要使用globals,用法是一样的。 

2. 设计UI界面

就常规设计一下,大同小异的,博主审美能力有限,就做的很粗糙了:

    def __init__(self, width=1280, height=720):self.w = widthself.h = heightself.title = 'Vector的VIP解析助手'self.root = tk.Tk(className=self.title)# 定义button控件上的文字self.url = tk.StringVar()# 定义选择哪个播放源self.v = tk.IntVar()# 默认为1self.v.set(1)# Frame空间frame_1 = tk.Frame(self.root)frame_2 = tk.Frame(self.root)frame_3 = tk.Frame(self.root)# Menu菜单menu = tk.Menu(self.root)self.root.config(menu=menu)moviemenu = tk.Menu(menu, tearoff=0)menu.add_cascade(label='友情链接', menu=moviemenu)# 各大视频网站moviemenu.add_command(label='腾讯视频', command=lambda: webbrowser.open('http://v.qq.com/'))moviemenu.add_command(label='搜狐视频', command=lambda: webbrowser.open('http://tv.sohu.com/'))moviemenu.add_command(label='芒果TV', command=lambda: webbrowser.open('http://www.mgtv.com/'))moviemenu.add_command(label='爱奇艺', command=lambda: webbrowser.open('http://www.iqiyi.com/'))moviemenu.add_command(label='PPTV', command=lambda: webbrowser.open('http://www.bilibili.com/'))moviemenu.add_command(label='优酷', command=lambda: webbrowser.open('http://www.youku.com/'))moviemenu.add_command(label='乐视', command=lambda: webbrowser.open('http://www.le.com/'))moviemenu.add_command(label='土豆', command=lambda: webbrowser.open('http://www.tudou.com/'))moviemenu.add_command(label='A站', command=lambda: webbrowser.open('http://www.acfun.tv/'))moviemenu.add_command(label='B站', command=lambda: webbrowser.open('http://www.bilibili.com/'))# 控件内容设置group = tk.Label(frame_1, text='请选择一个视频解析方式:', padx=10, pady=10)tb1 = tk.Radiobutton(frame_1, text='纯净/B站', variable=self.v, value=1, width=10, height=3)tb2 = tk.Radiobutton(frame_1, text='综合/B站', variable=self.v, value=2, width=10, height=3)tb3 = tk.Radiobutton(frame_1, text='爱豆', variable=self.v, value=3, width=10, height=3)tb4 = tk.Radiobutton(frame_1, text='虾米', variable=self.v, value=4, width=10, height=3)tb5 = tk.Radiobutton(frame_1, text='OK解析', variable=self.v, value=5, width=10, height=3)tb6 = tk.Radiobutton(frame_1, text='诺讯', variable=self.v, value=6, width=10, height=3)tb7 = tk.Radiobutton(frame_1, text='夜幕', variable=self.v, value=7, width=10, height=3)tb8 = tk.Radiobutton(frame_1, text='M3U8.TV', variable=self.v, value=8, width=10, height=3)tb9 = tk.Radiobutton(frame_1, text='人人迷', variable=self.v, value=9, width=10, height=3)tb10 = tk.Radiobutton(frame_1, text='全民', variable=self.v, value=10, width=10, height=3)tb11 = tk.Radiobutton(frame_1, text='七哥', variable=self.v, value=11, width=10, height=3)tb12 = tk.Radiobutton(frame_1, text='冰豆', variable=self.v, value=12, width=10, height=3)tb13 = tk.Radiobutton(frame_1, text='迪奥', variable=self.v, value=13, width=10, height=3)tb14 = tk.Radiobutton(frame_1, text='CK', variable=self.v, value=14, width=10, height=3)tb15 = tk.Radiobutton(frame_1, text='ckmov', variable=self.v, value=15, width=10, height=3)tb16 = tk.Radiobutton(frame_1, text='playerjy/B站', variable=self.v, value=16, width=10, height=3)tb17 = tk.Radiobutton(frame_1, text='ccyjjd', variable=self.v, value=17, width=10, height=3)tb18 = tk.Radiobutton(frame_1, text='诺诺', variable=self.v, value=18, width=10, height=3)tb19 = tk.Radiobutton(frame_1, text='H8', variable=self.v, value=19, width=10, height=3)tb20 = tk.Radiobutton(frame_1, text='BL', variable=self.v, value=20, width=10, height=3)tb21 = tk.Radiobutton(frame_1, text='解析la', variable=self.v, value=21, width=10, height=3)tb22 = tk.Radiobutton(frame_1, text='MUTV', variable=self.v, value=22, width=10, height=3)tb23 = tk.Radiobutton(frame_1, text='MAO', variable=self.v, value=23, width=10, height=3)tb24 = tk.Radiobutton(frame_1, text='无名', variable=self.v, value=24, width=10, height=3)tb25 = tk.Radiobutton(frame_1, text='盘古', variable=self.v, value=25, width=10, height=3)tb26 = tk.Radiobutton(frame_1, text='盖世', variable=self.v, value=26, width=10, height=3)tb27 = tk.Radiobutton(frame_1, text='0523', variable=self.v, value=27, width=10, height=3)tb28 = tk.Radiobutton(frame_1, text='17云', variable=self.v, value=28, width=10, height=3)tb29 = tk.Radiobutton(frame_1, text='4K', variable=self.v, value=29, width=10, height=3)tb30 = tk.Radiobutton(frame_1, text='8090', variable=self.v, value=30, width=10, height=3)tb31 = tk.Radiobutton(frame_1, text='听乐', variable=self.v, value=31, width=10, height=3)tb32 = tk.Radiobutton(frame_1, text='180', variable=self.v, value=32, width=10, height=3)label1 = tk.Label(frame_2, text="请输入视频链接:")entry = tk.Entry(frame_2, textvariable=self.url, highlightcolor='Fuchsia', highlightthickness=1, width=35)label2 = tk.Label(frame_2, text=" ")play = tk.Button(frame_2, text="播放", font=('楷体', 12), fg='Purple', width=2, height=1, command=self.video_play)label3 = tk.Label(frame_2, text=" ")label_explain = tk.Label(frame_3, fg='red', font=('楷体', 18), text='\n注意:\nCSDN博主Vec_Kun版权所有\n此工具仅用于交流学习\n请勿用于任何商业用途!')label_warning = tk.Label(frame_3, fg='black', font=('楷体', 16), text='\n\n')# 控件布局frame_1.pack()frame_2.pack()frame_3.pack()group.grid(row=0, column=0)tb1.grid(row=0, column=1)tb2.grid(row=0, column=2)tb3.grid(row=0, column=3)tb4.grid(row=0, column=4)tb5.grid(row=1, column=1)tb6.grid(row=1, column=2)tb7.grid(row=1, column=3)tb8.grid(row=1, column=4)tb9.grid(row=2, column=1)tb10.grid(row=2, column=2)tb11.grid(row=2, column=3)tb12.grid(row=2, column=4)tb13.grid(row=3, column=1)tb14.grid(row=3, column=2)tb15.grid(row=3, column=3)tb16.grid(row=3, column=4)tb17.grid(row=4, column=1)tb18.grid(row=4, column=2)tb19.grid(row=4, column=3)tb20.grid(row=4, column=4)tb21.grid(row=5, column=1)tb22.grid(row=5, column=2)tb23.grid(row=5, column=3)tb24.grid(row=5, column=4)tb25.grid(row=6, column=1)tb26.grid(row=6, column=2)tb27.grid(row=6, column=3)tb28.grid(row=6, column=4)tb29.grid(row=7, column=1)tb30.grid(row=7, column=2)tb31.grid(row=7, column=3)tb32.grid(row=7, column=4)label1.grid(row=0, column=0)entry.grid(row=0, column=1)label2.grid(row=0, column=2)play.grid(row=0, column=3, ipadx=10, ipady=10)label3.grid(row=0, column=4)label_explain.grid(row=1, column=0)label_warning.grid(row=2, column=0)

3. 设置窗口居中和循环执行

    """函数说明:tkinter窗口居中"""def center(self):ws = self.root.winfo_screenwidth()hs = self.root.winfo_screenheight()x = int((ws / 2) - (self.w / 2))y = int((hs / 2) - (self.h / 2))self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h, x, y))
    """函数说明:loop等待用户事件"""def loop(self):# 禁止修改窗口大小self.root.resizable(False, False)# 窗口居中self.center()self.root.mainloop()

最后在主函数运行就好了

if __name__ == '__main__':app = APP()  # 实例化APP对象app.loop()  # loop等待用户事件

4. 注意事项

此工具仅用于交流学习,请勿用于任何商业用途!!!

此工具仅用于交流学习,请勿用于任何商业用途!!!

此工具仅用于交流学习,请勿用于任何商业用途!!!


完整源码

# Created at UESTC
# Author: Vector Kun
# Time: 2023/1/30 11:26# url解析
from urllib import parse
import tkinter.messagebox as msgbox
import tkinter as tk
import webbrowser
import reclass APP:def __init__(self, width=1280, height=720):self.w = widthself.h = heightself.title = 'Vector的VIP解析助手'self.root = tk.Tk(className=self.title)# 定义button控件上的文字self.url = tk.StringVar()# 定义选择哪个播放源self.v = tk.IntVar()# 默认为1self.v.set(1)# Frame空间frame_1 = tk.Frame(self.root)frame_2 = tk.Frame(self.root)frame_3 = tk.Frame(self.root)# Menu菜单menu = tk.Menu(self.root)self.root.config(menu=menu)moviemenu = tk.Menu(menu, tearoff=0)menu.add_cascade(label='友情链接', menu=moviemenu)# 各大视频网站moviemenu.add_command(label='腾讯视频', command=lambda: webbrowser.open('http://v.qq.com/'))moviemenu.add_command(label='搜狐视频', command=lambda: webbrowser.open('http://tv.sohu.com/'))moviemenu.add_command(label='芒果TV', command=lambda: webbrowser.open('http://www.mgtv.com/'))moviemenu.add_command(label='爱奇艺', command=lambda: webbrowser.open('http://www.iqiyi.com/'))moviemenu.add_command(label='PPTV', command=lambda: webbrowser.open('http://www.bilibili.com/'))moviemenu.add_command(label='优酷', command=lambda: webbrowser.open('http://www.youku.com/'))moviemenu.add_command(label='乐视', command=lambda: webbrowser.open('http://www.le.com/'))moviemenu.add_command(label='土豆', command=lambda: webbrowser.open('http://www.tudou.com/'))moviemenu.add_command(label='A站', command=lambda: webbrowser.open('http://www.acfun.tv/'))moviemenu.add_command(label='B站', command=lambda: webbrowser.open('http://www.bilibili.com/'))# 控件内容设置group = tk.Label(frame_1, text='请选择一个视频解析方式:', padx=10, pady=10)tb1 = tk.Radiobutton(frame_1, text='纯净/B站', variable=self.v, value=1, width=10, height=3)tb2 = tk.Radiobutton(frame_1, text='综合/B站', variable=self.v, value=2, width=10, height=3)tb3 = tk.Radiobutton(frame_1, text='爱豆', variable=self.v, value=3, width=10, height=3)tb4 = tk.Radiobutton(frame_1, text='虾米', variable=self.v, value=4, width=10, height=3)tb5 = tk.Radiobutton(frame_1, text='OK解析', variable=self.v, value=5, width=10, height=3)tb6 = tk.Radiobutton(frame_1, text='诺讯', variable=self.v, value=6, width=10, height=3)tb7 = tk.Radiobutton(frame_1, text='夜幕', variable=self.v, value=7, width=10, height=3)tb8 = tk.Radiobutton(frame_1, text='M3U8.TV', variable=self.v, value=8, width=10, height=3)tb9 = tk.Radiobutton(frame_1, text='人人迷', variable=self.v, value=9, width=10, height=3)tb10 = tk.Radiobutton(frame_1, text='全民', variable=self.v, value=10, width=10, height=3)tb11 = tk.Radiobutton(frame_1, text='七哥', variable=self.v, value=11, width=10, height=3)tb12 = tk.Radiobutton(frame_1, text='冰豆', variable=self.v, value=12, width=10, height=3)tb13 = tk.Radiobutton(frame_1, text='迪奥', variable=self.v, value=13, width=10, height=3)tb14 = tk.Radiobutton(frame_1, text='CK', variable=self.v, value=14, width=10, height=3)tb15 = tk.Radiobutton(frame_1, text='ckmov', variable=self.v, value=15, width=10, height=3)tb16 = tk.Radiobutton(frame_1, text='playerjy/B站', variable=self.v, value=16, width=10, height=3)tb17 = tk.Radiobutton(frame_1, text='ccyjjd', variable=self.v, value=17, width=10, height=3)tb18 = tk.Radiobutton(frame_1, text='诺诺', variable=self.v, value=18, width=10, height=3)tb19 = tk.Radiobutton(frame_1, text='H8', variable=self.v, value=19, width=10, height=3)tb20 = tk.Radiobutton(frame_1, text='BL', variable=self.v, value=20, width=10, height=3)tb21 = tk.Radiobutton(frame_1, text='解析la', variable=self.v, value=21, width=10, height=3)tb22 = tk.Radiobutton(frame_1, text='MUTV', variable=self.v, value=22, width=10, height=3)tb23 = tk.Radiobutton(frame_1, text='MAO', variable=self.v, value=23, width=10, height=3)tb24 = tk.Radiobutton(frame_1, text='无名', variable=self.v, value=24, width=10, height=3)tb25 = tk.Radiobutton(frame_1, text='盘古', variable=self.v, value=25, width=10, height=3)tb26 = tk.Radiobutton(frame_1, text='盖世', variable=self.v, value=26, width=10, height=3)tb27 = tk.Radiobutton(frame_1, text='0523', variable=self.v, value=27, width=10, height=3)tb28 = tk.Radiobutton(frame_1, text='17云', variable=self.v, value=28, width=10, height=3)tb29 = tk.Radiobutton(frame_1, text='4K', variable=self.v, value=29, width=10, height=3)tb30 = tk.Radiobutton(frame_1, text='8090', variable=self.v, value=30, width=10, height=3)tb31 = tk.Radiobutton(frame_1, text='听乐', variable=self.v, value=31, width=10, height=3)tb32 = tk.Radiobutton(frame_1, text='180', variable=self.v, value=32, width=10, height=3)label1 = tk.Label(frame_2, text="请输入视频链接:")entry = tk.Entry(frame_2, textvariable=self.url, highlightcolor='Fuchsia', highlightthickness=1, width=35)label2 = tk.Label(frame_2, text=" ")play = tk.Button(frame_2, text="播放", font=('楷体', 12), fg='Purple', width=2, height=1, command=self.video_play)label3 = tk.Label(frame_2, text=" ")label_explain = tk.Label(frame_3, fg='red', font=('楷体', 18), text='\n注意:\nCSDN博主Vec_Kun版权所有\n此工具仅用于交流学习\n请勿用于任何商业用途!')label_warning = tk.Label(frame_3, fg='black', font=('楷体', 16), text='\n\n')# 控件布局frame_1.pack()frame_2.pack()frame_3.pack()group.grid(row=0, column=0)tb1.grid(row=0, column=1)tb2.grid(row=0, column=2)tb3.grid(row=0, column=3)tb4.grid(row=0, column=4)tb5.grid(row=1, column=1)tb6.grid(row=1, column=2)tb7.grid(row=1, column=3)tb8.grid(row=1, column=4)tb9.grid(row=2, column=1)tb10.grid(row=2, column=2)tb11.grid(row=2, column=3)tb12.grid(row=2, column=4)tb13.grid(row=3, column=1)tb14.grid(row=3, column=2)tb15.grid(row=3, column=3)tb16.grid(row=3, column=4)tb17.grid(row=4, column=1)tb18.grid(row=4, column=2)tb19.grid(row=4, column=3)tb20.grid(row=4, column=4)tb21.grid(row=5, column=1)tb22.grid(row=5, column=2)tb23.grid(row=5, column=3)tb24.grid(row=5, column=4)tb25.grid(row=6, column=1)tb26.grid(row=6, column=2)tb27.grid(row=6, column=3)tb28.grid(row=6, column=4)tb29.grid(row=7, column=1)tb30.grid(row=7, column=2)tb31.grid(row=7, column=3)tb32.grid(row=7, column=4)label1.grid(row=0, column=0)entry.grid(row=0, column=1)label2.grid(row=0, column=2)play.grid(row=0, column=3, ipadx=10, ipady=10)label3.grid(row=0, column=4)label_explain.grid(row=1, column=0)label_warning.grid(row=2, column=0)"""函数说明:视频播放"""def video_play(self):# 视频解析网站地址# port_1 = 'https://jx.618g.com/?url='port_1 = 'https://im1907.top/?jx='port_2 = 'https://jx.jsonplayer.com/player/?url='port_3 = 'https://jx.aidouer.net/?url='port_4 = 'https://jx.xmflv.com/?url='port_5 = 'https://okjx.cc/?url='port_6 = 'https://www.nxflv.com/?url='port_7 = 'https://www.yemu.xyz/?url='port_8 = 'https://jx.m3u8.tv/jiexi/?url='port_9 = 'https://jx.blbo.cc:4433/?url='port_10 = 'https://api.qianqi.net/vip/?url='port_11 = 'https://jx.nnxv.cn/tv.php?url='port_12 = 'https://bd.jx.cn/?url='port_13 = 'https://123.1dior.cn/?url='port_14 = 'https://www.ckplayer.vip/jiexi/?url='port_15 = 'https://www.ckmov.vip/api.php?url='port_16 = 'https://jx.playerjy.com/?url='port_17 = 'https://ckmov.ccyjjd.com/ckmov/?url='port_18 = 'https://www.ckmov.com/?url='port_19 = 'https://www.h8jx.com/jiexi.php?url='port_20 = 'https://svip.bljiex.cc/?v='port_21 = 'https://api.jiexi.la/?url='port_22 = 'https://jiexi.janan.net/jiexi/?url='port_23 = 'https://www.mtosz.com/erzi.php?url='port_24 = 'https://www.administratorw.com/video.php?url='port_25 = 'https://www.pangujiexi.cc/jiexi.php?url='port_26 = 'https://www.gai4.com/?url='port_27 = 'https://go.yh0523.cn/y.cy?url='port_28 = 'https://www.1717yun.com/jx/ty.php?url='port_29 = 'https://jx.4kdv.com/?url='port_30 = 'https://www.8090g.cn/?url='port_31 = 'https://jx.dj6u.com/?url='port_32 = 'https://jx.000180.top/jx/?url='# 正则表达是判定是否为合法链接if re.match(r'^https?:/{2}\w.+$', self.url.get()):port_num = self.v.get()port_url_referer = locals()[f'port_{port_num}']# 视频链接获取ip = self.url.get()# 视频链接加密ip = parse.quote_plus(ip)# 浏览器打开webbrowser.open(port_url_referer + self.url.get())else:msgbox.showerror(title='错误', message='视频链接地址无效,请重新输入!')"""函数说明:tkinter窗口居中"""def center(self):ws = self.root.winfo_screenwidth()hs = self.root.winfo_screenheight()x = int((ws / 2) - (self.w / 2))y = int((hs / 2) - (self.h / 2))self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h, x, y))"""函数说明:loop等待用户事件"""def loop(self):# 禁止修改窗口大小self.root.resizable(False, False)# 窗口居中self.center()self.root.mainloop()if __name__ == '__main__':app = APP()  # 实例化APP对象app.loop()  # loop等待用户事件

运行效果


总结

本节实现了输入任意视频链接,在用户UI窗口选择解析接口,点击解析按钮自动跳转到系统默认浏览器进行播放的功能,切记不要用于商业活动!本教程仅用于个人学习交流用途!

相关文章:

39. 实战:基于api接口实现视频解析播放(32接口,窗口化操作,可导出exe,附源码)

目录 前言 目的 思路 代码实现 需要导入的模块 1. 导入解析网站列表,实现解析过程 2. 设计UI界面 3. 设置窗口居中和循环执行 4. 注意事项 完整源码 运行效果 总结 前言 本节将类似34. 实战:基于某api实现歌曲检索与下载(附完整…...

基于灵动 MM32 微控制器的便携式血氧仪方案

基于灵动 MM32 微控制器的便携式血氧仪: - Cortex-M0() 最高主频 72MHz 可实现血氧饱和度信号采集、算法操作和 LED 显示操作 - 高性能的 1Msps 12b ADC 能对光电采样结果进行大数据量的暂存和处理,提高采样的效率并有助于对结果做高精度的计算 - 100…...

2022秋-2023-中科大-数字图像分析-期末考试试卷回忆版

今天晚上刚考完,心累,在这里继续授人以渔(仅供参考,切勿对着复习不看ppt,ppt一定要过两遍)。 注意:往年的经验贴,到此为止,全部作废,一个没考。千万不要只对着复习,SIFT没考&#x…...

【matplotlib】条形图及垂线显示小技巧 |一些有用参考帖子收集

最近在画图。一方面看论文看思路,一方面用数据跑图出论文雏形。 有些帖子写得很好,不记录的话下次还想看就只能随缘了。 帖子 博客:nxf_rabbit75 matplotlib技巧—9.共享坐标轴、创建多个subplot、调整横坐标、放置文本框、latext文字、平移…...

Go的bytes.Buffer

Go的bytes.Buffer 文章目录Go的bytes.Buffer一、bytes.Buffer 的基础知识二、bytes.Buffer类型的值,已读计数的作用三、bytes.Buffer的扩容策略四、bytes.Buffer的哪些方法会造成内容的泄露一、bytes.Buffer 的基础知识 与strings.Builder一样,bytes.Bu…...

k8s学习之路 | Day19 k8s 工作负载 Deployment(上)

文章目录1. Deployment 基础1.1 什么是 Deployment1.2 简单体验 Deployment1.3 Deployment 信息描述1.4 如何编写 Deployment2. Deployment 简单特性2.1 赋予 Pod 故障转移和自愈能力2.2 更新 Deployment2.3 回滚 Deployment2.4 暂停、恢复 Deployment 的上线过程2.5 Deploymen…...

php宝塔搭建部署实战六零导航页LyLme_Spage源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的六零导航页LyLme_Spage源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP7.0 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码,宝塔添…...

SpringBoot (三) 整合数据库访问 jdbcTemplate、MyBatis

哈喽,大家好,我是有勇气的牛排(全网同名)🐮🐮🐮 有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。 Spring Data了解下&#xff1…...

机器学习、数据挖掘和统计模式识别学习(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 机器学习是让计算机在没有明确编程的情况下采取行动的科学。在过去的十年中,机器学习为我们提供了自动驾驶汽车&…...

Java修饰符-ai生成

Java修饰符 Java的修饰符有哪几种 Java的修饰符有以下几种: 访问修饰符:public、protected、private和默认访问修饰符。 非访问修饰符:final、abstract、static、synchronized、volatile、transient、native、strictfp和Deprecated。 什么…...

kafka部署安装

kafka介绍 kafka是一个分布式的消息队列系统,适合离线和在线消费,扩展性好 kafka部署 安装包获取: 链接:https://pan.baidu.com/s/1y32yvZU-CAHBtbEfnHkJzQ 提取码:y9vb –来自百度网盘超级会员V5的分享 安装目录为…...

使用asio实现一个单线程异步的socket服务程序

文章目录前言代码前言 之前,我使用epoll实现过一个C的后端服务程序,见:从头开始实现一个留言板-README_c做一个留言板_大1234草的博客-CSDN博客 但是它不够简便,无法轻松的合并到其他代码中。并且,由于程序中使用epo…...

大型JAVA版云HIS医院管理系统源码 Saas应用+前后端分离+B/S架构

SaaS运维平台多集团多医院入驻强大的电子病历完整文档 有源码,有演示! 云HIS系统技术栈: 1、前端框架:AngularNginx 2、后台框架:JavaSpring,SpringBoot,SpringMVC,SpringSecurity&…...

1 网关介绍

网关介绍 在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。这样的话会产生很多问题,例如&a…...

Java中Scanner用法

Java中Scanner用法 Scanner可以实现程序和人的交互,用户可以利用键盘进行输入。 不同类型的输入: String ssc.next(); //接受字符串数据 System.out.println(s);int s1 sc.nextInt();//接受整型数据 System.out.println(s1);double s2 sc.nextDouble…...

malloc实现原理探究

2021年末面试蔚来汽车,面试官考察了malloc/free的实现机制。当时看过相关的文章,有一点印象,稍微说了一点东西,不过自己感到不满意。今天尝试研究malloc的实现细节,看了几篇博文,发现众说纷纭,且…...

Spring——整合junit4、junit5使用方法

spring需要创建spring容器&#xff0c;每次创建容器单元测试是测试单元代码junit4依赖<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-i…...

计算机网络的一些思考(待完善)

文章目录概念1. 缓存2. 备份&#xff08;副本&#xff09;3. 硬件和软件&#xff1a;4.端口5. 二进制协议vs文本协议6. 虚拟7.分布式8.广播域和冲突域的区别9本地地址协议1.CSMA/CD协议2.IP协议3.路由算法协议&#xff08;RIP&#xff0c;OSPF&#xff0c;BGP&#xff09;4.ARP…...

【第一章】谭浩强C语言课后习题答案

1.什么是程序?什么是程序设计? 程序:就是一组能识别和执行的指令,每一条指令使计算机执行特定的操作 程序设计:是指从确定任务到得到结果、写出文档的全过程 2.为什么需要计算机语言?高级语言有哪些特点? 为什么需要计算机语言:计算机语言解决了人和计算机交流是的…...

最新版本vue3+vite重构尚品汇(解决接口问题)第21-50集

第21集&#xff0c;第22集&#xff1a;照敲就行&#xff0c;引入概念。 第23集&#xff1a;防抖概念&#xff1a;前面所有的触发被取消&#xff0c;最后一次执行在规定的时间之后才会触发&#xff0c;只会执行一次。Lodash插件里面封装了函数的防抖和节流的业务。用到lodash确实…...

【超级猜图案例上半部分的实现 Objective-C语言】

一、超级猜图这么一个案例: 1.实现之后的效果是这样的: 1)中间有一个图片,点一下,能放大,背景变半透明的黑色: 2)再点一下图片,或者点周围黑色的阴影,图片回归原状, 3)右边有一个“大图”按钮,点一下,实现跟点图片一样的效果, 4)左边有一个“提示”按钮,点…...

刷题笔记4 | 24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

24. 两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 输入&#xff1a;head [1,2,3,4] 输出&#xff1a…...

15、正则表达式

目录 一、元字符 二、限定修饰符 一、元字符 正则表达式通常被用于判断语句中&#xff0c;用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串&#xff0c;这些特殊字符称为正则表达式的元字符。例如&#xff0c;“\\d”表示数字0~9中的任何…...

javaWeb核心01-HTTPTomcatServlet

文章目录HTTP&Tomcat&Servlet1&#xff0c;Web概述1.1 Web和JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器1.3 Web核心课程安排2, HTTP2.1 简介2.2 请求数据格式2.2.1 格式介绍2.2.2 实例演示2.…...

深圳大学计软《面向对象的程序设计》实验16 期末复习

A. 一、会员积分&#xff08;期末模拟&#xff09; 题目描述 某电商网站的会员分为&#xff1a;普通、贵宾两个级别 普通会员类Member&#xff0c;包含编号、姓名、积分三个属性&#xff0c;编号和积分是整数&#xff0c;姓名是字符串 操作包括构造、打印、积分累加、积分兑…...

Linux基础命令(一)

文章目录1、时间命令&#xff1a;date2、日历命令&#xff1a;cal3、计算器程序&#xff1a;bc4、基础组合键5、正确的关机指令使用5.1 将数据同步写入硬盘中的指令&#xff1a; sync5.2 惯用的关机指令&#xff1a; shutdown5.3 重新开机&#xff0c;关机&#xff1a; reboot,…...

RocketMQ Broker消息处理流程剩余源码解析

&#x1f34a; Java学习&#xff1a;Java从入门到精通总结 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2023年3月4日 &#x1…...

JQuery入门基础

目录 1.初识 下载 使用 JQuery&#xff08;核心&#xff09;对象 2.选择器 基础选择器 层次选择器 后代选择器 子代选择器 兄弟选择器 相邻选择器 3.JQuery DOM操作 创建元素 插入元素 删除元素 遍历元素 属性操作 获取属性 设置属性 删除属性 样式操作 …...

kafka 构建双向SSL认证

kafka 安装 以下内容均已完成测试&#xff0c;按照教程搭建你会得到一个双向ssl认证的kafka broker&#xff0c;并能通过ip以及域名访问&#xff0c;笔者能力有限如果文章内容存在问题烦请各位指出。 搭建单机Kafka 需求 centos 7kafka_2.12-2.6.0jdk8&#xff08;文档中统…...

推荐一个.Net Core开发的Websocket群聊、私聊的开源项目

更多开源项目请查看&#xff1a;一个专注推荐.Net开源项目的榜单 今天给大家推荐一个使用Websocket协议实现的、高性能即时聊天组件&#xff0c;可用于群聊、好友聊天、游戏直播等场景。 项目简介 这是一个基于.Net Core开发的、简单、高性能的通讯组件&#xff0c;支持点对点…...