五、保存数据到Excel、sqlite(爬虫及数据可视化)

五、保存数据到Excel、sqlite(爬虫及数据可视化)

  • 1,保存数据到excel
    • 1.1 保存九九乘法表到excel
      • (1)代码testXwlt.py
      • (2)excel保存结果
    • 1.2 爬取电影详情并保存到excel
      • (1)代码spider.py
      • (3)excel保存结果
  • 2,保存数据到sqlite
    • 2.1 sqlite数据库
    • 2.2 创建表
    • 2.3 插入数据
    • 2.4 查询数据
    • 2.5 保存数据到数据库db文件
    • 2.6 完整代码spider.py

1,保存数据到excel

在这里插入图片描述

1.1 保存九九乘法表到excel

(1)代码testXwlt.py

#-*- codeing = utf-8 -*- 
#@Time : 2020/11/23 15:35
#@Author : 招财进宝
#@File : testXwlt.py
#@Software: PyCharmimport xlwt'''
workbook = xlwt.Workbook(encoding="utf-8")      #创建workbook对象(可以理解为一个文件)
worksheet = workbook.add_sheet('sheet1')        #创建工作表,可理解为文件中的表单
worksheet.write(0,0,"hello")                    #写入数据(写到的是内存中),第一个参数“行”,第二个“列”,第三个参数“内容”
workbook.save('student.xls')                    #保存数据表到硬盘
'''workbook = xlwt.Workbook(encoding="utf-8")      #创建workbook对象(可以理解为一个文件)
worksheet = workbook.add_sheet('sheet1')        #创建工作表,可理解为文件中的表单for i in range(0,9):for j in range(0,i+1):worksheet.write(i, j, "%d*%d=%d"%(i+1,j+1,(i+1)*(j+1)))workbook.save('student.xls')                    #保存数据表到硬盘

(2)excel保存结果

在这里插入图片描述

1.2 爬取电影详情并保存到excel

(1)代码spider.py

以下为完整代码

#-*- codeing = utf-8 -*- 
#@Time : 2020/11/20 11:08
#@Author : 招财进宝
#@File : spider.py
#@Software: PyCharmfrom bs4  import  BeautifulSoup       #网页解析,获取数据
import re           #正则表达式,进行文字匹配
import urllib.request,urllib.error          #指定url,获取网页数据
import xlwt         #进行Excel操作
import sqlite3       #进行SQLite操作def main():baseurl = "https://movie.douban.com/top250?start="#1.爬取网页datalist = getData(baseurl)savapath = "豆瓣电影TOP250.xls"#3.保存数据savaData(datalist,savapath)#askURL("https://movie.douban.com/top250?start=0")#影片详情链接的规则
findLink = re.compile(r'a href="(.*?)">')         #生成正则表达式对象,表示规则(字符串的模式),用来匹配所有的链接
#影片 图片的链接
findImgSrc = re.compile(r'<img.*src="(.*?)"',re.S)  #re.S忽略里面的换行符,让换行符包含在字符中
#影片片名
findTitle = re.compile(r'<span class="title">(.*)</span>')
#影片的评分
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
#找到评价人数
findJudge =  re.compile(r'<span>(\d*)人评价</span>')
#找到概况
findIng = re.compile(r'<span class="inq">(.*)</span>')
#找到影片的相关内容
findBd = re.compile(r'<p class="">(.*?)</p>',re.S)   #re.S忽略里面的换行符,让换行符包含在字符中#爬取网页
def getData(baseurl):datalist=[]for i in range(0,10):               #此处是爬取10页是数据,每页有25个电影数据((0,10)左闭,右开)url = baseurl + str(i*25)       #每一页的url后的起始位置=页数*25html = askURL(url)              #保存获取到的网页源码# 2.逐一解析数据(每个网页解析一下)soup = BeautifulSoup(html,"html.parser")     #使用html解析器html.parser解析html# find_all()查找符合要求的字符串,形成列表for item in soup.find_all('div',class_="item"):      #class是个类别需要加下划线,将及时div又是class_="item"的标签找到#print(item)    #测试:查看电影item全部信息#print(type(item))data=[]         #保存一部电影的所有信息item = str(item)    #str将item变成字符串#print(item)#print(type(item))#break              #用来测试第一条item#接下来可以使用正则表达式对字符串进行解析了#影片详情的链接link = re.findall(findLink,item)[0]         #re库用来通过正则表达式查找指定的字符串,获取两个相同的链接中的第一个#print(link)data.append(link)                           #添加链接imgSrc = re.findall(findImgSrc,item)[0]data.append(imgSrc)                         #添加图片titles = re.findall(findTitle,item)     #片名可能只有一个中文名,没有外文名if(len(titles)==2) :ctitle =titles[0]                   #中文名的标题data.append(ctitle)otitle = titles[1].replace("/","")  #去掉无关的符号data.append(otitle)                 #添加外国名else:data.append(titles[0])              #将第一个中文名填入data.append(' ')                    #留空,用于占据外国名的位置,防止位置不对称rating = re.findall(findRating,item)[0]data.append(rating)                     #添加评分judgeNum = re.findall(findJudge,item)[0]data.append(judgeNum)                   #添加评价人数inq = re.findall(findIng,item)#(不一定每个电影都有概述)if len(inq) !=0:inq=inq[0].replace("。","")      #去掉句号data.append(inq)                        #添加概述else:data.append(" ")                  #留空bd = re.findall(findBd,item)[0]bd = re.sub('<br(\s+)?/>(\s+)?'," ",bd)      #去掉<br/>bd = re.sub('/'," ",bd)                 #替换/data.append(bd.strip())                 #去掉前后的空格datalist.append(data)                   #把处理好的一部电影信息放入datalist#print(datalist)return datalist      #返回数据列表#得到指定一个url的网页内容
def askURL(url):#head作用是为了让对方自己是浏览器,模拟浏览器头部信息,向豆瓣服务器发送消息#head信息一定不要写错,否则会返回否码为418,对方不认为我们是浏览器head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}               #如果信息不多的话,可以使用键值对的方式,若很多的话可以使用列表的方式head=[]#用户代理。表示告诉豆瓣服务器。我们是什么类型的机器。浏览器(本质上是告诉浏览器。我们可以接收什么水平的文件内容)#发送消息使用下方方式request = urllib.request.Request(url=url, headers=head)  # 构建的是请求对象,使用Request()封装了请求对象,此对象包含url和head头部信息#可以携带头部信息访问url,try:response = urllib.request.urlopen(request)          #发送请求对象,返回一个response对象,此对象包含我们的网页信息html = response.read().decode("utf-8")              #将读取的html界面读取出来#print(html)                                        #打印获取的网页except urllib.error.URLError as e:                      #访问时可能会遇到404遇到一些浏览器内部错误,如500等if hasattr(e,"code"):                   #将里面的如404等code打印出来print(e.code)if hasattr(e, "reason"):                #将产生的错误的原因打印出来print(e.reason)return html#保存数据
def savaData(datalist,savapath):book = xlwt.Workbook(encoding="utf-8",style_compression=0)  # 创建workbook对象(可以理解为一个文件),style_compression样式压缩效果sheet = book.add_sheet('豆瓣电影Top250',cell_overwrite_ok=True)  # 创建工作表,可理解为文件中的表单,cell_overwrite_ok是否覆盖掉以前的内容col = ('电影详情链接',"图片链接","影片中文名","影片外国名","评分","评价数","概况","相关信息")for i in range(0,8):sheet.write(0,i,col[i])     #列名for i in range(0,250):print("第%d条"%(i+1))data = datalist[i]for j in range(0,8):sheet.write(i+1,j,data[j])      #数据book.save(savapath)  # 保存数据表到硬盘if __name__ == "__main__":          #当程序执行时#调用函数main()print("爬取完毕!")

(3)excel保存结果

以下为爬虫的Excel保存版本的结果
在这里插入图片描述

2,保存数据到sqlite

2.1 sqlite数据库

在这里插入图片描述

在这里插入图片描述

一定注意下方的可能标红,要选择下载驱动文件
在这里插入图片描述

确定后如下
在这里插入图片描述

右侧的数据库管理窗口图形平台,不弱于任何一个图形化的数据库管理工具

2.2 创建表

Sqlite数据库的存储类型非常少

#-*- codeing = utf-8 -*- 
#@Time : 2020/11/23 18:27
#@Author : 招财进宝
#@File : testSqlite.py
#@Software: PyCharmimport sqlite3      #在python3后默认支持的库# conn = sqlite3.connect("test.db")       #连接数据库文件,若当前路径下无就建立()
# print("opened database successfully")conn = sqlite3.connect("test.db")       #连接数据库文件,若当前路径下无就建立()
print("成功打开数据库")c = conn.cursor()       #获取游标,操作数据库的对象,里面有个方法execute可以执行SQL语句#单个’是字符,两个“”是字符串,三个'''是段落(多行字符串)
sql ='''create table company(id int primary key not null,name text not null,age int noy null,address char(50),salary real);
'''c.execute(sql)          #执行SQL语句
conn.commit()           #提交数据库操作(让sql语句真正生效)
conn.close()            #关闭数据库连接print("成功建表")

上面程序运行成功后

在这里插入图片描述
在这里插入图片描述

2.3 插入数据

可以直接在上面添加数据

在这里插入图片描述

#3.插入数据
conn = sqlite3.connect("test.db")       #连接数据库文件,若当前路径下无就建立()
print("成功打开数据库")c = conn.cursor()       #获取游标,操作数据库的对象,里面有个方法execute可以执行SQL语句#单个’是字符,两个“”是字符串,三个'''是段落(多行字符串)
sql1 ='''insert into company (id, name, age, address, salary)values (1,'张三',32,"成都",8000)
'''sql2 ='''insert into company (id, name, age, address, salary)values (2,'李四',30,"重庆",15000)
'''c.execute(sql1)          #执行SQL语句
c.execute(sql2)          #执行SQL语句
conn.commit()           #提交数据库操作(让sql语句真正生效)
conn.close()            #关闭数据库连接print("数据插入完毕")

在这里插入图片描述

在这里插入图片描述

2.4 查询数据

#4.查询数据
conn = sqlite3.connect("test.db")       #连接数据库文件,若当前路径下无就建立()
print("成功打开数据库")c = conn.cursor()       #获取游标,操作数据库的对象,里面有个方法execute可以执行SQL语句#单个’是字符,两个“”是字符串,三个'''是段落(多行字符串)
sql ="select id,name,address,salary from company"           #将里面的所有字段的数据查找出来cursor = c.execute(sql)          #执行SQL语句,会有返回值,使用cursor接收for row in cursor:print("id=",row[0])print("name=", row[1])print("address=", row[2])print("salary=", row[3],"\n")conn.close()            #关闭数据库连接(因为是查询不需要提交,直接关闭数据库)print("数据查询完毕")
G:\AILearning\AID2002\venv\Scripts\python.exe "G:/Python Project/shixun/test/testSqlite.py"
成功打开数据库
id= 1
name= 张三
address= 成都
salary= 8000.0 id= 2
name= 李四
address= 重庆
salary= 15000.0 数据查询完毕Process finished with exit code 0

2.5 保存数据到数据库db文件

#保存数据到数据库db文件
def savaData2DB(datalist, dbpath):#datalist是一条一条的电影信息,每个电影信息是一个列表,要将每条信息生成一个SQL语句init_db(dbpath)conn = sqlite3.connect(dbpath)  # dbpath连接存在就是连接,不存在就是创建cur = conn.cursor()  # 获取游标,操作数据库的对象,里面有个方法execute可以执行SQL语句#一条电影信息[['https://movie.douban.com/subject/1292052/', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg', '肖申克的救赎', '\xa0\xa0The Shawshank Redemption', '9.7', '2192734', '希', '导演: 弗兰克·德拉邦特 Frank Darabont\xa0\xa0\xa0主演: 蒂姆·罗宾斯 Tim Robbins  ... 1994\xa0 \xa0美国\xa0 \xa0犯罪 剧情']# sql1 ='''#     insert into company (id, name, age, address, salary)#     values (1,'张三',32,"成都",8000)# '''for data in datalist:for index in range(len(data)):#注意要加入双引号进行sql语句的拼写data[index] = '"'+data[index]+'"'sql = '''insert into movie250(info_link,pic_link,cname,ename,score,rated,instroduction,info)values(%s)'''%",".join(data)    #将data每个中间用逗号连接,%是占位符,将后面的语句舔不到前面的%sprint(sql)              #测试SQL语句是否正确#         cur.execute(sql)#         conn.commit()# cur.close()# conn.close()

(1)测试SQL语句是否拼接正确,看打印如下

insert into movie250(info_link,pic_link,cname,ename,score,rated,instroduction,info)values("https://movie.douban.com/subject/1292052/","https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg","肖申克的救赎","  The Shawshank Redemption","9.7","2193990","希望让人自由","导演: 弗兰克·德拉邦特 Frank Darabont   主演: 蒂姆·罗宾斯 Tim Robbins  ... 1994   美国   犯罪 剧情")insert into movie250(info_link,pic_link,cname,ename,score,rated,instroduction,info)values("https://movie.douban.com/subject/1291546/","https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2561716440.jpg","霸王别姬"," ","9.6","1627621","风华绝代","导演: 陈凯歌 Kaige Chen   主演: 张国荣 Leslie Cheung   张丰毅 Fengyi Zha... 1993   中国大陆 中国香港   剧情 爱情 同性")

(2)将打印出的SQL语句直接放在database执行判断是否成功,注意在最后的)后面不要有空格
在这里插入图片描述

(3)删除db文件

在这里插入图片描述

(4)注意要在此处进行SQL语句的调试,调试后的语句如下,不能全是字符串,应该有的变成数值类型

insert into movie250(info_link,pic_link,cname,ename,score,rated,instroduction,info)  values("https://movie.douban.com/subject/1307106/","https://img3.doubanio.com/view/photo/s_ratio_poster/public/p958008320.jpg","无间道2","  無間道II",8.6,303304," ","导演: 刘伟强   麦兆辉   主演: 陈冠希   余文乐   曾志伟 2003   中国香港   动作 犯罪 剧情 惊悚")

在这里插入图片描述

在这里插入图片描述

(5)此时爬取成功,保存到数据库如下
在这里插入图片描述

2.6 完整代码spider.py

#-*- codeing = utf-8 -*- 
#@Time : 2020/11/20 11:08
#@Author : 招财进宝
#@File : spider.py
#@Software: PyCharmfrom bs4  import  BeautifulSoup       #网页解析,获取数据
import re           #正则表达式,进行文字匹配
import urllib.request,urllib.error          #指定url,获取网页数据
import xlwt         #进行Excel操作
import sqlite3       #进行SQLite操作def main():baseurl = "https://movie.douban.com/top250?start="#1.爬取网页datalist = getData(baseurl)#3.保存数据#保存到Excel#savapath = "豆瓣电影TOP250.xls"#savaData(datalist,savapath)#3.保存到数据库db中去dbpath = "movie.db"savaData2DB(datalist, dbpath)#askURL("https://movie.douban.com/top250?start=0")#影片详情链接的规则
findLink = re.compile(r'a href="(.*?)">')         #生成正则表达式对象,表示规则(字符串的模式),用来匹配所有的链接
#影片 图片的链接
findImgSrc = re.compile(r'<img.*src="(.*?)"',re.S)  #re.S忽略里面的换行符,让换行符包含在字符中
#影片片名
findTitle = re.compile(r'<span class="title">(.*)</span>')
#影片的评分
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
#找到评价人数
findJudge =  re.compile(r'<span>(\d*)人评价</span>')
#找到概况
findIng = re.compile(r'<span class="inq">(.*)</span>')
#找到影片的相关内容
findBd = re.compile(r'<p class="">(.*?)</p>',re.S)   #re.S忽略里面的换行符,让换行符包含在字符中#爬取网页
def getData(baseurl):datalist=[]for i in range(0,10):               #此处是爬取10页是数据,每页有25个电影数据((0,10)左闭,右开)url = baseurl + str(i*25)       #每一页的url后的起始位置=页数*25html = askURL(url)              #保存获取到的网页源码# 2.逐一解析数据(每个网页解析一下)soup = BeautifulSoup(html,"html.parser")     #使用html解析器html.parser解析html# find_all()查找符合要求的字符串,形成列表for item in soup.find_all('div',class_="item"):      #class是个类别需要加下划线,将及时div又是class_="item"的标签找到#print(item)    #测试:查看电影item全部信息#print(type(item))data=[]         #保存一部电影的所有信息item = str(item)    #str将item变成字符串#print(item)#print(type(item))#break              #用来测试第一条item#接下来可以使用正则表达式对字符串进行解析了#影片详情的链接link = re.findall(findLink,item)[0]         #re库用来通过正则表达式查找指定的字符串,获取两个相同的链接中的第一个#print(link)data.append(link)                           #添加链接imgSrc = re.findall(findImgSrc,item)[0]data.append(imgSrc)                         #添加图片titles = re.findall(findTitle,item)     #片名可能只有一个中文名,没有外文名if(len(titles)==2) :ctitle =titles[0]                   #中文名的标题data.append(ctitle)otitle = titles[1].replace("/","")  #去掉无关的符号data.append(otitle)                 #添加外国名else:data.append(titles[0])              #将第一个中文名填入data.append(' ')                    #留空,用于占据外国名的位置,防止位置不对称rating = re.findall(findRating,item)[0]data.append(rating)                     #添加评分judgeNum = re.findall(findJudge,item)[0]data.append(judgeNum)                   #添加评价人数inq = re.findall(findIng,item)#(不一定每个电影都有概述)if len(inq) !=0:inq=inq[0].replace("。","")      #去掉句号data.append(inq)                        #添加概述else:data.append(" ")                  #留空bd = re.findall(findBd,item)[0]bd = re.sub('<br(\s+)?/>(\s+)?'," ",bd)      #去掉<br/>bd = re.sub('/'," ",bd)                 #替换/data.append(bd.strip())                 #去掉前后的空格datalist.append(data)                   #把处理好的一部电影信息放入datalist#print(datalist)return datalist      #返回数据列表#得到指定一个url的网页内容
def askURL(url):#head作用是为了让对方自己是浏览器,模拟浏览器头部信息,向豆瓣服务器发送消息#head信息一定不要写错,否则会返回否码为418,对方不认为我们是浏览器head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}               #如果信息不多的话,可以使用键值对的方式,若很多的话可以使用列表的方式head=[]#用户代理。表示告诉豆瓣服务器。我们是什么类型的机器。浏览器(本质上是告诉浏览器。我们可以接收什么水平的文件内容)#发送消息使用下方方式request = urllib.request.Request(url=url, headers=head)  # 构建的是请求对象,使用Request()封装了请求对象,此对象包含url和head头部信息#可以携带头部信息访问url,try:response = urllib.request.urlopen(request)          #发送请求对象,返回一个response对象,此对象包含我们的网页信息html = response.read().decode("utf-8")              #将读取的html界面读取出来#print(html)                                        #打印获取的网页except urllib.error.URLError as e:                      #访问时可能会遇到404遇到一些浏览器内部错误,如500等if hasattr(e,"code"):                   #将里面的如404等code打印出来print(e.code)if hasattr(e, "reason"):                #将产生的错误的原因打印出来print(e.reason)return html#保存数据到Excel
def savaData(datalist,savapath):book = xlwt.Workbook(encoding="utf-8",style_compression=0)  # 创建workbook对象(可以理解为一个文件),style_compression样式压缩效果sheet = book.add_sheet('豆瓣电影Top250',cell_overwrite_ok=True)  # 创建工作表,可理解为文件中的表单,cell_overwrite_ok是否覆盖掉以前的内容col = ('电影详情链接',"图片链接","影片中文名","影片外国名","评分","评价数","概况","相关信息")for i in range(0,8):sheet.write(0,i,col[i])     #列名for i in range(0,250):print("第%d条"%(i+1))data = datalist[i]for j in range(0,8):sheet.write(i+1,j,data[j])      #数据book.save(savapath)  # 保存数据表到硬盘#保存数据到数据库db文件
def savaData2DB(datalist, dbpath):#datalist是一条一条的电影信息,每个电影信息是一个列表,要将每条信息生成一个SQL语句init_db(dbpath)conn = sqlite3.connect(dbpath)  # dbpath连接存在就是连接,不存在就是创建cur = conn.cursor()  # 获取游标,操作数据库的对象,里面有个方法execute可以执行SQL语句#一条电影信息[['https://movie.douban.com/subject/1292052/', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg', '肖申克的救赎', '\xa0\xa0The Shawshank Redemption', '9.7', '2192734', '希', '导演: 弗兰克·德拉邦特 Frank Darabont\xa0\xa0\xa0主演: 蒂姆·罗宾斯 Tim Robbins  ... 1994\xa0 \xa0美国\xa0 \xa0犯罪 剧情']# insert into movie250(info_link,pic_link,cname,ename,score,rated,instroduction,info)# values("https://movie.douban.com/subject/1307106/",#        "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p958008320.jpg",#        "无间道2",#        "  無間道II",#        8.6,#        303304,#        " ",#        "导演: 刘伟强   麦兆辉   主演: 陈冠希   余文乐   曾志伟 2003   中国香港   动作 犯罪 剧情 惊悚")for data in datalist:for index in range(len(data)):#注意要加入双引号进行sql语句的拼写#当下标为4,5(score,rated)时,插入的类型应该是数值类型的(当遇到数值类型的不需要加双引号,跳过保持原来的即可)if index==4 or index==5:continuedata[index] = '"'+data[index]+'"'sql = '''insert into movie250(info_link,pic_link,cname,ename,score,rated,instroduction,info)values(%s)'''%",".join(data)    #将列表data每个中间用逗号连接,%是占位符,将后面的语句舔不到前面的%sprint(sql)              #测试SQL语句是否正确cur.execute(sql)conn.commit()cur.close()conn.close()#创建初始化数据库
def init_db(dbpath):sql  = '''create table movie250           (id integer primary key autoincrement,info_link text,pic_link text,cname varchar,ename varchar,score numeric,rated numeric,instroduction text,info text);'''       #创建数据表conn = sqlite3.connect(dbpath)          #dbpath连接存在就是连接,不存在就是创建cursor = conn.cursor()       #获取游标,操作数据库的对象,里面有个方法execute可以执行SQL语句cursor.execute(sql)conn.commit()               #提交数据库操作conn.close()                #关闭数据库连接if __name__ == "__main__":          #当程序执行时#调用函数main()#init_db("movietest.db")        #测试初始化是否正确print("爬取完毕!")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/40968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL表的增删改查(CRUD)

MySQL表的增删改查&#xff08;CRUD&#xff09; 文章目录 MySQL表的增删改查&#xff08;CRUD&#xff09;1. Create1.1 单行数据 全列插入1.2 多行数据 指定列插入1.3 插入否则更新1.4 替换 2. Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式…

采用Java语言+开发工具 Idea+ scode数字化产科管理平台源码,产科管理新模式

采用Java语言开发工具 Idea scode数字化产科管理平台源码&#xff0c;产科管理新模式 数字化产科管理系统是现代医疗信息化建设的重要组成部分&#xff0c;它利用现代信息技术手段&#xff0c;对孕产妇的孕期管理、分娩过程及产后康复等各个环节进行数字化、智能化管理&#xf…

使用LoFTR模型进行图像配准、重叠区提取

LoFTR模型源自2021年CVPR提出的一篇论文LoFTR: Detector-Free Local Feature Matching with Transformers&#xff0c;其基于pytorch实现图像配准&#xff0c;与基于superpointsuperglue的方法不同&#xff0c; 是一个端到端的图像配准方法。与LoFTR官方库相关的有loftr2onnx库…

Android在framework层添加自定义服务的流程

环境说明 ubuntu16.04android4.1java version “1.6.0_45”GNU Make 3.81gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 可能有人会问&#xff0c;现在都2024了怎么还在用android4版本&#xff0c;早都过时了。确实&#xff0c;现在最新的都是Android13、And…

柯桥职场英语学习商务英语口语生活英语培训生活口语学习

辣妹用英语怎么说&#xff1f; 辣妹在英语中通常被翻译为“hot girl”或“spicy girl”&#xff0c;但更常见和直接的是“hot chick”或简单地使用“hot”来形容。 举个例子: Shes a real hot girl with her trendy outfit and confident attitude. 她真是个辣妹&#xff0…

Redis---10---SpringBoot集成Redis

SpringBoot集成Redis 总体概述jedis-lettuce-RedisTemplate三者的联系 本地Java连接Redis常见问题&#xff0c;注意 bind配置请注释掉​ 保护模式设置为no​ Linux系统的防火墙设置​ redis服务器的IP地址和密码是否正确​ 忘记写访问redis的服务端口号和auth密码集成Jedis …

Docker:Docker网络

Docker Network 是 Docker 平台中的一项功能&#xff0c;允许容器相互通信以及与外界通信。它提供了一种在 Docker 环境中创建和管理虚拟网络的方法。Docker 网络使容器能够连接到一个或多个网络&#xff0c;从而使它们能够安全地共享信息和资源。 预备知识 推荐先看视频先有…

maven项目使用netty,前端是vue2,实现通讯

引入的java包 <!-- 以下是即时通讯--><!-- Netty core modules --><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.76.Final</version> <!-- 使用最新的稳定版本…

C++初学者指南-4.诊断---地址检测器

C初学者指南-4.诊断—地址检测器 幻灯片 地址检测器&#xff08;ASan&#xff09; 适用编译器g,clang检测内存错误 内存泄露访问已经释放的内存访问不正确的堆栈区域 用额外的指令检测代码 运行时间增加约70%内存使用量大约增加了3倍 示例&#xff1a;检测空指针 使用地址…

中英双语介绍百老汇著名歌剧:《猫》(Cats)和《剧院魅影》(The Phantom of the Opera)

中文版 百老汇著名歌剧 百老汇&#xff08;Broadway&#xff09;是世界著名的剧院区&#xff0c;位于美国纽约市曼哈顿。这里汇集了许多著名的音乐剧和歌剧&#xff0c;吸引了全球各地的观众。以下是两部百老汇的经典音乐剧&#xff1a;《猫》和《剧院魅影》的详细介绍。 1.…

拉普拉斯逆变换

https://www.bilibili.com/video/BV17i4y1475Y?p21&vd_source2e6b4ba548ec9462b2f9633ff700e9b9 CV 17 陈永平教授关于拉普拉斯逆变换的式子的推导 最关键的两步 想到取一个合适的contour L R L_R LR​部分是实部 γ \gamma γ要大于所有极点的实部,这样就可以搞一个大…

SCI二区TOP|麋鹿群优化算法: 一种新颖的受自然启发的元启发式算法

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;SO Oladejo受到麋鹿群的繁殖过程启发&#xff0c;提出了麋鹿群优化算法&#xff08;Elk herd optimizer, EHO&#xff09;。 2.算法原理 2.1算法思想 EHO灵感来自麋鹿…

C语言编程与进阶

1.0 C语言关键字 1-1C语言关键字-CSDN博客文章浏览阅读831次&#xff0c;点赞13次&#xff0c;收藏24次。define使用define定义常量return 0;使用define定义宏// define 定义宏&#xff0c;名字是ADD(x,y),x y 是宏的参数int a 10;int b 20;return 0;宏定义的本质是替换&am…

pandas读取CSV格式文件生成数据发生器iteration

背景 数据集标签为csv文件格式&#xff0c;有三个字段column_hander [‘id’, ‘boneage’, ‘male’]&#xff0c;需要自己定义数据集。文件较大&#xff0c;做一个数据发生器迭代更新数据集。 实现模板 在Pandas中&#xff0c;可以使用pandas.read_csv函数读取CSV文件&…

ShardingSphere实战

ShardingSphere实战 文章目录 ShardingSphere实战分库分表实战建表建表sql利用存储过程建表Sharding-jdbc分库分表配置 基于业务的Sharding-key考虑订单id用户id分片策略订单id的设计与实现**设计思想**&#xff1a;设计思路&#xff1a; 具体分片策略实现测试数据插入商户商品…

推荐好玩的工具之OhMyPosh使用

解除禁止脚本 Set-ExecutionPolicy RemoteSigned 下载Oh My Posh winget install oh-my-posh 或者 Install-Module oh-my-posh -Scope AllUsers 下载Git提示 Install-Module posh-git -Scope CurrentUser 或者 Install-Module posh-git -Scope AllUser 下载命令提示 Install-Mo…

SwinUnet详解

文章目录 摘要一. 编码端模块1. PatchEmbed2. SwinTransformerBlock2.1. Window_partition2.2. WindowAttention2.3. Window_reverse2.4. MLP 3. PatchMerging 二. 解码端模块三. 完整流程图 摘要 swinunet基本结构&#xff1a; swinunet采用编码器-解码器结构&#xff1a; 编…

2.1 tmux和vim

文章目录 前言概述tmuxvim总结 前言 开始学习的时间是 2024.7.6 ,13&#xff1a;47 概述 最好多使用&#xff0c;练成条件反射式的 直接使用终端的工具&#xff0c;可以连接到服务器&#xff0c;不需要使用本地的软件 tmux 这个主要有两个功能&#xff0c;第一个功能是分…

Linux多进程和多线程(七)进程间通信-信号量

进程间通信之信号量 资源竞争 多个进程竞争同一资源时&#xff0c;会发生资源竞争。 资源竞争会导致进程的执行出现不可预测的结果。 临界资源 不允许同时有多个进程访问的资源, 包括硬件资源 (CPU、内存、存储器以及其他外 围设备) 与软件资源(共享代码段、共享数据结构) …

Redis Cluster 模式 的具体实施细节是什么样的?

概述 参考&#xff1a;What are Redis Cluster and How to setup Redis Cluster locally ? | by Rajat Pachauri | Medium Redis Cluster 的工作原理是将数据分布在多个节点上&#xff0c;同时确保高可用性和容错能力。以下是 Redis Cluster 运行方式的简要概述&#xff1a; …