摘要:hashset 是一种非常高效的数据结构,插入和查询的复杂度都是 O(1),基本上能满足大部分场景的性能需求,但在一些特殊的场景下,频次非常高的调用依然会成为性能瓶颈(用 pprof 分析),比如广告里面的定向逻辑,在一次请求中过滤逻辑可能会执行上千次,而其中有些过滤刚好都是一些枚举值,比如性别定向 阅读全文
posted @ 2018-04-12 16:47 hatlonely 阅读(42) 评论(0) 推荐(0) 编辑
摘要:可能是因为编译太简单了,golang 并没有一个官方的构建工具(类似于 java 的 maven 和 gradle之类的),但是除了编译,我们可能还需要下载依赖,运行测试,甚至像 easyjson,protobuf,thrift 这样的工具下载和代码生成,如果没有构建工具,这些工作就会非常麻烦 为了 阅读全文
posted @ 2018-04-12 00:39 hatlonely 阅读(73) 评论(0) 推荐(0) 编辑
摘要:jackson 是一个 java json 库,提供了完备的 json 解析,序列化以及反序列化功能 依赖配置 在 build.gradle 里面添加依赖配置 json 解析 调用 就能讲 json 字符串解析成一个 对象,然后通过 方法就可以获取 json 中各个字段的值了,这种方式可以用来读取 阅读全文
posted @ 2018-03-18 17:55 hatlonely 阅读(77) 评论(0) 推荐(0) 编辑
摘要:java 的多线程有好几种,可以继承 Thread,也可以实现 Runnable 接口,还可以实现 Callable 接口 Thread Callable 接口也只有一个方法 ,和 Runnable 不同的是 Callable 允许有返回值,而这个返回值可以通过 获取,还可以设置任务运行的超时时间, 阅读全文
posted @ 2018-03-18 01:53 hatlonely 阅读(51) 评论(0) 推荐(0) 编辑
摘要:相比于 c/c++,golang 的一个很大的改进就是引入了 gc 机制,不再需要用户自己管理内存,大大减少了程序由于内存泄露而引入的 bug,但是同时 gc 也带来了额外的性能开销,有时甚至会因为使用不当,导致 gc 成为性能瓶颈,所以 golang 程序设计的时候,应特别注意对象的重用,以减少 阅读全文
posted @ 2018-03-17 17:20 hatlonely 阅读(88) 评论(0) 推荐(0) 编辑
摘要:最近在做一些性能优化的工作,其中有个结构体占用的空间比较大,而且在内存中的数量又特别多,就在想有没有优化的空间,想起了 c 语言里面的字节对齐,通过简单地调整一下字段的顺序,就能省出不少内存,这个思路在 golang 里面同样适用 基本数据大小 在这之前先来看下 golang 里面基本的类型所占数据 阅读全文
posted @ 2018-03-17 01:51 hatlonely 阅读(123) 评论(0) 推荐(1) 编辑
摘要:golang 最吸引人的地方可能就是并发了,无论代码的编写上,还是性能上面,golang 都有绝对的优势 学习一个语言的并发特性,我喜欢实现一个生产者消费者模型,这个模型非常经典,适用于很多的并发场景,下面我通过这个模型,来简单介绍一下 golang 的并发编程 go 并发语法 协程 协程 是 go 阅读全文
posted @ 2018-03-11 19:28 hatlonely 阅读(155) 评论(0) 推荐(0) 编辑
摘要:有时候一个函数会有很多参数,为了方便函数的使用,我们会给希望给一些参数设定默认值,调用时只需要传与默认值不同的参数即可,类似于 python 里面的默认参数和字典参数,虽然 golang 里面既没有默认参数也没有字典参数,但是我们有选项模式 可变长参数列表 在这之前,首先需要介绍一下可变长参数列表, 阅读全文
posted @ 2018-03-11 13:07 hatlonely 阅读(156) 评论(0) 推荐(0) 编辑
摘要:s3 是 aws 提供的分布式文件服务,价格比较优惠,经常被用来作为日志的持久化存储,大数据处理结果的输入输出等 s3 服务提供命令行工具,可以很方便地上传、下载、删除文件,普通 golang 程序如果需要访问 s3 上文件,一种简单方式可以先将 s3 上文件下载到本地,然后直接访问本地文件即可,但 阅读全文
posted @ 2018-03-04 20:01 hatlonely 阅读(161) 评论(0) 推荐(0) 编辑
摘要:说到写作工具,不得不提的就是 word 了吧,现在有哪个公司能不用这个软件吗?作为最流行的写作软件,word 确实有很多优点,操作比较直观,所见即所得等等,但是大家也一定遇到过样式调整起来比较繁琐的问题,不同的内容可能需要频繁地调整字体、大小、行距等等,而且还很容易出现不一致,整体都显得很不协调,当 阅读全文
posted @ 2018-02-22 00:04 hatlonely 阅读(57) 评论(0) 推荐(0) 编辑