您现在的位置:首页
--> YanyiWu
美好世界,源自不开心。
Linus 对只停留在实验室阶段,迟迟走不进工业界的 Unix 操作系统忍无可忍,觉得非常不开心,于是自己写了 Linux ,成为服务端操作系统的世界主宰。
乔布斯对塞班手机下载一个日历应用都需要搜索各种论坛,才能找到一个可以安装成功的安装包,觉得非常不开心,于是开发了划时代产品iPhone ,把人类带入了移动互联网时代。
雷军对于华强北各种粗制滥造的山寨机忍无可忍,带着十几个兄弟,干了一锅小米粥,创办了可能是中国有史以来最伟大的手机厂商,小米。
胡玮炜对于ofo机械锁经常输错密码,忍无可忍,于是创办了摩拜单车,曾经一度成为共享出行业界龙头,最后为了梦想和现金,加入美团。
马云对于银行营业厅存取款,业务办理,排队十几米的等待忍无可忍,做出了支付宝,让手机支付成了中国新四大发明之一。
张小龙深夜寂寞无处排遣,在「饭否」振臂高呼出一句「明天去东莞」之后,
那天有用户向我反馈在使用 GoJieba 的过程中发现内存泄露的Bug。 具体现象就是这个测试代码 test.go 跑着跑着内存一直增长。 刚开始以为是代码里面的C语言部分内存没有正确释放导致的, 查了很久一直没有找到问题所在。
最后发现这个Bug非常白痴,是因为 C.CString 使用不当导致的。 在调用了 C.CString 之后需要手动释放内存。 这个Bug非常白痴,但是却反映了我之前对Go语言string理解不彻底的隐患。 才导致在我第一眼看到 C.CString 的时候, 就下意识的认为这个函数肯定没有动态申请新的内存, 和 C++ string::c_str() 一样,复用了内存。 所以也就肯定不需要手动释放。 当然这些只是『我以为』。
有些人刚接触 Node.js 的时候,
都会以为异步是多么高深莫测的技术。
所以在此结合 NodeJieba 代码(加上详细注释)说说 Node.js 异步实现原理,
你就会发现异步其实原理很通俗易懂。
原文是在知乎上发表的问题回答:如何教会非计算机专业的女友写代码并且找到工作? 。
写完再看一遍,写得还是可以的,至少也算是一段有努力有收获的经历,
稍加修改发表在这,做个纪念。
不知不觉自己参加创业公司也已经一年以上了,
也积累了一些自己看到或者听到的有意思的典型现象。
在此记录一下。
不过需要声明的是,以下有一些典型情况是负面的,但是对事不对人,
我的创业伙伴都非常靠谱,没有以下提到的问题。不要对号入座。
Seaweedfs 是一个非常优秀的由 golang 开发的分布式存储开源项目,
虽然在我刚开始关注的时候它在 github.com 上面只有 star 50+,
但是我觉得这个项目是一个几千 star 量级的优秀开源项目。
Seaweedfs 的设计原理是基于 Facebook 的一篇图片存储系统的论文 Facebook-Haystack,
论文很长,但是其实原理就几句话,可以看看 Facebook图片存储系统Haystack ,
我觉得Seaweedfs是青出于蓝而胜于蓝。
• 开源项目的那点事
感觉最近开源项目作者越来越受热捧,让开源项目变得越来越功利了。
希望不要忘了开源项目的初衷,是为了知识更好的分享和传播。
大约去年十月份的时候,收到过一封印象深刻的邮件。
内容是关于编程的咨询,一个正读研二的同学,
非计算机专业且编程基础不好,
想找互联网方向的工作,咨询我关于接下去的学习时间如何规划的问题。
其实已经不算初体验了,
毕竟虽然没有全职的JavaScript开发经历,
但是或多或少的使用也算是对JavaScript略熟。
刚好之前买了一本《JavaScript语言精粹》,
今天刚好有空把它翻了一遍。
所以有感而发想写一篇关于JavaScript的博文,
谈谈印象比较深的几个点,和一些疑惑。
++多线程编程是C++开发者的一个基本功,
但是很多开发者都是直接使用公司给包装好的线程池库,
没有去了解具体实现,有些实现也都因为高度优化而写得讳莫如深,让初学者看得吃力。
所以写这篇文章主要是想以非常简单的方式讲讲实现原理,
希望初学者看完之后不是觉得「不明觉厉」,而是觉得「原来如此」。
趁年初跳槽人数多,公司想多捞一些员工进来,一直激励员工内部推荐,我也尝试着收集一些简历内推之,但是没什么收获。沮丧之余,越来越感觉到当前互联网行业人才的青黄不接。
一方面是社招太难,特别是对于当前火热的移动开发和Web开发,稍微有一年经验以上的熟练工都是供不应求的情况。各个企业简直就是"跪求候选人给企业一个面试他(她)的机会"。
另一方面又是大学生校招找工作难(本文说的是互联网相关专业的大学生),个人认为原因主要有两个:一个是很多大学生在校期间沉迷游戏,荒废学习,导致自己技能点不强,找工作难。另一个则是因为学习上走了一些误区,很努力但是最后才发现当前社会形势所需的不相符。在此主要谈谈后者。主要是个人一路走来的一些经验之谈,希望能帮到一些人。
在分布式存储开源项目 Weed-FS 中,我发现了一个地方非并发安全(not concurrency-safety),所以提交了一个 Weed-FS-PullRequest-75 来进行加锁保护。简化这个问题如下:
当有一个变量,有一个 goroutine 会对它进行写操作,其他 goroutine 对它进行读操作。 是否需要对这个变量进行加锁保护。
我觉得不同goroutine并发读写同一个变量,需要加锁,这应该是天经地义的常识。但是这个 PullRequest 居然出乎意料的被作者反驳了。
作者的理由是:只有一个 goroutine 在写,其他 goroutine 在读,不需要加锁。
但是这样的观点我实在无法苟同,因为在我的 C/C++ 开发经验中,这是必然需要加锁的典型场景,一般是使用读写锁。难道是golang在这个方面有一些牛逼的奇淫巧计所以不需要加锁?
所以我耐不住寂寞开始查阅资料,先是官网上的说法。
前几天在开发某些数据结构到文件的 Dump 和 Load 功能的时候,遇到的一个 bug 。问题主要出在 Load 过程中,从文件读取数据的时候,直接使用 fread 的去操作 string 的内部指针地址 (char*)s.c_str() 。。。。
[ 共13篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [55] 如何拿下简短的域名
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [53] Oracle MTS模式下 进程地址与会话信
- [53] Go Reflect 性能
- [51] android 开发入门
- [49] 图书馆的世界纪录
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [46] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [31] 视觉调整-设计师 vs. 逻辑
赞助商广告