<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[q__y__L的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/q__y__L</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; q__y__L]]></copyright><item><title><![CDATA[记一次与DeepSeek关于AI的对话]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/151118693</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/151118693</guid><author>q__y__L</author><pubDate>Tue, 02 Sep 2025 18:13:56 +0800</pubDate><description><![CDATA[本文探讨了在虚拟世界中如何模拟现实中的感知机制。作者分析指出，现实世界中人获取信息主要通过事件驱动与轮询的混合模式，而游戏开发中通常采用事件驱动架构。针对去中心化虚拟世界的构建，提出了将声音、光线等建模为独立实体，通过物理引擎模拟传播和交互的方法。文章还讨论了如何在虚拟世界中实现自主探索，建议建立客观的物理层基础设施，赋予Agent传感器和决策能力，使程序员角色从&quot;造物主&quot;转变为&quot;立法者&quot;，仅制定基础规则而非干预个体行为。这种设计既保持了世界的客观性，又保证了Agen]]></description><category></category></item><item><title><![CDATA[C#项目上传git常见的忽略项目和推荐配置]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/150220299</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/150220299</guid><author>q__y__L</author><pubDate>Mon, 11 Aug 2025 17:15:11 +0800</pubDate><description><![CDATA[本文总结了.NET项目中需要忽略提交的8类文件目录：1)编译生成和临时文件（如bin/、obj/）；2)依赖项目录（如packages/）；3)用户特定文件（如IDE配置文件）；4)日志和运行时文件；5)测试相关文件；6)发布目录；7)包含敏感信息的文件；8)其他IDE临时文件。这些文件或目录建议通过.gitignore配置排除，避免将自动生成、本地配置或敏感信息提交到版本控制系统。]]></description><category></category></item><item><title><![CDATA[C# WaitHandle类的几个有用的函数]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/149933693</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/149933693</guid><author>q__y__L</author><pubDate>Tue, 05 Aug 2025 13:56:04 +0800</pubDate><description><![CDATA[摘要：本文介绍了.NET中WaitHandle类的三种关键同步方法。WaitAny允许线程等待多个同步对象中的任意一个触发，返回触发对象的索引；WaitAll要求所有指定对象都触发才继续执行，适合多任务同步场景；SignalAndWait则原子性地执行&quot;发出信号+等待&quot;两步操作，常用于线程间精确协调。这三种方法都支持超时控制，可处理不同类型的同步对象（如Mutex、Semaphore等），是多线程编程中解决复杂同步问题的重要工具。使用时需注意线程限制和潜在死锁风险。]]></description><category></category></item><item><title><![CDATA[C# 线程同步（四）事件等待句柄——Event Wait Handle]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/149901902</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/149901902</guid><author>q__y__L</author><pubDate>Tue, 05 Aug 2025 11:18:57 +0800</pubDate><description><![CDATA[本文系统介绍了.NET中的线程同步信号构造，重点对比了AutoResetEvent、ManualResetEvent、CountdownEvent和EventWaitHandle四种核心组件。AutoResetEvent通过自动重置机制实现单次线程通知，ManualResetEvent则允许广播式通知，CountdownEvent专为多线程协同设计，EventWaitHandle作为基础类支持跨进程同步。文章详细解析了各构造的适用场景、性能差异及典型应用模式，包括生产者-消费者模型和双向信号传递，并展示了线]]></description><category></category></item><item><title><![CDATA[C#线程同步（三）线程安全]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/149838727</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/149838727</guid><author>q__y__L</author><pubDate>Fri, 01 Aug 2025 18:44:27 +0800</pubDate><description><![CDATA[本文系统探讨了.NET中的线程安全实现策略。主要内容包括：1.线程安全基础概念，指出完全线程安全实现的高成本和性能损耗；2.NET框架类型的线程安全特性，强调静态成员线程安全而实例成员非线程安全的原则；3.应用服务中的线程安全实践，重点分析无状态设计和服务端缓存的实现方案；4.UI程序的线程管理模型，阐述WPF/WinForms的线程关联性特点和跨线程访问机制；5.不可变对象的线程安全优势，介绍如何通过不可变性简化多线程编程。文章提供了从基础理论到实际应用场景的完整线程安全解决方案，并特别指出了.NET 4]]></description><category></category></item><item><title><![CDATA[C#线程同步（二）锁]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/149836050</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/149836050</guid><author>q__y__L</author><pubDate>Fri, 01 Aug 2025 17:32:52 +0800</pubDate><description><![CDATA[本文系统介绍了C#中线程同步的几种核心机制：1）lock关键字及其底层Monitor实现，包括异常处理改进；2）同步对象的选择原则与注意事项；3）锁的使用时机、原子性保证和嵌套锁特性；4）死锁成因与防范策略；5）锁的性能影响与优化建议；6）跨进程同步的Mutex机制；7）控制并发度的Semaphore。重点强调了线程安全的基本原则、常见陷阱及最佳实践，为开发者构建健壮的多线程应用提供了全面指导。]]></description><category></category></item><item><title><![CDATA[C# 线程同步（一）同步概念介绍]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/149099585</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/149099585</guid><author>q__y__L</author><pubDate>Thu, 03 Jul 2025 19:40:31 +0800</pubDate><description><![CDATA[本文介绍了线程同步的核心概念与机制。首先阐述了线程阻塞的概念，即线程暂停执行时释放CPU资源的状态，并分析了四种解除阻塞的方式。其次对比了阻塞等待与轮询等待两种同步策略，指出阻塞等待更高效但轮询适合微秒级场景。文章还详细讲解了通过ThreadState属性检测线程状态的实用方法，强调其仅适用于诊断而非同步控制。全文系统梳理了线程同步的四大类别：简单阻塞方法、锁定构造、信号机制和非阻塞同步，为理解多线程编程中的同步问题提供了清晰框架。]]></description><category></category></item><item><title><![CDATA[C# 多线程（三）线程池]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/149066531</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/149066531</guid><author>q__y__L</author><pubDate>Wed, 02 Jul 2025 14:53:48 +0800</pubDate><description><![CDATA[每当启动一个新线程时，系统都需要花费数百微秒来分配资源，例如创建独立的局部变量栈空间。默认情况下，每个线程还会占用约1MB内存。线程池通过共享和回收线程来消除这些开销，使得多线程技术可以应用于非常细粒度的场景而不会造成性能损失。这在利用多核处理器以"分而治之"方式并行执行计算密集型代码时尤为有用。。一旦达到限制，新任务将进入队列，只有当前线程完成任务后才能启动。这使得高并发应用（如Web服务器）的实现成为可能。（异步方法模式是一种更高级的技术，它能更高效地利用线程池中的线程，我们会在后面文章讲解）。]]></description><category></category></item><item><title><![CDATA[C# 多线程（二）创建和启动线程]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/149053452</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/149053452</guid><author>q__y__L</author><pubDate>Wed, 02 Jul 2025 10:47:59 +0800</pubDate><description><![CDATA[本文介绍了C#多线程编程中的关键知识点：1. 参数传递的两种方式（lambda表达式和ParameterizedThreadStart），并指出lambda捕获变量的注意事项；2. 线程命名对调试的帮助；3. 前台/后台线程的区别，后台线程在程序退出时会被强制终止；4. 线程优先级设置及其局限性；5. 多线程中的异常处理机制，强调必须在每个线程入口处单独处理异常。文章还提供了线程创建的基本示例和常见问题的解决方案，为C#多线程开发提供了实用指导。]]></description><category></category></item><item><title><![CDATA[C# 多线程（一）基础概念]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/149028635</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/149028635</guid><author>q__y__L</author><pubDate>Tue, 01 Jul 2025 16:25:40 +0800</pubDate><description><![CDATA[需要注意的是，线程调度和切换（当活跃线程数量超过CPU核心数时）会带来资源和CPU开销，同时线程的创建和销毁也需要成本。因此，应当尽可能减少线程交互，坚持使用简单可靠的设计方案。不同进程之间完全隔离，而线程的隔离程度则较为有限——具体来说，同一应用程序中的线程会共享（堆）内存。这也正是线程的价值所在：例如，一个线程可以在后台获取数据，而另一个线程则能实时显示接收到的数据。线程调度器确保所有活动线程都能分配到适当的执行时间，同时保证处于等待或阻塞状态（例如在独占锁或用户输入上）的线程不会消耗CPU时间。]]></description><category></category></item><item><title><![CDATA[C# AOP编程]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/148118443</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/148118443</guid><author>q__y__L</author><pubDate>Wed, 21 May 2025 19:45:43 +0800</pubDate><description><![CDATA[C#中的AOP（面向切面编程）框架主要分为编译时织入和动态代理两大类。编译时织入框架如PostSharp和AspectInjector，在编译时将切面代码织入目标方法，运行时性能较好，但可能增加编译时间。动态代理框架如Autofac，通过拦截器在运行时动态插入切面代码，适合高频调用场景，但可能带来额外性能开销。文章通过AspectInjector和Autofac的示例，展示了如何在方法执行前后插入日志记录代码，分别演示了编译时织入和动态代理的实现方式。]]></description><category></category></item><item><title><![CDATA[C#在函数执行前插入代码的办法]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/148117331</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/148117331</guid><author>q__y__L</author><pubDate>Wed, 21 May 2025 15:41:19 +0800</pubDate><description><![CDATA[本文介绍了在C#中不修改原函数代码的情况下插入额外执行逻辑的三种方法：1) 装饰器模式，通过包装类在执行前后添加代码；2) 事件机制，需在函数内部预置事件触发点；3) AOP框架（如PostSharp），可动态注入代码。其中装饰器模式需额外编码但思路直观，事件机制需要预先设计，AOP最为灵活但依赖特定框架。三种方法各有优缺点，可根据实际需求选择使用。&lt;｜end▁of▁sentence｜&gt;]]></description><category></category></item><item><title><![CDATA[C# 中的IEnumerable、IList和IReadOnlyList 的区别]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/147731269</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/147731269</guid><author>q__y__L</author><pubDate>Tue, 06 May 2025 11:57:33 +0800</pubDate><description><![CDATA[简单点说就是IEnumrable是所有可迭代集合最基本的通用接口，如果函数传入的参数是IEnumerable类型，那么不要试图去修改该集合中的元素。IList可以认为是List类型的特有功能的接口，你传入IList和List类型做参数，基本上是等价的，可遍历，也可以修改。IReadOnlyList的功能和IList类似，除了不能修改集合中的元素，其它都可以。]]></description><category></category></item><item><title><![CDATA[C# 利用ssh 开启一个命令交互窗口]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/145318704</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/145318704</guid><author>q__y__L</author><pubDate>Thu, 23 Jan 2025 11:32:53 +0800</pubDate><description><![CDATA[需要说明的是，为了避免输入输出相互阻塞，这里读取输出采用另一个线程执行。本文记录C#如何利用ssh远程连接服务器，并开启一个命令交互窗口。]]></description><category></category></item><item><title><![CDATA[从N个数中均匀随机采样M个数]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/144766200</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/144766200</guid><author>q__y__L</author><pubDate>Fri, 27 Dec 2024 15:51:11 +0800</pubDate><description><![CDATA[目录

一.背景

二. 问题分析

1.从抽样分析

2.从等概率分析

三.代码实现

四. 算法优化





一.背景

 最近在做多传感器数据同步的时候遇到一个问题，多个传感器采集数据的频率可能时不一样的，但是数据需要对齐，这样才能进行融合训练。我的一个简单思路就是将同一秒的数据以采样频率最低的数据为标准对齐，那么这必然涉及到对频率高的数据进行采样。为了保证采样尽可能的均匀，不至于，相同序列的帧在时间上不至于一样太大差距，所以希望能有一个实验均匀采样。

二. 问题分析

1]]></description><category></category></item><item><title><![CDATA[Kaggle 数据集dogs-vs-cats的错误]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/143258430</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/143258430</guid><author>q__y__L</author><pubDate>Sat, 26 Oct 2024 19:45:57 +0800</pubDate><description><![CDATA[预览一下这两个数据，大概率无法显示。删掉这两个数据可能你的模型就可以跑起来了。如果遇到错误图像，则会暂停运行并显示错误的文件名。]]></description><category></category></item><item><title><![CDATA[广度优先搜索Breadth-First-Search]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/141976673</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/141976673</guid><author>q__y__L</author><pubDate>Sat, 07 Sep 2024 11:25:03 +0800</pubDate><description><![CDATA[广度优先搜索总是能找到一个动作最少的解，因为当他生成深度为d的节点时，说明已经生成了升读为d-1的所有节点，如果其中一个节点是解，它应该已经被找到了，这对于所有动作都具有相同代价的问题，它是代价最优的，但对于不具有该特性的问题，则不一定是最优的。广度优先搜索，稍微学过算法的人都知道，网上也一大堆资料，这里就不做过多介绍了。问题来了，我们这次还是没确定从起点到目标点的最短路径，因为没有用到距离信息，别急，下一节DijkStra算法来帮我们彻底解决这个问题。，这样的指数级上界是可怕的，举个例子：假设。]]></description><category></category></item><item><title><![CDATA[最佳优先搜索best-find search]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/141934344</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/141934344</guid><author>q__y__L</author><pubDate>Thu, 05 Sep 2024 17:01:47 +0800</pubDate><description><![CDATA[算法每次选取最近的节点，因此我们没有得到最优解，要想得到最优解，需要对算法进行改造，使之称为启发式算法，我会在后续章节介绍一二。，其中n是节点的总数。这里只选取到BuCharest城市的数据，该城市是访问Urziceni和Giurgiu后续的点必经之路。显然上面的BFS是一种贪婪算法，每次选取最优的近邻点是一种“短视”，虽然如此，他仍是一种可行的算法。如果你熟悉广度优先搜索，那么上面的代码也没什么难度。算法的性能显然与我们选择什么样的代价函数有直接关系。最佳优先搜索的算法可以参考。该算法最坏的复杂度是。]]></description><category></category></item><item><title><![CDATA[python基础语法]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/141361147</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/141361147</guid><author>q__y__L</author><pubDate>Wed, 21 Aug 2024 10:04:59 +0800</pubDate><description><![CDATA[python基本操作范例]]></description><category></category></item><item><title><![CDATA[C# 索引器的范例和要点]]></title><link>https://blog.youkuaiyun.com/q__y__L/article/details/137347179</link><guid>https://blog.youkuaiyun.com/q__y__L/article/details/137347179</guid><author>q__y__L</author><pubDate>Wed, 03 Apr 2024 16:39:10 +0800</pubDate><description><![CDATA[索引器其实是一个语法糖，他提供了一种访问多个属性的遍历，有时候用起来会省事很多]]></description><category></category></item></channel></rss>