<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[雪的期许]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/winter2121</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; winter2121]]></copyright><item><title><![CDATA[【golang】基于redis zset实现并行流量控制（计数锁）]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/148334943</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/148334943</guid><author>winter2121</author><pubDate>Thu, 07 Aug 2025 14:16:57 +0800</pubDate><description><![CDATA[在业务开发中，有时需要对某个操作在整个集群中限制并发度，例如限制大模型对话的并行数。基于redis zset实现计数锁，做个笔记。关键词：并行流量控制、计数锁。]]></description><category></category></item><item><title><![CDATA[【golang】基于redis实现集群中的master主实例选举]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/148339476</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/148339476</guid><author>winter2121</author><pubDate>Fri, 30 May 2025 15:39:40 +0800</pubDate><description><![CDATA[在集群中，有些业务逻辑只需要1个实例去执行，例如定时通知、任务调度器等。本文通过redis实现了在集群中选举一个master实例。]]></description><category></category></item><item><title><![CDATA[Python/GoLang/Java 多环境管理工具 pyenv/goenv/jenv]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/143990865</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/143990865</guid><author>winter2121</author><pubDate>Sat, 23 Nov 2024 15:09:00 +0800</pubDate><description><![CDATA[使用独立的虚拟环境，可以不影响全局环境。pyenv版本管理的原理是将python版本保存于。【高级用法】一次指定多个python版本。文件指定全局版本，通过。文件指定当前用户版本。]]></description><category></category></item><item><title><![CDATA[【golang】go语言编程常用规范/工具]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/142670305</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/142670305</guid><author>winter2121</author><pubDate>Tue, 01 Oct 2024 14:19:58 +0800</pubDate><description><![CDATA[【代码】GoLang编程常用规范/工具。]]></description><category></category></item><item><title><![CDATA[【golang】go结构体默认值和校验器（go-defaults、go-validator）]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/142633389</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/142633389</guid><author>winter2121</author><pubDate>Sun, 29 Sep 2024 16:00:12 +0800</pubDate><description><![CDATA[在Java中我们可以比较容易地借助Spring框架等提供的注解来实现成员字段的值验证，另外Java也原生支持对成员字段赋默认值。然而在go语言中这些都不会原生支持，尤其是在前后端通过json数据交互时，会比较麻烦。对于默认值，原生go语言有一个痛点：基本类型的零值可能跟业务值有冲突。例如，int字段默认值是0，有可能前端传入也是0，那么这个0到底是有效的还是无效的？换句话说，这个0到底是不是前端传入的？就不好判断了。当然，有一些骚操作可以避免这样的事情发生，比如将字段类型定义为*int。]]></description><category></category></item><item><title><![CDATA[【MySQL】深度分页SQL查询优化]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/141036329</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/141036329</guid><author>winter2121</author><pubDate>Thu, 08 Aug 2024 21:05:22 +0800</pubDate><description><![CDATA[【代码】【数据库】MySql深度分页SQL查询优化。]]></description><category></category></item><item><title><![CDATA[【CentOS】手动编译安装make、cmake、gcc、git]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/139497025</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/139497025</guid><author>winter2121</author><pubDate>Thu, 06 Jun 2024 12:43:36 +0800</pubDate><description><![CDATA[make 各个版本下载地址。]]></description><category></category></item><item><title><![CDATA[【FFmpeg】使用amix混合多个音频时音量变小或音量不一致问题]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/136438048</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/136438048</guid><author>winter2121</author><pubDate>Sun, 03 Mar 2024 21:19:30 +0800</pubDate><description><![CDATA[FFmpeg使用amix进行音频混合时，默认行为是缩减每个音频，这容易让人忽略掉。虽然最新版本FFmpeg提供了参数来屏蔽掉这个默认行为，但老版本FFmpeg还是只能手动调整音量。]]></description><category></category></item><item><title><![CDATA[【FFmpeg】时间裁剪之-ss -t与滤镜中trim=start=*:duration=*的区别和联系]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/135980941</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/135980941</guid><author>winter2121</author><pubDate>Fri, 02 Feb 2024 11:25:24 +0800</pubDate><description><![CDATA[的效果是将视频的时间轴重新调整，使第一帧的时间戳为零，后续帧相对于第一帧进行相应的时间调整。使用这个表达式会将视频的时间轴重新设置，以使第一帧的时间戳为零，后续帧的时间戳相对于第一帧进行调整。另外，滤镜的输入，是-ss -t 等参数裁剪完之后的结果，这个结果的时间戳从0开始。这是输入流的第一帧的时间戳。在一个处理链中，STARTPTS用于引用流的初始时间戳，而不是每一帧的时间戳。例如，-ss -t裁剪完，传给滤镜的文件 总时长10秒，但视频流只在7~10秒（也就是前7秒没画面），那么。]]></description><category></category></item><item><title><![CDATA[【JetBrains】PhpStorm调试docker容器中的php项目]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/135892453</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/135892453</guid><author>winter2121</author><pubDate>Sun, 28 Jan 2024 11:00:06 +0800</pubDate><description><![CDATA[已经通过docker容器启动了一个web服务，并在宿主机可以访问http://localhost:8080访问网页。现在想使用phpstorm打断点调试代码。]]></description><category></category></item><item><title><![CDATA[【golang】协程池ants使用笔记]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/135871795</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/135871795</guid><author>winter2121</author><pubDate>Fri, 26 Jan 2024 17:45:09 +0800</pubDate><description><![CDATA[最近工程中遇到goroutine滥用导致的bug，采用了ants协程池来解决。]]></description><category></category></item><item><title><![CDATA[【CentOS】升级GCC]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/134547795</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/134547795</guid><author>winter2121</author><pubDate>Wed, 22 Nov 2023 15:04:54 +0800</pubDate><description><![CDATA[CentOS 7默认自带GCC版本4.8，而目前工作中开发环境需要用到GCC8和GCC12，这里记录一下如何升级GCC版本，以及如何多版本并存。遗憾的是上述方式无法安装gcc12，devtoolset目前只提供到gcc11。于是自己找了个软件源（执行后，只在当前终端生效，要永久生效，可以将激活语句加入到。devtoolset对应gcc的版本。命令可以看到版本信息。]]></description><category></category></item><item><title><![CDATA[【python】简易 http server：实现本地与远程服务器传大文件]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/132694290</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/132694290</guid><author>winter2121</author><pubDate>Tue, 05 Sep 2023 16:02:06 +0800</pubDate><description><![CDATA[在需要暴露的目录下启动http服务，如。在个人目录下创建新文件。]]></description><category></category></item><item><title><![CDATA[【Latex】MacOS苹果电脑VSCode+Latex写文档写论文]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/128347421</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/128347421</guid><author>winter2121</author><pubDate>Fri, 16 Dec 2022 20:18:12 +0800</pubDate><description><![CDATA[macOS 配置 LaTeX ( MacTeX + VScode + Skim )一份其实很短的 LaTeX 入门文档]]></description><category></category></item><item><title><![CDATA[【nodejs】Ubuntu安装nodejs / npm、npm镜像源、laravel框架使用vue作为前端]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/127980487</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/127980487</guid><author>winter2121</author><pubDate>Tue, 22 Nov 2022 12:53:32 +0800</pubDate><description><![CDATA[Ubuntu安装node.js（自带npm）
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
apt install -y nodejs
查看版本

node -v
npm依赖源问题
服务器在外边，速度慢，有两种解决方法。
一、安装cnpm，以后使用cnpm代替npm（其实就是使用淘宝源的npm）：

npm install -g cnpm -registry=https://registry.npm.taobao.org
二、修改npm]]></description><category></category></item><item><title><![CDATA[【CSP】CSP-J 2022 第二轮（复赛）真题解析]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/127803719</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/127803719</guid><author>winter2121</author><pubDate>Fri, 11 Nov 2022 12:02:07 +0800</pubDate><description><![CDATA[点击查看题目列表
1. 乘方
这道题看似简单，但稍不留神就会出错，要求选手具备全面思考问题的能力。
- 易错点1：如何判断结果超出$$10^9$$?
  计算$$a^b$$最直观的做法是使用循环来计算$$b$$个$$a$$相乘，但一定要注意，千万不要等$$b$$个$$a$$相乘结束后再去判断结果是否达到$$10^9$$！因为循环过程中当结果超过$$10^{18}$$（这里假设你定义的数据类型是long long类型）后，就发生了溢出，结果已经出错。解决方法是在循环过程中，每次将结果乘上一个$$a$$，就判断]]></description><category></category></item><item><title><![CDATA[安装phpmyadmin]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/124561429</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/124561429</guid><author>winter2121</author><pubDate>Tue, 03 May 2022 20:57:09 +0800</pubDate><description><![CDATA[apt update
apt upgrade -y
apt install -y phpmyadmin

需要安装php7.2
nginx配置文件/etc/nginx/conf.d/phpmyadmin.conf
server {
  listen 8081;
  listen [::]:8081;
  server_name pma.example.com;
  root /usr/share/phpmyadmin/;
  index index.php index.html index.htm inde]]></description><category></category></item><item><title><![CDATA[表达式计算C++]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/124471006</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/124471006</guid><author>winter2121</author><pubDate>Fri, 29 Apr 2022 17:50:30 +0800</pubDate><description><![CDATA[问题描述
给定四则运算（含括号）表达式，计算运算结果。
拓展知识：逆波兰式。
样例输入
3+4*(5+6)

样例输出
47

问题分析
四则运算基本法则：先算乘除，后算加减，有括号的先算括号。于是给运算符定义优先级：




符号
优先级




+ -
1


* /
2


由于括号实际上并不参与运算，只是改变运算的先后次序，所以括号不用考虑优先级，遇到括号时特判即可。
由于运算过程中，存在先算后面的情况，所以用栈来保存前面的运算符（如±），等后面运算（如*/）完成，再弹出栈中的运算符进行计算。这里的]]></description><category></category></item><item><title><![CDATA[2022中兴捧月 限时编程 第一场 24点游戏]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/124386365</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/124386365</guid><author>winter2121</author><pubDate>Sun, 24 Apr 2022 17:02:18 +0800</pubDate><description><![CDATA[吐槽
读完题眼前一亮，这不就是24点游戏嘛，小时候和我弟玩过。吐槽一下中兴这个网页编辑器怎么就没法输出看结果呢？我人麻了，编辑器只能给我反馈一个“未通过”，我想输出一下中间结果看一下也不行！？看了半个多小时才发现除法可能会除以0（某两个相等的数相减，然后作为被除数这种情况）。。。。 还是太菜了，除以0都能写得出来。。。
题意
给定4个数，是否能用算术运算（±*/和括号）得到24？
分析
首先想到的是搜索，前半个小时一直在尝试深度优先搜索去尝试所有情况，但是代码越写越臭，直奔上百行去了，而且也A不掉。然后就仔]]></description><category></category></item><item><title><![CDATA[二叉树遍历练习 - 递归/非递归]]></title><link>https://blog.youkuaiyun.com/winter2121/article/details/124379904</link><guid>https://blog.youkuaiyun.com/winter2121/article/details/124379904</guid><author>winter2121</author><pubDate>Sun, 24 Apr 2022 12:27:59 +0800</pubDate><description><![CDATA[参考：https://blog.youkuaiyun.com/winter2121/article/details/99560253
样例：
样例输入：ABD##E##C#FG##H##
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
struct Node
{
    char data;
    struct Node *lchild, *rchild;
};

Node *createTree()
{
    char ch = getchar();
    ]]></description><category></category></item></channel></rss>