摘要: 写在前面 最近一年来,我都在做公司的RTB广告系统,包括SSP曝光服务,ADX服务和DSP系统。因为是第一次在公司用Go语言实现这么一个大的系统,中间因为各种原因造了很多轮子。现在稍微有点时间,觉着有必要总结这一年来用Go造轮子的经验和不足。 集群中遇到的配置文件管理问题 RTB广告系统中涉及到的服阅读全文
posted @ 2017-05-19 21:11 011 阅读(300) 评论(1) 编辑
摘要: 2015年过去了,也很久没来博客园更新博客了,因为自己平时的时间没有做什么太多非常有意思的事情,也自觉没啥可写的。看看去年写的《2014年总结》,今年总算是和老婆一起去云南大理和丽江逛了一圈,算是和老婆一起蜜月了,大理的菜非常美味,丽江古城里敲鼓的妹子也非常漂亮,大家有机会的话可以考虑去玩下。今年也...阅读全文
posted @ 2016-01-05 20:53 011 阅读(125) 评论(0) 编辑
摘要: 前几日一朋友在学GO,问了我一些interface机制的问题。试着解释发现自己也不是太清楚,所以今天下午特意查了资料和阅读GO的源码(基于go1.4),整理出了此文。如果有错误的地方还望指正。GO语言的interface是我比较喜欢的特性之一。interface与struct之间可以相互转换,str...阅读全文
posted @ 2015-03-03 21:24 011 阅读(4094) 评论(0) 编辑
摘要: 趁着春节前,写下2014年总结,记录下都做了什么,学到了什么,下一步该如何做。生活年初结婚了,和心爱的人在一起了。算是踏下心了。当然压力也随之而来,那种家庭的责任感受更加明显了。年中的时候因为工作压力和生活习惯,导致菊花受罪了...在医院做了手术并修养了半个月。然后总算是把借来的10W还完了,并且在...阅读全文
posted @ 2015-02-16 21:17 011 阅读(1111) 评论(6) 编辑
摘要: 13年上半年接触了Golang,对Golang十分喜爱。现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的。一直有想法写点Golang相关的总结或者感想,决定还是在年前总结下吧。注明下:我只是Golang的喜好者...阅读全文
posted @ 2015-02-16 10:38 011 阅读(9503) 评论(23) 编辑
摘要: 2-3年前在做客户端开发时,看过CHROME的一部分代码,主要是BASE库相关的。其项目之大,编译时间之长给我留下了深刻的印象。3年后的最近,想着再读一下其他部分的代码,所以就对其纠结的下载和编译过程做下总结。网上的一些文章都是比较过时的,按照那些文章的做法基本没啥戏。其实,仔细阅读chromium...阅读全文
posted @ 2015-02-15 17:47 011 阅读(1025) 评论(4) 编辑
摘要: 最近的项目中,使用了GO来开发一些服务中转程序。业务比较简单,但是有一些业务需要复用原有C++开发的代码。而在WINDOWS,用CGO方式来集成C/C++代码并不是太方便。所以用DLL把C++的代码封装起来,然后提供基本的API来完成复用。在这个过程中遇到了一些问题及解决方法,记录下来,也给遇到类似...阅读全文
posted @ 2014-12-17 23:00 011 阅读(2280) 评论(3) 编辑
摘要: 一直想试着把自己理解和学习到的右值引用相关的技术细节整理并分享出来,希望能够对感兴趣的朋友提供帮助。右值引用是C++11标准中新增的一个特性。右值引用允许程序员可以忽略逻辑上不需要的拷贝;而且还可以用来支持实现完美转发的函数。它们都是实现更高效、更健壮的库。move语义先不展开具体右值引用定义。先说...阅读全文
posted @ 2014-11-01 01:07 011 阅读(893) 评论(4) 编辑
摘要: 接触到GO之后,GO的网络支持非常令人喜欢。GO实现了在语法层面上可以保持同步语义,但是却又没有牺牲太多性能,底层一样使用了IO路径复用,比如在LINUX下用了EPOLL,在WINDOWS下用了IOCP。但是在开发服务端程序的时候,很多都是被动触发的,都是客户端发送来的请求需要处理。天生就是一个ev...阅读全文
posted @ 2014-10-22 15:26 011 阅读(2236) 评论(3) 编辑
摘要: 之前自己实现了一个代理服务,当时考虑的是只要支持SOCKS5就好了,因为我经常用CHROME,配合着SwitchySharp,体验还是很棒的。但是我现在有点讨厌CHROME,它现在太庞大了,占用资源太多了。而且我有锁定网页的习惯,一打开CHROME,就十几个甚至二十几个进程起来,让我很不爽。但是不得...阅读全文
posted @ 2014-10-05 13:35 011 阅读(832) 评论(0) 编辑
摘要: Go语言有一个不(奇)错(葩)的设计,就是build constraints(构建约束)。可以在源码中通过注释的方式指定编译选项,比如只允许在linux下,或者在386的平台上编译啊之类的;还可以通过文件名来约束构造,比如xxxx_linux.go,就是只允许在linux下编译,xxx_window...阅读全文
posted @ 2014-09-07 13:25 011 阅读(543) 评论(0) 编辑
摘要: 在天朝做程序员比较让人蛋疼,比如你想用GOOGLE,你就很蛋疼。原因大家都懂。然后呢,一开始自己在用GOAGENT, VPN, SSH, ShadowSocks等程序,GOAGENT和SHADOWSOCKS都是非常优秀的。而自己在很早刚开始接触计算机的时候就有想法自己写一个代理程序,因为各种各样的原...阅读全文
posted @ 2014-08-31 17:58 011 阅读(2220) 评论(9) 编辑
摘要: 关于Coroutine说到coroutine就不的不说subroutine,也就是我们常用到的一般函数。调用一个函数开始执行,然后函数执行完成后就退出,再次调用的时候,再从头开始,调用之间是没有保存状态的;但是coroutine是可以在退出时如果再次被调用,可以从上一次退出的点继续执行。也就是说co...阅读全文
posted @ 2014-08-21 16:06 011 阅读(875) 评论(0) 编辑
摘要: Buffer TypeBuffer I/O针对Buffer I/O的请求,系统会为其分配一个非换页内存作为缓存区,其大小等同于I/O请求的缓存区大小。对于写操作,I/O管理器在创建IRP时,将请求者的缓存区数据拷贝到申请得到的非换页缓存区中。对于读操作,I/O管理器将会在I/O完成时,将数据从非换页...阅读全文
posted @ 2014-08-21 11:34 011 阅读(169) 评论(0) 编辑
摘要: 这篇BLOG是我很早以前写的,因为现在搬移到CNBLOGS了,经过整理后重新发出来。工作之前的几年一直都在搞计算机安全/病毒相关的东西(纯学习,不作恶),其中PE文件格式是必须知识。有些PE文件,比如驱动,系统会在加载时对checksum进行校验,确保驱动文件的完整性。关于PE文件如何校验,网上有很...阅读全文
posted @ 2014-08-21 11:03 011 阅读(288) 评论(0) 编辑
摘要: 前段时间在公司给大家分享GO语言的一些特性,然后讲到了并发概念,大家表示很迷茫,然后分享过程中我拿来了Rob Pike大神的Slides 《Concurrency is not Parallelism》,反而搞的大家更迷茫了,看来大家丢了很多以前的基本知识。后来我就把Pike大神的slide和网上的...阅读全文
posted @ 2014-08-20 23:32 011 阅读(601) 评论(0) 编辑
摘要: 前些天的时候,一位同事问了一些REDIS的网络协议相关的问题,然后交流中谈了一些我的想法,又参考了一些资料,记录下来。我们在设计一个应用层网络协议是,我们需要关注哪些方面? 或者说一个好的应用层协议应该有哪些属性?好的应用层协议是可伸缩的。一些应用层协议比如HTTP,会建立几条并行的链接的到服务端,...阅读全文
posted @ 2014-08-20 23:20 011 阅读(666) 评论(0) 编辑