Clojure经典实例

Clojure经典实例

O'Reilly Media, Inc. 介绍

编程语言习得

本书如何写成

读者对象

其他资源

本书结构

各章简介

软件获取

本书约定

REPL会话
控制台/终端会话

使用代码示例

Safari® Books Online

Ryan Neufeld
Luke VanderHart

1 原生数据

1.0 简介

字符串
数值类型
日期

1.1 改变字符串的大小写

问题
解决方案
讨论
参阅

1.2 清除字符串中的空白字符

问题
解决方案
讨论
参阅

1.3 利用部件构建字符串

问题
解决方案
讨论
参阅

1.4 将字符串作为字符序列

问题
解决方案
讨论
参阅

1.5 字符与整数的转换

问题
解决方案
讨论
参阅

1.6 格式化字符串

问题
解决方案
讨论
参阅

1.7 按模式查找字符串

问题
解决方案
讨论
参阅

1.8 利用正则表达式从字符串中取出值

问题
解决方案
讨论
参阅

1.9 对字符串执行查找和替换

问题
解决方案
讨论
参阅

1.10 将字符串切分成部分

问题
解决方案
讨论
参阅

1.11 基于数量为字符串加复数

问题
解决方案
讨论
参阅

1.12 在字符串、符号和关键字之间转换

问题
解决方案
讨论
参阅

1.13 利用非常大或非常小的数来保持精度

问题
解决方案
讨论
参阅

1.14 使用有理数

问题
解决方案
讨论
参阅

1.15 解析数字

问题
解决方案
讨论
参阅

1.16 数的截断和舍入

问题
解决方案
讨论
参阅

1.17 模糊比较

问题
解决方案
讨论
参阅

1.18 三角计算

问题
解决方案
讨论
参阅

1.19 根据不同的进制输入和输出整数

问题
解决方案
讨论
参阅

1.20 计算数值集合的统计值

问题
解决方案
讨论
参阅

1.21 位操作

问题
解决方案
讨论
参阅

1.22 生成随机数

问题
解决方案
讨论
参阅

1.23 操作货币

问题
解决方案
讨论
参阅

1.24 生成唯一ID

问题
解决方案
讨论
参阅

1.25 得到当前的日期和时间

问题
解决方案
讨论
参阅

1.26 用字面值来表示日期

问题
解决方案
讨论
参阅

1.27 利用clj-time解析日期和时间

问题
解决方案
讨论
参阅

1.28 利用clj-time格式化日期

问题
解决方案
讨论
参阅

1.29 比较日期

问题
解决方案
讨论
参阅

1.30 计算时间间隔的长度

问题
解决方案
讨论
参阅

1.31 生成一系列的日期和时间

问题
解决方案
讨论
参阅

1.32 利用原生Java类型生成一系列日期和时间

问题
解决方案
讨论
参阅

1.33 根据日期间的关系取得日期

问题
解决方案
讨论
参阅

1.34 处理时区

问题
解决方案
讨论
参阅

1.35 将Unix时间戳转换成Date对象

问题
解决方案
讨论
参阅

1.36 将Date对象转换成Unix时间戳

问题
解决方案
讨论
参阅

2 复合数据

2.0 简介

不变性
持久性
序列抽象

2.1 创建列表

问题
解决方案
讨论
参阅

2.2 从已有的数据结构创建列表

问题
解决方案
讨论
参阅

2.3 在列表中“添加”一个元素

问题
解决方案
讨论
参阅

2.4 从列表中“移除”一个元素

问题
解决方案
讨论
参阅

2.5 测试是否列表

问题
解决方案
讨论
参阅

2.6 创建向量

问题
解决方案
讨论
参阅

2.7 在向量中“添加”一个元素

问题
解决方案
讨论
参阅

2.8 从向量中“移除”一个元素

问题
解决方案
讨论
参阅

2.9 取得索引处的值

问题
解决方案
讨论
参阅

2.10 设置索引处的值

问题
解决方案
讨论
参阅

2.11 创建集

问题
解决方案
讨论
参阅

2.12 在集中添加和移除元素

问题
解决方案
讨论
参阅

2.13 测试集成员

问题
解决方案
讨论
参阅

2.14 使用集操作

问题
解决方案
讨论
参阅

2.15 创建映射表

问题
解决方案
讨论
参阅

2.16 从映射表中取得值

问题
解决方案
讨论
参阅

2.17 从映射表中同时取出多个键

问题
解决方案
讨论
参阅

2.18 设置映射表中的键

问题
解决方案
讨论
参阅

2.19 用复合值作为映射表的键

问题
解决方案
讨论
参阅

2.20 将映射表作为序列(或反过来)

问题
解决方案
讨论
参阅

2.21 对映射表应用函数

问题
解决方案
讨论
参阅

2.22 一个键保存多个值

问题
解决方案
讨论
参阅

2.23 合并映射表

问题
解决方案
讨论
参阅

2.24 值的比较与排序

问题
解决方案
讨论
参阅

2.25 从集合中移除重复元素

问题
解决方案
讨论
参阅

2.26 检测集合是否包含几个值中的一个

问题
解决方案
讨论
参阅

2.27 实现定制的数据结构:红黑树(第一部分)

问题
解决方案
讨论
参阅

2.28 实现定制的数据结构:红黑树(第二部分)

问题
解决方案
讨论
参阅

3 广义计算

3.0 简介

3.1 运行最小的Clojure REPL

问题
解决方案
讨论
参阅

3.2 交互式文档

问题
解决方案
讨论
参阅

3.3 探索命名空间

问题
解决方案
讨论
参阅

3.4 尝试库而不指明依赖关系

问题
解决方案
讨论
参阅

3.5 运行Clojure程序

问题
解决方案
讨论
参阅

3.6 从命令行运行程序

问题
解决方案
讨论
参阅

3.7 解析命令行参数

问题
解决方案
讨论
参阅

3.8 创建定制的项目模板

问题
解决方案
讨论
参阅

3.9 构建具有多态行为的函数

问题
解决方案
讨论
参阅

3.10 扩展内建的类型

问题
解决方案
讨论
参阅

3.11 用 core.async 解除消费者和生产者的耦合

问题
解决方案
讨论
参阅

3.12 用core.match为Clojure表达式制作解析器

问题
解决方案
讨论
参阅

3.13 用core.logic查询层级图

问题
解决方案
讨论
参阅

3.14 演奏儿歌

问题
解决方案
讨论
参阅

4 本地 I/O

4.0 简介

4.1 写入STDOUT和STDERR

问题
解决方案
讨论
参阅

4.2 从控制台读入一次击键

问题
解决方案
讨论
参阅

4.3 执行系统命令

问题
解决方案
讨论
参阅

4.4 访问资源文件

问题
解决方案
讨论
参阅

4.5 复制文件

问题
解决方案
讨论
参阅

4.6 删除文件或目录

问题
解决方案
讨论
参阅

4.7 列出目录中的文件

问题
解决方案
讨论
参阅

4.8 文件的内存映射

问题
解决方案
讨论
参阅

4.9 读写文本文件

问题
解决方案
讨论
参阅

4.10 使用临时文件

问题
解决方案
讨论
参阅

4.11 在任意位置读写文件

问题
解决方案
讨论
参阅

4.12 并行文件处理

问题
解决方案
讨论
参阅

4.13 带归约的并行文件处理

问题
解决方案
讨论
参阅

4.14 读写Clojure数据

问题
解决方案
讨论
参阅

4.15 在配置文件中使用edn

问题
解决方案
讨论
参阅

4.16 将记录作为edn值发布

问题
解决方案
讨论
参阅

4.17 读取Clojure数据时处理未知的带标签字面值

问题
解决方案
讨论
参阅

4.18 从文件中读取属性

问题
解决方案
讨论
参阅

4.19 读写二进制文件

问题
解决方案
讨论
参阅

4.20 读写CSV数据

问题
解决方案
讨论
参阅

4.21 读写压缩文件

问题
解决方案
讨论
参阅

4.22 处理XML数据

问题
解决方案
讨论
参阅

4.23 读写JSON数据

问题
解决方案
讨论
参阅

4.24 生成PDF文件

问题
解决方案
讨论
参阅

4.25 生成带可滚动文本的GUI窗口

问题
解决方案
讨论
参阅

5 网络 I/O 和 Web 服务

5.0 简介

5.1 发出HTTP请求

问题
解决方案
讨论
参阅

5.2 执行异步HTTP请求

问题
解决方案
讨论
参阅

5.3 发出Ping请求

问题
解决方案
讨论
参阅

5.4 取得并解析RSS数据

问题
解决方案
讨论
参阅

5.5 发送邮件

问题
解决方案
讨论
参阅

5.6 用RabbitMQ实现队列通信

问题
解决方案
讨论
参阅

5.7 通过MQTT与嵌入式设备通信

问题
解决方案
讨论
参阅

5.8 并发使用ZeroMQ

问题
解决方案
讨论
参阅

5.9 创建TCP客户端

问题
解决方案
讨论
参阅

5.10 创建TCP服务器

问题
解决方案
讨论
参阅

5.11 收发UDP包

问题
解决方案
讨论
UDP组播
参阅

6 数据库

6.0 简介

6.1 连接SQL数据库

问题
解决方案
讨论
参阅

6.2 利用连接池连接SQL数据库

问题
解决方案
讨论
参阅

6.3 操作 SQL 数据库

问题
解决方案
讨论
参阅

6.4 用Korma简化SQL

问题
解决方案
讨论
参阅

6.5 用Lucene进行全文查找

问题
解决方案
讨论
参阅

6.6 用ElasticSearch建立数据索引

问题
解决方案
讨论
参阅

6.7 使用Cassandra

问题
解决方案
讨论
参阅

6.8 使用MongoDB

问题
解决方案
讨论
参阅

6.9 使用Redis

问题
解决方案
讨论
参阅

6.10 连接Datomic数据库

问题
解决方案
讨论
参阅

6.11 为Datomic数据库定义数据模式

问题
解决方案
讨论
参阅

6.12 向Datomic写入数据

问题
解决方案
讨论
参阅

6.13 从Datomic数据库中删除数据

问题
解决方案
讨论
参阅

6.14 尝试Datomic事务而不提交

问题
解决方案
讨论
参阅

6.15 遍历Datomic索引

问题
解决方案
讨论
参阅

7 Web 应用

7.0 简介

7.1 Ring简介

问题
解决方案
讨论
参阅

7.2 使用Ring中间件

问题
解决方案
讨论
参阅

7.3 用Ring提供静态文件

问题
解决方案
讨论
参阅

7.4 用Ring处理表单数据

问题
解决方案
讨论
参阅

7.5 用Ring处理Cookie

问题
解决方案
讨论
参阅

7.6 用Ring保存会话

问题
解决方案
讨论
参阅

7.7 在Ring中读写请求和响应的头

问题
解决方案
讨论
参阅

7.8 用Compojure路由请求

问题
解决方案
讨论
参阅

7.9 用Ring执行HTTP重定向

问题
解决方案
讨论
参阅

7.10 用Liberator构建REST风格的应用

问题
解决方案
讨论
参阅

7.11 用Enlive实现HTML模板

问题
解决方案
讨论
参阅

7.12 用Selmer实现模板

问题
解决方案
讨论
参阅

7.13 用Hiccup实现模板

问题
解决方案
讨论
参阅

7.14 渲染Markdown文档

问题
解决方案
讨论
参阅

7.15 用Luminus来构建应用

问题
解决方案
讨论
参阅

8 性能与开发效率

8.0 简介

8.1 AOT编译

问题
解决方案
讨论
参阅

8.2 将项目打包成JAR文件

问题
解决方案
讨论
参阅

8.3 创建WAR文件

问题
解决方案
讨论
参阅

8.4 将应用作为守护进程运行

问题
解决方案
讨论
参阅

8.5 利用类型暗示减轻性能问题

问题
解决方案
讨论
参阅

8.6 用原生Java数组进行快速数学运算

问题
解决方案
讨论
参阅

8.7 用Timbre进行简单剖析

问题
解决方案
讨论
参阅

8.8 用Timbre记日志

问题
解决方案
讨论
参阅

8.9 向Clojars发布库

问题
解决方案
讨论
参阅

8.10 使用宏来简化API弃用

问题
解决方案
讨论
参阅

9 分布式计算

9.0 简介

Cascalog

9.1 用Storm构建活动推送系统

问题
解决方案
讨论
参阅

9.2 用抽取转换加载(ETL)管道来处理数据

问题
解决方案
讨论
参阅

9.3 聚合大型文件

问题
解决方案
讨论
参阅

9.4 测试Cascalog工作流

问题
解决方案
讨论
参阅

9.5 设置Cascalog任务的检查点

问题
解决方案
讨论
参阅

9.6 解释Cascalog查询

问题
解决方案
讨论
参阅

9.7 在Elastic MapReduce上运行Cascalog任务

问题
解决方案
讨论
参阅

10 测试

10.0 简介

10.1 单元测试

问题
解决方案
讨论
参阅

10.2 用Midje测试

问题
解决方案
讨论
参阅

10.3 通过随机输入进行彻底测试

问题
解决方案
讨论
参阅

10.4 寻找导致失败的值

问题
解决方案
讨论
参阅

10.5 运行基于浏览器的测试

问题
解决方案
讨论
参阅

10.6 追踪代码执行

问题
解决方案
讨论
参阅

10.7 用core.typed避免空指针异常

问题
解决方案
讨论
参阅

10.8 用core.typed验证Java互操作

问题
解决方案
讨论
参阅

10.9 用core.typed检查高阶函数

问题
解决方案
讨论
参阅

关于封面

思维导图

Clojure经典实例

防止博客图床图片失效,防止图片源站外链:

http://www.processon.com/chart_image/5e5a8adde4b0c037b607cc50.png)

思维导图在线编辑链接:

https://www.processon.com/view/5e5a8adde4b0c037b607cc4d

原文地址:https://www.cnblogs.com/jingle1267/p/12710445.html