摘要: 实现对一个数学表达式的求值,例如: 这个表达式的值为 这个问题主要要分为如下几个步骤: 1. 语法分析: 将字符串表达式转化为数字和操作符的 token 数组, 2. 转逆波兰表达式: 将中缀表达式转后缀表达式, 3. 逆波兰表达式求值: 逆波兰表达式转二叉树: 条件表达式中,二叉树的求值能提前返回 阅读全文
posted @ 2019-12-09 20:37 hatlonely 阅读(870) 评论(0) 推荐(0) 编辑
摘要: 简介 是被设计用来替代标准的 库,提供更强大更灵活的命令行解析功能,相比标准库, 有如下特点 支持可选参数和必选参数 支持参数缩写 支持位置参数,位置参数可以出现在任意位置 支持 bool 参数简写 ( 和 等效) 支持值参数缩写 ( 和 等效) 更多类型的支持,支持 ,`time.Time tim 阅读全文
posted @ 2019-11-28 17:59 hatlonely 阅读(739) 评论(0) 推荐(0) 编辑
摘要: flag 库实现了对命令行参数的解析 基本用法 上面代码指定了两个选项: 类型的 选项,默认值为 ,帮助信息 类型的 选项,默认值为 ,帮助信息 执行 将输出 b 和 s 的值 执行 将修改 b 和 s 的值 执行 可以打印帮助信息 命令行语法 以 或者 开头指定选项名, 和 是等效的 非 选项后面 阅读全文
posted @ 2019-11-28 17:50 hatlonely 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 和 etcd 类似,consul 也是一个高可用的分布式 kv 系统,并且提供了比 etcd 更丰富的功能,自带 ui 界面 consul 有客服端模式(client)和服务端模式(server),在实际的部署中会在每个客户端机器上部署一个本地 client, server 的数据会同步到 clie 阅读全文
posted @ 2019-11-28 17:45 hatlonely 阅读(458) 评论(0) 推荐(0) 编辑
摘要: etcd 是用 golang 编写,raft 协议实现的分布式高可靠的 kv 存储系统,常用来作为配置共享和服务注册发现,Kubernetes 就使用 etcd 来保存整个集群的状态 etcd 主要关注以下四点: 1. 简单: 定义良好,面向用户的 api (使用 grpc) 2. 安全: 可选的 阅读全文
posted @ 2019-11-27 21:11 hatlonely 阅读(8307) 评论(0) 推荐(0) 编辑
摘要: 事务 ACID 特性 原子性 ( A tomicity): 事务中的所有操作,要么全部成功,要么全部失败回滚到最初状态,不会结束在中间的某个环节 一致性 ( C onsistency): 事务开始之前和结束之后,数据库的完整性没有被破坏,写入的数据必须完全符合所有的预设约束,触发器,级联回滚等等 隔 阅读全文
posted @ 2019-11-27 21:09 hatlonely 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 阻塞队列就是多线程线程安全的队列,在多线程场景下经常用到,c++ 标准库里面没有提供阻塞队列,boost 中有提供,生成环境下可以使用 blocking queue 实现 主要设计思路: 1. 使用 实现一个环形队列,使用两个指针 start 和 end 来标识起止位置,push 的时候在 end 阅读全文
posted @ 2019-11-27 21:06 hatlonely 阅读(1825) 评论(0) 推荐(0) 编辑
摘要: 反射机制是指在程序运行的时候动态地获取对象的属性后者调用对象方法的功能。golang 支持反射,原生的 json 库就是用反射机制实现。 golang 的反射有两个主要的概念: 和 从字面上理解就是类型和值 指的就是一个类型,可以是基本类型 int,string,也可以是自定义的结构体类型,可以通过 阅读全文
posted @ 2019-11-27 21:03 hatlonely 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 空类就是没有任何数据成员的类,这种类占用的内存大小在不同的语言里面有不同的实现 c 这个结果输出是0,也就是说 c 语言中的空类大小为 0 在 gcc 中,两个空类拥有相同的地址,但是比较的结果却是不同的……这个我也不知道咋解释…… c++ c++ class A {}; std::cout 空类的 阅读全文
posted @ 2019-11-27 20:55 hatlonely 阅读(715) 评论(0) 推荐(0) 编辑
摘要: Jenkins 是一个很老的 ci/cd 服务了,但是至今并未过时,几乎是各种公司的首选,足见其功能强大 最近用 docker 搭建了一个 Jenkins 服务,实现了代码提交后自动触发测试和部署,再也不用手动发布了,节省了大量的时间 制作 docker 镜像 这里我在基础镜像上安装了 make 工 阅读全文
posted @ 2019-11-27 20:53 hatlonely 阅读(203) 评论(0) 推荐(0) 编辑