本地手集博客id“升级”在线抓取——简陋版——(2024年终总结1.1)

我之前每每发布笔记都用csv纯文本记录,一个机缘巧得文章列表api实现在线整理自已的文章阅读量数据。


(笔记模板由python脚本于2025年01月10日 18:48:25创建,本篇笔记适合喜欢钻牛角尖的coder翻阅)


【学习的细节是欢悦的历程】

  • Python官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/



  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


---== 彰显C位 ==---

  1. ,可以在评论区书写任何想法
  2. (我将在看到的第一时间回应)
  3.  点击这里回转《我的2024》

---== 彰显C位 ==---

等风来,不如追风去……



每每发布笔记都用csv记录
手写id到在线捕获
(一个机缘巧得文章列表api实现在线)


本文质量分:

96 96 96

本文地址: https://blog.csdn.net/m0_57158496/article/details/145063820

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 手写id到在线捕获
    • 1、前言
    • 2、运行效果
    • 2、代码导读
      • 2.1 导入模块
      • 2.2 基础变量设置
      • 2.3 功能模块定义
      • 2.4 主程序逻辑
      • 2.5 结束和输出
      • 2.6 注意事项
    • 3、完整源码(Python)


◆ 手写id到在线捕获


1、前言


  在记csdn的第二年(也就是2022下半年),开始习惯在发布后用手工csv记录id等相关数据的习惯,23年可以curl读取线上笔记源码文本后,就尝试re.findall文章阅读数等实时数据,无聊时我可以随心看看“庄稼地的长势”。

  一个csdn个人博客文章列表的api机缘获悉,让想看到文章阅读量时,可以直接从csdn官方文章列表页面提取,走出我每篇博文html源码文本查阅阅读量的“原始生活”。💪💪👏👏

初始源码(初稿)

 #!/usr/bin/env python3
print() # 打印空行
print(f"{f' 程序正在加载工具…… ':-^34}", end='\r')
from urllib import request
from urllib import error
from re import compile
from re import DOTALL
from time import time# Base Var #
START = time()
path = '/sdcard/Documents/csdn/temp/'
usrname = 'm0_57158496'
url_base = f"https://blog.csdn.net/{usrname}/article/"
pattern = r'''<div class="article-item-box csdn-tracking-statistics" data-articleid="(\d+)">.+?<span class="article-type type-\d float-none">\w+</span>(.+?)</a> </h4><p class="content">(.+?)</p><div class="info-box d-flex align-content-center"><p><span class="date">(.+?)</span><span class="read-num"><img src="https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png" alt="">(\d+?)</span>(?:<span class="read-num"><img src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentCountWhite.png" alt="">(\d+?)</span></p></div></div>')*'''
pattern = compile(pattern, DOTALL)def get_blog_ids_all(pattern, doc_html):return compile(pattern, DOTALL).findall(doc_html)#doc_html = open(f"{path}123.html").read()
#datas = get_blog_ids_all(doc_html)
#print(datas)#exit() # Modules #
def get(url: str) -> str:''' 读取url指向的页面源文本 '''try:with request.urlopen(url) as response:return response.read().decode('utf-8') # 以utf-8编码方式返回读取的页面源码文本except error.HTTPError as e:raise Exception(f"HTTPError: The server couldn't fulfill the request. Error code: {e.code}")except error.URLError as e:raise Exception(f"URLError: Failed to reach a server. Reason: {e.reason}")except Exception as e:raise Exception(f"An unexpected error occurred: {e}")def get_datas(pattern, doc_html):''' 解析整页单一数据 '''pattern = compile(pattern, DOTALL)return pattern.findall(doc_html)def get_blog_ids(doc_html) -> list:''' re提取页面blog_ids '''# ids #pattern = r'data-articleid="(\d+)"'blog_ids = get_datas(pattern, doc_html) # 笔记id提取# titles #pattern = r' <span class="article-type type-\d float-none">\w+</span>[\n\s]*(.+?)[\n\s]*</a>[\n\s]*</h4>'titles = get_datas(pattern, doc_html) # 标题提取# contents #pattern = r'<p class="content">\s*(.+?)\s*</p>'contents = [content.split('。')[0] for content in get_datas(pattern, doc_html)] # 提取并截取摘要首句# date, readed, comment #pattern = r'(?:<span class="date">(.+?)</span>)[\n\s]*(?:<span class="read-num"><[\w\s="/:.]+>(\d+)</span>)[\n\s]*(?:<span class="read-num"><[\w\s="/:.]+>(\d+)</span>)*'line = get_datas(pattern, doc_html) # 打包提取发布时间、阅读量、评论数line = [[item[0], int(item[1]), int(item[-1]) if item[-1].isdigit() else ''] for item in line] # 数值转intdatas =list(zip(blog_ids, titles, contents, line)) # 融合提取数据return datasdef writer(separator, blog_ids):''' data写入磁盘文件 '''filename = f"{path}csdn_blog_ids.csv"with open(filename, 'w', newline='') as f:header = 'Id', 'Title', 'Summary','Date', 'Readed' , 'Comment'f.write(separator.join(header)) # 写字段for blog_id in blog_ids:f.write(f"\n{separator.join(map(str, blog_id))}") # 写数据行# main #
page = 1
blog_ids = [] # blog_ids列表初值
while True:url = f"{url_base}list/{page}"try:doc_html = get(url)except Exception as e: # 捕获异常提示信息字符串print(f"\n{' Url错误或者页面异常 ':-^35}"f"\nUrl:{url}"f"\n解释器提示:{e}")#with open(f"{path}local.html", 'w') as f:#f.write(doc_html) # 当面网页写入磁盘文件,方便异常分析处理(非必须操作)page_ids = pattern.findall(doc_html) # 抓取整页列表blog_ids#page_ids = get_blog_ids_all(pattern, doc_html)print(f"{f' Page: {page:0>2}, Ids: {len(page_ids)} ':-^42}", end='\r')if not page_ids:break # 没有匹配到数据,退出数据提取循环else:blog_ids += page_ids # 追加page_idspage += 1 # 更新列表页面print(f"{f'':^42}", end='\r') # 清屏提示行
print(f"\n\n{f' {usrname}的blog_ids ':=^41}"f"\n\n\n{f'共计:{len(blog_ids)}':^39}")# Writer,数据写入磁盘文件 #
try:writer(r'\\', blog_ids) # 数据写入磁盘print(f"\n\n{' Data已写入磁盘 ':-^37}")
except Exception as e:print(f"\n\n{' 一个错误 ':=^38}"f"\n异常提示:{e}")print(f"\n\n{f' 程序用时:{time()-START:.2f} 秒 ':=^36}\n\n")



回页目录


2、运行效果

  • 程序运行效果截屏图片
    在这里插入图片描述

  • csv文本内容



    ========= qq_35190492的blog_ids ==========


    -------------- 共计:194篇 ---------------

    阅读总量:713.00w,总计评论:9835


    ----------- 平均阅读量:36.75k -----------

    以下为csv数据——
    Id\Title\Summary\Date\Readed\Comment
    103847147\毕业5年,我问遍了身边的大佬,总结了他们的学习方法\我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的\2020-02-13 10:00:26\398121\259
    103657160\程序员请照顾好自己,周末病魔差点一套带走我\程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了\2020-03-13 18:06:22\209811\258
    (后续数据行略)



回页目录


2、代码导读


  本脚本是一个用于抓取和整理CSDN博客文章信息的Python脚本。


以下是代码的主要功能和结构概述:

2.1 导入模块


  脚本开始处导入了必要的Python模块,包括urllib用于网络请求,re用于正则表达式处理,以及time用于计算脚本执行时间。

from urllib import request, error
from re import compile as re_compile, DOTALL, split as re_split
from time import time

2.2 基础变量设置


  脚本定义了一些基础变量,包括起始时间、存储路径、用户名以及基于用户名的博客URL。


START = time()
path = '/sdcard/Documents/csdn/temp/'
usrname = 'qq_35190492'  # CSDN用户名
url_base = f"https://blog.csdn.net/{usrname}/article/" if usrname[4:].isdigit() else f"https://{usrname}.blog.csdn.net/article/"

2.3 功能模块定义


  • get(url: str) -> str
    该函数用于发送HTTP请求并获取指定URL的页面源码。
    • 使用了User-Agent头部来模拟浏览器请求。
    • 通过try-except结构处理了可能出现的网络错误。

  • get_blog_ids(doc_html: str) -> list
    该函数使用正则表达式从页面源码中提取博客文章的ID、标题、摘要、日期、阅读量和评论数。
    • 定义了一个正则表达式模式pattern来匹配所需的数据。
    • 使用re.compile编译正则表达式,并使用findall方法提取所有匹配的数据。

  • data_clear(data: list) -> list
    该函数用于清洗和整理提取到的数据。
    • 将标题和摘要截取为第一句。
    • 将阅读量和评论数转换为整数。
    • 按阅读量对数据进行排序。

  • writer(separator: str, blog_ids: list, count: str) -> None
    该函数将清洗后的数据写入CSV文件。
    • 定义了文件名和写入模式。
    • 写入了标题行和数据行。

  • organize_data(blog_ids: list) -> None:
    该函数用于数据的最终整理和输出。
    • 调用data_clear函数清洗数据。
    • 计算总阅读量和评论数。
    • 调用writer函数将数据写入文件。

2.4 主程序逻辑

  • 初始化pageblog_ids变量。
  • 使用while循环遍历博客文章列表页面,直到没有更多数据。
  • 在循环中,使用get函数获取页面源码,然后使用get_blog_ids提取数据。
  • 如果提取到数据,则调用organize_data函数进行整理。

2.5 结束和输出

脚本最后输出程序执行的总时间。

 
print(f"\n\n{f' 程序用时:{time()-START:.2f} 秒 ':=^36}\n\n")

2.6 注意事项

  • 脚本中的路径和用户名需要根据实际情况进行修改。
  • 脚本可能需要处理CSDN的反爬虫机制。
  • 脚本在运行时可能会受到网络状况和CSDN服务器响应的影响。



回页目录


3、完整源码(Python)

(源码较长,点此跳过源码)

#!/usr/bin/env python3 # 本脚本代码基于python 3.x 撰写,请阅读和run时注意
print() # 打印空行
print(f"{f' 程序正在加载工具…… ':-^34}", end='\r')
from urllib import request
from urllib import error
from re import compile as re_compile
from re import DOTALL
from re import split as re_split
from time import time# Base Var #
START = time()
path = '/sdcard/Documents/csdn/temp/'
usrname = 'm0_57158496' # 可以接受csdn注册id个人主页定制域名字符串,如'kunzhi'(昆志说),'qq_44907926'(孤寒者)
usrname = 'qq_35190492' # 敖丙
url_base = f"https://blog.csdn.net/{usrname}/article/" if usrname[4:].isdigit() else f"https://{usrname}.blog.csdn.net/article/" # 分别处理自定义主页地址和默认地址的用户名# Modules #
def get(url: str) -> str:''' 读取url指向的页面源文本 '''headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'    } # urllib.request.urlopen(url)一般可以缺省请求头,它会给默认一个请求头    req = request.Request(url, headers=headers) # 拼接请求头try:with request.urlopen(req) as response:return response.read().decode('utf-8') # 以utf-8编码方式返回读取的页面源码文本except error.HTTPError as e:raise Exception(f"HTTPError: The server couldn't fulfill the request. Error code: {e.code}")except error.URLError as e:raise Exception(f"URLError: Failed to reach a server. Reason: {e.reason}")except Exception as e:raise Exception(f"An unexpected error occurred: {e}")def get_blog_ids(doc_html: str) -> list:''' re提取页面blog_ids '''pattern = (
r'''<div class="article-item-box csdn-tracking-statistics" data-articleid="(\d+)">'''
r'''.+?<span class="article-.+?</span>\s+(.+?)\s+</a>'''
r'''.+?<p class="content">\s+(.+?)\s+</p>'''r'''.+?<span class="date">(.+?)</span>'''
r'''.+?<span class="read-num">.+?/readCount.+?>(\d+)</span>'''
r'''\s+(?:<span class="read-num">.+?/commentCount.+?>(\d+)</span>)*'''
) # 简明版,程序用时:0.008107 秒(一页文章列表本地文件,表态解析)pattern = re_compile(pattern, DOTALL) # 由于python的优化机制,同一pattern总是被仅编译一次,可以不担心重复编译return pattern.findall(doc_html) # 返回提取数据def data_clear(data: list) -> list:''' 清洗数据 '''for k,blog_id in enumerate(data):blog_id = list(blog_id) # to listblog_id[1] = re_split(r'[。.??!!…...]', blog_id[1])[0] # 截取标题第一句文本blog_id[2] = re_split(r'[。.??!!…...]', blog_id[2])[0] # 截取摘要第一句文本blog_id[-2] = int(blog_id[-2]) # 阅读量to intblog_id[-1] = int(blog_id[-1]) if blog_id[-1] else 0 # 修复无评论数据data[k] = tuple(blog_id) # to tupledata.sort(key=lambda x: x[-2], reverse=True) # 接阅读量排逆序return datadef writer(separator: str, blog_ids: list, count: str) -> None:''' data写入磁盘文件 '''filename = f"{path}csdn_blog_ids.csv"with open(filename, 'w', newline='') as f:f.write(count)f.write(f"\n\n以下为csv数据——\n")header = 'Id', 'Title', 'Summary','Date', 'Readed' , 'Comment'f.write(separator.join(header)) # 写字段for blog_id in blog_ids:f.write(f"\n{separator.join(map(str, blog_id))}") # 写数据行def organize_data(blog_ids: list) -> None:''' 数据整理 '''print(f"{f'':^42}", end='\r') # 清屏提示行blog_ids = data_clear(blog_ids) # 清洗数据readeds = sum([blog_id[-2] for blog_id in blog_ids])comments = sum([blog_id[-1] for blog_id in blog_ids])print(count := (f"\n\n{f' {usrname}的blog_ids ':=^41}"f"\n\n\n{f' 共计:{len(blog_ids)}篇 ':-^38}"f"\n\n{f'阅读总量:{readeds/10000:.2f}w,总计评论:{comments}':^32}"f"\n\n\n{f' 平均阅读量:{readeds/len(blog_ids)/1000:.2f}k ':-^36}"))# Writer,数据写入磁盘文件 #try:writer(r'\\', blog_ids, count) # 数据写入磁盘print(f"\n\n{' Data已写入磁盘 ':-^37}")except Exception as e:print(f"\n\n{' 一个错误 ':=^38}"f"\n异常提示:{e}")# main #
page = 1
blog_ids = [] # blog_ids列表初值while True:url = f"{url_base}list/{page}"try:doc_html = get(url)except Exception as e: # 捕获异常提示信息字符串print(f"\n{' Url错误或者页面异常 ':-^35}"f"\nUrl:{url}"f"\n解释器提示:{e}")page_ids = get_blog_ids(doc_html) # 提示单页文章列表数据(最多含40条数据)print(f"{f' Page: {page:0>2}, Ids: {len(page_ids)} ':-^42}", end='\r')if not page_ids:break # 没有匹配到数据,退出数据提取循环else:blog_ids += page_ids # 追加page_idspage += 1 # 更新列表页码if blog_ids: # 有提取到数据,整理数据organize_data(blog_ids) # 数据整理
else:print(f"\n\n{' 没有收集到数据 ':-^35}"f"\n{'(请查找原因)':^38}")print(f"\n\n{f' 程序用时:{time()-START:.2f} 秒 ':=^36}\n\n")

( 点击这里回转 《我的2024》)



回页首


上一篇:  我的2024(非常年终总结)(年年总年年结年年刻板与雷同,今年松今年垮今年义在字外意不言中)
下一篇: 



我的HOT博:

  本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k的有 9 9 9篇。

  1. 让QQ群昵称色变的神奇代码
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    浏览阅读:6.2w
    点赞:25 收藏:89 评论:17
    (本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)

  2. Python列表(list)反序(降序)的7种实现方式
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    浏览阅读:1.3w
    点赞:9 收藏:40 评论:8
    (本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)

  3. pandas 数据类型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    浏览阅读:1.0w
    点赞:7 收藏:40 
    (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)

  4. 个人信息提取(字符串)
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    浏览阅读:1.0w
    点赞:3 收藏:20 
    (本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)

  5. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:8.2k
    收藏:3 
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

  6. 统计字符串字符出现的次数
    地址:https://blog.csdn.net/m0_57158496/article/details/130517025
    浏览阅读:8.1k
    点赞:5 收藏:24 
    (本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)

  7. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:8.0k
    点赞:1 收藏:12 评论:1
  8. 回车符、换行符和回车换行符
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    浏览阅读:6.7k
    点赞:2 收藏:4 
    (本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)

  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:6.1k
    点赞:1 收藏:10 

推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

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

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

相关文章

工业 4G 路由器赋能远程医疗,守护生命线

在医疗领域&#xff0c;尤其是偏远地区的医疗救治场景中&#xff0c;工业 4G 路由器正发挥着无可替代的关键作用&#xff0c;宛如一条坚韧的 “生命线”&#xff0c;为守护患者健康持续赋能。 偏远地区医疗资源相对匮乏&#xff0c;常常面临着专业医生短缺、诊疗设备有限等困境…

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…

Nginx入门笔记

Nginx入门笔记 一、Nginx基本概念二、代理1、正向代理2、反向代理 三、准备工作1、CentOS 7安装nginx&#xff08;1&#xff09;. 安装必要的依赖&#xff08;2&#xff09;下载nginx&#xff08;3&#xff09;编译安装&#xff08;4&#xff09;编译并安装 Nginx(5)启动nginx …

半导体数据分析: 玩转WM-811K Wafermap 数据集(一) AI 机器学习

在半导体行业&#xff0c;工程师依靠 CP Yield&#xff08;生产过程中芯片的合格率&#xff09;、WAT&#xff08;晶圆验收测试&#xff09;和 Particle 的晶圆图模式来识别工艺问题。然而&#xff0c;在没有人工干预的情况下将这些晶圆图模式分类是一项重大挑战。许多论文都研…

初学者关于对机器学习的理解

一、机器学习&#xff1a; 1、概念&#xff1a;是指从有限的观测数据中学习(或“猜 测”)出具有一般性的规律&#xff0c;并利用这些规律对未知数据进行预测的方法.机器学 习是人工智能的一个重要分支&#xff0c;并逐渐成为推动人工智能发展的关键因素。 2、使用机器学习模型…

GPU算力平台|在GPU算力平台部署Qwen-2通义千问大模型的教程

文章目录 一、GPU平台介绍算力平台概述 二、人工智能应用开发需要GPU算力平台GPU算力原理账号注册流程Qwen-2通义千问大模型的部署登录/注册选择SettingsURL配置选择模型部署完成进行问答 一、GPU平台介绍 算力平台概述 GPU算力平台是一个专注于GPU加速计算的专业云服务平台&…

Vue3(elementPlus) el-table替换/隐藏行箭头,点击整行展开

element文档链接&#xff1a; https://element-plus.org/zh-CN/component/form.html 一、el-table表格行展开关闭箭头替换成加减号 注&#xff1a;Vue3在样式中修改箭头图标无效&#xff0c;可能我设置不对&#xff0c;欢迎各位来交流指导 转变思路&#xff1a;隐藏箭头&…

【C++】C++11(二)

目录 九、可变参数模板十、lambda表达式10.1 C98中的一个例子10.2 lambda表达式10.3 lambda表达式语法10.3.1 lambda表达式各部分说明10.3.2 捕获列表说明 10.4 函数对象与lambda表达式 十一、包装器11.1 function包装器11.2 bind 十二、线程库12.1 线程12.1.1 thread类的简单介…

针对数据库系统安全的漏洞扫描加固工具【WebSocket + MySQL】

一、系统背景 随着信息技术的迅猛发展和互联网的普及&#xff0c;数据库作为存储、管理和检索大量数据的关键组件&#xff0c;其安全性对于企业和组织来说至关重要。然而&#xff0c;由于网络环境的复杂性和攻击手段的多样性&#xff0c;数据库面临着越来越多的安全威胁&#…

Photon最新版本PUN 2.29 PREE,在无网的局域网下,无法连接自己搭建的本地服务器

1.图1为官方解答 2.就是加上这一段段代码&#xff1a;PhotonNetwork.NetworkingClient.SerializationProtocol SerializationProtocol.GpBinaryV16; 完美解决 unity 商店最新PUN 2 插件 不能连接 &#xff08;环境为&#xff1a;本地局域网 无外网情况 &#xff09; …

贪心算法(五)

目录 一、单调递增的数字 二、坏了的计算器 三、合并区间 四、无重叠区间 五、用最少数量的箭引爆气球 一、单调递增的数字 单调递增的数字 贪心策略&#xff1a; 对于这道题&#xff0c;相邻数字相等&#xff0c;也表示是递增的。 解题代码&#xff1a; class Soluti…

数据结构——栈的实现

今天&#xff0c;我们来写一下关于栈的博文。 1.首先我们先了解一下什么是栈&#xff1f; 一&#xff1a;概念&#xff1a; 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另…

Vue进阶(贰幺贰)npm run build多环境编译

文章目录 一、前言二、实施三、总结&#xff1a;需要打包区分不同环境四、拓展阅读 一、前言 项目开发阶段&#xff0c;会涉及打包部署到多个环境应用场景&#xff0c;在不同环境中&#xff0c;需要进行项目层面的区分&#xff0c;做不同的操作&#xff0c;可以利用打包的--mo…

【C++/控制台】2048小游戏

源代码&#xff1a; #include <iostream> #include <windows.h> #include <stdio.h> #include <math.h> #include <stdlib.h> #include <conio.h> #include <time.h>// #define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)…

web作业

作业一 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Document</title> </head&g…

一块钱的RISC-V 32位芯片

‍‍ ‍‍之前跟一个朋友聊天&#xff0c;说以后的芯片一定是越来越趋向于定制化&#xff0c;比如我们需要一个ADC芯片&#xff0c;这颗ADC芯片需要有串口功能&#xff0c;那就只开发一颗这样的芯片就好了&#xff0c;其他的功能都可以裁剪掉。 ➵➵➵➵➵➵➵➵➵➵➵➵➵➵➵…

CES 2025|美格智能高算力AI模组助力“通天晓”人形机器人震撼发布

当地时间1月7日&#xff0c;2025年国际消费电子展&#xff08;CES 2025&#xff09;在美国拉斯维加斯正式开幕。美格智能合作伙伴阿加犀联合高通在展会上面向全球重磅发布人形机器人原型机——通天晓&#xff08;Ultra Magnus&#xff09;。该人形机器人内置美格智能基于高通QC…

【llm/ollama/qwen】在本地部署qwen2.5-coder并在vscode中集成使用代码提示功能

说在前面 操作系统&#xff1a;windows11ollama版本&#xff1a;0.5.4vscode版本&#xff1a;1.96.2continue插件版本&#xff1a;0.8.66 ollama安装 访问官网&#xff0c;点击下载安装即可 默认装在了C盘&#xff0c;比较蛋疼&#xff1b;但是可以指定路径安装&#xff1a;Ol…

力扣刷题:二叉树OJ篇(上)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 目录 1.单值二叉树&#xff08;1&#xff09;题目描…

C++实现图书管理系统(Qt C++ GUI界面版)

前瞻 本项目基于【C】图书管理系统(完整版) 图书管理系统功能概览&#xff1a; 登录&#xff0c;注册学生,老师借书&#xff0c;查看自己当前借书情况&#xff0c;还书。管理员增加书&#xff0c;查看当前借阅情况&#xff0c;查看当前所有借阅人&#xff0c;图书信息。 效果…