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

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自带的包模块管理工具

  1. 清华大学源:Simple Index

  2. 阿里云源:Simple Index

  3. 中国科技大学源:Simple Index

  4. 豆瓣源: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转为字典,使用字典的方法操作数据 。 或者将…...

火狐浏览器网页翻译

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

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的垂直领域问答方案: 特点:不是通用语料;准确度要求高,召回率可以低(转人工);拓展性和可控性(改变特定内容的回答&#xf…...

【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,对于其他语言目前还没&#xff…...

HR人才测评,如何做营销人员岗位素质测评?

营销人员是企业中的重要角色,他们直接负责企业产品或服务的销售和推广,是企业中最直接影响销售业绩的人才之一。因此,营销人员的基本素质测评非常重要,能够有效评估营销人员的能力和潜力,为企业招聘和培养优秀的营销人…...

LabVIEW调用第三方硬件DLL常见问题及开发流程

在LabVIEW中调用第三方硬件DLL时,除了技术问题,还涉及开发流程、资料获取及与厂家的沟通协调。常见问题包括函数接口不兼容、数据类型转换错误、内存管理问题、线程安全性等。解决这些问题需确保函数声明准确、数据类型匹配、正确的内存管理及线程保护。…...

datax实现MySQL数据库迁移shell自动化脚本

datax实现MySQL数据库迁移 (1)生成python脚本 # codingutf-8 import json import getopt import os import sys import MySQLdb#MySQL相关配置,需根据实际情况作出修改 mysql_host "xxxx" mysql_port "3306" mysql_u…...

PostgreSQL的学习心得和知识总结(一百四十四)|深入理解PostgreSQL数据库之sendTuples的实现原理及功能修改

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…...

C++数据结构之:链List

摘要: it人员无论是使用哪种高级语言开发东东,想要更高效有层次的开发程序的话都躲不开三件套:数据结构,算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合&am…...

10.Redis之set类型

谈到一个术语,这个术语很可能有多种含义~~ 1.Set 1) 集合. 2)设置 (和 get 相对应) 集合就是把一些有关联的数据放到一起~~ 1.集合中的元素是无序的! 【此处说的无序和 前面list这里的有序 是对应的, 有序: 顺序很重要. 变换一下顺序, 就是不同的 list 了 无序: 顺序不…...

SpringBoot + mongodb 删除集合中的数据

MongoTemplate是Spring Data MongoDB提供的一个工具类,用于与MongoDB进行交互。它提供了许多方法来执行数据库操作,包括删除数据。 本文将介绍如何使用Java MongoTemplate删除集合内的数据,并提供相应的代码示例。 1. 引入MongoTemplate 首…...

【日常记录】【JS】前端预览图片的两种方式,Base64预览和blob预览

文章目录 1、前言1、FileReader3、window.URL.createObjectURL4、参考链接 1、前言 一般来说,都是 后端返回给前端图片的url,前端直接把这个值插入到 img 的src 里面即可还有一种情况是前端需要预览一下图片,比如:上传头像按钮&a…...

每日刷题——杭电2156.分数矩阵和杭电2024.C语言合法标识符

杭电2156.分数矩阵 原题链接:Problem - 2156 题目描述 Problem Description:我们定义如下矩阵: 1/1 1/2 1/3 1/2 1/1 1/2 1/3 1/2 1/1 矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。请求出这个矩阵的总和。 Input&#xf…...

爬虫学习--18.反爬斗争 selenium(3)

操作多窗口与页面切换 有时候窗口中有很多子tab页面。这时候肯定是需要进行切换的。selenium提供了一个叫做switch_to.window来进行切换,具体切换到哪个页面,可以从driver.window_handles中找到。 from selenium import webdriver from selenium.webdri…...

如何评价GPT-4o?

GPT-4o是OpenAI为聊天机器人ChatGPT发布的一款新语言模型,其名称中的“o”代表Omni,即全能的意思,凸显了其多功能的特性。这款模型在多个方面都有着显著的优势和进步。 首先,GPT-4o具有极强的多模态能力,它能够接受文本…...

算能BM1684+FPGA+AI+Camera推理边缘计算盒

搭载算丰智算芯片BM1684,是面向AI推理的边缘计算盒。高效适配市场上所有AI算法,实现视频结构化、人脸识别、行为分析、状态监测等应用,为智慧城市、智慧交通、智慧能源、智慧金融、智慧电信、智慧工业等领域进行AI赋能。 产品规格 处理器芯片…...

不同厂商SOC芯片在视频记录仪领域的应用

不同SoC公司芯片在不同产品上的应用信息: 大唐半导体 芯片型号: LC1860C (主控) LC1160 (PMU)产品应用: 红米2A (399元)大疆晓Spark技术规格: 28nm工艺,4个ARM Cortex-A7处理器,1.5GHz主频,2核MaliT628 GPU,1300万像…...

【Python入门学习笔记】Python3超详细的入门学习笔记,非常详细(适合小白入门学习)

Python3基础 想要获取pdf或markdown格式的笔记文件点击以下链接获取 Python入门学习笔记点击我获取 1,Python3 基础语法 1-1 编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指…...

通用代码生成器应用场景三,遗留项目反向工程

通用代码生成器应用场景三,遗留项目反向工程 如果您有一个遗留项目,要重新开发,或者源代码遗失,或者需要重新开发,但是希望复用原来的数据,并加快开发。 如果您的项目是通用代码生成器生成的,…...

轻量级动态可监控线程池 - DynamicTp

一、背景介绍 使用线程池ThreadPoolExecutor的过程中你是否有以下痛点呢? 代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适凭经验设置参数值,上线后发现需要调整,改代码重新发布服务&#xff0c…...

对于vsc中的vue命令 vue.json

打开vsc 然后在左下角有一个设置 2.点击用户代码片段 3.输入 vue.json回车 将此代码粘贴 &#xff08;我的不一定都适合&#xff09; { "vue2 template": { "prefix": "v2", "body": [ "<template>", " <…...

Spring Boot 官方不再支持 Spring Boot 的 2.x 版本!新idea如何创建java8项目

idea现在只能创建最少jdk17 使用 IDEA 内置的 Spring Initializr 创建 Spring Boot 新项目时&#xff0c;没有 Java 8 的选项了&#xff0c;只剩下了 > 17 的版本 是因为 Spring Boot 官方不再支持 Spring Boot 的 2.x 版本了&#xff0c;之后全力维护 3.x&#xff1b;而 …...

分享一个 ASP.NET Web Api 上传和读取 Excel的方案

前言 许多业务场景下需要处理和分析大量的数据&#xff0c;而 Excel 是业务人员常用的数据表格工具&#xff0c;因此&#xff0c;将 Excel 表格中内容上传并读取到网站&#xff0c;是一个很常见的功能&#xff0c;目前有许多成熟的开源或者商业的第三方库&#xff0c;比如 NPO…...

【算法实战】每日一题:将某个序列中内的每个元素都设为相同的值的最短次数(差分数组解法,附概念理解以及实战操作)

题目 将某个序列中内的每个元素都设为相同的值的最短次数 1.差分数组&#xff08;后面的减去前面的值存储的位置可以理解为中间&#xff09; 差分数组用于处理序列中的区间更新和查询问题。它存储序列中相邻元素之间的差值&#xff0c;而不是直接存储每个元素的值 怎么对某…...