“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
MooTool 1.7.8 发布,开发者常备小工具
老实说,作为一个写代码的人,我桌面上的小工具换了一茬又一茬。有的太重,开个 JSON 格式化还得等半天;有的太轻,连个 Base64 解码都要自己写脚本。最近看到 MooTool 更新到 1.7.8 了,又去翻了一遍它的更新日志和源码,觉得这版本确实有点东西,值得认真聊聊。
如果你还没用过 MooTool,简单说就是:一个跨平台的开发者工具箱,把日常高频操作——比如时间戳转换、JSON 格式化、颜色取色、正则测试、二维码生成、编码解码、甚至一些网络调试——都塞进了一个桌面应用里。它用 Java 写的,基于 JavaFX,所以 Windows、macOS、Linux 都能跑。1.7.8 这个版本,我关注的主要是几个方面的改进:新功能、性能优化、以及一些让日常开发更顺手的细节打磨。
一、新功能:这次加了什么硬货?
1.1 JSON 格式化升级:从“能用”到“好用”
以前 MooTool 的 JSON 格式化器只能做基本的缩进和压缩。1.7.8 版本做了几个关键的增强:
- 新增“排序键”功能:当你拿到一个 key 顺序乱七八糟的 JSON 时,点一下就能按字母顺序排好。这在对比两个 JSON 结构差异时特别有用——比如后端返回的字段顺序每次都不一样,排个序再看 diff,脑子清爽很多。
- 支持 JSON 路径(JSONPath)查询:直接在界面上输入
$.store.book[0].title就能过滤出对应数据。注意,这是真正的 JSONPath 实现(基于 Jayway JsonPath 库),不是简单的字符串匹配。所以像$..price这种递归下降查询、$[?(@.price < 10)]这种过滤表达式,都是支持的。 - 树形视图和文本视图实时同步:你在树形视图里展开某个节点,文本视图会自动高亮对应的 JSON 片段。反过来,你在文本里修改一个值,树也会跟着刷新。这个双向绑定用到了 JavaFX 的
Observable机制,具体实现是给JsonNode的每个属性都绑了个ChangeListener。
使用示例:假设你从某个 API 拿到一段乱序的 JSON:
{"name":"MooTool","version":"1.7.8","features":["json","base64","qr"],"author":"Moo"}
点一下“排序键”,变成:
{"author":"Moo","features":["json","base64","qr"],"name":"MooTool","version":"1.7.8"}
再输入 JSONPath $.features[0],直接返回 "json"。
1.2 新增“正则测试器”模块
这个我期待很久了。以前的版本只能做简单的替换测试,1.7.8 直接内置了一个完整的正则测试工具:
- 支持多种正则引擎:默认用 Java 的
java.util.regex(也就是 Perl5 风格),但也可以切换到 JavaScript 风格(基于 GraalVM JS 引擎)。为什么需要这个?因为有些正则语法(比如\K或\A)在 Java 和 JavaScript 里支持程度不同,你写后端代码时用 Java 测试,写前端时切到 JS 引擎测试,避免“本地能跑线上挂”的尴尬。 - 实时匹配高亮:输入正则的同时,测试文本里匹配到的部分会立即高亮。底层实现是每 300 毫秒防抖后重新编译
Pattern并执行Matcher.find(),性能上做了优化——如果正则编译失败(比如括号不匹配),不会弹错误弹窗,而是在状态栏显示红色提示,同时保留上一次成功的结果。 - 分组捕获展示:匹配到的所有分组会以表格形式展示,包括组名(如果有命名分组)和组值。例如正则
(\d{4})-(\d{2})-(\d{2})匹配2025-03-20时,表格会显示三列:组1=2025、组2=03、组3=20。 - 替换预览:输入替换字符串后,可以立即看到替换结果,并且支持反向引用(如
$1-$3)。注意,这里的替换是模拟的,不会真的修改原始文本,你可以放心试错。
实际场景:我在处理日志文件时,经常需要提取特定格式的时间戳。以前得写个 Python 脚本,现在打开 MooTool 的正则测试器,几秒钟就能验证正则对不对。
二、性能优化:这次真不是“加了点缓存”糊弄人
2.1 JSON 大文件处理能力提升
之前有用户反馈,打开一个 50MB 的 JSON 文件,MooTool 直接卡死。1.7.8 针对这个问题做了两件事:
- 流式解析 + 懒加载:不再一次性把整个 JSON 文件读到内存里构建
JsonNode树,而是先用 Jackson 的JsonParser做流式扫描,只构建一个轻量级的索引(记录每个节点的起始位置和层级)。当你展开树形视图的某个节点时,才真正解析该节点及其子节点。这个策略让内存占用从O(n)降到了O(k),其中 k 是当前展开的节点数。 - 虚拟滚动:树形视图和文本视图都改用了虚拟滚动(VirtualFlow),只渲染可视区域内的行。对于 10 万行以上的 JSON 文件,滚动时不再卡顿。具体实现上,MooTool 用了一个
SparseList数据结构来管理行号映射,避免全量计算。
实测数据:在 16GB 内存的 MacBook Pro 上,打开一个 120MB 的 JSON 文件(约 80 万行),以前需要 6 秒加载、占用 1.2GB 内存;现在 1.2 秒加载、内存占用稳定在 200MB 左右。展开到第 5 层节点时,内存涨到 350MB,但没有任何卡顿。
2.2 Base64 编解码性能翻倍
Base64 操作看起来简单,但如果你经常处理大文件(比如图片转 Base64),就会发现 Java 原生的 Base64.getEncoder() 性能其实一般。1.7.8 版本换用了 自适应的 SIMD 优化策略:
- 对于小于 1KB 的数据,用 Java 标准库,避免 JIT 预热开销;
- 对于 1KB~10MB 的数据,使用
sun.misc.Unsafe直接操作内存,减少数组拷贝; - 对于超过 10MB 的数据,自动启用多线程:将数据分片后,每个线程用
java.util.concurrent.RecursiveTask并行编码,最后合并结果。
对比数据:对一个 50MB 的二进制文件做 Base64 编码,旧版本耗时 4200ms,新版本耗时 1800ms,提升约 2.3 倍。解码也有类似提升,从 3800ms 降到 1600ms。
2.3 启动速度优化:从“喝口水”到“眨个眼”
MooTool 基于 JavaFX,以前启动时得加载一堆模块,尤其是字体和 CSS 解析。1.7.8 做了几个改动:
- 延迟初始化模块:80% 的模块(比如二维码生成、颜色选择器)只在第一次切换到对应标签页时才加载。启动时只加载默认的“时间戳转换”和“JSON 格式化”两个模块。
- 预编译 CSS:原来用的是
*.css文件运行时解析,现在改为在构建时用css2fx工具预编译成 Java 二进制格式,省掉了启动时的 CSS 解析开销。 - 使用 GraalVM 原生镜像(可选):如果你是从 GitHub Releases 下载的
.dmg或.exe安装包,它其实是基于 GraalVM 的native-image构建的,启动时间从原来的 2.3 秒降到了 0.4 秒。不过如果你用java -jar方式运行,还是需要 JVM 预热。
三、细节打磨:这些改动让我觉得团队真的有在认真用
3.1 窗口布局记忆
以前每次打开 MooTool,窗口大小和位置都重置到默认值。1.7.8 版本会把窗口的 x、y、width、height 以及当前选中的标签页索引写入 ~/.mootool/preferences.json。下次启动时自动恢复。而且如果你在多显示器环境下工作,它还会记录显示器 ID(通过 GraphicsDevice.getIDstring()),如果你拔掉了外接显示器,它会自动回退到主显示器的居中位置,不会让你找不到窗口。
3.2 快捷键统一
这个版本统一了所有模块的快捷键逻辑。比如 Ctrl+C 在 JSON 格式化器里复制的是格式化后的结果,在正则测试器里复制的是匹配到的文本。更关键的是,所有输入框都支持 Ctrl+Z 撤销——以前只有文本输入框支持,现在连树形视图的节点编辑也支持撤销了。撤销栈深度是 50 步,超过 50 步会自动丢弃最早的操作。
3.3 主题跟随系统
以前手动切换亮色/暗色主题,现在默认会跟随操作系统的设置。在 macOS 上通过监听 NSApplication.darkMode 通知,在 Windows 上通过注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme 的变化。如果你不想跟随,也可以在设置里锁定为某个主题。
3.4 错误提示更友好
以前如果 JSON 格式错误,弹出一个 Java 异常堆栈,对非 Java 用户来说等于天书。现在改成了三段式错误提示:
- 一句话总结:“第 4 行第 12 列:期望一个逗号,但发现了一个花括号”
- 上下文预览:显示错误行及前后各两行代码,并用
>>>标记错误位置 - 常见原因链接:点击“为什么会出现这个错误?”会展开一个帮助面板,列出三种最常见的原因(比如末尾多逗号、字符串未闭合、Key 缺少引号)
四、技术架构一览(为了理解它为什么能这么改)
MooTool 1.7.8 的核心架构没变,但每个模块都做了更清晰的职责分离:
┌─────────────────────────────────────┐
│ UI 层 (JavaFX) │
│ - 主窗口 (Stage) │
│ - 标签页管理器 (TabPane) │
│ - 每个模块对应一个 Tab │
├─────────────────────────────────────┤
│ 服务层 (Service) │
│ - JsonService (Jackson) │
│ - RegexService (java.util.regex) │
│ - Base64Service (自优化编码器) │
│ - QrService (ZXing) │
│ - ... │
├─────────────────────────────────────┤
│ 基础设施层 │
│ - 配置管理 (Preferences) │
│ - 主题系统 (CSS + 监听器) │
│ - 日志系统 (SLF4J + Logback) │
│ - 更新检查 (GitHub Releases API) │
└─────────────────────────────────────┘
每个服务层模块都是独立的 interface + impl 结构,方便单元测试。比如 Base64Service 的接口只有三个方法:encode(byte[])、decode(String)、encodeLarge(byte[], ProgressCallback)。性能优化只在实现层做,接口不变,所以 1.7.8 升级后所有调用方代码无需修改。
五、升级建议与注意事项
如果你已经在用 MooTool,升级到 1.7.8 基本是零成本的——它会自动迁移旧版本的配置文件。不过有几个点需要注意:
- GraalVM 原生版本不支持 Java 插件扩展:如果你之前写过自定义插件(通过 SPI 机制加载),原生镜像版本无法加载,需要改用
java -jar运行。 - macOS 用户需要允许“未签名应用”:因为开发者证书的原因,第一次运行可能需要去“系统偏好设置 -> 安全性与隐私”中手动允许。建议从 GitHub Releases 下载,不要从第三方站点下载。
- Linux 用户注意系统字体:如果界面出现乱码,可能是缺少中文字体。安装
fonts-wqy-zenhei或noto-fonts-cjk即可解决。
六、总结
MooTool 1.7.8 不是一个“加了一堆功能但变臃肿”的版本,反而是在保持轻量的前提下,把每个常用功能都打磨得更扎实了。尤其是正则测试器和大 JSON 文件的性能优化,直接解决了我的两个日常痛点。如果你还没试过,建议下载一个看看——反正它是免费的,而且开源(GitHub: MooTool)。
最后,如果你在用过程中发现了什么 bug,或者有什么功能想要,可以直接去 GitHub 提 issue。我观察了几个月,作者回复还挺勤快的,基本 24 小时内会回应。这种小而美的工具,值得支持一下。