IT 技术博客

编码,才是戴着镣铐的跳舞

C++ 中 Json 操作符重载设计探讨

七阶子
19 min, 3681 words

Json 在业界实践中颇受欢迎。实现 Json 的 C/C++ 库也相当多,其 API 虽大同小异, 却也不尽相同。笔者目前推崇的是 rapidjson 库,因其效率一流,是 C++ 程序员应该追 求的一个目标。但在使用过程中又不免觉得 rapidjson 的使用 API 不够友好,尤其是设 值修改时要多传一个内存分配器参数(Allocator),当然这也是它为了效率实现的一种 交换。

于是我想到了操作符重载。我在想当年的 C++ 教材学习上也算一块重要且有趣的内容了 ,然而在实际工作中,使用 C++ 操作符重载的场合很少。主要是操作符重载容易误解, 经常不如规范选用的函数名那么能望文生义。这就说明操作符重载需要经过审慎的设计, 要让操作符重载尽可能合理,且能让使用团队达成共识。

而 Json 作为通用的数据结构抽象,越发显得重要与流行广泛,它不同与对具体业务的抽 象,因此我认为对 Json 设计一套操作符重载,定义一些操作符号对于 Json 的意义,以 简化对 Json 数据的操作,那是值得探讨的。

Read More

归类: 程序设计

标签: C++ json

浅谈 GNU Make 构建项目实践

七阶子
34 min, 6767 words

摘要

本文简明地介绍 make 的基础原理,并组合实际项目经验,由浅入深讨论了一种实用 的 makefile 通用规则与模板的编写方案。对其中涉及的语法功能技巧择要阐述,希望 有助于初学者理解。

Read More

归类: 工具使用

标签: linux make

linux 下载工具 wget 使用经验

七阶子
18 min, 3405 words

简介

在 linux 系统中,有两款著名工具,curl 与 wget 可用于发送 http 网络请求及下载网 络文档。在最基本的用法中,这两个命令行工具在功能上似有重叠,都有非常多的选项参 数。但它们侧重点不同,curl 侧重实现单次网络请求,且有个孪生库 libcurl 可植入各 种编程语言。而 wget 就是侧重下载的纯命令行工具,默认将网络请求的回应文档保存为 本地文件,对于大文档支持断点下载,还支持递归下载整个网站至本地镜像,这就具备了 基础的爬虫功能!

Read More

归类: 工具使用

标签: wget

mysql 命令行客户端使用经验

七阶子
9 min, 1627 words

首先,Linux 命令行工具,最基本的原则是随时可查手册,man mysql。 当用 mysql 命令从 shell 进入交互环境时,也可用 help 查询基本命令:

mysql> help

大多以 \ 前缀的转义命令,即可以单独使用,也可以附加在普通查询命令末尾。 有些大写转义命令打开某功能选项,而小写关闭对应的功能。

Read More

归类: 工具使用

标签: mysql