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)设计图形用户界面,让用户对图像进行彩色图像到灰度图像的转换…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...