<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chunTF的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chunTF</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chunTF]]></copyright><item><title><![CDATA[绕过云服务商UDP拦截：WireGuard + FRP 虚拟组网方案实践]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/158754323</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/158754323</guid><author>chunTF</author><pubDate>Sat, 07 Mar 2026 00:45:33 +0800</pubDate><description><![CDATA[稳定性提升：核心解决了云服务商 UDP 限流问题，WireGuard 隧道基于 TCP 隧道运行，连接持久稳定。透明性：对上层应用完全透明，WireGuard 的配置和使用方式无需任何改变，用户感知不到 FRP 的存在。灵活性：FRP 强大的代理能力支持多客户端、多隧道同时运行，轻松实现多站点（家庭、公司、多个云服务器）的复杂组网。兼容性：方案不依赖特定平台，在 Linux、OpenWRT、Windows 等系统上均可部署。一句话总结：本方案通过FRP (SUDP 模式)为WireGuard。]]></description><category></category></item><item><title><![CDATA[IIS下载静态文件报500错误，设置MIME和请求筛选都没用]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/137176975</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/137176975</guid><author>chunTF</author><pubDate>Sat, 30 Mar 2024 16:56:36 +0800</pubDate><description><![CDATA[折腾了很久才发现这个文件的上级目录里有一个web.config文件，而这个文件并不是站点的配置文件只是资源文件，但IIS读取到上层目录时受到上级目录的web.config影响，导致那一个文件夹下的所有子文件都无法下载。目前唯一能解决的办法就是把这个web.config改个名或者删掉。"500 - 内部服务器错误。您查找的资源存在问题，因而无法显示。即使设置了MIME类型和请求筛选也没用，还是报500错无。请求下载静态文件时报500错误。]]></description><category></category></item><item><title><![CDATA[C#判断一个数是否是素数，利用所有素数分布在6的倍数两侧做小优化]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/133770163</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/133770163</guid><author>chunTF</author><pubDate>Wed, 11 Oct 2023 14:50:21 +0800</pubDate><description><![CDATA[【代码】C#判断一个数是否是素数，利用所有素数分布在6的倍数两侧做小优化。]]></description><category></category></item><item><title><![CDATA[反射方式 去除ServiceStack.Redis每小时6000次限制]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/124772684</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/124772684</guid><author>chunTF</author><pubDate>Sat, 14 May 2022 19:45:10 +0800</pubDate><description><![CDATA[就是这个报错。解决办法嘛有的直接用v3版，有的修改源码自己编译ServiceStack.Redis，

至于改源代码的办法百度一搜就有，这里不多叙述。

我们做DotNet开发的痛点就是我们的产品别人很容易就能反编译出源码，当然这也是最舒服的一点，所以。。


    /// &lt;summary&gt;
    /// 取消ServiceStack.Rides每小时6000条操作限制
    /// &lt;/summary&gt;
    public static class CancelRed..]]></description><category></category></item><item><title><![CDATA[Python协程，使用yield手写协程实现]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/112704653</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/112704653</guid><author>chunTF</author><pubDate>Sat, 16 Jan 2021 14:19:13 +0800</pubDate><description><![CDATA[找了好些Python的协程资料，也找到了好多别人实现的协程，但用着不顺手所以决定自己手动写。

借鉴于C#的协程实现来写，包括协程实现类和控制类，目前需要按时间控制和按帧数控制，所以控制类只写了这两种大多情况下也只会用到这两种

实现：


import datetime
from time import sleep
# 协程控制接口


class ICoroutineWait:
    def Wait(self):
        return False
# 按时间等待


class WaitFo]]></description><category></category></item><item><title><![CDATA[Python多个分割符分割字符串]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/111500638</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/111500638</guid><author>chunTF</author><pubDate>Mon, 21 Dec 2020 22:10:06 +0800</pubDate><description><![CDATA[Python多个分割符分割字符串，并去除空白项
刚学习Python的第一天就遇到一个麻烦：字符串中有多种分割符，并且需要分割后去除只有空字符的项
在C#中一个函数就行，对Python库不熟悉在Python中找不到对应函数所以自己封装
string[] strs= str.Split(new[] {',','='}, StringSplitOptions.RemoveEmptyEntries);

Python实现：
from enum import IntEnum


class StrSplitMode(]]></description><category></category></item><item><title><![CDATA[C#ref和out的冷知识，ref修饰函数返回值，out泛型协变修饰符]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/109101093</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/109101093</guid><author>chunTF</author><pubDate>Thu, 15 Oct 2020 21:09:39 +0800</pubDate><description><![CDATA[目录常规ref和out常规ref常规out修饰返回值的refref实现指针实现以最简单的方式看“协变泛型”和“逆变泛型”
常规ref和out
常规ref
用于向函数传递引用变量
如：
public void Func(ref int num)
{
	。。。
}

常规out
用于多类型多个返回值的函数。
如：
public bool Func(in int num , out int count, out string msg)
{
	。。。
}

修饰返回值的ref
ref实现
定义存储柜类
      ]]></description><category></category></item><item><title><![CDATA[不用任何容器统计大量数据平均值]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/108170822</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/108170822</guid><author>chunTF</author><pubDate>Sat, 22 Aug 2020 16:50:10 +0800</pubDate><description><![CDATA[@TOC不用任何容器统计大量数据平均值
示列：统计21亿次系统随机的平均值

使用场景
在统计高频率数据的平均值时我们并不需要所有值，最终要的只是平均值，此时并不需要统计总和。
这样计算只有次数是累计的，因为没有总和所有不用担心溢出。avg&lt;=num 始终成立。
比如：我们要统计某个系统一周内的平均频率。可以用long类型作为计数变量，但为了提高精确度可以用short类型来作为计数变量，每当到达short最大值时记一次平均值，然后重置计数变量和平均值，最后再来算所得平均值的平均值。
缺点就是不准确。随]]></description><category></category></item><item><title><![CDATA[C#完整调用cmd命令，在不重启cmd进程的情况下连续执行cmd命令，并获得执行结果，全后台执行不弹黑框。]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/103866368</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/103866368</guid><author>chunTF</author><pubDate>Mon, 06 Jan 2020 23:21:26 +0800</pubDate><description><![CDATA[由于需求所迫，网上现有资料中都无法找到C#完整连续调用cmd命令的资料。于是自己研究了一番，现有资料都说C#调用cmd命令时必须要加“exit”或者把cmd进程Close后才会有运行结果，其实不然。之所以要等进程结束才会有结果，是因为cmd在输出结束后会等待下一次输入，从而造成线程阻塞，就相当于C#控制台的Console.ReadLine()会造成线程阻塞一样。

既然需要等待输入会造成线程阻塞，...]]></description><category></category></item><item><title><![CDATA[C#读取和保存ini配置文件，不使用API，自己实现配置ini配置文件的读写]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/102888872</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/102888872</guid><author>chunTF</author><pubDate>Sun, 03 Nov 2019 23:21:38 +0800</pubDate><description><![CDATA[引用都是一些基础引用，自己添加就行。凑合着可用，请自行根据情况优化。注意：使用时请注意编码问题


                /// &lt;summary&gt;
                /// 获取配置文件
                /// &lt;/summary&gt;
                /// &lt;param name="path"&gt;路径&lt...]]></description><category></category></item><item><title><![CDATA[C#判断是否在环状数据的指定区间内，判断时间是否在某一时间段内，判断当前小时是否处于某一个时段内]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/99708153</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/99708153</guid><author>chunTF</author><pubDate>Sun, 18 Aug 2019 19:31:07 +0800</pubDate><description><![CDATA[这里注重的是环状区间的判断！如果单纯的只是时间判断完全可以直接比较大小即可如：time&gt;=time1&amp;&amp;time=&lt;time2


                /// &lt;summary&gt;
                /// 判断是否在环状数据的指定区间内
                /// &lt;/summary&gt;
           ...]]></description><category></category></item><item><title><![CDATA[C#根据属性描述获取枚举值，获取枚举的属性描述，字符串转枚举]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/97784574</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/97784574</guid><author>chunTF</author><pubDate>Tue, 30 Jul 2019 15:09:08 +0800</pubDate><description><![CDATA[没有优化，凑合着用吧。需要using System.ComponentModel;


 /// &lt;summary&gt;
 /// 根据属性描述获取枚举值
 /// &lt;/summary&gt;
 /// &lt;typeparam name="T"&gt;类型&lt;/typeparam&gt;
 /// &lt;param name="des"&gt;属性说明&lt;/param&...]]></description><category></category></item><item><title><![CDATA[C++友缘类friend在自动释放模板单例中的使用]]></title><link>https://blog.youkuaiyun.com/chunTF/article/details/97769811</link><guid>https://blog.youkuaiyun.com/chunTF/article/details/97769811</guid><author>chunTF</author><pubDate>Tue, 30 Jul 2019 12:57:58 +0800</pubDate><description><![CDATA[以下为实现代码：


#pragma region 自动释放模板单例
template&lt;typename T&gt;
class CSingletonFree;
template&lt;typename T&gt;
class CSingleton
{
public:
	static T*GetInstance()
	{
		if (m_pInstance == nullptr)
		{
	...]]></description><category></category></item></channel></rss>