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

C#开发合集

用C#轻松搞定m3u8视频下载与合并

嘿,程序员们!今天咱们来聊聊如何用C#写个小程序,轻松下载和合并m3u8视频文件。没错,就是那种分段的流媒体视频。准备好了吗?让我们开始吧!

准备工作

在动手之前,先确保你有以下工具:

  1. Visual Studio(或者你喜欢的任何C# IDE)
  2. FFmpeg(这个工具可别少了,确保它在你指定的路径下)

代码实现

下面的代码将帮助你完成这个任务。它的逻辑很简单:从数据库读取视频信息,下载视频分段,然后用FFmpeg合并成一个完整的mp4文件。

// 将以下代码粘贴到你的C#项目中
using System.Diagnostics;
namespace ConsoleApp1
{public class Demo{string RootPath = $"D:/Test/Demo";public async Task Main(){await InitFun();async Task InitFun(){// 从数据库读取数据List<dynamic> items = new List<dynamic>{new{FlagName = "A",Name="计时器 m3u8 ",Url="http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8"}};using (HttpClient client = new HttpClient()){foreach (var item in items){try{string flagName = item.FlagName; // 顶层目录string name = item.Name;          // 子目录string m3u8Url = item.Url;// 创建文件夹结构var date = DateTime.Now;string rootPath = $"{RootPath}/{date.Year}/{date.Month}/{flagName}/";// 创建顶层目录if (!Directory.Exists(rootPath)){Directory.CreateDirectory(rootPath);}// 创建子目录string subFolderPath = Path.Combine(rootPath, name);string outputDirectory = Path.Combine(subFolderPath, "ts"); // "ts" 文件夹string outputFilePath = Path.Combine(subFolderPath, $"{name}.mp4");if (!Directory.Exists(outputDirectory)){Directory.CreateDirectory(outputDirectory);}// 检查 URL 是否为 MP4 文件if (m3u8Url.EndsWith(".mp4", StringComparison.OrdinalIgnoreCase)){// 直接下载 MP4 文件Console.WriteLine($"Downloading MP4 directly from {m3u8Url}...");byte[] mp4Data = await client.GetByteArrayAsync(m3u8Url);await File.WriteAllBytesAsync(outputFilePath, mp4Data);Console.WriteLine($"Downloaded MP4 file to {outputFilePath}.");}else{string m3u8Content = await client.GetStringAsync(m3u8Url);string[] lines = m3u8Content.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);var downloadTasks = new List<Task>();// 下载每个分段视频foreach (var line in lines){if (line.EndsWith(".ts")){string segmentUrl = line.StartsWith("http") ? line : new Uri(new Uri(m3u8Url), line).ToString();string segmentFilePath = Path.Combine(outputDirectory, Path.GetFileName(segmentUrl));// 启动下载任务downloadTasks.Add(Task.Run(async () =>{try{Console.WriteLine($"Downloading {segmentUrl}...");byte[] segmentData = await client.GetByteArrayAsync(segmentUrl);await File.WriteAllBytesAsync(segmentFilePath, segmentData);}catch{}}));}}// 等待所有下载任务完成await Task.WhenAll(downloadTasks);//合并await MergeVideosWithFFmpeg(outputDirectory, outputFilePath);}}catch{Console.WriteLine($"Downloading Fail");}finally{}}}}return;}private async Task MergeVideosWithFFmpeg(string outputDirectory, string outputFilePath){try{string ffmpegPath = @"D:\Bin\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe"; // 确保FFmpeg在此路径下string concatFilePath = Path.Combine(outputDirectory, "concat.txt");// 创建合并文件using (StreamWriter writer = new StreamWriter(concatFilePath)){foreach (var tsFile in Directory.GetFiles(outputDirectory, "*.ts")){writer.WriteLine($"file '{tsFile}'");}}// 执行FFmpeg合并命令var ffmpegArgs = $"-f concat -safe 0 -i \"{concatFilePath}\" -c copy \"{outputFilePath}\"";var processStartInfo = new System.Diagnostics.ProcessStartInfo{FileName = ffmpegPath,Arguments = ffmpegArgs,RedirectStandardOutput = true,RedirectStandardError = true,UseShellExecute = false,CreateNoWindow = true};using (var process = new Process { StartInfo = processStartInfo }){try{process.Start();// 异步读取输出和错误信息var outputTask = process.StandardOutput.ReadToEndAsync();var errorTask = process.StandardError.ReadToEndAsync();// 等待进程退出,并设置超时if (process.WaitForExit(60000 * 2)) // 设置超时为 60*2 秒{// 输出读取结果string output = await outputTask;string error = await errorTask;if (process.ExitCode == 0){Console.WriteLine($"Merge completed for {outputFilePath}.");}else{Console.WriteLine($"FFmpeg exited with code {process.ExitCode}. Error: {error}");}}else{Console.WriteLine("FFmpeg process timed out.");}process.Kill(); // 杀死进程}finally{// 删除文件夹if (Directory.Exists(outputDirectory)){Directory.Delete(outputDirectory, true);Console.WriteLine($"Deleted directory {outputDirectory}.");}}}}catch{}}}}// 代码内容请参见上方给出的代码

步骤解析

  1. 创建C#控制台项目:打开Visual Studio,创建一个新的控制台应用程序。
  2. 粘贴代码:把上面的代码粘贴到 Program.cs 文件里。
  3. 配置路径:根据你的实际情况修改 RootPathffmpegPath 变量的值。
  4. 编译运行:编译并运行程序,看看效果!

注意事项

  • 确保引用了必要的命名空间,比如 System.Net.HttpSystem.IOSystem.Diagnostics
  • FFmpeg的路径一定要正确,确保工具安装无误。
    – FFmpeg教程(超级详细版)

运行结果

在这里插入图片描述

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

总结

通过这个小程序,你不仅能下载m3u8视频,还能把它们合并成一个完整的mp4文件。是不是很简单?

用C#获取“掌上高考”学校信息

嘿,大家好!今天我们来聊聊如何用C#编写一个程序,从“掌上高考”平台获取学校信息。这个程序不仅能获取学校的基本信息,还能提取特色专业、校园设施、就业政策等信息。准备好了吗?让我们开始吧!

准备工作

在开始之前,请确保你已经安装了以下工具:

  1. Visual Studio(或者你喜欢的任何C# IDE)
  2. Newtonsoft.Json库(用于处理JSON数据)

你可以在NuGet包管理器中安装Newtonsoft.Json:

Install-Package Newtonsoft.Json

代码实现

下面是程序的主要代码。它会从指定的API获取学校信息,并将其输出到控制台。

// 将以下代码粘贴到你的C#项目中using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.Text.RegularExpressions;namespace ConsoleApp1
{public class Main4{private readonly static string Root = "https://static-data.gaokao.cn";public async Task Main(){string[] strings = { "31" }; // 这里可以替换成需要查询的学校编码foreach (string item in strings){await GetSchoolInfo(item);}}static async Task GetSchoolInfo(string schoolCode){try{using (HttpClient client = new HttpClient()){string url = $"{Root}/www/2.0/school/{schoolCode}/info.json";HttpResponseMessage response = await client.GetAsync(url);if (response.IsSuccessStatusCode){string json = await response.Content.ReadAsStringAsync();JObject data = JObject.Parse(Regex.Unescape(json));if (data != null){var schoolInfo = JsonConvert.DeserializeObject<dynamic>(data["data"].ToString());Console.WriteLine("高校名称: " + schoolInfo?.name);Console.WriteLine("高校地址: " + schoolInfo?.address);Console.WriteLine("校园面积: " + schoolInfo?.area + "亩");Console.WriteLine("招办电话: " + schoolInfo?.phone);Console.WriteLine("招生官网: " + schoolInfo?.site);Console.WriteLine("校园官网: " + schoolInfo?.school_site);var tag = $"{schoolInfo?.level_name},{schoolInfo?.school_nature_name},{schoolInfo?.dual_class_name},{(schoolInfo?.f985 == "1" ? "985工程" : "")},{(schoolInfo?.f211 == "1" ? "211工程" : "")}";Console.WriteLine("学校等级特色标签: " + tag);var specialName = await GetNationFeature(schoolCode);Console.WriteLine("优势专业(特色专业): " + specialName);var dormitoryInfo = await GetDormitory(schoolCode);Console.WriteLine("住宿: " + dormitoryInfo.dormitory);Console.WriteLine("食堂: " + dormitoryInfo.canteen);Console.WriteLine("校园风光: " + dormitoryInfo.schoolImg);var reportInfo = await GetReportName(schoolCode);Console.WriteLine("就业报告: " + string.Join(',', reportInfo));var gradeLine = await GetGradeLine(schoolCode);Console.WriteLine("上一年 内蒙古本科一批分数: " + string.Join(',', gradeLine));Console.WriteLine("========================\n");}}else{Console.WriteLine("获取数据失败,状态码: " + response.StatusCode);}}}catch (Exception ex){Console.WriteLine("发生异常: " + ex.Message);}}// 其他方法(GetNationFeature, GetDormitory, GetReportName, GetGradeLine)请按需粘贴}
}

其他方法

在上面的代码中,我们定义了一些辅助方法来获取特色专业、校园设施、就业政策和分数线。这些方法的实现逻辑与 GetSchoolInfo 类似,都是通过HTTP请求获取JSON数据并进行解析。

注意事项

  • 请确保你在项目中引用了 System.Net.HttpNewtonsoft.Json 命名空间。
  • 根据需要替换学校编码(如 "31")以获取不同学校的信息。

总结

通过这个小程序,你可以轻松获取高校的详细信息,包括地址、面积、特色专业等。这对于想要了解学校的同学们来说,简直是一大利器!

明白了,感谢你的澄清!在这个上下文中,channel 是指通道代码,通常用于标识特定的商品或服务。接下来我会更新教程中的相关内容,以确保读者能够理解这一点。

使用C#抓取布宫票务小程序售票信息

大家好!今天我们将深入探讨如何使用C#编写一个程序,从布宫票务系统抓取可预订的票务信息。这个程序能够获取指定商品的售票信息,并检查明天是否可以预订票。准备好了吗?让我们开始吧!

准备工作

在开始之前,请确保你已经安装了以下工具:

  1. Visual Studio(或你喜欢的任何C# IDE)
  2. Newtonsoft.Json库(用于处理JSON数据)

你可以在NuGet包管理器中安装Newtonsoft.Json:

Install-Package Newtonsoft.Json

代码实现

下面是程序的主要代码。它会向指定API发送请求,获取票务信息,并将结果输出到控制台。

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;namespace ConsoleApp1
{public class Main3{static string token = "********"; // 请使用Fiddler抓取你的tokenstatic string channel = "2"; // 通道代码,替换为你需要查询的通道代码public async Task Main(){await GetSalesList(channel, token);}static async Task GetSalesList(string commodity_id, string token){using (HttpClient client = new HttpClient()){client.DefaultRequestHeaders.Add("token", token);var _postData = new{commodity_id};var postData = JsonConvert.SerializeObject(_postData);var _data = new StringContent(postData, Encoding.UTF8, "application/json");HttpResponseMessage response = await client.PostAsync($"https://yjtxcx.potalapalace.cn/addons/shopro/sales/make_date", _data);response.EnsureSuccessStatusCode();if (response.IsSuccessStatusCode){string responseContent = await response.Content.ReadAsStringAsync();Console.WriteLine(Regex.Unescape(responseContent));// 解析 JSON 数据var jsonDataObject = JsonConvert.DeserializeObject<RootObject>(responseContent);CheckForAvailableTickets(jsonDataObject);}}}static void CheckForAvailableTickets(RootObject jsonDataObject){// 获取当前日期和明天的日期DateTime currentDate = DateTime.Now.Date;DateTime tomorrowDate = currentDate.AddDays(1);// 查找明天是否可预订foreach (var item in jsonDataObject.data){DateTime date = DateTime.Parse(item.date);// 检查明天是否可以订票if (date == tomorrowDate && item.type == 1){Console.WriteLine($"明天可预订的日期是:{date}");// 在这里添加消息推送逻辑,例如发送通知break;}if (date >= currentDate && item.type == 1){string status = item.info == "售罄" ? "售罄" : "可预订";Console.WriteLine($"日期:{date:yyyy-MM-dd},状态:{status}");// 在这里添加消息推送逻辑,例如发送通知}}}public class Datum{public string date { get; set; }public int type { get; set; }public string info { get; set; }}public class RootObject{public int code { get; set; }public string msg { get; set; }public string time { get; set; }public List<Datum> data { get; set; }}}
}

代码解析

  1. Token 和 Channel:在代码中,token 是需要根据实际情况进行设置的,使用Fiddler抓取你的token。channel 是通道代码,代表你要查询的特定商品或服务。

  2. HttpClient:我们使用 HttpClient 类来发送POST请求,并将结果解析为JSON格式。

  3. 数据解析:通过 JsonConvert.DeserializeObject 方法将返回的JSON数据转换为C#对象,并检查可预订的票务信息。

  4. 日期检查:程序会检查明天的票是否可预订,并输出相关信息。

注意事项

  • 请确保你在项目中引用了 System.Net.HttpNewtonsoft.Json 命名空间。
  • 使用Fiddler抓取token时,请确保你已正确配置代理,并能够捕获HTTP请求。
    -Fiddler 抓取 https 设置详解

总结

通过这个小程序,你可以轻松获取布宫的票务信息,并检查明天是否可预订。这对于想要参观布宫的朋友们来说,绝对是个好帮手!

如果你在实现过程中遇到问题,或者对token的抓取有疑问,随时欢迎在下方留言讨论。希望这篇教程对你有所帮助!

相关文章:

C#开发合集

用C#轻松搞定m3u8视频下载与合并 嘿&#xff0c;程序员们&#xff01;今天咱们来聊聊如何用C#写个小程序&#xff0c;轻松下载和合并m3u8视频文件。没错&#xff0c;就是那种分段的流媒体视频。准备好了吗&#xff1f;让我们开始吧&#xff01; 准备工作 在动手之前&#xf…...

Chrome和edge浏览器如何为任何网站强制暗模式

前言 因为我的编辑器是黑色&#xff0c;可能是看的时间长了比较喜欢这种颜色了&#xff0c;感觉白色有些刺眼。尤其是看文章时&#xff0c;两边的空白纯白色&#xff0c;所以强迫症搜素设置了谷歌浏览器和edge如何设置成黑色。 Chrome和edge浏览器如何为任何网站强制暗模式 前…...

第二十章 Java多线程--JUC并发工具-CountDownLatch

目录 一、CountDownLatch基础概念 CountDownLatch 的核心概念 CountDownLatch 的常用方法 场景一&#xff1a;主线程等待多个子线程执行完毕 场景二&#xff1a;实现多个线程同时开始执行任务 场景三&#xff1a;统计报表优化 CountDownLatch 的局限性 结论 二、Count…...

限制对 etcd 的访问范围是确保 Kubernetes 集群安全的一个重要环节。

限制对 etcd 的访问范围是确保 Kubernetes 集群安全的一个重要环节。通常&#xff0c;etcd 只应当对 Kubernetes 控制平面的组件&#xff08;如 API Server、Controller Manager、Scheduler 等&#xff09;以及某些维护工具&#xff08;如备份工具&#xff09;开放访问权限&…...

shell脚本基础学习_总结篇(完结)

细致观看可以&#xff0c;访问shell脚本学习专栏&#xff0c;对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义&#xff1a; 2. 主要特点&#xff1a; 3. shell脚本的基本结构 4. S…...

Linux之网络基础

网络发展 网络的发展可以从人与人之间的工作模式开始谈起, 人与人的工作模式反应了机器与机器的工作模式: 1. 独立模式: 在网络发展的早期计算机间处于独立模式, 计算机之间相互独立 最开始计算机之间是独立运行的, 数据之间的交互需要人用软盘等存储介质拷贝过去, 一般涉及…...

《Vue零基础入门教程》第十课:属性绑定指令

往期内容 《Vue零基础入门教程》第一课&#xff1a;Vue简介 《Vue零基础入门教程》第二课&#xff1a;搭建开发环境 《Vue零基础入门教程》第三课&#xff1a;起步案例 《Vue零基础入门教程》第四课&#xff1a;应用实例 《Vue零基础入门教程》第五课&#xff1a;挂载 《…...

RabbitMQ 安装延迟队列插件 rabbitmq_delayed_message_exchange

前言&#xff1a; RabbitMQ 延迟队列插件&#xff08;rabbitmq_delayed_message_exchange&#xff09;是一个社区开发的插件&#xff0c;它为 RabbitMQ 添加了支持延迟消息的功能。通过这个插件&#xff0c;用户可以创建一种特殊的交换机类型 x-delayed-message&#xff0c;该…...

MATLAB中Simulink的基础知识

Simulink是MATLAB中的一种可视化仿真工具&#xff0c; 是一种基于MATLAB的框图设计环境&#xff0c;是实现动态系统建模、仿真和分析的一个软件包&#xff0c;被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。 Simulink提供一个动态系统建模、仿真和…...

Swift——单例模式

单例是软件设计常用的一种模式&#xff0c;它的核心结构中只有一个被称为单例的特殊类&#xff0c;通过单例模式可以保证应用该模式的类只有一个实例化对象&#xff0c;其作用就是能够使类中的一个对象成为系统中的唯一实例。 单例的特点&#xff1a; 某个类只有一个实例化对象…...

百度智能云千帆大模型平台引领企业创新增长

本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容&#xff0c;请访问&#xff1a; https://baiduworld.baidu.com 首先&#xff0c;跟大家分享一张图&#xff0c;这个是我们目前大模型应用落地的场景分布。可以看到&#xff0c;大模型…...

scala统计词频

目标&#xff1a;统计词频 &#xff08;1&#xff09;从文件1.tst&#xff0c;读入内容&#xff0c;保存在一个字符串中。 &#xff08;2&#xff09;统计字符串中&#xff0c;每个单词出现的频率 &#xff08;3&#xff09;对结果进行排序 &#xff08;4&#xff09;把最后…...

CTF之密码学(费纳姆密码)

一、作为二进制替换密码的费纳姆密码 定义&#xff1a;费纳姆密码是一种由二进制产生的替换密码&#xff0c;也被称为弗纳姆密码&#xff08;Vernam cipher&#xff09;。它采用二进制表示法&#xff0c;将明文转化为二进制数字&#xff0c;并通过与密钥进行模2加法运算来产生密…...

postgresql按照年月日统计历史数据

1.按照日 SELECT a.time,COALESCE(b.counts,0) as counts from ( SELECT to_char ( b, YYYY-MM-DD ) AS time FROM generate_series ( to_timestamp ( 2024-06-01, YYYY-MM-DD hh24:mi:ss ), to_timestamp ( 2024-06-30, YYYY-MM-DD hh24:mi:ss ), 1 days ) AS b GROUP BY tim…...

Python 网络爬虫进阶:动态网页爬取与反爬机制应对

在上一篇文章中&#xff0c;我们学习了如何使用 Python 构建一个基本的网络爬虫。然而&#xff0c;在实际应用中&#xff0c;许多网站使用动态内容加载或实现反爬机制来阻止未经授权的抓取。因此&#xff0c;本篇文章将深入探讨以下进阶主题&#xff1a; 如何处理动态加载的网…...

YOLOv11融合PIDNet中的PagFM模块及相关改进思路

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 YOLOv11改进汇总贴&#xff1a;YOLOv11及自研模型更新汇总 《PIDNet: A Real-time Semantic Segmentation Network Inspired by PID Controllers》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/pdf/2…...

使用Python实现自动化邮件通知:当长时程序运行结束时

使用Python实现自动化邮件通知&#xff1a;当长时程序运行结束时 前提声明 本代码仅供学习和研究使用&#xff0c;不得用于商业用途。请确保在合法合规的前提下使用本代码。 目录 引言项目背景项目设置代码分析 导入所需模块定义邮件发送函数发送邮件 实现步骤结语全部代码…...

smb cifs samba smbpasswd 笔记241127

smb cifs samba smbpasswd 笔记241127 SMB、CIFS和Samba都是与文件共享相关的技术&#xff0c;它们在不同的层面上发挥着作用。以下是关于SMB、CIFS和Samba的详细解释&#xff1a; SMB&#xff08;Server Message Block&#xff09; 定义&#xff1a;SMB&#xff08;Server …...

Spring MVC练习(前后端分离开发实例)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词:二十五弦弹夜月&#xff0c;不胜清怨却飞来&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4…...

使用 pycharm 新建不使用 python 虚拟环境( venv、conda )的工程

有时候我们发现一个好玩的 demo&#xff0c;想赶快在电脑上 pip install 一下跑起来&#xff0c;发现因为 python 的 venv、conda 环境还挺费劲的&#xff0c;因为随着时间的发展&#xff0c;之前记得很清楚的 venv、conda 的用法&#xff0c;不经常使用&#xff0c;半天跑不起…...

英语知识网站开发:Spring Boot框架应用

3系统分析 3.1可行性分析 通过对本英语知识应用网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本英语知识应用网站采用SSM框架&#xff0c;JAVA作为开发语…...

Pandas 数据读取与导出

Pandas 是一个强大的 Python 库&#xff0c;用于数据处理和分析。它提供了许多函数来读取和导入数据&#xff0c;支持多种文件格式&#xff0c;如 CSV、Excel、SQL 数据库、JSON 等。以下是一些常用的数据读取和导出方法&#xff1a; 常用方法 格式文件格式读取函数写入&…...

Day49 | 动态规划 :线性DP 判断子序列两个字符串的删除操作

Day49 | 动态规划 &#xff1a;线性DP 判断子序列&&两个字符串的删除操作 动态规划应该如何学习&#xff1f;-CSDN博客 动态规划学习&#xff1a; 1.思考回溯法&#xff08;深度优先遍历&#xff09;怎么写 注意要画树形结构图 2.转成记忆化搜索 看哪些地方是重复…...

HDR视频技术之三:色度学与颜色空间

HDR 技术的第二个理论基础是色度学。从前面的内容中可以了解到&#xff0c;光学以及人类视觉感知模型为人类提供了解释与分析人类感知亮度的理论基础&#xff0c;但是 HDR 技术不仅仅关注于提升图像与视频的亮度范围&#xff0c;同时也关注于提供更加丰富的色彩。因此&#xff…...

nginx和netcore加载常见的3D模型

背景 数字孪生带火了3D版的Web世界&#xff0c;3D模型格式也是众多&#xff0c;常见的glb适合web传输&#xff0c;fbx&#xff0c;gltf&#xff0c;obj&#xff0c;unity等常用于模型编辑和处理。我们在用netcore或者wasm加载这些3D模型文件时&#xff0c;一般都需要手工增加M…...

ABAP开发学习——标准GUI状态模板的复制

补充一下创建了GUI状态后复制标准状态的方法 首先创建GUI状态 此时按钮全部都是空的 点击顶部的附加-调整模板 选择列表查看器 应用成功&#xff0c;下一步点击激活即可 另外需要注意&#xff0c;功能键中的三个图标的代码并不是习惯性写的”BACK、EXIT、CANCEL",在这个标…...

酷!用豆包MarsCode 写了一个五子棋小游戏

作者&#xff1a;一起重学前端 前言 2017 年&#xff0c;当时大学三本毕业前端工作一年&#xff0c;去深圳找工作面试&#xff0c;在拉勾上海投&#xff0c;接到某公司前端开发团队回复询问邮箱账号&#xff0c;喜滋滋的以为可以有面试了。一看邮箱&#xff0c;抛给我一道面试…...

IntelliJ IDEA 中,自动导包功能

在 IntelliJ IDEA 中&#xff0c;自动导包功能可以极大地提高开发效率&#xff0c;减少手动导入包所带来的繁琐和错误。以下是如何在 IntelliJ IDEA 中设置和使用自动导包功能的详细步骤&#xff1a; 一、设置自动导包 打开 IntelliJ IDEA&#xff1a; 启动 IntelliJ IDEA 并打…...

c#异步编程(async/await)

注&#xff1a;下文摘自ChatGPT&#xff0c;总结与案例都非常完善&#xff0c;可以快速理解并应用 0&#xff1a;使用场景 在winform界面程序中&#xff0c;在ui操作中涉及到一些耗时的等待操作&#xff0c;使用线程自己处理已经显得力不从心&#xff0c;如何能更好的实现&am…...

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)

使用vcpkg自动链接tinyxml2时莫名链接其他库&#xff08;例如boost&#xff09; vcpkg的自动链接功能非常方便&#xff0c;但在某些情况下会出现过度链接的问题。 链接错误症状 以tinyxml2为例&#xff0c;程序中调用tinyxml2的函数后&#xff0c;若vcpkg中同时存在opencv和…...

cocoscreater3.8.4生成图集并使用

1.安装texturepacker&#xff0c;去官网下载https://www.codeandweb.com/texturepacker 2.将图片拖动进来&#xff0c;即可自动生成精灵表&#xff0c;这里输出选用cocos2d-x&#xff0c;打包用免费版的“基本”就行&#xff0c;高级模式是收费的&#xff0c;然后点击“发布精…...

Ettercap工具使用说明

文章目录 Ettercap 简介Ettercap 的主要功能Ettercap 的安装在 Kali Linux&#xff08;或基于 Debian 的系统&#xff09;上安装&#xff1a;在其他操作系统上&#xff1a; Ettercap 的使用方式1. 基本模式2. MITM 攻击ARP 欺骗DNS 欺骗 3. 嗅探模式 常用插件防御建议 Ettercap…...

Linux 如何创建逻辑卷并使用

一、逻辑卷的介绍 生成环境中逻辑卷使用率很高 逻辑卷的诞生&#xff1a;如果对磁盘直接使用fdisk分区&#xff0c;那么这中分区&#xff0c;我们叫做Linux的标准分区&#xff0c;Linux的标准分区格式化成文件系统之后&#xff0c;挂载使用&#xff0c;那么一旦文件系统的空间…...

laravel-operate

php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear 1、查看artisan所有命令&#xff1b; php artisan list 2、查看命令描述及参数和选项&#xff1b; php artisan&#xff08;n.工匠、技工&#xff09; help migration&…...

探索Python WebSocket新境界:picows库揭秘

文章目录 探索Python WebSocket新境界&#xff1a;picows库揭秘第一部分&#xff1a;背景介绍第二部分&#xff1a;picows库概述第三部分&#xff1a;安装picows库第四部分&#xff1a;简单库函数使用方法第五部分&#xff1a;场景应用第六部分&#xff1a;常见Bug及解决方案第…...

海康VsionMaster学习笔记(学习工具+思路)

一、前言 VisionMaster算法平台集成机器视觉多种算法组件&#xff0c;适用多种应用场景&#xff0c;可快速组合算法&#xff0c;实现对工件或被测物的查找测量与缺陷检测等。VM算法平台依托海康威视在图像领域多年的技术积淀&#xff0c;自带强大的视觉分析工具库&#xff0c;可…...

Java面试题、八股文——JVM篇最终篇

1.如何选择垃圾收集器&#xff1f; 选择合适的垃圾收集器&#xff08;Garbage Collector, GC&#xff09;对于优化Java应用程序的性能至关重要。不同的应用场景和系统需求可能需要不同类型的垃圾收集器来满足。以下是一些考虑因素以及常见的垃圾收集器选项&#xff0c;帮助您做…...

C++ 11重点总结2

1C11多线程 主要对少用的知识点进行详细描述&#xff0c;用的多的就给示例。照猫画虎 #include<thread> // 默认构造函数 thread() // 初始化构造函数 template<class Fn, class... Args> explicit thread(Fn&& fn, Args&&... args) // 移动构造…...

什么是 C++ 中的函数对象?它有什么特点?

在 C 中&#xff0c;函数对象&#xff08;Function Object&#xff09;是一种可调用对象&#xff0c;它允许像函数一样被调用&#xff0c;但实际上它可能并不是真正的函数。函数对象可以是以下几种类型之一&#xff1a; 普通函数&#xff1a; 一个普通的、定义在命名空间或类…...

Golang 反射

一、Go反射的应用场景 &#xff08;一&#xff09;对象序列化和反序列化 场景描述 在处理网络通信&#xff0c;数据存储等场景中&#xff0c;需要将对象转换为字节流&#xff08;序列化&#xff09;以便传输或存储&#xff0c;在接收端再将字节流转换回对象&#xff08;反序列…...

hhdb数据库介绍(10-7)

OEM管理 为方便更换管理平台的产品Logo以及产品名称信息。引入“OEM管理功能”对外提供可视化更新Logo以及产品名称信息的入口。 功能入口&#xff1a; 具有管理权限的用户登录平台&#xff0c;通过 OEM管理的超链接进入功能页面&#xff0c;超链接路径需要在原访问页面url的…...

RabbitMQ的预取值详解

RabbitMQ的预取值&#xff08;Prefetch Value&#xff09;是一个关键概念&#xff0c;它决定了消费者在从队列中获取消息时&#xff0c;一次性可以获取的消息数量。这一机制对于优化消息分发和消费者的负载均衡至关重要。 什么是RabbitMQ的预取值&#xff1f; 预取值是指消费者…...

mysql 触发器进入历史

一、触发器 MySQL 触发器&#xff08;Triggers&#xff09;是一种数据库对象&#xff0c;它与表关联&#xff0c;能在特定的事件&#xff08;如插入、更新或删除&#xff09;发生时自动执行一些指定的操作。使用触发器可以帮助我们自动维护数据库的完整性、一致性&#xff0c;…...

通过数巅能源大模型降本增效

在能源行业中&#xff0c;数据的有效利用对于企业的决策和运营至关重要。随着业务的发展&#xff0c;企业面临着数据分散、数据分析效率低、报告生成耗时等问题&#xff0c;制约了企业的发展和竞争力的提升。 数巅能源大模型解决方案 数巅科技推出了能源大模型解决方案&#x…...

如何编写出色的技术文档

目录 ​编辑 1. 明确文档目的和受众 目的的重要性 了解受众 2. 收集和组织信息 信息收集的技巧 组织信息 3. 规划文档结构 结构规划的重要性 结构规划的步骤 4. 编写内容 语言和风格 内容的组织 编写技巧 5. 审阅和测试 审阅的重要性 测试的必要性 6. 版本控…...

摄像头原始数据读取——gstreamer(gst_parse_launch)

摄像头原始数据读取——gstreamer(gst_parse_launch) #include <stdio.h> #include <string.h> #include <stdlib.h>#ifdef __cplusplus extern "C" { #endif#include <gst/gst.h>#ifdef __cplusplus }; #endifstatic gboolean bus_msg_tim…...

矩阵/矩阵乘法/特征值/特征向量的讲解

线性代数里有很多的概念&#xff0c;很多概念是有几何意义的&#xff0c;了解了几何意义可能会更好的理解各种概念及其相互之间的关系。 矩阵&#xff1a; 矩阵是一个变换&#xff0c;一个坐标系到另一个坐标系的变换。矩阵里的各个参数&#xff0c;代表了如何进行变换。 矩阵…...

docker-compose搭建xxl-job、mysql

docker-compose搭建xxl-job、mysql 1、搭建docker以及docker-compose2、下载xxl-job需要数据库脚本3、创建文件夹以及docker-compose文件4、坑来了5、正确配置6、验证-运行成功 1、搭建docker以及docker-compose 略 2、下载xxl-job需要数据库脚本 下载地址&#xff1a;https…...

《图像形态学运算全解析:原理、语法及示例展示》

简介&#xff1a; 本文详细介绍了图像形态学中的多种运算&#xff0c;包括腐蚀、膨胀、开运算、闭运算、形态学梯度运算、礼帽运算以及黑帽运算。分别阐述了各运算的原理、语法格式&#xff0c;并通过 Python 代码结合具体示例图片&#xff08;如erode.JPG、dilate.JPG、close.…...

【面试分享】C++ 中结构体(struct)和类(class)的区别

在 C中&#xff0c;结构体&#xff08;struct&#xff09;和类&#xff08;class&#xff09;有一些相似之处&#xff0c;但也存在一些重要的区别&#xff1a; 一、默认访问权限 结构体&#xff1a; 在 C中&#xff0c;结构体的默认成员访问权限是public&#xff08;公有&…...