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了解下࿱…...

机器学习、数据挖掘和统计模式识别学习(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容器,每次创建容器单元测试是测试单元代码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. 备份(副本)3. 硬件和软件:4.端口5. 二进制协议vs文本协议6. 虚拟7.分布式8.广播域和冲突域的区别9本地地址协议1.CSMA/CD协议2.IP协议3.路由算法协议(RIP,OSPF,BGP)4.ARP…...

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

最新版本vue3+vite重构尚品汇(解决接口问题)第21-50集
第21集,第22集:照敲就行,引入概念。 第23集:防抖概念:前面所有的触发被取消,最后一次执行在规定的时间之后才会触发,只会执行一次。Lodash插件里面封装了函数的防抖和节流的业务。用到lodash确实…...

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

刷题笔记4 | 24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 输入:head [1,2,3,4] 输出:…...

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

javaWeb核心01-HTTPTomcatServlet
文章目录HTTP&Tomcat&Servlet1,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. 一、会员积分(期末模拟) 题目描述 某电商网站的会员分为:普通、贵宾两个级别 普通会员类Member,包含编号、姓名、积分三个属性,编号和积分是整数,姓名是字符串 操作包括构造、打印、积分累加、积分兑…...

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

RocketMQ Broker消息处理流程剩余源码解析
🍊 Java学习:Java从入门到精通总结 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年3月4日 …...

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

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

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