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

【github】主页显示star和fork

  1. 数据收集:定期(例如每天)获取你所有仓库的 Star 和 Fork 总数。
  2. 数据存储:将收集到的数据(时间戳、总 Star 数、总 Fork 数)存储起来。
  3. 图表生成:根据存储的数据生成变化曲线图(通常是 SVG 或 PNG 格式)。
  4. 自动更新:使用 GitHub Actions 自动化上述过程,并将生成的图表提交到你的主页仓库。
  5. README 展示:在 用户名/用户名/README.md 中引用生成的图表。

下面是一个比较详细的方案,以 Python 和 Matplotlib 为例,并结合 GitHub Actions:

方案:使用 GitHub Actions + Python + Matplotlib

1. 项目结构 (在你的 用户名/用户名 仓库中)

.
├── .github/
│   └── workflows/
│       └── update_stats.yml  # GitHub Actions 配置文件
├── scripts/
│   └── generate_chart.py   # Python 脚本
├── data/
│   └── stats_history.csv   # 存储历史数据
├── images/                 # 存储生成的图表
│   └── stars_chart.svg
│   └── forks_chart.svg
└── README.md

2. Python 脚本 (scripts/generate_chart.py)

这个脚本会:

  • 从 GitHub API 获取当前所有仓库的 Star 和 Fork 总数。
  • 读取 data/stats_history.csv 中的历史数据。
  • 将新数据追加到 CSV 文件。
  • 使用 Matplotlib 生成 Star 和 Fork 变化曲线图,并保存为 SVG。
import os
import requests
import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates# --- 配置 ---
GITHUB_USERNAME = os.environ.get("GITHUB_ACTOR") # 从 GitHub Actions 环境变量获取用户名
GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN") # GitHub Actions 会自动提供
STATS_FILE = "data/stats_history.csv"
STARS_CHART_FILE = "images/stars_chart.svg"
FORKS_CHART_FILE = "images/forks_chart.svg"# --- 1. 获取当前 Star 和 Fork 总数 ---
def get_total_stats():total_stars = 0total_forks = 0page = 1while True:url = f"https://api.github.com/users/{GITHUB_USERNAME}/repos?per_page=100&page={page}"headers = {"Authorization": f"token {GITHUB_TOKEN}"}response = requests.get(url, headers=headers)response.raise_for_status() # 如果请求失败则抛出异常repos = response.json()if not repos:breakfor repo in repos:total_stars += repo["stargazers_count"]total_forks += repo["forks_count"]page += 1return total_stars, total_forks# --- 2. 加载/更新历史数据 ---
def update_stats_history(stars, forks):today = datetime.now().strftime("%Y-%m-%d")new_data = {"date": [today], "total_stars": [stars], "total_forks": [forks]}new_df = pd.DataFrame(new_data)if os.path.exists(STATS_FILE):history_df = pd.read_csv(STATS_FILE)# 如果今天的数据已存在,则更新它,否则追加if today in history_df["date"].values:history_df.loc[history_df["date"] == today, ["total_stars", "total_forks"]] = [stars, forks]else:history_df = pd.concat([history_df, new_df], ignore_index=True)else:os.makedirs(os.path.dirname(STATS_FILE), exist_ok=True)history_df = new_dfhistory_df["date"] = pd.to_datetime(history_df["date"]) # 确保日期是 datetime 类型history_df = history_df.sort_values(by="date") # 按日期排序history_df["date"] = history_df["date"].dt.strftime("%Y-%m-%d") # 转回字符串保存history_df.to_csv(STATS_FILE, index=False)return pd.read_csv(STATS_FILE, parse_dates=["date"]) # 返回解析日期后的 DataFrame 用于绘图# --- 3. 生成图表 ---
def generate_plot(df, column, title, filename):plt.style.use('seaborn-v0_8-darkgrid') # 使用一个好看的样式fig, ax = plt.subplots(figsize=(10, 5)) # 调整图像大小ax.plot(df["date"], df[column], marker='o', linestyle='-', color='skyblue', linewidth=2, markersize=5)# 设置标题和标签ax.set_title(f"{GITHUB_USERNAME}'s {title} Over Time", fontsize=16, color='white')ax.set_xlabel("Date", fontsize=12, color='lightgray')ax.set_ylabel(title, fontsize=12, color='lightgray')# 美化日期格式ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))ax.xaxis.set_major_locator(mdates.AutoDateLocator(minticks=5, maxticks=10)) # 自动选择合适的日期间隔plt.xticks(rotation=30, ha='right', color='lightgray')plt.yticks(color='lightgray')# 设置背景和边框颜色fig.patch.set_facecolor('#24292e') # GitHub 暗色背景ax.set_facecolor('#2d333b')ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.spines['bottom'].set_color('gray')ax.spines['left'].set_color('gray')ax.tick_params(axis='x', colors='lightgray')ax.tick_params(axis='y', colors='lightgray')plt.grid(True, linestyle='--', alpha=0.5, color='gray') # 网格线plt.tight_layout() # 自动调整子图参数,使其填充整个图像区域os.makedirs(os.path.dirname(filename), exist_ok=True)plt.savefig(filename, facecolor=fig.get_facecolor(), transparent=False) # 保存 SVGplt.close()print(f"Chart saved to {filename}")# --- Main ---
if __name__ == "__main__":if not GITHUB_USERNAME or not GITHUB_TOKEN:print("Error: GITHUB_ACTOR and GITHUB_TOKEN environment variables must be set.")exit(1)current_stars, current_forks = get_total_stats()print(f"Current total stars: {current_stars}, total forks: {current_forks}")history_df = update_stats_history(current_stars, current_forks)generate_plot(history_df, "total_stars", "Total Stars", STARS_CHART_FILE)generate_plot(history_df, "total_forks", "Total Forks", FORKS_CHART_FILE)print("Stats updated and charts generated successfully!")

3. GitHub Actions Workflow (.github/workflows/update_stats.yml)

这个 workflow 会:

  • 每天定时运行(或手动触发)。
  • Checkout 代码。
  • 设置 Python 环境并安装依赖。
  • 运行 generate_chart.py 脚本。
  • 提交并推送更新后的 stats_history.csv 和图表文件。
name: Update Profile Stats Chartson:schedule:- cron: '0 0 * * *' # 每天午夜 UTC 时间运行workflow_dispatch: # 允许手动触发jobs:update_charts:runs-on: ubuntu-latestpermissions:contents: write # 需要写入权限来提交文件actions: read   # GITHUB_TOKEN 默认有 actions:read# GITHUB_TOKEN 默认也有 contents:read# 显式声明可以确保权限steps:- name: Checkout repositoryuses: actions/checkout@v4- name: Set up Pythonuses: actions/setup-python@v5with:python-version: '3.x'- name: Install dependenciesrun: |python -m pip install --upgrade pippip install requests pandas matplotlib- name: Run script to generate chartsenv:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 由 GitHub Actions 自动提供# GITHUB_ACTOR 会自动设置为触发 workflow 的用户,即你自己run: python scripts/generate_chart.py- name: Commit and push changesrun: |git config --local user.email "action@github.com"git config --local user.name "GitHub Action"# 检查是否有文件变动if ! git diff --quiet data/stats_history.csv images/stars_chart.svg images/forks_chart.svg; thengit add data/stats_history.csv images/stars_chart.svg images/forks_chart.svggit commit -m "📊 Update profile stats charts and data"git pushelseecho "No changes to commit."fi

4. 在 README.md 中展示图表

在你的 用户名/用户名/README.md 文件中添加以下内容:

### 🚀 My GitHub Stats Over Time**Total Stars ⭐**
<p align="center"><img src="./images/stars_chart.svg" alt="My Total Stars History" />
</p>**Total Forks 🍴**
<p align="center"><img src="./images/forks_chart.svg" alt="My Total Forks History" />
</p><!-- 你也可以使用 GitHub 的缓存来避免浏览器缓存问题,但通常直接引用仓库内路径更好 -->
<!-- <img src="https://raw.githubusercontent.com/你的用户名/你的用户名/你的分支名/images/stars_chart.svg" /> -->

确保分支名正确,通常是 mainmaster

设置步骤:

  1. 创建文件和目录:在你的 用户名/用户名 仓库中,按照上面的项目结构创建 scripts/generate_chart.py.github/workflows/update_stats.ymldata/images/ 目录会在脚本第一次运行时自动创建(如果它们不存在且脚本有创建权限)。
  2. 修改 GITHUB_USERNAME (可选): 脚本中的 GITHUB_USERNAME = os.environ.get("GITHUB_ACTOR") 会自动获取你的用户名。如果想硬编码,可以修改。
  3. 提交并推送这些新文件 到你的 GitHub 仓库。
  4. 触发 Workflow
    • 你可以等待 cron 计划的下一次运行。
    • 或者,进入你的仓库 -> Actions 标签页 -> 找到 “Update Profile Stats Charts” workflow -> 点击 “Run workflow” 手动触发一次。
  5. 检查结果
    • Workflow 运行成功后,data/stats_history.csv 文件应该会被创建/更新。
    • images/stars_chart.svgimages/forks_chart.svg 应该会被生成。
    • 这些文件会被自动 commit 和 push 到你的仓库。
    • 你的 README.md 应该会显示这些图表。

“Fancy” 提示:

  • Matplotlib 样式: plt.style.use() 可以使用很多内置样式 (ggplot, seaborn-v0_8-darkgrid, fivethirtyeight 等)。你也可以自定义颜色、字体、线条粗细等。
  • SVG 优势: SVG 是矢量图,放大不失真,而且可以直接用文本编辑器修改(如果你懂 SVG 语法)。
  • 颜色主题: 可以根据你的 GitHub 主页主题(亮色/暗色)调整图表的背景色、文字颜色等。上面脚本中的颜色是为暗色主题优化的。
  • 平滑曲线: 可以使用 scipy.interpolate.make_interp_spline 等库来生成更平滑的曲线,但这会增加脚本的复杂性。
  • 渐变填充: Matplotlib 也支持在曲线下方进行渐变颜色填充,可以让图表更美观。

注意事项:

  • API Rate Limits: GitHub API 有速率限制。对于个人用户,通常是每小时 5000 次请求(使用 GITHUB_TOKEN)。获取所有仓库信息通常只需要几次请求(取决于你有多少仓库,per_page=100)。每天运行一次脚本是完全没问题的。
  • 首次运行: 第一次运行时,stats_history.csv 不存在,图表上只有一个数据点。随着时间推移,曲线才会显现。
  • 安全性: GITHUB_TOKEN 是由 GitHub Actions 自动提供的,并且具有适当的权限,无需手动创建。
  • 分支保护: 如果你的主分支受保护,你可能需要调整 GitHub Actions 的权限或分支保护规则,以允许 Action 推送更改。

相关文章:

【github】主页显示star和fork

数据收集&#xff1a;定期&#xff08;例如每天&#xff09;获取你所有仓库的 Star 和 Fork 总数。数据存储&#xff1a;将收集到的数据&#xff08;时间戳、总 Star 数、总 Fork 数&#xff09;存储起来。图表生成&#xff1a;根据存储的数据生成变化曲线图&#xff08;通常是…...

网站遭受扫描攻击,大量爬虫应对策略

网站的日志里突然有很多访问路径不存在的&#xff0c;有些ip地址也是国外的&#xff0c;而且访问是在深夜且次数非常频繁紧密。判定就是不怀好意的扫描网站寻找漏洞。也有些是爬虫&#xff0c;且是国外的爬虫&#xff0c;有的也是不知道的爬虫爬取网站。网站的真实流量不多&…...

【 Redis | 实战篇 秒杀实现 】

目录 前言&#xff1a; 1.全局ID生成器 2.秒杀优惠券 2.1.秒杀优惠券的基本实现 2.2.超卖问题 2.3.解决超卖问题的方案 2.4.基于乐观锁来解决超卖问题 3.秒杀一人一单 3.1.秒杀一人一单的基本实现 3.2.单机模式下的线程安全问题 3.3.集群模式下的线程安全问题 前言&…...

手搓传染病模型(SEIARW)

在传染病传播的研究中&#xff0c;水传播途径是一个重要的考量因素。SEAIRW 模型&#xff08;易感者 S - 暴露者 E - 感染者 I - 无症状感染者 A - 康复者 R - 水中病原体 W&#xff09;综合考虑了人与人接触传播以及水传播的双重机制&#xff0c;为分析此类传染病提供了全面的…...

【C++】深入理解 unordered 容器、布隆过滤器与分布式一致性哈希

【C】深入理解 unordered 容器、布隆过滤器与分布式一致性哈希 在日常开发中&#xff0c;无论是数据结构优化、缓存设计&#xff0c;还是分布式架构搭建&#xff0c;unordered_map、布隆过滤器和一致性哈希都是绕不开的关键工具。它们高效、轻量&#xff0c;在性能与扩展性方面…...

第五天——贪心算法——射气球

1.题目 有一些球形气球贴在一个表示 XY 平面的平坦墙壁上。气球用一个二维整数数组 points 表示&#xff0c;其中 points[i] [xstart, xend] 表示第 i 个气球的水平直径范围从 xstart 到 xend。你并不知道这些气球的具体 y 坐标。 可以从 x 轴上的不同位置垂直向上&#xff0…...

麦肯锡110页PPT企业组织效能提升调研与诊断分析指南

“战略清晰、团队拼命、资源充足&#xff0c;但业绩就是卡在瓶颈期上不去……”这是许多中国企业面临的真实困境。表面看似健康的企业&#xff0c;往往隐藏着“组织亚健康”问题——跨部门扯皮、人才流失、决策迟缓、市场反应滞后……麦肯锡最新研究揭示&#xff1a;组织健康度…...

BFS算法篇——从晨曦到星辰,BFS算法在多源最短路径问题中的诗意航行(上)

文章目录 引言一、多源BFS的概述二、应用场景三、算法步骤四、代码实现五、代码解释六、总结 引言 在浩渺的图论宇宙中&#xff0c;图的每一条边、每一个节点都是故事的组成部分。每当我们站在一个复杂的迷宫前&#xff0c;开始感受它的深邃时&#xff0c;我们往往不再局限于从…...

理解 C# 中的各类指针

前言 变量可以理解成是一块内存位置的别名&#xff0c;访问变量也就是访问对应内存中的数据。 指针是一种特殊的变量&#xff0c;它存储了一个内存地址&#xff0c;这个内存地址代表了另一块内存的位置。 指针指向的可以是一个变量、一个数组元素、一个对象实例、一块非托管内存…...

MySQL 事务(二)

文章目录 事务隔离性理论理解隔离性隔离级别 事务隔离级别的设置和查看事务隔离级别读未提交读提交&#xff08;不可重复读&#xff09; 事务隔离性理论 理解隔离性 MySQL服务可能会同时被多个客户端进程(线程)访问&#xff0c;访问的方式以事务方式进行一个事务可能由多条SQL…...

【HarmonyOS】ArkTS开发应用的横竖屏切换

文章目录 1、简介2、静态 — 横竖屏切换2.1、效果2.2、实现原理2.3、module.json5 源码 3、动态 — 横竖屏切换3.1、应用随系统旋转切换横竖屏3.2、setPreferredOrientation 原理配置3.3、锁定旋转的情况下&#xff0c;手动设置横屏状态 1、简介 在完成全屏网页嵌套应用开发后…...

Linux中find命令用法核心要点提炼

大家好&#xff0c;欢迎来到程序视点&#xff01;我是你们的老朋友.小二&#xff01; 以下是针对Linux中find命令用法的核心要点提炼&#xff1a; 基础语法结构 find [路径] [选项] [操作]路径&#xff1a;查找目录&#xff08;.表当前目录&#xff0c;/表根目录&#xff09;…...

专栏项目框架介绍

项目整体实现框图 如下图所示&#xff0c;是该项目的整体框图&#xff0c;项目的功能概括为&#xff1a;PC端下发数据文件&#xff0c;FPGA板卡接收数据文件&#xff0c;缓存至DDR中&#xff0c;待数据文件发送完毕&#xff0c;循环读取DDR有效写区域数据&#xff0c;将DDR数据…...

WSL 安装 Debian 12 后,Linux 如何安装 vim ?

在 WSL 的 Debian 12 中安装 Vim 非常简单&#xff0c;只需使用 apt 包管理器即可。以下是详细步骤&#xff1a; 1. 更新软件包列表 首先打开终端&#xff0c;确保系统包列表是最新的&#xff1a; sudo apt update2. 安装 Vim 直接通过 apt 安装 Vim&#xff1a; sudo apt …...

【SpringBoot】从零开始全面解析Spring MVC (一)

本篇博客给大家带来的是SpringBoot的知识点, 本篇是SpringBoot入门, 介绍Spring MVC相关知识. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子…...

C++—特殊类设计设计模式

目录 C—特殊类设计&设计模式1.设计模式2.特殊类设计2.1设计一个无法被拷贝的类2.2设计一个只能在堆上创建对象的类2.3设计一个只能在栈上创建对象的类2.4设计一个类&#xff0c;无法被继承2.5设计一个类。这个类只能创建一个对象【单例模式】2.5.1懒汉模式实现2.5.2饿汉模…...

初入OpenCV

OpenCV简介 OpenCV是一个开源的跨平台计算机视觉库&#xff0c;它实现了图像处理和计算机视觉方面的很多通用算法。 应用场景&#xff1a; 目标识别&#xff1a;人脸、车辆、车牌、动物&#xff1b; 自动驾驶&#xff1b;医学影像分析&#xff1b; 视频内容理解分析&#xff…...

霍夫圆变换全面解析(OpenCV)

文章目录 一、霍夫圆变换基础1.1 霍夫圆变换概述1.2 圆的数学表达与参数化 二、霍夫圆变换算法实现2.1 标准霍夫圆变换算法流程2.2 参数空间的表示与优化 三、关键参数解析3.1 OpenCV中的HoughCircles参数3.2 参数调优策略 四、Python与OpenCV实现参考4.1 基本实现代码4.2 改进…...

互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-4

互联网大厂Java求职面试&#xff1a;优惠券服务架构设计与AI增强实践-4 场景设定 面试官&#xff1a;某互联网大厂技术总监&#xff0c;拥有超过10年大型互联网企业一线技术管理经验&#xff0c;擅长分布式架构、微服务治理、云原生等领域。 候选人&#xff1a;郑薪苦&#…...

项目中会出现的css样式

1.重复渐变边框 思路&#xff1a; 主要是用重复的背景渐变实现的 如图&#xff1a; <div class"card"><div class"container">全面收集中医癌毒临床医案&#xff0c;建立医案共享机制&#xff0c;构建癌毒病机知识图谱&#xff0c;便于医疗人…...

LeetCode[101]对称二叉树

思路&#xff1a; 对称二叉树是左右子树对称&#xff0c;而不是左右子树相等&#xff0c;所以假设一个树只有3个节点&#xff0c;那么判断这个数是否是对称二叉树&#xff0c;肯定是先判断左右两个树&#xff0c;然后再看根节点&#xff0c;这样递归顺序我们就确认了&#xff0…...

黑马k8s(四)

1.资源管理介绍 本章节主要介绍yaml语法和kubernetes的资源管理方式 2.YAML语言介绍 3.资源管理方式 命令式对象管理 dev下删除了pod&#xff0c;之后发现还有pod&#xff0c;把原来的pod删除了&#xff0c;重新启动了一个 命令式对象配置 声明式对象配置 命令式对象配置&…...

华为ensp实现跨vlan通信

要在网络拓扑中实现主机192.168.1.1、192.168.1.2和192.168.2.1之间的互相通信&#xff0c;需要正确配置交换机&#xff08;S5700&#xff09;和路由器&#xff08;AR3260&#xff09;&#xff0c;以确保不同网段之间的通信&#xff08;即VLAN间路由&#xff09;。 网络拓扑分析…...

TCPIP详解 卷1协议 十 用户数据报协议和IP分片

10.1——用户数据报协议和 IP 分片 UDP是一种保留消息边界的简单的面向数据报的传输层协议。它不提供差错纠正、队列管理、重复消除、流量控制和拥塞控制。它提供差错检测&#xff0c;包含我们在传输层中碰到的第一个真实的端到端&#xff08;end-to-end&#xff09;校验和。这…...

Java笔记4

第一章 static关键字 2.1 概述 以前我们定义过如下类&#xff1a; public class Student {// 成员变量public String name;public char sex; // 男 女public int age;// 无参数构造方法public Student() {}// 有参数构造方法public Student(String a) {} }我们已经知道面向…...

Matlab 垂向七自由度轨道车辆开关型半主动控制

1、内容简介 Matlab 229-垂向七自由度轨道车辆开关型半主动控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Matlab 短时交通流预测AR模型

1、内容简介 Matlab 230-短时交通流预测AR模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略城市道路短时交通流预测.pdf...

MYSQL之表的约束

表中真正约束字段的是数据类型, 但是只有数据类型约束就很单一, 也需要有一些额外的约束, 从而更好的保证数据的合法性, 从业务逻辑角度保证数据的正确性. 比如有一个字段是email, 要求是唯一的. 为什么要有表的约束? 表的约束: 表中一定要有各种约束, 通过约束, 让我们未来…...

使用ACE-Step在本地生成AI音乐

使用ACE-Step v1-3.5B开源模型从文本提示、标签和歌词创建完整的AI生成歌曲 — 无需云服务,无需API,仅需您的GPU。 这是由ACE Studio和StepFun开发的开源音乐生成模型。 在对数据隐私和云服务依赖性日益增长的担忧时代,ACE-Step将强大的文本转音乐生成完全离线,使其成为A…...

web 自动化之 Unittest 四大组件

文章目录 一、如何开展自动化测试1、项目需求分析&#xff0c;了解业务需求 web 功能纳入自动化测试2、选择何种方式实现自动化测试 二、Unittest 框架三、TestCase 测试用例四、TestFixture 测试夹具 执行测试用例前的前置操作及后置操作五、TestSuite 测试套件 & TestLoa…...

2025年渗透测试面试题总结-渗透测试红队面试七(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 渗透测试红队面试七 一百八十一、Shiro漏洞类型&#xff0c;721原理&#xff0c;721利用要注意什么&am…...

Mysql的索引,慢查询和数据库表的设计以及乐观锁和悲观锁

设计高性能数据表的原则 数据库设计经验和技巧 单张数据表的字段不宜过多&#xff08;20个&#xff09;&#xff0c;如果确实存在大量field,考虑拆成多张表或json text存储 数据表字段都是not null的&#xff0c;即使没有数据&#xff0c;最好也使用无意义的值填充&#xff0c…...

day012-软件包管理专题

文章目录 1. 生成随机密码2. 软件包管理2.1 类红帽系统2.1.1 安装软件包2.1.2 查找软件包2.1.3 查看软件包内容2.1.4 查看命令或文件属于哪个软件包2.1.5 重新安装软件包2.1.6 删除软件包2.1.7 升级2.1.8 rpm安装软件包2.1.9 rpm升级软件包2.1.10 rpm检查软件包文件是否改变 3.…...

学习黑客5 分钟深入浅出理解Windows Firewall

5 分钟深入浅出理解Windows Firewall &#x1f525; 大家好&#xff01;今天我们将探索Windows防火墙——这是Windows操作系统中的核心安全组件&#xff0c;负责控制进出计算机的网络流量。无论你是计算机初学者&#xff0c;还是在TryHackMe等平台上学习网络安全的爱好者&…...

node .js 启动基于express框架的后端服务报错解决

问题&#xff1a; node .js 用npm start 启动基于express框架的后端服务报错如下&#xff1a; /c/Program Files/nodejs/npm: line 65: 26880 Segmentation fault "$NODE_EXE" "$NPM_CLI_JS" "$" 原因分析&#xff1a; 遇到 /c/Program F…...

feign.RequestInterceptor 简介-笔记

1. feign.RequestInterceptor 简介 Feign 是一个声明式 Web 服务客户端&#xff0c;用于简化 HTTP 请求的编写与管理。feign.RequestInterceptor 是 Feign 提供的一个接口&#xff0c;用于在请求发出之前对其进行拦截和修改。这在微服务架构中非常有用&#xff0c;比如在请求中…...

软考错题(四)

在程序执行过程中&#xff0c;高速缓存cache与主存间的地址映射由硬件自动完成 以下关于两个浮点数相加运算的叙述中&#xff0c;正确的是首先进行对阶&#xff0c;阶码小的向阶码大的对齐 认证只能阻止主动攻击不能阻止被动攻击 BGP是外部网关协议 查看端口信息&#xff1…...

SSRF相关

SSRF(Server Side Request Forgery,服务器端请求伪造)&#xff0c;攻击者以服务器的身份发送一条构造好的请求给服务器所在地内网进行探测或攻击。 产生原理&#xff1a; 服务器端提供了能从其他服务器应用获取数据的功能&#xff0c;如从指定url获取网页内容、加载指定地址的图…...

供应链学习

供应链安全 供应链&#xff1a;整个业务系统中的节点&#xff08;一般是上游节点&#xff09; 乙方一般提供资源&#xff1a;人 软件 硬件 服务 如何寻找供应链 1.招投标信息&#xff1a;寻标包 例如&#xff1a;烟草 智能办公 2.网站本身指纹 例如&#xff1a; powered by xxx…...

力扣HOT100之二叉树:226. 翻转二叉树

这道题很简单&#xff0c;用递归来做&#xff0c;对于一个根节点来说&#xff0c;有两种情况我们不需要翻转&#xff1a;一是根节点为空&#xff0c;二是根节点为叶子节点。这很容易理解&#xff0c;当传入的节点不满足上面的两种情况时&#xff0c;我们就需要做一个翻转&#…...

如何让rabbitmq保存服务断开重连?保证高可用?

在 Spring Boot 集成 RabbitMQ 时&#xff0c;可以通过以下几种方式让 RabbitMQ 保存服务断开重连&#xff0c;以保证高可用&#xff1a; 配置自动重连 application.properties 配置 &#xff1a;在 Spring Boot 的配置文件 application.properties 中&#xff0c;可以设置 Ra…...

TCPIP详解 卷1协议 九 广播和本地组播(IGMP 和 MLD)

9.1——广播和本地组播&#xff08;IGMP 和 MLD&#xff09; IPv4可以使用4种IP地址&#xff1a;单播&#xff08;unicast&#xff09;、任播&#xff08;anycast&#xff09;、组播&#xff08;multicast&#xff09;和广播&#xff08;broadcast&#xff09;。 IPv6可以使用…...

全球变暖-bfs

1.不沉的就是4个方向没有海&#xff0c;一个大岛屿有一个不沉就行了&#xff0c;其余染色就好了 2.第一个bfs来统计总岛屿个数 3.第二个来统计不沉岛屿个数 4.一减就ac啦 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typede…...

DDD领域驱动开发

1. 现象: 软件设计质量最高的时候是第一次设计的那个版本&#xff08;通常是因为第一次设计时&#xff0c;业务技术沟通最充分&#xff0c;从业务技术整体视角出发设计系统&#xff09;。当第一个版本设计上线以后就开始各种需求变更&#xff0c;这常常又会打乱原有的设计。 2…...

【HarmonyOS 5】鸿蒙App Linking详解

【HarmonyOS 5】鸿蒙App Linking详解 一、前言 HarmonyOS 的 App Linking 功能为开发者提供了一个强大的工具&#xff0c;通过创建跨平台的深度聚合链接&#xff0c;实现用户在不同场景下的无缝跳转&#xff0c;极大地提升了用户转化率和应用的可用性。 其安全性、智能路由和…...

Android Studio 中 build、assemble、assembleDebug 和 assembleRelease 构建 aar 的区别

上一篇&#xff1a;Tasks中没有build选项的解决办法 概述&#xff1a; 在构建 aar 包时通常会在下面的选项中进行构建&#xff0c;但是对于如何构建&#xff0c;选择哪种方式构建我还是处于懵逼状态&#xff0c;所以我整理了一下几种构建方式的区别以及如何选择。 1. build…...

【爬虫】12306查票

城市代码&#xff1a; 没有加密&#xff0c;关键部分&#xff1a; 完整代码&#xff1a; import json import requests with open(rE:\学习文件夹&#xff08;关于爬虫&#xff09;\项目实战\12306\城市代码.json,r,encodingutf-8) as f:city_codef.read() city json.loads(c…...

火山RTC 7 获得远端裸数据

一、获得远端裸数据 1、获得h264数据 1&#xff09;、远端编码后视频数据监测器 /*** locale zh* type callback* region 视频管理* brief 远端编码后视频数据监测器<br>* 注意&#xff1a;回调函数是在 SDK 内部线程&#xff08;非 UI 线程&#xff09;同步抛出来的&a…...

请求参数:Header 参数,Body 参数,Path 参数,Query 参数分别是什么意思,什么样的,分别通过哪个注解获取其中的信息

在API开发中&#xff08;如Spring Boot&#xff09;&#xff0c;请求参数可以通过不同方式传递&#xff0c;对应不同的注解获取。以下是 Header参数、Body参数、Path参数、Query参数 的区别及对应的注解&#xff1a; Header 参数 ​ • 含义&#xff1a;通过HTTP请求头&#x…...

【Web/HarmonyOS】采用ArkTS+Web组件开发网页嵌套的全屏应用

文章目录 1、简介2、效果3、在ArkTs上全屏Web3.1、创建ArkTS应用3.2、修改模块化配置&#xff08;module.json5&#xff09;3.3、修改系统栏控制&#xff08;ArkTS代码&#xff09; 4、双网页嵌套Web实现5、ArkTSWeb技术架构的演进 1、简介 在鸿蒙应用开发领域&#xff0c;技术…...