【Python】编程练习的解密与实战(三)

news2024/12/22 12:59:49

​🌈个人主页:Sarapines Programmer
🔥 系列专栏:《Python | 编程解码》
⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。

目录

🪐1. 初识Python

🪐2. 实验报告三

🌍实验目的

🌍实验要求

🌍实验代码

🌍实验结果

🌍实验体会

📝总结


🪐1. 初识Python

Python是一种高级、通用、解释型的编程语言,具有简洁而清晰的语法,被广泛应用于软件开发、数据科学、人工智能等领域。以下是Python技术的一些主要特点和应用领域:

  1. 易学易用: Python的语法设计简单,容易学习和理解。这使得它成为初学者和专业开发人员的首选语言之一。

  2. 开源: Python是开源的,任何人都可以查看、修改和分发其源代码。这为开发者提供了自由和灵活性。

  3. 跨平台: Python可在多个操作系统上运行,包括Windows、Linux和macOS,使其成为跨平台开发的理想选择。

  4. 强大的社区支持: Python拥有庞大的全球开发者社区,用户可以获得丰富的文档、库和工具,方便解决各类问题。

  5. 广泛应用领域: Python在多个领域都有应用,包括Web开发、数据科学、机器学习、人工智能、自动化测试、网络编程等。

  6. 丰富的第三方库: Python拥有丰富的第三方库和框架,如NumPy、Pandas、Django、Flask等,提供了强大的工具来简化开发流程。

  7. 动态类型: Python是一种动态类型语言,允许开发者更加灵活地进行变量和对象的操作。

  8. 面向对象编程: Python支持面向对象编程,使得代码结构更加模块化、可维护性更强。

总体而言,Python是一门功能强大、灵活易用的编程语言,适用于各种规模和类型的项目,从小型脚本到大型应用,都能够得心应手。


🪐2. 实验报告三

🌍实验目的

  • Jupyter Notebook编程工具基本用法:

    • 学习掌握Jupyter Notebook编程工具的基本用法。
  • Python读取CSV文件:

    • 理解并熟悉使用Python编程语言读取CSV文件的方法。
  • 学习使用爬虫:

    • 通过学习,熟悉爬虫技术的使用,掌握在Python环境下进行网络爬取的基本知识和技能。

🌍实验要求

  1. 操作书上第六章的内容: 在实际操作中,重点涉及书本的第六章内容,这可能包括特定主题或技术领域,需要深入学习和理解。

  2. 爬取并下载当当网某一本书的网页内容: 通过编写Python代码,实现对当当网上某一本书的网页内容进行爬取,并将其保存为HTML格式,这涉及到网络爬虫技术的应用。

  3. 在豆瓣网上爬取某本书的前50条短评内容并计算评分的平均值: 运用自学的正则表达式技能,爬取豆瓣网上某本书的前50条短评内容,并计算这些评分的平均值,为数据分析提供基础。

  4. 从长沙房产网爬取长沙某小区的二手房信息: 以名都花园为例,通过网络爬虫技术从长沙房产网(长沙链家网)上获取该小区的二手房信息,并将这些信息保存到EXCEL文件中,为房产数据的整理和分析提供便利。


🌍实验代码

1. 操作书上第六章的内容

import pandas as pd
df=pd.read_csv("wowo.csv")
df

pd.read_table("wowo.csv",sep=",")

df=pd.read_csv("wowo.csv",header=None)
df

df=pd.read_csv("wowo.csv",names=['a','b','c','d','message'])
df

#cat用/而type用\
!type .\wowo.csv

names=['a','b','c','d','message']
df=pd.read_csv("wowo.csv",names=names,index_col='message')
df

df=pd.read_csv("wowo.csv",names=names,skiprows=[0,2,3]) #跳过第一、三、四行
df

2. 爬取并下载当当网某一本书的网页内容

import urllib.request    
#做爬虫时要用到的库
   
#定义百度函数  
def dangdang_shuji(url,begin_page,end_page):  
    #三个参数: 链接+开始页数+结束页数  
    for i in range(begin_page, end_page+1):  
        #从开始页数到结束页数,因为range性质所以要想到达end_page得到达end_page+1
        sName = str(i).zfill(5) + '.html'     
        #填充为.html文件名
        #zfill(5)表示数字前自动补0,加上字符转化的整型i一共占五位
        print ('正在下载第' + str(i) + '个网页,并将其存储为' + sName + '......')  
        #显示爬虫细节
        f = open(sName,'wb+')        
        #w+以纯文本方式读写,而wb+是以二进制方式进行读写              
        m = urllib.request.urlopen(url+str(i)) .read()  
        #urllib.request请求模块
        #urlopen实现对目标url的访问
        #可用参数
        #url:  需要打开的网址
        #data:Post提交的数据
        #timeout:设置网站的访问超时时间
        f.write(m)  
        f.close()
        
#调用部分
bdurl = str(input('请输入您在当当网上搜索的关于某本书的网页地址:'))
# 注意输入网址 https://book.dangdang.com/
begin_page = int(input(u'请输入开始的页数:\n')) 
#将输入的字符串类型转化为整型
end_page = int(input(u'请输入终点的页数:\n'))  
#同上
dangdang_shuji(bdurl,begin_page,end_page)    
#调用函数

3. 在豆瓣网上爬取某本书的前50条短评内容并计算评分的平均值

import requests, re, time  
#获取响应时间与超时
count = 0
i = 0
sum, count_s = 0, 0
while(count < 50):
  #访问前50条记录
  if(i==0):
  #首页内容
    try:
      proxies = {'http': '120.236.128.201:8060','https': '120.236.128.201:8060'}
      headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}
      url = 'https://book.douban.com/subject/3674537/comments/?limit=20&status=P&sort=score'
      r = requests.get(url=url,headers=headers)
    except Exception as err:
      print(err)
      #打印输出错误信息
      break

  #其他页的内容
  else:
      start = i*20
    #url中start的值
      try:
        proxies = {'http': '120.236.128.201:8060','https': '120.236.128.201:8060'}
        headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}
        url='https://book.douban.com/subject/3674537/comments/?start='+str(start)+'&limit=20&status=P&sort=score'
        r = requests.get(url=url,headers=headers)
        # print('第'+str(i)+'页内容')
      except Exception as err:
        print(err)
        break
  soup = BeautifulSoup(r.text, 'lxml')
  # comments = soup.find_all('p', 'comment-content')
  #查找所有tag值为p,class标签为comment-content的内容

  comments = soup.find_all('span', class_='short')

  for item in comments:
    count = count + 1
    # print(count, item.string)
    print(count,item.get_text())
    #打印用户评论
    if count == 50:
      break 
  pattern = re.compile('<span class="user-stars allstar(.*?) rating"')
  #以正则表达式匹配网页中的内容

  p = re.findall(pattern, r.text)
  for star in p:
    count_s = count_s + 1
    sum += int(star)
  time.sleep(5)
  # 停顿5秒再开始
  i += 1
if count == 50:
  print("\n平均分:",sum / count_s)

import requests, re, time  
#获取响应时间与超时
from bs4 import BeautifulSoup 
#html的解析器,主要功能是解析和提取数据
def douBan():
    score_list=[]   
    #用于存储得分
    import urllib  
    #做爬虫时要用到的库
    count=0
    i=0
    while(count<50):  
        #求50条评价记录
         #首页内容
        if(i==0):
            try:
                headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}
                url = 'https://movie.douban.com/subject/35437938/comments?limit=20&status=P&sort=new_score'
                r = requests.get(url=url,headers=headers)
            except Exception as err:
                #返回报错的原因
                print(err)
                break

        #非首页内容
        else:
            start = i*20
            #url中start的值
            try:
                headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}
                url='https://movie.douban.com/subject/35437938/comments?start='+str(start)+'&limit=20&status=P&sort=new_score'
                r = requests.get(url=url,headers=headers)
                # requests.get表示向服务器请求数据,服务器返回的结果是个Response对象
            except Exception as err:
                print(err)
                break
        req=urllib.request.Request(url,headers=headers)
        #Request:构造一个基本的请求。headers可以模拟浏览器,url为目的网址
        #urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以
        #模拟浏览器的一个请求发起过程,同时它还带有处理 authenticaton (授权验证),
        #redirections (重定向), cookies (浏览器Cookies)以及其它内容

        response=urllib.request.urlopen(req)
        #urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, cadefault=False, context=None)。
        #参数解释:
        #url:请求网址
        #data:请求时传送给指定url的数据,当给出该参数时,请求方式变为POST,未给出时为GET。
        #timeout:设定超时时间。如果在设定时间内未获取到响应,则抛出异常。
        #cafile, capath分别为CA证书及其路径

        
        html=response.read().decode("utf-8")
        #以utf-8方式读取爬取网页的内容
        bs=BeautifulSoup(html,"html.parser") 
        #beautifulSoup:提取html对象中的内容
        items=bs.find_all("div",class_="comment-item")
        
        findScore=re.compile('<span class="allstar(.*?) rating"')
        #匹配星级
        findName=re.compile('<img alt="(.*?)"')
        #正则表达式的字符串形式匹配电影名字

            
        for item in items:
            item=str(item)
            #找出对应的五十个电影的得分
            score=re.findall(findScore,item)[0]
            score=float(score)
            score_list.append(score)
            #将得分存放在score_list列表中
            count+=1
            #计数器加1,当计数器大于等于50则结束循环
            if(count>=50):
                break
        i+=1
        #下一页
        time.sleep(5) 
        # 停顿5秒
    print("评分表  :  ",score_list)
    
    #计算平均分
    length=len(score_list)
    print("一共%d条信息"%length)
    sum_score=0
    #计算总和,然后求平均分
    for i in score_list:
        sum_score+=i
    avg=sum_score/length
    print("豆瓣前50评价 总分为:",sum_score,"平均分:",avg)
#调用函数
douBan()

4. 从长沙房产网爬取长沙某小区的二手房信息

import requests as requ
import requests
#获取响应时间与超时
from bs4 import BeautifulSoup
#html的解析器,主要功能是解析和提取数据
import xlwt
#xlwt将数据和样式信息写入excel表格的库
 
def getHouseList(url):
    "获取房源信息:标题、链接地址、户型、面积、朝向、总价、所属区域、套内面积"
    house =[]
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}   
    #解析内容
    res = requests.get(url,headers=headers)
    soup = BeautifulSoup(res.content,'html.parser')
    housename_divs = soup.find_all('div',class_='title')
    #查找该html网页中tag值为div、class值为title的部分
    #指定属性查找标签
    
    for housename_div in housename_divs:
        housename_as=housename_div.find_all('a')
        #参数解释:在原网页中,div标志下有一个叫"a"的超链接。所以次数找tag值为a的元素
        #返回值:对象数组,对象内容为a超链接中的属性)

        for housename_a in housename_as:
            housename=[]
            housename.append(housename_a.get_text())
            #得到超链接中的文字内容,放在housename列表中

            housename.append(housename_a.get('href'))
            house.append(housename)
            #获取超链接中的链接,放在house列表中

    huseinfo_divs = soup.find_all('div',class_='houseInfo')
    #参数解释:获取该网页中tag值为div,class值为houseInfo

    for i in range(len(huseinfo_divs)):
        info = huseinfo_divs[i].get_text()#获取houseInfo中的标题
        infos = info.split('|')
        #原网页以|符号分割的,这里以此做分割

        #小区名称
        house[i].append(infos[0])
        #户型
        house[i].append(infos[1])
        #平米
        house[i].append(infos[2])

    house_prices = soup.find_all('div',class_='totalPrice')
    #函数作用:获取网页中tag值为div,且class值为totalPrice的内容

    for i in range(len(house_prices)):
        price = house_prices[i].get_text()
        #获取文字内容
        house[i].append(price)
    return house
 
#爬取房屋详细信息:所在区域、套内面积
def houseinfo(url):
    #为什么要分为两个函数?因为这个网页中,输入一个url只是得到一些基本信息
    #而详细信息需要到从基本信息中的链接再去提取

    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'}
    res = requests.get(url,headers=headers)
    soup = BeautifulSoup(res.content,'html.parser')
    #headers、res、soup与getHouseList()函数中一致。基本上可以作为固定不变的部分

    msg =[]
    #获取房源的所在区域
    areainfos = soup.find_all('span',class_='info')
    #获取网页中tag值为span,class为info的内容(以具体网页内容为准)

    for areainfo in areainfos:
        #只需要获取第一个a标签的内容即可
        area = areainfo.find('a')
        #找到tag值为a(超链接)的内容。返回一个对象数组
        #具体内容为:herf、target、text

        if(not area):#如果area为null
            continue#如果没有这部分信息就跳过
        hrefStr = area['href']#提取该房源的链接
        if(hrefStr.startswith('javascript')):
            continue
        msg.append(area.get_text())#获取房源所在的地区名称
        break#由于只需要获取第一个a标签的内容,所以此时就可以跳出循环

    #根据房屋户型计算套内面积
    infolist = soup.find_all('div',id='infoList')
    #获取tag值为div,id为infolist的内容
    #注意网站标注的总面积与实际的套内面积是不一样的,所以需要重新计算

    num = []
    for info in infolist:
        cols = info.find_all('div',class_='col')
        #网站中包含col列的有很多,包括面积、方位、名称等等
        #老师的方法是遍历所有的col,
        #我觉得更好的方法是将包含平米的col单独提取出来,这样就无需使用try

        for i in cols:
            pingmi = i.get_text()#获取标题(面积,即xxx平米)
            try:
                #尝试从string中提取数字
                a = float(pingmi[:-2])#从开头到距离尾部2个字符,即把"平米"汉字去掉了
                num.append(a)
            except ValueError:
                #如果出错就跳出
                continue
    msg.append(sum(num))#计算各户型的总面积
    return msg
 
def writeExcel(excelPath,houses):
    "#将爬取数据写入excel文件"
    #excelPath:excel文件存储的路径,houses:包含房源基本信息的列表
    workbook = xlwt.Workbook()
    #函数作用:新建一个工作簿
    sheet = workbook.add_sheet('git')
    #添加一行

    row0=['标题','链接地址','户型','面积','朝向','总价','所属区域','套内面积']
    for i in range(0,len(row0)):
        sheet.write(0,i,row0[i])
        #作为excel表列索引

    for i in range(0,len(houses)):
        house = houses[i]
        print(house)
        for j in range(0,len(house)):
            sheet.write(i+1,j,house[j])
            #数据写完一行接上一行
    workbook.save(excelPath)
    #将excel工作簿保存到指定位置
 
#主函数
def main():
    data = []
    for i in range(1,5):
        print('-----分隔符',i,'-------')
        #i从1到4
        if i==1:
            url ='https://cs.lianjia.com/ershoufang/c3511059937033rs%E5%90%8D%E9%83%BD%E8%8A%B1%E5%9B%AD/'
            #此时i=1时url指向该地址
        else:
            url='https://cs.lianjia.com/ershoufang/pg'+str(i)+'c3511059937033rs%E5%90%8D%E9%83%BD%E8%8A%B1%E5%9B%AD/'
            #i不等于1时url执行不同位置
        
        houses =getHouseList(url)
        
        for house in houses:
            link = house[1]
            if(not link or not link.startswith('http')):
                #无法连接或连接协议不是http,使用continue跳出循环
                continue
            mianji = houseinfo(link)
            house.extend(mianji)
        data.extend(houses)
        #将数据整合到daya里统一写入excel表
    writeExcel('d:/cs.xls',data)
    
if __name__ == '__main__':
    main()
    #如果模块是被直接运行的,则代码块被运行,
    #如果模块是被导入的,则代码块不被运行

🌍实验结果

1.问题一

2.问题二

3.问题三

4.问题四


🌍实验体会

  1. 实验学习和爬虫指令使用

    • 通过实验首次接触了使用Python进行爬虫,学到了相关爬虫指令,并成功爬取了当当网和长沙二手房的信息。
    • 发现在Linux系统下使用cat语法访问.csv文件,而在Windows系统下要使用type,需要注意斜线的差异。
  2. 对Python库的认识和意识拓展

    • 在此实验中,通过社区查阅了相关资源,附上了详细注释,深化了对爬虫的理解。
    • 意识到Python语言的强大之处,不论是机器学习的scikit-learn库还是爬虫的requests库,都涉及到Python,并体会到其调用封装在不同的库中。
  3. 爬虫问题解决和环境疑惑

    • 遇到在Jupyter Notebook中出现‘int’ object is not callable的问题,通过重新创建文件解决,但对问题原因产生疑惑。
    • 怀疑问题可能与装了PyTorch导致与Python两个虚拟环境冲突,但并未做实质修改,问题自行解决,留下疑惑。

📝总结

Python领域就像一片未被勘探的信息大海,引领你勇敢踏入Python数据科学的神秘领域。这是一场独特的学习冒险,从基本概念到算法实现,逐步揭示更深层次的模式分析、匹配算法和智能模式识别的奥秘。

渴望挑战Python信息领域的技术?不妨点击下方链接,一同探讨更多Python数据科学的奇迹吧。我们推出了引领趋势的💻 Python数据科学专栏:《Python | 编程解码》,旨在深度探索Python模式匹配技术的实际应用和创新。🌐🔍

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

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

相关文章

机器人制作开源方案 | 六足灾后探测机器人

作者&#xff1a;毕钟诚 施钥 范江龙 张莉曼 陈金凤 单位&#xff1a;中国石油大学&#xff08;北京&#xff09; 指导老师&#xff1a;许亚岚 孙琳 世纪全球自然灾害频发&#xff0c;灾后探测重建工作十分重要&#xff0c;极端恶劣的现场探测环境&#xff0c;频发的余震甚至…

Unity获取系统语言

大家好&#xff0c;我是阿赵。   在使用Unity引擎做多语言的游戏时&#xff0c;很有可能需要根据用户的手机或者电脑的当前语言来设置游戏的默认语言。   Unity的API里面默认就有可以获取系统语言的方法&#xff1a; Application.systemLanguageUnity的API例子&#xff1a…

Redis 为什么要分16个库

目录 一. 前言 二. 16 个数据库的由来 三. 正解 Redis 数据库概念 四. 集群环境下的 Redis 实例 五. 总结 一. 前言 在实际的项目中&#xff0c;Redis 常被用作缓存、分布式锁、消息队列等的解决方案。但是在搭建好Redis 服务后&#xff0c;Redis 默认创建了16个数据库&am…

基于知识图谱的健康知识问答系统

基于知识图谱的健康知识问答系统 引言数据集与技术选型数据集技术选型 系统功能与实现数据导入与图数据库构建问答任务设计与实现1. 实体提取2. 用户意图识别 前端聊天界面与问答系统 结语 引言 随着互联网的发展&#xff0c;人们对健康知识的需求逐渐增加。为了更方便地获取健…

Windows安全基础:认证基础知识

目录 Windows凭据 Windows访问控制模型 访问令牌&#xff1a; 安全标识符&#xff08;SID&#xff09;&#xff1a; 安全描述符&#xff1a; 令牌安全防御 1、禁止域管理员异机登录 2、开启“审核进程创建”策略 Windows凭据 SSPI&#xff08;Security Support Provide…

【PHP】PHP实现与硬件串口交互,接收硬件发送的实时数据

一、前言 目的&#xff1a;借助虚拟串口软件&#xff08;VSPD&#xff09;模拟硬件串口发送数据&#xff0c;使用PHP语言实现接收硬件发送的数据。 我这里的需求是连接天平&#xff0c;把天平的称量数据实时的传送到PHP使用。 使用工具&#xff1a;vspd串口调试工具 使用语…

第十三章Filter

第十三章Filter 1.什么是Filter过滤器2.Filter过滤器的基本使用示例3.完整的用户登录和权限检查4.Filter的生命周期5.FilterConfig类6.FilterChain多个过滤器执行的细节7.Filter的拦截路径 1.什么是Filter过滤器 2.Filter过滤器的基本使用示例 现在下面三个都是可以访问的&…

PPT插件-大珩助手-《提取选中的幻灯片》-选中新建

选中新建 提取选中的幻灯片到新的幻灯文稿中。PDF编辑器可以提取指定的页面到新的PDF文档中&#xff0c;PPT没有这个功能&#xff0c;因此开发。 软件介绍 PPT大珩助手是一款全新设计的Office PPT插件&#xff0c;它是一款功能强大且实用的PPT辅助工具&#xff0c;支持Wps Wo…

Docker介绍安装及使用

目录 引言一、什么是Docker?二、Docker的优势三、Docker的架构四、Docker的安装五、Docker的基本使用六、Docker与传统虚拟化的比较七、Docker的应用场景八、总结 引言 在现代的软件开发和部署中&#xff0c;容器化技术已经成为了一种趋势。Docker作为容器化技术的领先者&…

im6ull学习总结(三-五)freetype显示正行字

知识补充 笛卡尔坐标系 这里笛卡尔坐标系就是初高中学的直角坐标系的第一象限 lcd坐标系则不同 这两个坐标系如何转换 观察两个坐标系 点&#xff08;x,y&#xff09;的x坐标在两个坐标系中相同&#xff0c;纵坐标&#xff08;y&#xff09;存在着yV-yV V是整个屏幕的行数的像…

基于RNN的模型

文本数据是一种典型的具有序列结构的数据&#xff0c;因为文本通常是由一系列的词语或字符组成的序列。每个词语或字符在文本中都有特定的位置和顺序&#xff0c;这种有序的结构对于理解和处理文本的含义至关重要。因此&#xff0c;多数情况下需要使用时间序列建模来完成相应的…

C/C++ 堆排序

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;数据结构_仍有未知等待探索的博客-CSDN博客 欢迎大家来指教&#xff01; 一、前言 今天要介绍的是堆排序。 首先什么是堆&#xff1f;简而言之&#xff0c;堆就是二叉树的数组形式&#xff0c;用数组来存…

【C++】类和对象之匿名对象友元内部类

目录 一、匿名对象 1、基础格式 2、使用场景 二、友元 1、友元函数 2、友元类 三、内部类 1、概念 2、特性 四、拷贝对象时的一些编译器优化 1、函数传参 2、对象返回 一、匿名对象 1、基础格式 【注意】 &#x1f7e2;匿名对象的声明周期只有当前行&#xff0c;进入…

推荐熊猫电竞赏金电竞系统源码

熊猫电竞赏金电竞系统源码&#xff0c;包含APP、H5和搭建视频教程&#xff0c;支持运营级搭建&#xff0c;这套源码是基于ThinkPHPUniaapp框架开发的。 系统是一套完整的电竞平台开发源码&#xff0c;包括赛事管理、用户系统、竞猜系统、支付系统等模块。源码结构清晰&#xff…

OpenGL排坑指南—贴图纹理绑定和使用

一、前言 在OpenGL学习 的纹理这一章中讲述了纹理贴图的使用方式&#xff0c;主要步骤是先创建一个纹理的对象&#xff0c;和创建顶点VAO类似&#xff0c;然后就开始绑定这个纹理&#xff0c;最后在循环中使用&#xff0c;有时候可能还要用到激活纹理单元的函数。然而&#xff…

【漏洞复现】先锋WEB燃气收费系统文件上传漏洞 1day

漏洞描述 /AjaxService/Upload.aspx 存在任意文件上传漏洞 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作…

【算法】增减序列(贪心,差分)

题目 给定一个长度为 n 的数列 a1,a2,…,an&#xff0c;每次可以选择一个区间 [l,r]&#xff0c;使下标在这个区间内的数都加一或者都减一。 求至少需要多少次操作才能使数列中的所有数都一样&#xff0c;并求出在保证最少次数的前提下&#xff0c;最终得到的数列可能有多少种…

如何下载 DEM数字高程数据(SRTM和COPERNICUS)

数字高程模型&#xff08;Digital Elevation Model&#xff0c;DEM&#xff09;是地球表面的数字表示&#xff0c;以地形高程信息的形式存在。DEM通常以栅格或点云的形式存在&#xff0c;其中每个单元&#xff08;栅格或点&#xff09;都具有对应的高程数值。DEM可以使用各种技…

MYSQL篇--锁机制高频面试题

Mysql锁机制 1对mysql的锁有了解吗&#xff1f; 首先我们要知道&#xff0c;mysql的锁 其实是为了解决在并发事务时所导致的数据不一致问题的一种处理机制&#xff0c;也就是说 在事务的隔离级别实现中&#xff0c;就需要利用锁来解决幻读问题 然后我们可以聊到锁的分类 按锁…

Windows安装和使用kafka

一、安装kafka 由于kafka依赖jdk和zookeeper&#xff0c;安装kafka之前需要先安装jdk和zookeeper&#xff0c;也可以使用kafka自带的zookeeper。安装jdk可以参考&#xff1a;Windows和Linux安装jdk&#xff0c;此处使用kafka自带的zookeeper&#xff0c;不单独安装。 下面在Wi…