_不是我干的_
golang之http/FormValue踩坑记 YanyiWu 发表于 2015-01-06 16:00:00 goHttp 今天下午在试 Weed-FS 的 Collection 特性的时候, 发现了一个关于 FormValue 返回结果不符合预期的 bug , 检查了一番,才发现是因为没有正确使用导致的。 顺便为此提交了一个只包
YanyiWu 发表于 2015-01-06 16:00:00
go Http
今天下午在试 Weed-FS 的 Collection 特性的时候, 发现了一个关于 FormValue 返回结果不符合预期的 bug , 检查了一番, 才发现是因为没有正确使用导致的。 顺便为此提交了一个只包含一行代码 [代码片段] 的 PullRequest fix bug 。 真是【查bug千日,修bug一时】。。。 具体原因很简单,看下面这个示例代码就知道了: Bug 重现 [代码片段] …阅读全文
YanyiWu 发表于 2015-01-03 16:00:00
Facebook 图片
一篇14页的论文Facebook-Haystack, 看完之后我的印象里就四句话: 因为【传统文件系统的弊端】 因为【缓存无法解决长尾问题】 所以【多个图片信息(Needle)存在同一个文件(SuperBlock)中】 所以【显著提高性能】 传统文件系统的弊端 传统的 POSIX 文件系统不适合高性能的图片存储, 主要原因是基于该文件系统来存储的话,是讲每个图片存储成某目录下的一个文件, 每 …阅读全文
草依山 发表于 2014-12-31 10:28:13
书籍和电影 {Redis设计与实现} 这本书在技术圈很有名了已经,我看的已经算比较晚的,非常值得一读。 让人不得不佩服作者黄健宏对Redis源码的掌握程度,而且现在Redis源码基本覆盖了各方面技术, 高效的数据结构,存储和压缩,异步和事件驱动,分布式存储各个方面都有涉及到, 总有值得你学习的地方。 {互联网广告算法和系统实践} 是我在手机上第一次付费阅读的书籍,非常科普的一本书,通俗易懂。 很 …阅读全文
草依山 发表于 2014-12-30 16:00:00
书籍和电影 {Redis设计与实现} 这本书在技术圈很有名了已经,我看的已经算比较晚的,非常值得一读。 让人不得不佩服作者黄健宏对Redis源码的掌握程度,而且现在Redis源码基本覆盖了各方面技术, 高效的数据结构,存储和压缩,异步和事件驱动,分布式存储各个方面都有涉及到, 总有值得你学习的地方。 {互联网广告算法和系统实践} 是我在手机上第一次付费阅读的书籍,非常科普的一本书,通俗易懂。 很 …阅读全文
草依山 发表于 2014-12-25 16:00:00
前阶段写的 Thrift异步IO服务器源码分析 和 C1000K之Libevent源码分析, 当时看完代码就打算自己临摹一个简单的基于 Libevent 的异步非阻塞服务器, 后来确实也写了一个, 很简单的, 差不多等于是把 Thrift 的 TNonblockingServer 扒清楚洗干净, 把不需要的那些协议序列化之前的去掉, 然后再套上自己之前写的简单 HTTP 解析和 ThreadPo …阅读全文
草依山 发表于 2014-12-24 16:00:00
iOS 开发
说起来很有意思, 因为开发的后台消息服务和客户端需要交互的地方比较多, 索性趁周末的时候看了看 Objective-C 和 iOS 开发相关的, 前者的语法我已经在微博里面评论过了: Objective-C 绝对是我见过的最丑陋的语言, 我不知道号称是【技术界里的艺术家】之称的苹果, 是如何设计出这么一门如此丑陋的语言? 不过这个只是吐槽一下语法的设计, 没有任何鄙视 iOS 开发者的意思 …阅读全文
草依山 发表于 2014-12-19 16:00:00
并发 编程
高并发编程里多线程(进程)的弊端 其实从著名的 C10K 问题的时候, 就谈到了高并发编程时, 采用多线程(或进程)是一种不可取的解决方案, 核心原因是因为线程(或进程)本质上都是操作系统的资源, 每个线程需要额外占用1M或者2M的内存空间, 所以2G内存,能承受的线程数差不多只能到1k这个量级。 而且线程的调度由操作系统调度, 当线程或者进程数到达一定量级的时候, 据有人试验的结果是并发的线程数 …阅读全文
草依山 发表于 2014-12-09 16:00:00
源码 libevent
简介 说到异步IO,高并发之类的名词, 可能很多人第一反应就是 select, poll, epoll, kqueue 之类的底层代码库。 但是其实除非你要写一个 Nginx 性能级别的服务器, 否则直接使用 epoll 之类的还是太过底层, 诸多不便,要榨干整个异步编程的高并发性能还需要开发很多相关组件, 而 Libevent 就是作为更好用的高性能异步编程网络库而生, 他帮你包装了各种 buf …阅读全文
草依山 发表于 2014-12-06 16:00:00
今天完整看完了老罗在优酷上的演讲【罗永浩2014 一个理想主义者的创业故事】, 然后去理发的时候,内心一直有些波澜和感想忍不住想抒发, 毕竟入手 Smartisan T1 也有段时间了。 老罗和苹果 从老罗刚开始说要做手机的时候,我就开始关注了,身为程序员,第一感觉是老罗 太理想化了,手机这个行业怎么也算是高科技行业,老罗这么一个没有技术背景的人, 凭什么那么自信能做好手机呢?毕竟苹果重新定义了手 …阅读全文
草依山 发表于 2014-12-05 16:00:00
最近在使用 libevent 开发项目,想起之前写 Thrift源码剖析 的时候说到关于 TNonblockingServer 以后会单独写一篇解析, 现在是时候了,就这篇了。 以下内容依然是基于 thrift-0.9.0 。 概述 现在随着 Node.js 的兴起,很多人着迷 eventloop , 经常是不明真相就会各种追捧,其实 eventloop 只是 一种高并发的解决方案。Thrift …阅读全文
草依山 发表于 2014-11-25 16:00:00
erlang
我对 Erlang 编程理念的理解:以分布式架构师的角度写代码。 函数式编程 Erlang 里面的函数是数学里面的函数:必须有返回值。 只要是函数必然有返回值,函数是一个过程,以英文的句号为函数结束符。 函数结束之前的表达式就是该函数的返回值。 所以这也是在 Erlang 里面的函数不会看到任何 return 语句的原因。 C++ 等其他语言的函数和函数之前可以通过共享变量来实现消息传递。 Erl …阅读全文
草依山 发表于 2014-11-14 16:00:00
docker 是 golang 的第一个杀手级应用,发展迅猛, 现在各大云计算平台几乎全都支持 docker 实例,包括 谷歌,亚马逊,阿里云等。 golang 本身已经让我惊喜万分,而 docker 更是极大的激发了我对虚拟化的想象。 关于软件和硬件 IT 业发展至今,软件和硬件始终是无法分割的两个物体。 就拿最近几年红红火火的智能机时代来说, 很久之前的诺基亚智能机, 软件和硬件相辅相成, 连 …阅读全文