<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>日常验算</title><link>https://blog.ganpengyu.com/</link><description>Recent content on 日常验算</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 29 May 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://blog.ganpengyu.com/index.xml" rel="self" type="application/rss+xml"/><item><title>舆论场与公权力：一次关于“正义感”的对话</title><link>https://blog.ganpengyu.com/posts/public-opinion-public-power-dialogue/</link><pubDate>Fri, 29 May 2026 00:00:00 +0800</pubDate><guid>https://blog.ganpengyu.com/posts/public-opinion-public-power-dialogue/</guid><description>&lt;style&gt;
.im-dialogue {
 display: flex;
 flex-direction: column;
 gap: 1.15rem;
 margin: 1.8rem 0;
}

.im-dialogue .im-row {
 display: flex;
 width: 100%;
}

.im-dialogue .im-row.question {
 justify-content: flex-end;
}

.im-dialogue .im-row.answer {
 justify-content: flex-start;
}

.im-dialogue .im-bubble {
 max-width: 78%;
 padding: 0.85rem 1rem;
 border-radius: 10px;
 line-height: 1.78;
 overflow-wrap: break-word;
}

.im-dialogue .question .im-bubble {
 background: #e8f2ff;
 color: #17324d;
 border-top-right-radius: 4px;
}

.im-dialogue .answer .im-bubble {
 background: #f4f4f1;
 color: #242424;
 border-top-left-radius: 4px;
}

.im-dialogue .im-speaker {
 display: block;
 margin-bottom: 0.35rem;
 font-size: 0.78rem;
 font-weight: 700;
 color: #767676;
}

.im-dialogue p {
 margin: 0 0 0.65rem;
}

.im-dialogue p:last-child {
 margin-bottom: 0;
}

@media (max-width: 720px) {
 .im-dialogue .im-bubble {
 max-width: 88%;
 padding: 0.75rem 0.85rem;
 }
}
&lt;/style&gt;
&lt;div class="im-dialogue"&gt;
 &lt;div class="im-row question"&gt;
 &lt;div class="im-bubble"&gt;
 &lt;span class="im-speaker"&gt;问&lt;/span&gt;
 &lt;p&gt;我想讨论一种现象：在中国的互联网舆论场里，一些社会突发事件，或者某个明星、知名人物在道德、法律层面出了问题，网民往往会迅速发起一种“正义攻击”。比如引用法律法规，@各类官方账号，要求封杀、压制或惩罚这个人。&lt;/p&gt;</description></item><item><title>HyperLogLog 算法及其在 Redis 中的实现</title><link>https://blog.ganpengyu.com/posts/hyperloglog-in-redis/</link><pubDate>Mon, 05 Sep 2022 23:38:13 +0800</pubDate><guid>https://blog.ganpengyu.com/posts/hyperloglog-in-redis/</guid><description>&lt;p&gt;HyperLogLog 是一个求解集的势（即集合中不重复元素个数）的算法，由于是基于统计学的算法，所以结果必然会存在一定的误差。&lt;/p&gt;
&lt;p&gt;在抛硬币游戏中（伯努利试验），如果对方说自己最多能够连续抛出反面 2 次，那么我们由此可以推断对方抛硬币的总次数一定不多。如果对方说自己最多能够连续抛出反面 10 次，这时候我们就可以推断对方一定抛了非常多次硬币（除非出现突发事件），这实际就是一个普通的概率问题。但是怎么计算出对方抛硬币的大概次数呢？&lt;/p&gt;</description></item><item><title>使用 ByteBuddy 动态生成 EasyExcel 数据映射 Bean</title><link>https://blog.ganpengyu.com/posts/bytebuddy-easyexcel/</link><pubDate>Wed, 18 May 2022 15:21:13 +0800</pubDate><guid>https://blog.ganpengyu.com/posts/bytebuddy-easyexcel/</guid><description>&lt;p&gt;阿里的 EasyExcel 可以基于一个 Java Bean 来方便的实现数据的读取和写出，但是 Excel 表头的变更都会引起这个 Java Bean 源码的变动。为了能够动态适应 Excel 表头的变更，本文使用 ByteBuddy 工具类来动态生成 Java Bean，以避免源码级的改动。&lt;/p&gt;
&lt;p&gt;使用 ByteBuddy 动态创建一个类的最简单方法就是创建一个 &lt;code&gt;Object&lt;/code&gt; 的子类：&lt;/p&gt;</description></item><item><title>Dubbo SPI 机制 - 基于 2.7.7 版本</title><link>https://blog.ganpengyu.com/posts/dubbo-spi/</link><pubDate>Wed, 30 Mar 2022 17:52:35 +0800</pubDate><guid>https://blog.ganpengyu.com/posts/dubbo-spi/</guid><description>&lt;p&gt;Dubbo SPI 机制涉及到 &lt;code&gt;@SPI&lt;/code&gt;、&lt;code&gt;@Adaptive&lt;/code&gt;、&lt;code&gt;@Activate&lt;/code&gt; 三个注解，ExtensionLoader 作为 Dubbo SPI 机制的核心负责加载和管理扩展点及其实现。本文以 ExtensionLoader 的源码作为分析主线，进而引出三个注解的作用和工作机制。&lt;/p&gt;</description></item><item><title>关于</title><link>https://blog.ganpengyu.com/about/</link><pubDate>Wed, 30 Mar 2022 17:45:28 +0800</pubDate><guid>https://blog.ganpengyu.com/about/</guid><description>&lt;p&gt;您好，我是不厌。&lt;/p&gt;
&lt;p&gt;我是一名软件开发工程师，擅长使用 Java，也熟悉 Python、Golang、JavaScript。&lt;/p&gt;
&lt;p&gt;我曾经是一名文科生，大学专业是金融方向。我喜欢抬头感性地追求自由理想的生活，也愿意埋头理性地开发满足期待的作品。&lt;/p&gt;</description></item></channel></rss>