0%

今天看到一篇通过一个比较有意思的示例来讲解 reduce 函数使用的文章 reduce all the things,自己也依葫芦画瓢的在 Swift 4.0 下实现了一遍 :)

示例大致是这样的:

如下为美国各个城市的 persons 列表,其中每个 person 的结构包括姓名、所属城市(其中城市名字符串的逗号之后为州名,如 CA 为加利福尼亚州)、平均年龄。请使用 map/flatmap/filter/reduce 等函数来封装一个查询指定州的总人数和平均年龄,其中函数输入参数为州名,persons 列表。

1
2
3
4
5
6
7
8
9
let persons: [[String: Any]] = [
["name": "Carl Saxon", "city": "New York, NY", "age": 44],
["name": "Travis Downing", "city": "El Segundo, CA", "age": 34],
["name": "Liz Parker", "city": "San Francisco, CA", "age": 32],
["name": "John Newden", "city": "New Jersey, NY", "age": 21],
["name": "Hector Simons", "city": "San Diego, CA", "age": 37],
["name": "Hector Simons", "city": "Douglas County, CO", "age": 39],
["name": "Brian Neo", "age": 27],
]

这个示例如果是用 map/flatmap/filter 等函数组合起来也是可以实现的,只是比较啰嗦不够优雅,而且在这个 persons 量级上升后,性能也会不那么乐观(主要涉及到对整个 persons 的遍历次数,使用 reduce 只需要对 persons 遍历一次,具体可以参考那篇文章)。

Read more »

简要记录一下 firewall-cmd 常用命令的使用。

启用端口

1
$ firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]

如下示例为添加 tcp 18080 端口:

1
$ firewall-cmd --add-port=18080/tcp

禁用端口

1
$ firewall-cmd [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>

如下示例为禁用指定的 tcp 18080 端口:

1
$ firewall-cmd --remove-port=18080/tcp

启用服务

1
$ firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]

如下为启用 http 服务:

1
$ firewall-cmd --add-service=http
Read more »