<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bd7xzz]]></title><description><![CDATA[简单程序员]]></description><link>https://blog.youkuaiyun.com/kid_2412</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kid_2412]]></copyright><item><title><![CDATA[程序员的迷与思]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/157871312</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/157871312</guid><author>kid_2412</author><pubDate>Sun, 08 Feb 2026 12:27:59 +0800</pubDate><description><![CDATA[AI浪潮下，程序员的迷茫与下一个十年出路
我们似乎每天都生活在一个while循环里：早起洗漱、进餐，然后奔赴职场奔波；傍晚下班归家，洗漱完毕，刷一会儿手机便沉沉睡去，第二天又机械地重复着前一天的轨迹。不知不觉间，一年又一年悄然流逝，想起上学时对计算机的满腔热爱，如今早已被日复一日的琐碎工作消磨殆尽，只剩满心倦怠与茫然。还记得当年逃课钻进网吧时的雀跃与刺激吗？还记得每周最期盼的那节微机课，从周一就开始在心底倒数的欢喜吗？
当然，你也可能刚刚踏入大学校园，对计算机领域的一切技术仍充满好奇，对自己的未来也满是憧憬]]></description><category></category></item><item><title><![CDATA[双11、618大促要做什么？]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/148240870</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/148240870</guid><author>kid_2412</author><pubDate>Mon, 26 May 2025 22:25:44 +0800</pubDate><description><![CDATA[大促除了紧张忙碌，还有就是快乐，大促1个月内有吃不完的零食，大促当天有领到手软的红包，各种小礼物，10几米长的桌子上摆满了饮料酒水、蛋糕、零食。一个良好的压测系统应具有流量染色的能力，各依赖接口和资源可基于sdk识别染色的压测流量，进行影子分身（如数据库的影子表、缓存的分身key），这样可防止压测流量产生垃圾数据污染正常的业务流转。不要忘记，系统是变化的，需求是不断变更的，变化就会引入新的问题或曾经出现过的问题。通常资源的负责人也会提前与研发进行沟通，哪些资源是重要的，需要在大促期间重点保护的。]]></description><category></category></item><item><title><![CDATA[海量帖子计数服务设计的2种思路]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/147656717</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/147656717</guid><author>kid_2412</author><pubDate>Thu, 01 May 2025 22:47:35 +0800</pubDate><description><![CDATA[若帖子 ID 作为字符串存储（如 18 位数字），SDS 需要 4（len）+ 4（alloc）+ 19（18 位数字 + 终止符 \0）= 27 字节，但受内存分配器 jemalloc 对齐影响，实际分配 32 字节。仔细思考下，我们的id通过雪花本质上是带时间属性的，如果key拆分的位数正好满足一个时间戳的位数，是不是可以按时间段当做key呢？我们将一个long类型的帖子id拆分成高32位和低32位，其中高32位作为redis的key，低32位作为hash的field，value进行计数。]]></description><category></category></item><item><title><![CDATA[系统设计思维的讨论]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/147168530</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/147168530</guid><author>kid_2412</author><pubDate>Sat, 12 Apr 2025 17:46:52 +0800</pubDate><description><![CDATA[Linux操作系统是一个可观测性做的非常好的系统，比如我们可以读取虚拟文件系统 /proc的运行时刻系统状态，syslog服务能够记录系统关键日志，全访问的监控命令（如top、netstat等），ebpf、systemtap技术实现内核级别的观测。而由于存量的存在，系统展现自身状态会存在延迟，如：热点事件发生，qps突增进行扩容，但系统需要部署，新的机器上缓存从冷到热是需要一个过程的，所以新机器扩容上来并不能立刻分摊突增的qps，在这里缓存的从冷填充满整个缓存空间步入到热的状态，缓存未填充的部分就是存量。]]></description><category></category></item><item><title><![CDATA[计算机系统设计中的一些常用方法]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/147167232</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/147167232</guid><author>kid_2412</author><pubDate>Sat, 12 Apr 2025 16:34:27 +0800</pubDate><description><![CDATA[这句经典的理论已不知出自何处，但无数的先例都是基于此，调节CPU和硬盘之间的性能差是通过加了一个内存实现的，调节CPU和内存之间的性能差是通过加了L1 L2 L3缓存实现的，用户到服务器之间可以通过反向代理、cdn做很多事情。虽说并行提高的算力，但在这么高度的并行流程中，就会存在各种各样的问题，主要包括：执行的依赖关系与顺序、共享数据的并行写安全、为解决共享数据并行写安全问题引入的互斥竞争、并行部分成功和部分失败的问题。职责分离：最常见的就是数据库的主从，主复制写入数据，从同步主的数据后提供读的服务。]]></description><category></category></item><item><title><![CDATA[pipwire cpu 100%使用率的问题]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/147026866</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/147026866</guid><author>kid_2412</author><pubDate>Sun, 06 Apr 2025 18:06:49 +0800</pubDate><description><![CDATA[在网上找到了社区的一篇bug反馈，可供参考https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4621 这里也阐述了该字符设备引起的cpu 100%的bug。后打印火焰图，也是epoll_wait，虽然打印热点函数也是epoll_wait，但看函数栈似乎看不出啥，毕竟不熟悉pipewire。列出所有监听的fd，其中只有fd=54的代表监听音频设备/dev/snd/seq。sy列很高，用strace跟踪下系统调用发现大量的epoll_wait。]]></description><category></category></item><item><title><![CDATA[curl命令常用扩展脚本]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/144077039</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/144077039</guid><author>kid_2412</author><pubDate>Wed, 27 Nov 2024 10:50:31 +0800</pubDate><description><![CDATA[执行curl加入参数-w 引用模板打印耗时。以下模板保存为curl.txt。]]></description><category></category></item><item><title><![CDATA[个人书单推荐]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/144076988</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/144076988</guid><author>kid_2412</author><pubDate>Wed, 27 Nov 2024 10:49:19 +0800</pubDate><description><![CDATA[如果你对计算机很感兴趣或者想在这个行业做的好一点，请往下阅读，如果你只是想混两年赚点钱就再见，那这篇文章不适合你。书中自有颜如玉，书中自有黄金屋，从业十余载读过不少书籍。取其精华去其糟粕便形成了自己的知识体系，加以实践加深印象。好的书总是让人醍醐灌顶，读起来沁人心脾。一本好书价格也不低，赶在双十一、618等大促活动可以多囤一些慢慢看。一天之计在于晨，个人认为早晨读书是记忆最深刻，理解最清晰的时间。通常我会利用早晨上班路上地铁时间看书，大概1个小时多。]]></description><category></category></item><item><title><![CDATA[服务端问题剖析浅谈]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/132383952</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/132383952</guid><author>kid_2412</author><pubDate>Sat, 19 Aug 2023 20:40:26 +0800</pubDate><description><![CDATA[这是一篇很随性的浅谈，主要围绕着作为一个服务端程序员如何解决疑难杂症这个话题。我是一名使用java的程序员，在我的认知范围内，java还是擅长于服务端业务编程。即：拥有完善的解决企业级信息化问题的生态，适用于服务端非极端性能要求下的一种编程语言。这里的重点是：生态健全，能够快速应对各种复杂业务。面向服务端，众所周知java在客户端（浏览器、桌面端、嵌入式）领域做的不是很好，只有安卓还说得过去。]]></description><category></category></item><item><title><![CDATA[如何构造一个安全的单例？]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/106029211</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/106029211</guid><author>kid_2412</author><pubDate>Mon, 07 Aug 2023 23:35:23 +0800</pubDate><description><![CDATA[为什么要问这个问题？
我们知道，单例是一种很常用的设计模式，主要作用就是节省系统资源，让对象在服务器中只有一份。但是实际开发中可能有很多人压根没有写过单例这种模式，只是看过或者为了面试去写写demo熟悉一下。那为啥说是一种常用的模式？
其实我们用的spring管理对象生命周期，用到默认的scope就是单例。这样的场景几乎每天都在用，所以我们不需要自己手写单例了。
那么为了面试，进大厂，是不是就要刷刷文章学习学习呢？当我们刷完单例的整体结构时，会发现还是很简单的嘛，无非就是懒汉、饿汉。饿汉上来就创建，没什么难]]></description><category></category></item><item><title><![CDATA[Java是如何创建线程的（二）从glibc到kernel thread]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/128988650</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/128988650</guid><author>kid_2412</author><pubDate>Sat, 11 Feb 2023 20:26:30 +0800</pubDate><description><![CDATA[上一节我们讨论了java线程是如何创建的，看了看从java代码层面到jvm层面的源码里都干了什么。整个流程还是比较复杂的，我将上一节总结的调用时序图贴在下面，方便你回忆起整体调用流程。这一节，我们再来详细看看glibc到linux kernel是如何创建线程的。这篇文章会涉及到一点汇编指令，因为我们要看看线程是如何进入内核态的。不用担心看不懂，我会写上注释，也不用死记硬背，只要知道线程进入内核态时是通过汇编指令进入的即可。]]></description><category></category></item><item><title><![CDATA[Java是如何创建线程的（一）从java到jvm]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/128890908</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/128890908</guid><author>kid_2412</author><pubDate>Sun, 05 Feb 2023 15:35:47 +0800</pubDate><description><![CDATA[线程我们经常用，也会经常被面试或讨论到。我如果说Java如何创建线程的？你肯定回答下面三种：你一样会想，这么简单的问题有什么好问的，简直侮辱我的智商。但，请仔细想想，你真的知道上面3个问题，都包含在一个问题中，Java是如何跟操作系统交互创建线程，并被操作系统调度的？这3个问题，是我在2023年元旦放假休息的时候突然想到的，为什么会这么想？所以，我想看看背后的真相，看看线程的源代码是怎么实现的。在正式内容之前，我希望你抛弃之前对线程的认识，同时不要惧怕底层原理和代码，这篇文章也会很长。]]></description><category></category></item><item><title><![CDATA[警惕jdk8 UDP和Thread.interrupt的Bug]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/128125053</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/128125053</guid><author>kid_2412</author><pubDate>Thu, 01 Dec 2022 00:45:13 +0800</pubDate><description><![CDATA[线上业务在热点流量大的情况下（业务采用Java编程语言实现），单机偶发出现Hystrix熔断，接口无法提供服务。]]></description><category></category></item><item><title><![CDATA[有效的单元测试]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/126808494</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/126808494</guid><author>kid_2412</author><pubDate>Sun, 11 Sep 2022 19:47:41 +0800</pubDate><description><![CDATA[本文阐述了单测的重要性，给出了错误的单测示范，针对错误反推出正确的姿势。有效的单测要把握3个特性：简洁、稳定、可靠。使用合适的单测工具库有助于写出好的单测代码（如：使用Spock基于TDD准则进行测试）。《代码整洁之道》和《重构》两本书中编写和重构代码的指导方法也同样适用于单测代码。《有效的单元测试》这本书非常推荐阅读。[1]《有效的单元测试》[2]《代码整洁之道》[3]《重构：改善既有代码的设计》[4]]]></description><category></category></item><item><title><![CDATA[某系统双十一内存飙升分析和解决方案]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/53424754</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/53424754</guid><author>kid_2412</author><pubDate>Sun, 07 Aug 2022 12:32:51 +0800</pubDate><description><![CDATA[一、问题现象

系统在双十一期间出现频繁内存飙升现象，内存在几天内直接飙升到报警阈值。在堆内存空间由3g调整到4g后，依然出现堆内存超过阈值问题，同时在重启若干次内存依然会飙升堆积。同时也发现了jvm一直不出现full gc，young gc稍微有点颤抖并出现young gc回收慢现象，很诡异，where is the full gc?!如图所示：



同时可以看到，young gc后，内存逐渐......]]></description><category></category></item><item><title><![CDATA[如何做一个可实施的故障预案？]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/125073007</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/125073007</guid><author>kid_2412</author><pubDate>Tue, 31 May 2022 20:42:08 +0800</pubDate><description><![CDATA[其实写这篇博文的目的有三：我认为一个好的系统架构是面向错误和失败的，一个优秀的架构师除了能够给出解决复杂系统问题的方案，更需要给出异常和故障的解决方案。无论何时，我们应该精心设计，通过有限的资源解决复杂的问题，并最大化的预测故障，降低故障的发生概率。在这里，我希望能够阐述清楚工作中使用的故障分析方法、故障经验总结思路、预案构造过程，以及如何去实施预案。一份合理可实施的预案不是一个人能完全梳理清楚的，也不是一个人能完全实施展开的，这离不开一个团队。如果你的系统并没有什么用户使用，出现故障可以随时下线修复，那这]]></description><category></category></item><item><title><![CDATA[一个可实施的技术方案模板]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/115282680</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/115282680</guid><author>kid_2412</author><pubDate>Sun, 28 Mar 2021 17:14:38 +0800</pubDate><description><![CDATA[1. 背景
描述项目背景，说清楚整个项目的背景以及业务方向。
2. 目标
根据背景列出要实现的目标点：

xxxx
xxxxx
…

3. 业务分析
3.1 支持的能力
若项目已上线，本次只是迭代，要写清楚已有业务的能力，以及针对本次迭代目标，要具备什么能力（功能）
若是新项目，要写清楚针对本次迭代目标，要具备什么能力（功能）
3.2 行业调研
除非你创造了一个杀手级应用，否则你的轮子基本都是重复的。这里要写出业务领域内其他公司是如何实现的，若公司内有类似的实现，要写出公司内其他人是怎么实现的。
他人的实现]]></description><category></category></item><item><title><![CDATA[如何写一篇可实施的技术方案？]]></title><link>https://blog.youkuaiyun.com/kid_2412/article/details/106062531</link><guid>https://blog.youkuaiyun.com/kid_2412/article/details/106062531</guid><author>kid_2412</author><pubDate>Mon, 11 May 2020 23:28:27 +0800</pubDate><description><![CDATA[为何要写这篇博文？
一个错误的方案设计
重点是什么？
拿模板说说
总结

]]></description><category></category></item></channel></rss>