python-模块-网络编程-多任务
一、模块
1-1 Python 自带模块
Json模块
处理json数据
'{"key":"value"}'
json不是字典 本质是一个有引号的字符串数据
json注意点 {} 中的数据是字符串引号必须是双引号
使用json模块可以实现将json转为字典,使用字典的方法操作数据 。 或者将字典转为json
json数据可以实现不同程序之间传递数据
比如使用json将python程序的数据传递java程序
-
json.dumps()
-
json.loads()
# json模块使用 # 导入模块 import json # 直接导入模块 # 1-打开读取jiso文件 with open('D:/Python大数据就业/4-Python基础/day07-模块-网络-多任务/4-资料/order_detial.json','r',encoding='utf-8') as f:data_lines = f.readlines() print(data_lines) # 2- 对读取的文件数据进行处理 # 需要将每行的json数据转为字典处理 for line in data_lines:# 对每行数据去除\nline_str = line.replace('\n','')print(line_str)# 将json字符串转为字典 loads 将字典数据转为json字符串 json_str = json.dumps(字典数据)# 如果直接导入模块 需要使用 模块名.函数() 模块名.变量line_dict = json.loads(line_str)print(type(line_dict))# 使用字典操作方法处理数据total_price= line_dict['total_price']print(total_price)
Datetime模块
处理日期时间数据的
# 日期时间模块 from datetime import datetime,timedelta # 获取当前日期时间 dt_now = datetime.now() print(dt_now) # 获取时间戳 timestamp需要将日期传递到方法中 unixtime_now = datetime.timestamp(dt_now) print(unixtime_now) # 将时间戳数据转为datetime时间 dt = datetime.fromtimestamp(1617021920) print(dt) # 日期的加减 # 获取加减的时间单位 t = timedelta(days=7) dt_add = dt_now + t print(dt_add) dt_sub = dt_now - t print(dt_sub) # 字符串时间 转为datetime类型的时间 dt_str = '2017-10-20 15:20:22' dt2 = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S') print(type(dt2)) # 将datetime类型数据转为 字符串 dt_now_str = dt_now.strftime('%Y/%m/%d %H:%M:%S') print(dt_now_str)
Decimal模块
处理小数数据
类型是双精度浮点 保证小数计算时精度的准确性,一般在进行价格金额计算时使用
# Decimal模块使用 # 导入模块中的所有函数,类,变量 from decimal import * # 将小数数据转为Decimal d = Decimal(3.1415926) print(d) # 指定保留小数 会进行四舍五入 d2 = d.quantize(Decimal('0.000')) print(d2) d3 = Decimal(5.123).quantize(Decimal('0.000')) d4 = d2+d3 print(d4)
random模块
随机产生数据
# random使用 # 将randint函数通过as命名了一个别称 # randint 可以根据指定范围随机产生一个整数数据 from random import randint as rt num = rt(0,3) print(num) name = ['张三','李四','王五','赵六','aa','bb'] # 随机产生下标 index = rt(0,len(name)-1) print(name[index]) # 验证码 date_str = '123456789asdfghjklqwertyuiopzxcvbnm' index1 = rt(0,len(date_str)-1) index2 = rt(0,len(date_str)-1) index3 = rt(0,len(date_str)-1) index4 = rt(0,len(date_str)-1) code = date_str[index1] + date_str[index2] + date_str[index3] +date_str[index4] print(code)
1-2 三方模块
第三方开发的代码文件,上传到python的官方模块库中,方便其他开发人员使用
把代码开源个其他程序员
使用三方模块需要进行下载
pip下载安装
pip是python自带的包模块管理工具
清华大学源:Simple Index
阿里云源:Simple Index
中国科技大学源:Simple Index
豆瓣源:http://pypi.douban.com/simple/
pip install 模块名==版本 -i 安装源
安装爬虫模块
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
查看是否安装成功
pip list
whl文件安
1-从官网下载whl文件 PyPI · The Python Package Index
![]()
2-在进行pip安装
pip install whl文件位置
-
安装pymysql模块
1-3 requests模块使用(拓展)
可以数据采集,测试开发
网络通讯介绍
网络通讯就是程序之间进行通讯,相互传递数据内容
网络通讯三要素
(1)IP地址:网络虚拟环境下的唯一标识,类似于人的身份证号,通过IP可以找到计算机;
(2)端口:表示计算机中某软件的地址信息,通过端口可以找到计算机中的软件;
(3)协议:协议就是通信规则,程序之间必须按照规则传递信息,否则双方无法识别彼此信息
网络通讯模型
C/S模型
C:client
S:server
B/S模型
B:brower
S:server
TCP协议
规定了程序之间的
通讯方式
TCP是双向通讯,类似手机通话 双方可以进行数据传递操作
UDP是单向通讯,类似广播 只能有一个人传递数据,其他人等待接收数据
安全数据传输方式是TCP
1-先连接对方程序,连接成功后会返回确认信息。 确认网络是否通畅
2-向对方程序发送数据,对方接受数后,会返回确认信息
3-数据发送完成,会在发送一个关闭连接的消息,对方接受到消息后就知道发送完成
HTTP协议
规定了程序之间的
通讯数据格式
web开发中使用浏览器作为客户端,在进行数据传递时,使用http协议,规定了数据的格式
请求的数据格式 也叫作请求报文
请求行 GET / HTTP/1.1
GET 请求方式 表示获取数据
POST 请求方式 上传数据
请求头
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 代表设备信息
头部中没有user-agent会认为是一个爬虫程序
请求体
携带请求数据
响应的数据格式 叫作响应报文 返回的结果不符合格式,就无法被浏览器解析获取
响应行 HTTP/1.1 200 ok
HTTP/1.1 http协议斑斑
200 响应状态 成功 400表示失败 404 找不到页面资源
ok 响应的信息
响应头部
Content-Type: text/html; charset=utf-8 指定返回的数据形式 html前端页面
Server:BWS/1.1 服务名称
响应体
返回处理后的数据给浏览器
json
html页面
图片
视频
音频
requests使用
数据采集的本质就是使用程序模拟浏览器的行为
Requests: HTTP for Humans™ — Requests 2.32.3 documentation
采集网址
返回json数据
天气接口网址:https://api.oioweb.cn/api/weather/weather?city_name=北京市
返回网页html数据
传智图书库: 图书列表 - 传智教育图书库
-
获取json数据
# 请求服务器获取json数据 import requests# 1-发送请求 # 定义请求网址 url = 'https://api.oioweb.cn/api/weather/weather?city_name=上海市' # 定义请求头部数据 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36' } # 发送get请求 respose = requests.get(url,headers=headers) # 定义变量接收响应的数据# 对返回的json数据进行解析,转为字典 response_dict = respose.json() print(response_dict)# 提取需要的字段数据 # 获取风向数据 wind_direction = response_dict['result']['wind_direction'] print(wind_direction)
-
获取html页面数据
xpath语法 XPath 教程
html是标签语言,使用xpath可以提取标签中的数据
额外需要模块
lxml模块 将页面数据转为标签元素数据element,就可以使用xpath语法
pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple
# 获取html页面中数据 import requests from lxml import etree# 1-发送请求 # 定义请求网址 url = 'https://resource.ityxb.com/booklist/find.html?cz-pc-dh' # 定义请求头部数据 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36' } # 发送get请求 respose = requests.get(url,headers=headers) # 定义变量接收响应的数据# 获取html的页面数据 html_text = respose.text# 将html页面转为element元素数据 html_element = etree.HTML(html_text)# 使用xpath语法开发获取数据 book_name1 = html_element.xpath('//*[@id="content-container"]/div[2]/div[3]/div/div[1]/div[1]/div[2]/p/a/text()')[0] book_name2 = html_element.xpath('//*[@id="content-container"]/div[2]/div[3]/div/div[1]/div[2]/div[2]/p/a/text()')[0] book_name3 = html_element.xpath('//*[@id="content-container"]/div[2]/div[3]/div/div[1]/div[3]/div[2]/p/a/text()')[0] book_name4 = html_element.xpath('//*[@id="content-container"]/div[2]/div[3]/div/div[1]/div[4]/div[2]/p/a/text()')[0] print(book_name1) print(book_name2) print(book_name3) print(book_name4)
1-4 pymysql模块使用(拓展)
PyMySQL documentation — PyMySQL 0.7.2 documentation
操作mysql数据库
# 使用pymysql模块操作数据 import pymysql# 创建mysql的连接 clinet = pymysql.connect(host='localhost',port=3306,user='root',password='root')# 生成游标操作数据库 cur = clinet.cursor()# 数据库操作 # 本质是写sql语句,写在字符串中 sql_str = '''create database if not exists pydata45 charset=utf8 ''' # 执行sql cur.execute(sql_str)# 创建表 sql_str2 = '''create table if not exists pydata45.user(id int,name varchar(20),age int,gender varchar(20)) ''' # 执行sql语句 cur.execute(sql_str2)# 写入数据 # 将列表数据写表中 sql_str3 = '''insert into pydata45.user values(%s,%s,%s,%s) ''' data_list= [1,'张三',20,'男'] # 执行写入语句 cur.execute(sql_str3,data_list) # 写入数据必须有commit clinet.commit()# 将字典数据写入进入 sql_str4 = '''insert into pydata45.user values(%(id)s,%(username)s,%(age)s,%(gender)s) ''' data_dict= {'id':2,'username':'李四','age':20,'gender':'男'} # 执行写入语句 cur.execute(sql_str4,data_dict) # 写入数据必须有commit clinet.commit()# 查询写入的数据 sql_str5 = '''select * from pydata45.user ''' # 执行sql语句 cur.execute(sql_str5) # 获取查询的数据 data = cur.fetchall() print(data)# 关闭连接 cur.close() clinet.close()
1-5 自定义模块
本质就是编写一个python文件
文件名要符合python的命名规范
-
定义一个模块文件
# 自定义的模块文件 # 封装业务代码 name = '张三'def add_func(a,b):data = a+breturn dataclass Student:def __int__(self,name,age):self.name = nameself.age = agedef func(self):print(self.name)print(self.age)
-
其他开发人员使用模块文件
# 开发人员自己的代码文件 from itcast import name,add_func,Studentprint(name) res = add_func(10,20) print(res)s = Student('张三',20) s.func()
二、网络编程
2-1 socket模块
在进行桌面应用或服务器应用开发是可以使用python的socket模块实现网络通讯
-
开发客户端
# 使用socket开发客户端 import socket # socket.AF_INET 支持ipV4的ip地址 # socket.SOCK_STREAM 使用TCP协议 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 指定连接服务器的ip地址和端口 s.connect(('127.0.0.1',8000))# 发送消息 # encode('utf-8') 将字符串数据转为bytes s.send('hello!!'.encode('utf-8'))# 接受返回的消息 # 接受的数据也是bytes 需要转为字符串 decode('utf-8') data = s.recv(1024) print(data.decode('utf-8'))# 关闭 s.close()
-
开发服务端
# 服务端开发 import socket# 创建socket对象 # socket.AF_INET 指定使用ipv4访问服务 # socket.SOCK_STREAM 使用tcp协议通讯 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 指定服务器绑定的ip地址和端口 server.bind(('192.168.174.53',8888))# 指定监听请求的数量 server.listen(100)# 需要再循环内持续处理客户端的请求 while True:# client_socket接受客户端发送的数据client_socket,client_ip=server.accept()print(client_ip)# 提取客户端的数据# 接受的数据是byte类型 需要转为字符串# decodedata = client_socket.recv(1024)print(data.decode('utf-8'))# 返回响应数据# 'hello python'.encode('utf-8') 字符串转为byteclient_socket.send('hello python'.encode('utf-8'))if data.decode('utf-8') == '1':breakclient_socket.close() server.close()
使用服务需要先启动服务器
2-2 fastAPI开发框架(拓展)
实际开发不需要自己编写socket部分,都是使用现成的框架进行开发网站
FastAPI
pip install fastapi -i https://pypi.tuna.tsinghua.edu.cn/simple pip install "uvicorn[standard]" -i https://pypi.tuna.tsinghua.edu.cn/simple
三 多任务
代码程序有多个进程取实现数据的处理
多任务本质将一个人的工作拆分多个人身上执行
3-1 进程和线程
进程是操作系统分配资源的最小单元
线程执行程序的的最小单元
线程依赖进程,可以获取进程的资源
一个程序执行 先要创建进程分配资源,然后使用线程执行任务
默认情况下一个进程中有一个线程
3-2 多任务介绍
多个进程或线程同时执行叫做并行执行
多个进程或线程交替执行叫做并发执行
并行行还是并发有cpu个数决定
5个进程 cpu核心是3个 计算时时并发执行 5个进程需要抢占cpu资源,谁抢到谁执行代码计算
5个进程 cpu核心10个 计算时时并行执行 不需要抢占资源,没个进程都已一个独立的cpu核心使用完成计算
3-3 多进程
多进程实现多任务就是创建多个进程执行任务函数
任务1 唱歌 任务2 跳舞 任务3 弹吉他
单个进程实现
程序执行顺序是从上往下依次执行,如果上一个函数没有执行完成,那么下一个函数,不会被执行
import time def sing():print('唱歌')time.sleep(4) # 停止4秒 模拟程序执行4秒print('唱歌2')def dance():print('跳舞')def tanzou():print('弹吉他')sing() dance() tanzou()
使用多进程实现多任务
# 多进程实现多任务 import time # 使用模块方法创建多个进程 from multiprocessing import Processdef sing():print('唱歌')time.sleep(4) # 停止4秒 模拟程序执行4秒print('唱歌2')def dance():print('跳舞')def tanzou():print('弹吉他')if __name__ == '__main__':# 创建进程# 创建不同的进程执行不同的任务p1 = Process(target=sing)p2 = Process(target=dance)p3 = Process(target=tanzou)# 执行进程p1.start()p2.start()p3.start()
I-任务中的参数传递
# 多进程实现多任务 import time # 使用模块方法创建多个进程 from multiprocessing import Processdef sing(username,singname):print(f'唱{username}的{singname}歌')def dance(name):print(f'跳{name}舞')def tanzou():print('弹吉他')if __name__ == '__main__':# 创建进程# 创建不同的进程执行不同的任务# 传递参数的两种方式p1 = Process(target=sing,kwargs={'username':'周杰伦','singname':'稻香'})p2 = Process(target=dance,args=['霹雳'])p3 = Process(target=tanzou)# 执行进程p1.start()p2.start()p3.start()
II-获取进程编号
# 多进程实现多任务 import time # 使用模块方法创建多个进程 from multiprocessing import Process import osdef sing(username,singname):print(f'子进程1的编号{os.getpid()}')print(f'子进程1的父进程编号{os.getppid()}')print(f'唱{username}的{singname}歌')def dance(name):print(f'子进程2的编号{os.getpid()}')print(f'子进程2的父进程编号{os.getppid()}')print(f'跳{name}舞')def tanzou():print(f'子进程3的编号{os.getpid()}')print(f'子进程3的父进程编号{os.getppid()}')print('弹吉他')if __name__ == '__main__':# 创建进程# 创建不同的进程执行不同的任务# 传递参数的两种方式p1 = Process(target=sing,kwargs={'username':'周杰伦','singname':'稻香'})p2 = Process(target=dance,args=['霹雳'])p3 = Process(target=tanzou)# 执行进程p1.start()p2.start()p3.start()print('主进程')# 获取当前进程的pid编号print(os.getpid())
主进程默认情况下是等待子进程结束后在结束整个进程的
也可以通过exit()方法强制退出主进程,所有进程都结束
III-保证进程的执行顺序
会影响执行效率
如果进程之间没有对应的数据传递关系,可以不用保证顺序,多个进程可以同时执行
如果进程之间有数据传递需求,就要保证执行顺序,通过join操作,但是该操作会影响执行效率
V-进程间的数据不共享
每个进程的资源时独立。数据就不共享
3-4 多线程
线程依赖进程,可以创建一个进程,在一个进程下创建多个线程执行任务
# 多线程实现多任务 from threading import Threadimport time import osdef sing():print(f'线程1的进程编号{os.getpid()}')print('唱歌')time.sleep(4) # 停止4秒 模拟程序执行4秒print('唱歌2')def dance():print(f'线程2的进程编号{os.getpid()}')print('跳舞')def tanzou():print(f'线程3的进程编号{os.getpid()}')print('弹吉他')if __name__ == '__main__':# 创建线程t1 = Thread(target=sing)t2 = Thread(target=dance)t3 = Thread(target=tanzou)# 执行线程任务t1.start()t2.start()t3.start()print(f'主进程编号{os.getpid()}')
线程任务传参
from threading import Thread def sing(username,singname):print(f'唱{username}的{singname}歌')def dance(name):print(f'跳{name}舞')def tanzou():print('弹吉他')if __name__ == '__main__':# 创建线程传递参数t1 = Thread(target=sing,kwargs={'username':'凤凰传奇','singname':'月亮之上'})t2 = Thread(target=dance,args=['圆桌舞'])t3 = Thread(target=tanzou)t1.start()t2.start()t3.start()
线程执行任务顺序保证
线程的执行顺序也是无序的,如果需要保证线程执行顺讯也是通过join保证
from threading import Thread import os def sing(username,singname):print(f'线程1的编号{os.getpid()}')print(f'唱{username}的{singname}歌')def dance(name):print(f'线程2的编号{os.getpid()}')print(f'跳{name}舞')def tanzou():print(f'线程3的编号{os.getpid()}')print('弹吉他')if __name__ == '__main__':# 创建线程传递参数t1 = Thread(target=sing,kwargs={'username':'凤凰传奇','singname':'月亮之上'})t2 = Thread(target=dance,args=['圆桌舞'])t3 = Thread(target=tanzou)t1.start()t1.join()t2.start()t2.join()t3.start()t3.join()
线程键共享数据
多个线程是在一个进程下运行,他们可以使用同一个进程下的资源
# 线程共享数据 from threading import Thread a = 0def func_add1():global afor i in range(1000):a += 1print(f'线程1的结果{a}')def func_add2():global afor i in range(2000):a += 1print(f'线程2的结果{a}')if __name__ == '__main__':t1= Thread(target=func_add1)t2= Thread(target=func_add2)t1.start()t2.start()# 主进程print(a)
当共享数据是,多个线程操作同一个数据,那么有可能会因为资源抢占造成计算错误
可以通过join保证数据能完整计算
# 线程共享数据 from threading import Thread a = 0def func_add1():global afor i in range(1000000):a += 1print(f'线程1的结果{a}')def func_add2():global afor i in range(1000000):a += 1print(f'线程2的结果{a}')if __name__ == '__main__':t1= Thread(target=func_add1)t2= Thread(target=func_add2)t1.start()# 可以通过join保证执行顺序等上一个线程执行完成后再执行其他的t1.join()t2.start()t2.join()# 主进程print(f'主进程的结果{a}')
3-5 多任务总结
进程和线程
进程是分配资源的最小单元 线程是执行任务的最小单元
实现多任务可以使用多进程或多线
为什么要使用多任务?
提升计算效率,当cpu资源充足是,可以实现多个任务同时执行。
后续spark底层实现采用的多线程方式,spark计算效率很高。spark已经封装实现,开发不需要写多线程。
实际开发为什么不用多进程实现多任务?更多是采用多线程?
创建进程的开销加大,创建时间长。每创建一个进程都需要额外有计算机分配资源,分配资源也会耗费时间
多进程间不共享数据
多线程会共享数据,如果发生资源抢占会造成数据计算错误
相关文章:

python-模块-网络编程-多任务
一、模块 1-1 Python 自带模块 Json模块 处理json数据 {"key":"value"} json不是字典 本质是一个有引号的字符串数据 json注意点 {} 中的数据是字符串引号必须是双引号 使用json模块可以实现将json转为字典,使用字典的方法操作数据 。 或者将…...

火狐浏览器网页翻译
火狐浏览器网页翻译 火狐浏览器的翻译功能并不支持中文,无法将中文翻译成其他语言,也不支持将其他语言翻译成中文。如果需要翻译英文网页,可以安装翻译插件来帮助解决这个问题。 安装翻译插件的步骤如下: 打开火狐浏览器ÿ…...

R语言数据分析案例以及要点和难点
该案例将涵盖数据读取、数据清洗、探索性数据分析(EDA)、数据可视化和简单的统计分析等多个方面。本案例将以一家零售商店的销售数据为例,使用R语言进行数据分析。 1. 数据准备 假设我们有一个名为sales_data.csv的CSV文件,其中包含了零售商店的销售数据。该文件包含以下列…...

【STL源码剖析-空间配置器】stack、queue简单实现
举头天外望 无我这般人 目录 stack 的概述 stack 的实现 queue 的概述 queue 的实现 契子✨ 我们之前学过了 vector、list 这些 STL 的(容器) 而我们今天将要学习空间配置器 -- stack、queue,那什么是空间配置器呢? 简单来讲就是…...

VR导航的实现原理、技术优势和应用场景
VR导航通过虚拟现实技术提供沉浸式环境,结合室内定位技术实现精准导航。目前,VR导航已在多个领域展现出其独特的价值和潜力,预示着智能导航系统的未来发展。 一、实现原理 VR导航技术依托于虚拟现实(VR)和室内定位系统。VR技术利用计算机模…...

淘宝镜像的https证书过期
错误原因: 淘宝镜像过期 早在 2021 年,淘宝就发文称,npm 淘宝镜像已经从 http://registry.npm.taobao.org 切换到了 http://registry.npmmirror.com。旧域名也将于 2022 年 5 月 31 日停止服务(直到 HTTPS 证书到期才真正不能用了…...

VSCODE 常用快捷键
快捷按键 注释 CTRL /CTRL KSHIFT ALT A取消注释 CTRL /CTRL KSHIFT ALT A搜索文件 Ctrl P移动到某一行 Ctrl g打开一个新窗口 Ctrl Shift N关闭窗口 Ctrl Shift W新建文件 Ctrl N文件间切换 Ctrl Tab全部文件搜索 Ctrl Shift F全屏 F11 打开文件出现中文乱码 文件右下角…...

医院该如何应对网络安全?
在线医生咨询受到很多人的关注,互联网医疗行业的未来发展空间巨大,但随着医院信息化建设高速发展 医院积累了大量的患者基本信息、化验结果、电子处方、生产数据和运营信息等数据 这些数据涉及公民隐私、医院运作和发展等多因素,医疗行业办…...

【qt】多窗口开发
多窗口开发 一.应用场景二.嵌入的窗口1.设计Widget窗口2.创建窗口3.添加窗口4.总代码 三.独立的窗口1.创建窗口2.显示窗口 四.总结 一.应用场景 多窗口,顾名思义,有多个窗口可以供我们进行操作! 截个小图,你应该就知道了 OK,话不多说,直接开干,先来设计我们的主窗口 需要蔬菜…...

iOS Hittest 机制和实际应用
Hittest 机制原理 hitTest的原理就是,当我们点击的时候,会触发 window的 hittest方法,在该方法中会首先使用point inside方法判断 点击的地方是否在window范围内,如果在的话,就倒序遍历姿子视图,然后将poi…...

C# 工厂模式学习
工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,而不是通过具体类来实例化对象。工厂模式可以将对象的创建过程封装起来,使代码更具有灵活性和可扩展性。 工厂模式有几种常见的实现方式&…...

AI生成微信职业头像
加油,新时代打工人! 真别说,还挺好看的 https://chatglm.cn/main/alltoolsdetail...

遥感图像的深度学习的任务类型
在遥感图像的深度学习任务中,利用深度学习技术处理和分析遥感图像已经成为一个重要的研究方向。遥感图像来自卫星、无人机等设备,包含了丰富的地球表面信息。以下是遥感图像深度学习中的主要任务类型: 1. 图像分类(Image Classif…...

162.二叉树:填充每个节点的下一个右侧节点指针(力扣)
代码解决 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NULL), next(NULL) {}Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}Node(int _val, Node* _left, Node* _…...

NLP(20)--知识图谱+实体抽取
前言 仅记录学习过程,有问题欢迎讨论 基于LLM的垂直领域问答方案: 特点:不是通用语料;准确度要求高,召回率可以低(转人工);拓展性和可控性(改变特定内容的回答…...

【mysql数据库】mycat中间件
MyCat 简介 Mycat 是数据库 中间件 。 1、 数据库中间件 中间件 是一类连接软件组件和应用的计算机软件, 以便于软件各部件之间的沟通 。 例子 Tomcat web 中间件 。 数据库 中间件 连接 java 应用程序和数据库 2、 为什么要用 Mycat ① Java 与数据库紧耦合 …...

满帮集团 Eureka 和 ZooKeeper 的上云实践
作者:胡安祥 满帮集团,作为“互联网物流”的平台型企业,一端承接托运人运货需求,另一端对接货车司机,提升货运物流效率。2021 年美股上市,成为数字货运平台上市第一股。根据公司年报,2021 年&a…...

ubuntu中彻底删除mysql (配置文件删除可选)
ubuntu中彻底删除mysql (配置文件删除可选) 对于此类即搜即用的分享文章,也不过多赘述,直接依次按照下面的操作执行即可: 一、删除 mysql 数据文件 sudo rm /var/lib/mysql/ -R二、删除 mysql 配置文件 sudo rm /etc/mysql/ -R三、查看 m…...

根据模板和git commit自动生成日·周·月·季报
GitHub - qiaotaizi/dailyreport: 日报生成器 GitHub - yurencloud/daily: 程序员专用的日报、周报、月报、季报自动生成器! config.json: { "Author": "gitname", "Exclude": ["update:", "add:", "…...

matlab GUI界面设计
【实验内容】 用MATLAB的GUI程序设计一个具备图像边缘检测功能的用户界面,该设计程序有以下基本功能: (1)图像的读取和保存。 (2)设计图形用户界面,让用户对图像进行彩色图像到灰度图像的转换…...

MyBatis 面试题
一、什么是 Mybatis? 1、Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时 只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性 能,灵活度高。 …...

C#根据数据量自动排版标签的样例
这是一个C#根据数据量自动排版标签的样例 using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using HslCommuni…...

【网络安全】Web安全基础 - 第一节:使用软件及环境介绍
VMware VMware,是全球云基础架构和移动商务解决方案的佼佼者。 VMware可是一个总部位于美国加州帕洛阿尔托的计算机虚拟化软件研发与销售企业呢。简单来说,它就是通过提供虚拟化解决方案,让企业在数据中心改造和公有云整合业务上更加得心应…...

Mac下载docker
先安装homebrew Mac下载Homebrew-CSDN博客 然后输入以下命令安装docker brew install --cask --appdir/Applications docker 期间需要输入密码。输入完等待即可...

k8s_设置dns
配置k8s dns 在 Kubernetes 集群中,CoreDNS 是默认的 DNS 服务器,它负责处理集群内所有的 DNS 请求。 kubectl edit cm coredns -n kube-system (此命令修改coredns 配置) kubectl describe cm coredns -n kube-system(此命令查看coredns 配…...

翻译《The Old New Thing》- What a drag: Dragging a virtual file (HGLOBAL edition)
What a drag: Dragging a virtual file (HGLOBAL edition) - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080318-00/?p23083 Raymond Chen 2008年03月18日 拖拽虚拟文件(HGLOBAL 版本) 现在我们已经对简单的数据…...

SA316系列音频传输模块-传输距离升级音质不打折
SA316是思为无线研发的一款远距离音频传输模块,音频采样率为48K,传输距离可达200M。为了满足更多用户需求,思为无线在SA316基础上进一步增加传输距离推出SA316F30。相比SA316性能,同样其采用48K采样,-96dBm灵敏度&…...

【机器学习】智能选择的艺术:决策树在机器学习中的深度剖析
在机器学习的分类和回归问题中,决策树是一种广泛使用的算法。决策树模型因其直观性、易于理解和实现,以及处理分类和数值特征的能力而备受欢迎。本文将解释决策树算法的概念、原理、应用、优化方法以及未来的发展方向。 🚀时空传送门 &#x…...

电脑缺少运行库,无法启动程序
在我们使用一些软件的时候,由于电脑缺少一些运行库,导致无法启动应用软件,此时需要我们安装缺少的运行库。 比如当电脑提示: Cannot load library Qt5Xlsx.dll 我们就需要下载C得运行库,以满足软件运行需要。 下载链…...

【计算机软考_初级篇】每日十题2
各位老师大家好,软考对于日常的知识储备和企业中的考试,或者说在校大学生来说,那用处是非常大的!!那么下面我们进入正题,软考呢是分两种语言,java和C,对于其他语言目前还没ÿ…...