hatlonely的专栏

孤独的帽子

shell 编程基础

变量 变量定义:name=Tom 变量使用:echo $name 自定义环境变量:export name 常见环境变量:$HOME $PATH 查看环境变量:env 声明只读变量:readonly name 特殊变量: $0 shell执行程序名 $n 位置参数,n = 1...9 $* 所...

2018-11-04 02:21:16

阅读数 36

评论数 0

admob 广告开发者报表 api

广告是移动应用非常好的变现模式,作为开发者经常会接很多家的广告平台,每个广告平台都有自己的报表系统,就会有一个各个平台数据汇总分析的需求,首先第一步就需要从各个广告平台获取数据,除了在web页面提供基本的数据导出功能,基本上各个平台都会提供 api 来方便数据拉取的自动化。 admob 是 goo...

2018-11-04 01:12:09

阅读数 436

评论数 0

c++ map 查找性能测试

最近在为推荐服务作性能调优,这个服务的主要逻辑是用离线计算的模型数据给请求中的每个广告打分,再返回这些广告的排序结果,这里面打分的过程其实就用请求中的数据拼成各种key,去查一个大的 map,这种计算非常多,成为了主要的性能瓶颈,代码比较老,使用的是 boost::unordered_map,为了...

2018-08-01 23:13:52

阅读数 1063

评论数 0

golang grpc 负载均衡

微服务架构里面,每个服务都会有很多节点,如果流量分配不均匀,会造成资源的浪费,甚至将一些机器压垮,这个时候就需要负载均衡,最简单的一种策略就是轮询,顺序依次选择不同的节点访问 grpc 在客户端提供了负载均衡的实现,并提供了服务地址解析和更新的接口(默认提供了 DNS 域名解析的支持),方便不同...

2018-06-24 02:40:08

阅读数 971

评论数 0

golang consul-grpc 服务注册与发现

在微服务架构里面,每个小服务都是由很多节点组成,节点的添加删除故障希望能对下游透明,因此有必要引入一种服务的自动注册和发现机制,而 consul 提供了完整的解决方案,并且内置了对 GRPC 以及 HTTP 服务的支持 总体架构 服务调用: client 直连 server 调用服务...

2018-06-23 23:29:58

阅读数 2129

评论数 0

微服务组件之限流器与熔断器

在微服务架构里面一个很常见的问题就是服务之间的延迟和通信失败问题,极端的情况下,甚至会因为某个服务的性能下降或者故障宕机,导致访问超时,层层传递,引发雪崩,最终导致整个系统崩溃,而限流器和熔断器(这两个组件都是客户端的)能很好的解决这个问题,提高系统的可靠性和稳定性 限流器 限流器,从字面...

2018-06-21 16:06:44

阅读数 491

评论数 0

golang 面向对象特性

和其他高级语言一样,golang 也支持面向对象编程,支持得比较简单,有些特性并不支持,但是够用了 接口 接口使用 interface 关键字声明,任何实现接口定义方法的类都可以实例化该接口,接口和实现类之间没有任何依赖,你可以实现一个新的类当做 Sayer 来使用,而不需要依赖 Saye...

2018-06-19 19:11:30

阅读数 107

评论数 0

aerospike 集群搭建

aerospike 是一个分布式的 kv 存储服务,与 redis,memcached 等相比,最大的特点是支持内存和磁盘的混合存储,并且对 ssd 的支 持非常好,将索引存在内存中,数据存在 ssd 中,保持极高性能的同时,能有效的节约成本 单机安装 安装 wget -O aer...

2018-06-02 19:51:12

阅读数 1208

评论数 0

cmake 的正确打开方式

用了那么多年 c++,今天才搞明白 cmake 该怎么用…… cmake 是一个跨平台的 c++ 构建工具,与 makefile 类似,但是 makefile 更关注依赖,cmake 更关注构建本身,所以语法上要比makefile 要简洁清晰一些,而最近发现 cmake 原来还自带了依赖管理的功...

2018-05-31 12:01:15

阅读数 369

评论数 0

linux 日志管理服务 logrotate

logrotate 是操作系统用来管理日志的工具,支持日志的切割、压缩、清理以及邮件报警等,通过 crontab 服务定时运行,也可以用这个工具来管理我们自己的服务日志,只需要简单配置下配置文件即可 logrotate 配置 helloworld.conf,多份日志可以直接写在一个配置文件...

2018-04-16 15:45:33

阅读数 353

评论数 0

logstash mysql 准实时同步到 elasticsearch

mysql 作为成熟稳定的数据持久化解决方案,广泛地应用在各种领域,但是在数据分析方面稍有不足,而 elasticsearch 作为数据分析领域的佼佼者,刚好可以弥补这项不足,而我们要做的只需要将 mysql 中的数据同步到 elasticsearch 中即可,而 logstash 刚好就可以支持...

2018-04-14 23:17:41

阅读数 4678

评论数 2

elasticsearch + kibana 集群环境搭建

mysql 作为成熟稳定的数据持久化解决方案,广泛地应用在各种领域,但是在数据分析方面稍有不足,而 elasticsearch 作为数据分析领域的佼佼者,刚好可以弥补这项不足,而我们要做的只需要将 mysql 中的数据同步到 elasticsearch 中即可,而 logstash 刚好就可以支持...

2018-04-13 00:44:39

阅读数 652

评论数 0

golang 性能优化之累加哈希

很多时候性能问题总是发生在一些不起眼的地方。最近做一个性能问题分析的时候发现,一个函数里面使用由于字符串拼接产生的临时字符串导致内存上涨了40%(120G 内存的机器),而这些临时字符串给 GC 也带来了非常大的负担,成为主要的性能瓶颈,而这些字符串作为 map 的 key,又必须要拼接,所以想到...

2018-04-12 18:36:47

阅读数 417

评论数 0

golang 性能优化之 bitset 代替 hashset

hashset 是一种非常高效的数据结构,插入和查询的复杂度都是 O(1),基本上能满足大部分场景的性能需求,但在一些特殊的场景下,频次非常高的调用依然会成为性能瓶颈(用 pprof 分析),比如广告里面的定向逻辑,在一次请求中过滤逻辑可能会执行上千次,而其中有些过滤刚好都是一些枚举值,比如性别定...

2018-04-12 16:44:49

阅读数 148

评论数 0

golang 构建工具之 Makefile

可能是因为编译太简单了,golang 并没有一个官方的构建工具(类似于 java 的 maven 和 gradle之类的),但是除了编译,我们可能还需要下载依赖,运行测试,甚至像 easyjson,protobuf,thrift 这样的工具下载和代码生成,如果没有构建工具,这些工作就会非常麻烦 ...

2018-04-12 00:37:13

阅读数 1365

评论数 1

java json 库之 jackson

jackson 是一个 java json 库,提供了完备的 json 解析,序列化以及反序列化功能 依赖配置 在 build.gradle 里面添加依赖配置 compile group: 'com.fasterxml.jackson.core', name: 'jackson-co...

2018-03-18 17:54:29

阅读数 190

评论数 0

java 多线程

java 的多线程有好几种,可以继承 Thread,也可以实现 Runnable 接口,还可以实现 Callable 接口 Thread class MyThread extends Thread { private String name; public MyThr...

2018-03-18 01:51:42

阅读数 61

评论数 0

golang slice 和 string 重用

相比于 c/c++,golang 的一个很大的改进就是引入了 gc 机制,不再需要用户自己管理内存,大大减少了程序由于内存泄露而引入的 bug,但是同时 gc 也带来了额外的性能开销,有时甚至会因为使用不当,导致 gc 成为性能瓶颈,所以 golang 程序设计的时候,应特别注意对象的重用,以减少...

2018-03-17 17:16:39

阅读数 1042

评论数 0

golang 字节对齐

最近在做一些性能优化的工作,其中有个结构体占用的空间比较大,而且在内存中的数量又特别多,就在想有没有优化的空间,想起了 c 语言里面的字节对齐,通过简单地调整一下字段的顺序,就能省出不少内存,这个思路在 golang 里面同样适用 基本数据大小 在这之前先来看下 golang 里面基本的类...

2018-03-17 01:49:18

阅读数 916

评论数 1

golang 并发编程之生产者消费者

golang 最吸引人的地方可能就是并发了,无论代码的编写上,还是性能上面,golang 都有绝对的优势 学习一个语言的并发特性,我喜欢实现一个生产者消费者模型,这个模型非常经典,适用于很多的并发场景,下面我通过这个模型,来简单介绍一下 golang 的并发编程 go 并发语法 协程...

2018-03-11 19:26:21

阅读数 702

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭