2025-09-25
C#
00

摘要

HTMLAgilityPack 是一个开源的.NET库,旨在帮助开发人员处理和操作HTML文档。它提供了解析HTML文档、查询DOM元素以及修改HTML内容的功能。HTMLAgilityPack 基于XPath和LINQ查询,使得开发者能够以类似于操作XML文档的方式来操作HTML文档。这使得从复杂的HTML结构中提取所需数据变得轻而易举。

正文

HTMLAgilityPack 主要用于以下几个方面:

  1. 解析HTML文档:HTMLAgilityPack 可以将原始的HTML文档解析成一个DOM(文档对象模型)树,使开发者能够轻松地遍历和操作HTML元素。
  2. 查询和选择元素:通过使用XPath表达式或LINQ查询,您可以轻松地选择和定位HTML文档中的特定元素,从而实现数据的抽取和操作。
  3. 修改HTML内容:您可以使用HTMLAgilityPack来添加、删除或修改HTML元素和属性,以满足特定的需求。
  4. HTML格式化与转换:HTMLAgilityPack 还允许您将HTML文档格式化为漂亮的字符串或转换为其他格式,如纯文本或Markdown。

常用方法与学用属性

以下是一些常用的HTMLAgilityPack方法和属性,以及它们的用途:

  1. HtmlDocument.Load(string path):从指定路径加载HTML文档。
  2. HtmlDocument.LoadHtml(string html):从字符串加载HTML文档。
  3. HtmlDocument.DocumentNode:获取整个HTML文档的根节点。
  4. SelectSingleNode(string xpath):根据XPath表达式选择单个节点。
  5. SelectNodes(string xpath):根据XPath表达式选择多个节点。
  6. InnerText:获取或设置元素的文本内容。
  7. OuterHtml:获取或设置元素及其内部内容的HTML。
  8. Attributes:获取元素的属性集合。
  9. AppendChild(HtmlNode newChild):将新节点添加为子节点。
  10. Remove():从文档中移除当前节点。

Nuget安装 HtmlAgilityPack库

2025-09-25
C#
00

摘要

RestSharp 是一个用于在 C# 中发送 HTTP 请求的开源库。它简化了与 RESTful API 进行交互的过程,使开发人员可以轻松地发送 GET、POST、PUT、DELETE 等 HTTP 请求,并处理响应数据。RestSharp 提供了一种简洁的方式来构建和发送 HTTP 请求,使得与服务器进行数据交换变得更加容易。

正文

主要应用场景包括:

  • 与 RESTful API 进行通信,获取数据或执行操作。
  • 在客户端应用程序中访问 Web 服务。
  • 与第三方 API 进行交互,如社交媒体平台、支付网关等。
  • 进行 Web 数据抓取和爬虫。

好处

  • 简化了 HTTP 请求的构建和发送过程。
  • 提供了易于使用的接口,降低了与 RESTful API 交互的复杂性。
  • 支持异步请求,避免阻塞主线程。
  • 跨平台支持,可以在 Windows、Linux、macOS 等操作系统上运行。

常用方法

  • Execute: 执行一个请求并返回响应数据。
  • ExecuteAsync: 异步地执行一个请求并返回响应数据。
  • AddParameter: 添加请求参数,如查询字符串、请求体等。
  • AddHeader: 添加请求头。
  • AddJsonBody: 添加 JSON 格式的请求体。
  • AddFile: 添加文件作为请求的一部分。
  • AddCookie: 添加 Cookie。
  • AddUrlSegment: 替换 URL 中的占位符。

常用属性

  • BaseUrl: 设置请求的基础 URL。
  • Timeout: 设置请求的超时时间。
  • Method: 设置请求的 HTTP 方法,如 GET、POST、PUT、DELETE 等。
  • RequestFormat: 设置请求的数据格式,如 XML、JSON 等。
  • Parameters: 获取或设置请求的参数列表。
  • Headers: 获取或设置请求的头部信息。
  • StatusCode: 获取响应的 HTTP 状态码。
  • Content: 获取响应的原始内容。
2025-09-25
C#
00

摘要

Quartz.net 是一个功能强大的用于调度任务的开源库,它允许你在指定的时间点或时间间隔触发任务。它被广泛用于 .NET 平台中的任务调度和定时任务管理。Quartz.net 提供了丰富的功能和灵活的调度选项,可以用于各种场景,如定时执行任务、后台作业、定时发送邮件等。

image.png

正文

Quartz.net 的主要作用是在指定的时间点或时间间隔执行任务。它允许你创建定时任务,根据特定的触发条件来调度任务,以及管理任务的状态、暂停和恢复任务等。

常用属性

  1. Scheduler:调度器对象,用于创建和管理任务。
  2. Trigger:触发器对象,定义任务的触发条件,如时间点或时间间隔。
  3. JobDetail:任务详情对象,定义要执行的任务。
  4. CronExpression:Cron 表达式,用于定义复杂的时间触发规则。
2025-09-25
C#
00

摘要

C#中的IDGen是一个非常实用的C#实现的Twitter Snowflake算法的ID生成器,它能够为C#应用程序提供高效、全局唯一的ID生成功能,特别是在高并发场景下,这个功能尤为重要。

Twitter Snowflake算法是一种非常棒的方法,用于生成全世界独一无二的ID。它基于当前时间和机器时钟的微秒级别差异,可以保证在1亿年内生成的ID都是独一无二的。这个算法非常适合在高并发的场景下使用,因为它能够避免出现ID冲突,从而提高系统的性能和稳定性。

在C#中,IDGen就是一个基于Twitter Snowflake算法实现的ID生成器。它的主要作用是为C#应用程序生成全局唯一的ID,可以通过简单的调用来实现。与其他ID生成器相比,IDGen具有以下优点:

  1. 高效:IDGen能够在高并发场景下生成高效、全局唯一的ID,可以避免ID冲突,提高系统的性能和稳定性。
  2. 全局唯一:IDGen生成的ID是全局唯一的,可以确保在任何时候都不会发生ID冲突。
  3. 支持多种数据类型:IDGen支持多种数据类型的ID生成,包括整数、字符串等,可以根据应用程序的需要进行灵活选择。
  4. 易于使用:IDGen非常易于使用,只需要简单的调用即可实现高效、全局唯一的ID生成。

正文

nuget 安装 IDGen库

image.png

2025-09-25
C#
00

摘要

在C#中,TaskScheduler是一种非常有用的功能,它允许您在指定的时间或间隔内执行任务。TaskScheduler是一个抽象类,它提供了一个通用的方法来计划和执行任务。您可以使用TaskScheduler来调度多个任务,并且在多线程环境中控制它们的执行。

正文

写一个继承TaskScheduler的类

C#
public class MyScheduler : TaskScheduler { protected override void QueueTask(Task task) { // 将任务排队到线程池中 ThreadPool.QueueUserWorkItem(_ => TryExecuteTask(task)); } protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued) { // 如果当前线程是调度器的线程,则在当前线程内执行任务 if (taskWasPreviouslyQueued && Thread.CurrentThread.IsThreadPoolThread) return TryExecuteTask(task); return false; } protected override IEnumerable<Task> GetScheduledTasks() { // 此方法用于调度器的内部追踪,不要求实现 return Enumerable.Empty<Task>(); } }