参考资料

  1. phpMyAdmin 是一个用 PHP 编写的免费开源工具
  2. Notary 是一个开源项目,用于对数字内容进行签名和验证,确保内容的完整性和来源可信。
  3. rspamd 是一个快速、开源的垃圾邮件过滤系统
  4. Fluentd 是一个开源的日志收集系统
  5. Groovy 是一种基于 JVM 的动态编程语言
  6. Docker如何设置中文界面?
  7. Percona是一家提供开源数据库解决方案的公司,专注于MySQL、MongoDB、PostgreSQL等数据库的性能优化
  8. Cloudreve 启用 JWT(JSON Web Tokens)加密通信

Clojure 简介

Clojure 是一种运行在 JVM 上的 Lisp 方言,由 Rich Hickey 于 2007 年创建。它是一种函数式编程语言,强调不可变数据和并发编程。

主要特点

  • 动态类型系统

  • 函数式编程范式

  • 不可变数据结构

  • 与 Java 互操作性强

  • 强大的宏系统

  • 并发编程支持

  • REPL 开发环境

最新更新内容及时间

Clojure 1.11.1 (2022年4月发布)

  • 新增 parse-longparse-double 函数

  • 改进错误信息

  • 性能优化

镜像下载地址

https://clojure.org/guides/getting_started

官网地址

https://clojure.org/

文档地址

Docker 安装示例

# 使用官方 Clojure 镜像
docker run -it clojure

# 创建新项目
docker run -it --rm -v "$PWD":/usr/src/app -w /usr/src/app clojure lein new app myapp

.yarn 设置教程

Clojure 通常使用 Leiningen 或 deps.edn 作为构建工具,不常用 Yarn。以下是 deps.edn 配置示例:

{:deps {org.clojure/clojure {:mvn/version "1.11.1"}
        ring/ring-core {:mvn/version "1.9.5"}}
 :paths ["src"]}

常见错误问题

  1. ClassNotFoundException

    • 原因: 依赖未正确加载

    • 解决: 检查 deps.edn 或 project.clj 中的依赖声明

  2. NullPointerException

    • 原因: 尝试在 nil 上调用方法

    • 解决: 使用 some->when 进行 nil 检查

  3. ArityException

    • 原因: 函数调用参数数量不匹配

    • 解决: 检查函数定义和调用处的参数数量

  4. REPL 不响应

    • 原因: 长时间运行的计算阻塞 REPL

    • 解决: 使用 future 或增加 JVM 堆大小

  5. Java 互操作问题

    • 原因: 不正确的 Java 方法调用

    • 解决: 确保使用正确的语法: (.methodName object args)