Drools 原理之 RETE 算法

RETE 算法是卡内基梅隆大学的 [[Charles L.Forgy]] 博士在 1974 年发表的论文中实现的算法,是一种[[模式匹配算法]]。简易版本的论文发表于 1982 年 (http://citeseer.ist.psu.edu/context/505087/0)。拉丁语的 rete 表示 ”net” 和 “network”。 这个算法设计的目的是为了在大量的规则,Objects(或者说 Facts)中寻找匹配的规则。其核心思想是通过分离的匹配项,根据内容动态的构造匹配树,缓存中间结果,以空间换取时间,降低计算量。 RETE 算法主要可以分 Read more ...


使用 Beancount 记账篇二:各类账单导入

在上一篇如何给 Beancount 账户命名 的文章中,我们已经迈出了 Beancount 使用的第一步,建立一套属于自己的账户系统,之后所有的资金就会在这些账户之间流转。复式记账讲求账户的流入与流出。 那接下来就是 Beancount 真正关键的地方,熟悉并导入以前的帐本。使用 Beancount 就会想着如何将之前的账单导入到 Beancount。 但人的惰性总是让我们不会每一笔交易都事无巨细的记录下来,所以我的方式便是固定一个时间,然后对上一个周期内的账单进行一次性批量处理,比如在信用卡账单日对信用卡消费做处理,或者在月末对微信账单进行处理。 Read more ...


使用 Beancount 记账篇一:给账户命名

在之前整理复式记账 的文章中曾短暂的提及过 Beancount,上一篇文章简单介绍了一下 Beancount,现在经过一段时间的使用,也正好回顾总结一下自己的使用经历和经验。 要入门 Beancount 的使用,其中最重要的第一步便是充分的认识 Beancount 中的账户概念,在复式记账中资金都是在账户与账户之间流转,因此账户就非常重要。但是因为 Beancount 的入门难度要远远超过其他的记账软件,所以迈出第一步就变得至关重要,迈出了这第一步后面就会发现 Beancount 能带来远超预期的收益。 在 Beancount 中内置类几类账户,这几 Read more ...


如何进行有效的讨论 论 Clubhouse

这两天 Clubhouse 非常火热,又使得「声音」这一载体被放到了台前,但听了多个 Room,并没有收获太多,反而是相对较大的「杂音」影响了收听,并且大部分的观点并没有让人眼前一亮的感觉。 而从去年读[[洛克]], [[密尔]]开始,我就在思考什么叫做「有效讨论」,这些先贤们在写下他们流传百世的著作之前,当然有其自身深入地思考,但也绝不是将自己关在小黑屋与世隔绝而诞生了其思想,往往在他们形成自己的思想之前,他们会阅读大量比他们时代更早的作品,也会与他们同时代的伟大思想家进行书信,甚至直接的交流。在这样的思辩和讨论之中,他们最终才会形成自己的思想,这些 Read more ...

2021-02-06 discussion , locke , clubhouse , talk , podcast , voice , sound

使用 Beancount 记账篇零:Beancount 入门使用

说起 Beancount,就不得不提复式记账,在之前的文章里面已经完整的叙述过复式记账是比单式记帐更加科学的记账方法,但是复式记账在目前只被大多数企业所采用,并没有被大众所接受,市面上也依然缺少复式记账的工具。而 Beancount 就是其中比较好用的一个工具。 为什么要用 Beancount 记账 为什么要用 Beancount 记账? 要回答这个问题需要从两个方面说起,一方面是为什么要记账,另一方面是在这么多的记账软件中为什么要用 Beancount。 首先回答为什么要记账,在之前的文章中也提到过,通过记账是认识自己的一种方式,通过周期性的记账 Read more ...


Maven 中的 classifier

今天看 maven-embedder 中定义的引用 [[Google Guice 轻量级依赖注入]] 依赖时,定义了 classifier 标签。故来学习一下 Maven 配置中 classifier 的含义。 首先来看两个例子: <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.2.2</version> Read more ...

2021-01-29 maven , build-tool , java

解决 NoSuchMethodException 错误的方法

问题的出现 在使用 Java Instrumentation API 的时候,因为在应用启动的时候加载了一个 Java Agent,然后在 Java Agent 中依赖的包,和应用内依赖的包产生了冲突,同时使用了 commons.lang3 这个包,但是依赖的版本不一致。导致使用 FieldUtils 的时候出现了 NoSuchMethodError: Caused by: java.lang.NoSuchMethodError: org.apache.commons.lang3.reflect.FieldUtils.getFieldsWithAnno Read more ...

2021-01-27 java , jdk , jvm , methodology

WhatPulse 使用记录

一年多以前购买 MacBook Pro 的时候安装了一款叫做 WhatPulse 的应用。WhatPulse 是一个记录键盘以及外设使用的工具,可以观察到使用了多少次键盘,触摸板,鼠标等等数据。 官网地址:https://whatpulse.org/ 这一年多以来也并没有主力使用这一台 MacBook Pro, 但之前就是想记录一下键盘的按键次数,从而想要更换一下键盘布局的,看到很多人说更换成 Dvorak 之后会大大的减少手指的移动,但是这几年来虽然切换了中文输入法使用小鹤双拼,但键盘布局还是没有尝试更换过,切换的成本还是非常大。本来想使用科学的方 Read more ...

2021-01-10 macos , keyboard-record , linux , mac , tool , mouse , touchpal

NextDNS 使用体验

之前在折腾 [[AdGuard Home]] 的时候偶然间了解到了 NextDNS,简单了解一下 NextDNS 能做的事情相当于把 AdGuard Home 在本地的 DNS 处理给部分搬到了云端。虽然提升了一定的可用度,毕竟不是所有的设备都在 AdGuard Home 的网络中。然后看到 NextDNS 还支持 Web3,看设置界面就已经支持了 ENS,HNS 等等。 但之所以没有深入使用就是因为 DNS 还是一个非常基础的服务,但是 NextDNS 在国内并没有节点,所以导致连接经常出问题,要不就是连接不上,要不就是拖慢了解析速度。 NextD Read more ...

2021-01-06 nextdns , dns , adguard-home , privacy

我的笔记法(借助 Zettelkasten 和 Obsidian)

在上次总结了2020读书笔记 之后,Tai 问我如何通过 Zettelkasten 和 Obsidian 来实践我的笔记。这里就也正好总结一下我自己的方法,希望可以在分享过程,或者和大家的讨论中来获取更多有效率方法。 我是如何来记笔记的?或者更具体一些,如何来记读书笔记的。就像是 How to read a book 中所说那样,不同类型的书有不同的阅读方式。其实笔记也一样,针对的内容不同,记笔记的方式也不尽相同。 我是如何做读书笔记的 快速开始 每当我拿起一本新的书,我通常会去豆瓣图书看一下这本书的相关介绍,然后创建一个新的笔记,将作者等等信息, Read more ...


最近文章

  • Trae 字节推出的一款本地 AI 代码编辑器 前两天看到字节也发布了一款基于 Claude Sonnet 3.5 的 IDE,起名叫做 Trae(这个名字是 The Real AI Engineer 的缩写),对标我之前介绍过的 Cursor,Windsurf 等等代码编辑器,都是以 AI 为切入点,辅助进行编码,不仅可以进行自动代码生成补全,还可以理解上下文,通过超长的 Context 提供多文件生成修改的能力。
  • Tianji 开源的网站流量分析,服务监控系统 Tianji 是一个 All in One 的网站分析(Website analytics),服务监控(Uptime Monitor),业务告警(Server Status)的系统。
  • Cline 强大的 AI 辅助编程工具 之前的文章中介绍过 AI 支持的编辑器 Cursor,还介绍过 Codium 推出的 AI 智能编辑器 Windsurf,很早之前也介绍过如何在 JetBrains IntelliJ IDEA 中使用 GitHub Copilot 以及如何在命令行终端下使用 GitHub Copilot CLI 可以在终端下完成一些 AI 智能补全,提示等等操作。
  • 利用 PirateShip 打单节省美国转运费用 之前因为申请 [[ITIN]] 已经申请了一个 Anytime Mailbox 美国的私人地址,但是如果直接让 Anytime Mailbox 房东转寄邮件,价格非常昂贵,以我自己的经验只邮寄 0.1 磅不到的信件,房东报价就高达 70 美元。所以这篇文章我就总结一下如何与 Anytime Mailbox 的房东进行沟通并让房东使用我们自己提供的邮寄单,将我的物品从美国寄送回来。
  • Mint Mobile 又一家美国移动网络运营商 在之前的一篇文章中,因为在 Mint Mobile 上的商城上购买了 299 美元 Pixel 9 手机,暂时了解到了 Mint Mobile 这家公司,这里再来详细地介绍一下这家公司。