<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wjc133的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wjc133</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wjc133]]></copyright><item><title><![CDATA[在Trae中使用Pencil MCP]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/157400497</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/157400497</guid><author>wjc133</author><pubDate>Mon, 26 Jan 2026 20:00:23 +0800</pubDate><description><![CDATA[本文介绍了如何在Trae中使用Pencil插件的方法：1）安装Pencil插件并避免与官方客户端冲突；2）获取MCP配置信息；3）在Trae设置中手动添加Pencil的MCP配置；4）完成配置后即可在AI聊天框中使用Pencil绘制设计稿。文章提供了详细的配置步骤和JSON示例，帮助用户快速实现Pencil与Trae的集成使用。]]></description><category></category></item><item><title><![CDATA[自建 Derp 中继节点]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/148456478</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/148456478</guid><author>wjc133</author><pubDate>Thu, 05 Jun 2025 18:17:41 +0800</pubDate><description><![CDATA[本文简要记录了在腾讯云服务器上搭建Tailscale DERP中继服务器的过程。主要包括：1) 通过阿里云镜像安装Golang环境；2) 编译安装derper程序；3) 生成自签名证书并配置derper服务；4) 设置防火墙规则开放端口；5) 修改Tailscale ACL配置文件添加自定义DERP节点；6) 验证服务可用性；7) 将derper配置为系统服务实现开机自启。整个过程克服了首次搭建时的困难，最终在几分钟内完成部署，并通过tailscale netcheck命令验证服务正常运行。]]></description><category></category></item><item><title><![CDATA[OQL 入门]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/145058167</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/145058167</guid><author>wjc133</author><pubDate>Fri, 10 Jan 2025 14:48:22 +0800</pubDate><description><![CDATA[Object Query Language，即OQL，是一种SQL风格的查询语言，用于对堆转储文件进行分析。]]></description><category></category></item><item><title><![CDATA[Go语言常见序列化协议全面对比]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/140696201</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/140696201</guid><author>wjc133</author><pubDate>Thu, 25 Jul 2024 17:57:28 +0800</pubDate><description><![CDATA[从易用性、性能、内存占用、编码后大小等几个方面综合考虑 ProtoBuf 胜出。Gob 从性能和 I/O 带宽占用上都和 ProtoBuf 差不多，唯一劣势是编解码时内存占用较多。考虑到不用再写 IDL 带来的易用性，如果整个系统内不存在使用除 Go 以外其他语言的服务，是更合适的选择。]]></description><category></category></item><item><title><![CDATA[Sitemap文件协议]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/130851663</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/130851663</guid><author>wjc133</author><pubDate>Wed, 24 May 2023 17:27:55 +0800</pubDate><description><![CDATA[Sitemap站点地图协议分析]]></description><category></category></item><item><title><![CDATA[如何优雅的让Webstorm按照eslint规则reformat]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/125761014</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/125761014</guid><author>wjc133</author><pubDate>Wed, 13 Jul 2022 12:02:40 +0800</pubDate><description><![CDATA[前端项目中经常会有不同的规范，比如Airbnb的stardend标准，要求每行结尾不加分号、字符串必须使用单引号等。但Webstorm中有自己的一套代码规范，格式化的时候根本不按照eslint来，怎么才能让Webstorm遵循eslint的规则呢？...]]></description><category></category></item><item><title><![CDATA[在MacOS中将HMCL添加到Launchpad启动台]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/125607658</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/125607658</guid><author>wjc133</author><pubDate>Mon, 04 Jul 2022 20:22:06 +0800</pubDate><description><![CDATA[在Mac上玩Minecraft，官方的启动器又慢又不方便管理Mod。所以需要搞一个启动器，看了一下HMCL是个不错的启动器，但是它只提供了Jar包，没有打包成Application。执行起来不够优雅和方便。所以稍微研究了一下怎么包装成一个Application。...]]></description><category></category></item><item><title><![CDATA[FreeCAD快速开始]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/119605481</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/119605481</guid><author>wjc133</author><pubDate>Wed, 11 Aug 2021 14:16:38 +0800</pubDate><description><![CDATA[前言
FreeCAD是一个三维参数化建模应用程序。它主要用于机械设计，但也适用于其他所有需要精确3D建模和控制模型历史的用途。
FreeCAD从2002年开始开发，提供了大量的功能，虽然功能还有待继续完善，但对于业余爱好者和小型工作室来说也已经足够了。FreeCAD forum社区用户活跃，你可以找到大量的高质量项目示例。如果要在生产中使用FreeCAD，建议看看这个。
像所有的自由软件项目一样，FreeCAD的发展离不开其社区的支持。如果你喜欢，你可以通过各种方式捐赠和帮助FreeCAD，比如写文档和翻译]]></description><category></category></item><item><title><![CDATA[计算机的时间魔法（定时器）]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/118308224</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/118308224</guid><author>wjc133</author><pubDate>Mon, 28 Jun 2021 18:02:34 +0800</pubDate><description><![CDATA[5月组内月度分享的时候，大家讨论到了在Java里时间轮是靠什么驱动运作的。这引发了我对时间驱动力的探索。
这个世界本质上就是时间驱动的，这是自然的真实反映。试想如果时间停滞，所有的动作也都会暂停。
计算机系统本质上也是时间驱动的。计算机系统的时间概念是由电子振荡器的反复振荡产生的。
我们从计算机最底层的硬件讲起，再到操作系统，再到Java，一步一步探究时间驱动力的奥秘。
由于篇幅太长…………所以我们分几篇来讲。
链接
链接
链接
链接
链接

...]]></description><category></category></item><item><title><![CDATA[计算机的时间魔法（定时器）——总结]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/118309227</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/118309227</guid><author>wjc133</author><pubDate>Mon, 28 Jun 2021 18:01:04 +0800</pubDate><description><![CDATA[从硬件层面到Java层面，理顺整个流程是一件很爽的事情，阅读这些源码让你有一种醍醐灌顶的感觉。心中有数仿佛自己也能写个操作系统了的自信（错觉）。
为了大家更好的回顾整个流程，我用图示的方式从头到尾整理了一遍，希望能够对大家有所帮助。

整篇文章都是基于我自己的理解来做的，难免有些错误、疏漏，还请大家指正。
最后的最后，还有一个相对哲学的问题，振荡器是通过电来驱动的。如果时间停止，振荡器还能工作吗？

...]]></description><category></category></item><item><title><![CDATA[Java中的定时器]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/118309027</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/118309027</guid><author>wjc133</author><pubDate>Mon, 28 Jun 2021 17:53:31 +0800</pubDate><description><![CDATA[一、Timer和TimerTask
Timer是jdk中提供的一个定时器工具，使用的时候会在主线程之外起一个单独的线程执行指定的计划任务，可以指定执行一次或者反复执行多次。​
TimerTask是一个实现了Runnable接口的抽象类，代表一个可以被Timer执行的任务。
​
1. 使用
schedule(TimerTask task, long delay, long period)延迟 delay 执行，并每隔period 执行一次
public static void main(String[] ar]]></description><category></category></item><item><title><![CDATA[从Java Thread到OS Thread]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/118308830</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/118308830</guid><author>wjc133</author><pubDate>Mon, 28 Jun 2021 17:49:31 +0800</pubDate><description><![CDATA[我们从Java的线程开始，分析一些多年以来的疑问，到底Java的Thread和系统的Thread有什么关系呢？
一、线程的表现形式
1. 从Thread开始
我们从Thread类看起。在Java里，Thread类就用来表示一条线程。
但很明显，Java的Thread只是在应用层面的表象，如何真正创建一条线程，是在JVM中完成的。
public class Thread implements Runnable {
    // ...
        public synchronized void star]]></description><category></category></item><item><title><![CDATA[操作系统对定时器的应用]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/118308706</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/118308706</guid><author>wjc133</author><pubDate>Mon, 28 Jun 2021 17:40:33 +0800</pubDate><description><![CDATA[到了在操作系统层面，可以依靠硬件产生的定时器中断做很多事情，同时，操作系统的定时器怎么实现呢？我们来分析一下。
1. 硬件定时器
现在的Linux对时间的管理是很复杂的，大体可以分为高精度时钟和低精度时钟。两者互不兼容。
在 Linux 2.6.16 之前，内核只支持低精度时钟。内核围绕着 tick 时钟来实现所有的时间相关功能。tick 是一个定期触发的中断，一般由 PIT 提供，大概 10ms 触发一次 (100HZ)，精度比较低。如果频率设置的太高，就会严重影响系统性能。
（1） tick
以 x86]]></description><category></category></item><item><title><![CDATA[计算机的定时器实现（下）]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/118308514</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/118308514</guid><author>wjc133</author><pubDate>Mon, 28 Jun 2021 17:35:00 +0800</pubDate><description><![CDATA[(在上篇中，我们通过简单的8051芯片，初步窥探了一下定时器的原理和如何驱动。这篇我们来探讨更实际的x86架构)
5. x86的定时器实现
（1）发展历程
x86架构已经有几十年的历史了，随着科技不断进步，定时器的实现也是经历了几个阶段的发展的。

PIC
Intel的传奇中断控制芯片8259在1976年就被用在8085系列产品中。PC在1981年出生时借鉴了这种思想，8259的升级版8259A被用于中断控制，而其统治PC长达近10年，直到486电脑的诞生。
​
APIC
80486DX在1990年上市，其]]></description><category></category></item><item><title><![CDATA[计算机的定时器实现（上）]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/118308341</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/118308341</guid><author>wjc133</author><pubDate>Mon, 28 Jun 2021 17:28:29 +0800</pubDate><description><![CDATA[1. 计算机基本组成
冯·诺依曼体系架构下的计算机，是由运算器、控制器和存储器组成的。现代计算机通常还会有外部存储器和各种外围的I/O设备组成。限于篇幅，我们只能简单的聊一聊运算器、控制器和存储器，不敢深入原理，否则就是另外一个专题了。大家如果有兴趣，我们后面可以再搞一个专题专门来聊一聊。

我以前上学的时候，听过一种很奇怪的说法，说是冯·诺依曼体系就是二进制计算机。其实冯·诺依曼跟二进制没啥关系，真要说二进制体系，那是香农的功劳。

（1）运算器和控制器
大家都知道现在这俩东西合起来被称为了CPU。因为他]]></description><category></category></item><item><title><![CDATA[基于SDCC的工程化实践]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/113883970</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/113883970</guid><author>wjc133</author><pubDate>Sat, 20 Feb 2021 15:12:26 +0800</pubDate><description><![CDATA[基于SDCC的工程化实践
一、上位机环境
MacBook Pro
系统：macOS Big Sur
编译器：SDCC
烧录器：stcgal
二、总结
先说结论：由于sdcc对中文的支持不好，我尝试了各种办法均无解，不想浪费太多时间在趟坑上面，所以暂时放弃了探索。转而使用Windows的PC机作为开发机，重点是使用Keil C编译器。
（为什么需要用到中文？因为要向屏幕上输出中文……  有些液晶屏驱动还不带中文字库，需要自己维护字库，就需要维护charcode和代码对应关系，如果都是用unicode编码来替代]]></description><category></category></item><item><title><![CDATA[常见开源规则引擎对比分析]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/111954160</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/111954160</guid><author>wjc133</author><pubDate>Wed, 30 Dec 2020 11:19:52 +0800</pubDate><description><![CDATA[0x00 目的背景
电商会员服务的等级、积分、权益等模块中，都使用了大量的规则判断。范式基本上是 达成xxx条件，执行xxx行为 。这很符合规则引擎那一套，因此下面选取了几个业界常见的规则引擎进行分析。
我们分别都从使用角度、原理角度两个方面进行分析。
0x01 easy-rules
项目地址：https://github.com/j-easy/easy-rules
1. 规则模型
![image.png](https://img-blog.csdnimg.cn/img_convert/b5724b0dcd]]></description><category></category></item><item><title><![CDATA[0x400_flag 立一个多写blog的flag]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/102721223</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/102721223</guid><author>wjc133</author><pubDate>Thu, 24 Oct 2019 13:17:15 +0800</pubDate><description><![CDATA[刚刚登陆上来是为了查点资料。发现今天发博文还有勋章奖励，要不就顺手水一篇文章好了。
最近在研究Docker的原理，在这里立一个flag好了，日后还是要多写博文，提升一下技术深度。

...]]></description><category></category></item><item><title><![CDATA[使用C++创建jvm虚拟机]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/72831426</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/72831426</guid><author>wjc133</author><pubDate>Thu, 01 Jun 2017 15:08:44 +0800</pubDate><description><![CDATA[如果我们愿意同样也可以在C++中调用Java方法。]]></description><category></category></item><item><title><![CDATA[教程7--Schemas和客户端库]]></title><link>https://blog.youkuaiyun.com/wjc133/article/details/68942812</link><guid>https://blog.youkuaiyun.com/wjc133/article/details/68942812</guid><author>wjc133</author><pubDate>Sat, 01 Apr 2017 11:43:17 +0800</pubDate><description><![CDATA[Schemas可用于自动生成文档，也可以用来驱动动态客户端库的使用。Core API为了能够提供schema支持，REST框架使用了Core API。]]></description><category></category></item></channel></rss>