雷军的投资、创业观
2010-8-25 晚,偶遇2年不见的雷军雷总,聊到深夜1点多,受益良多。在新浪围脖(http://t.sina.com.cn/xushiweizh )上一些朋友建议我分享下,今天终于得空,简单整理要点如下: 人欲即天欲。理清楚股权结构。 只投资一个人。一个企业必须有一个人说了算。 保持精英团队。初始团队每个人都是关键。严格把控加入的关口。 投资熟人、投资熟悉的领域。 我做的是战略投资,不只是投钱,也提供资源。 少就是多。一个企业做的事情越少越专越好。 我不急着要你考虑赚钱,我不是上市公司,不需要考虑给谁交待。满足用户需求,让更多人离不开你,才是你们第一目标。 投资做的是诚信。吃亏就是占便宜。如果你总想着占人家便宜,下次谁还找你投资? 我要投Google、Apple的1%,那也赚了。我做的就是那1%。 我认为新一波的创业潮已经来临。这拨创业公司的特点在于:快速占领、颠覆传统。 我做的事情都是颠覆。让行业重新洗牌。 补充: ...
我的开源项目
FoldUnfold Table of Contents WinxGui Boost Memory StdExt TPL DocX WinxGui 项目主页: http://code.google.com/p/winx/ 中文文档: http://www.winxgui.cn/cn:start WinxGui 是一个界面库。这可能是我知名度最高的一个库。这中间的原因是因为它是我第一个开源的库,当初在博客上着力宣传了下。而后来所有的开放的库其实都比这个库有用,只是我不怎么去宣传它们了。WinxGui 一直希望可以迁移到手机平台,但是由于精力所限未能去做。 WinxGui (abbreviated to WINX) focus the goal: MOST SIMPLE BUT EFFECTIVE. It is a C++ template GUI library that easy to use, and compatible to WTL. WTL is an effective Windows GUI library. However, it is not SIMPLE. WINX support WYSIWYG window GUI development. Boost Memory 项目主页: http://svn.boost.org/svn/boost/sandbox/memory 中文文档: http://cpp.winxgui.cn/cn:memory-management Boost Memory 关注于内存管理相关的解决方案。由于有提交到 Boost 的打算,所以放在 Boost 名字空间下。最初 Boost Memory 是 StdExt 的一部分。 StdExt 项目主页: http://code.google.com/p/stdext/...
go-iconv: libiconv for go
FoldUnfold Table of Contents Summary Install Example Convert string Output to io.Writer Input from io.Reader Summary go-iconv is a libiconv wrapper for go. libiconv Convert string to requested character encoding. go-iconv project's homepage is: https://github.com/xushiwei/go-iconv Install git clone git://github.com/xushiwei/go-iconv.git cd go-iconv make install Example Convert string import ( fmt xushiwei.com/iconv ) func main() { cd, err := iconv.Open( gbk , utf-8 ) if err != nil { fmt.Println( iconv.Open failed! ) return } defer cd.Close() gbk := cd.ConvString( 你好,世界! ) fmt.Println(gbk) } Output to io.Writer import ( fmt xushiwei.com/iconv ) func main() { cd, err := iconv.Open( gbk , utf-8 ) ...
美的让人震惊的斯坦福大学
出处:http://www.arkxu.com/t/nonbis?p_tpost_item_id=182 今天终于有时间上传一个星期天早晨走去斯坦福购物中心路上拍的视频。小数码拍的,并不能反应真实的美丽。如果你去过,你一定把自己的孩子送到斯坦福作为将来的目标。 美国人,做事情就是很直接。这样虽然少了很多人文关怀,但是却可以保证最高的效率。他们当年在这片荒地,用最直接的方式把自己梦里的理想,在现实里实现出来。所以才有了今天湾区这里寸土寸金的地方,才有了硅谷这个世界高新技术的发动机。但是斯坦福依然保留着这份奢侈,拥有森林般的大学。
2011-1-1: EverBox 宝宝满月了
明天 2011 年 1 月 1日 元旦,EverBox 宝宝满月了。 感谢大家的细心呵护。我们是不是应该考虑给宝宝取个中文名字了?
QCon 大会的"可伸缩性架构设计"专题
受邀主持 QCon 大会的 可伸缩性架构设计 专题。对这个话题有兴趣成为讲师的朋友,欢迎联系我。 - http://www.qconbeijing.com/schedule.html
贺圣诞,送空间,EverBox 2G 空间免费拿!
活动时间:2010年12月25日0点至2011年1月2日0点 活动对象:EverBox 所有注册用户 活动内容:在活动时间内,凡安装过 EverBox 客户端,并成功上传过文件的注册用户,在 EverBox 网站的 “开始” 页面(http://everbox.com/start),查看 “圣诞好礼” 图标,并点击 领取空间 就可以获得 2GB 额外免费空间(也就是你的免费空间最大可升到 12G)! 欢迎大家积极参与,祝大家圣诞快乐!
成为 EverBox 粉丝拿 100GB 大奖!
成为 EverBox (www.everbox.com) 粉丝拿 100GB 大奖!EverBox 将赠送100GB 免费空间给第1201位粉丝!此外 EverBox 还将从前1200名粉丝中随机抽取一名给予100GB免费空间奖励!EverBox 官方微博如下: http://t.sdo.com/1187491779 (盛大糖果) http://t.sina.com.cn/everbox (新浪微博) http://t.qq.com/everbox (腾讯微博) http://twitter.com/everbox (Twitter)
2010-12-01: EverBox 宝宝诞生了
EverBox 网盘公测开始了,快来申请邀请码吧! https://account.everbox.com/invite/apply EverBox提供最多可达10GB的免费空间,支持文件同步,在线浏览照片,在线听音乐等功能,欢迎体验!
招聘:Web 前端工程师 (Web Front-end Developer)
FoldUnfold Table of Contents Required skills Pluses Notes Required skills 熟悉跨浏览器的CSS操作方法(特别是该死的IE6) 熟悉Grid-based layouts in HTML/CSS 手写 HTML+CSS、熟悉Web2.0网页设计必须的前端技术 非常熟悉javascript 熟悉Jquery、YUI等开源的JS Framewrok(但不是必须) 知道谁是Douglas Crockford :) Pluses 美术或设计专业毕业 自己写过开源的基于某一框架下的js插件或一个框架 痴迷新的前端开发技术和开放源码工具 如果你熟悉ruby/php/python那更好 Notes 这个职位应届毕业生亦可应聘 简历发至:xushiweizh AT gmail.com (上海,盛大创新院)
这些广告的受益者并非本人,而是 Wikidot。我个人从不掩饰对 Wikidot 的喜爱,它给了我想要的东西,我们为它赚点广告费,我觉得这是很正常事情。Wikidot 也是很有原则的一家公司,她对客户的尊重是我喜爱她的另一个重要原因,要想进入本站而不出现广告很简单,注册个 Wikidot 账号,在浏览本站的时候保持登录状态就好了,你会看到一个很干净的界面。
许哥,能说一下,go和erlang的一些比较吗?
哪一个更适合大规模的实际应用?
多谢
如果你不考虑具体的使用场景,建议选择 golang。erlang 的适用范围相对狭窄。
两者目前都重服务端,所以客户端开发来说,都不是特别适合,如果非要用,建议用 golang。
服务端开发,如果团队比较小,喜欢函数式编程,而且网络模块偏重 io,逻辑不复杂,用 erlang 可以获得比 go 更好的性能,目前 go 语言在性能上还没做过非常大力度的优化。其他情况我建议用 golang。
我用erlang做过手机银行的服务端,效果还是不错的
多谢许哥这么详细的说明,这样就清楚怎么选择了,多谢
在执行单元的公平调度方面,还是请指点下:
比如我要做一个管理大量设备(成千上万)的程序,需要即时监控设备状态,erlang进程的公平调度性是适合这个场景的,golang在这点上机制如何?
许哥您好:
看到您编写的winx, 我有一个问题请教, 为什么MFC的消息映射要提供_AFXDLL和非_AFXDLL两个implementation, 比如
#ifdef _AFXDLL
#define DECLARE_MESSAGE_MAP() private: static const AFX_MSGMAP_ENTRY _messageEntries[]; protected: static AFX_DATA const AFX_MSGMAP messageMap; static const AFX_MSGMAP* PASCAL _GetBaseMessageMap(); virtual const AFX_MSGMAP* GetMessageMap() const;
#else
#define DECLARE_MESSAGE_MAP() private: static const AFX_MSGMAP_ENTRY _messageEntries[]; protected: static AFX_DATA const AFX_MSGMAP messageMap; virtual const AFX_MSGMAP* GetMessageMap() const; #endif
为什么直接用非_AFXDLL的版本的不行? 非要用一个函数_GetBaseMessageMap()去取基类的messageMap?
许哥您好,请教一个问题:
golang http.ResponseWriter 的Write()方法,服务的QPS由3万降到7000。附上我的测试代码和boom测试结果:
现在我测试到的情况是这样的,如果我只填写http的header,那么服务端的处理速度很高,单纯测试(没有业务逻辑),QPS能达到3万,但是如果我添加payload,那么QPS就只能达到不足8000了,只有6000的样子。这个落差太大了,我尝试直接使用http.ResponseWriter 接口中的Write方法写入一个[50]Byte,效果一样。根据我的测试和你们的分析,应该是IO的问题,不过这个也太夸张了。
func handleHeader(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Length", "0") }
func handlePayload50(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Length", "50") w.Write(make([]byte, 50)) }
func handlePayload128(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Length", "128") w.Write(make([]byte, 128)) }
func handlePayload1024(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Length", "1024") w.Write(make([]byte, 1024)) }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) http.HandleFunc("/header", handleHeader) http.HandleFunc("/payload50", handlePayload50) http.HandleFunc("/payload128", handlePayload128) http.HandleFunc("/payload1024", handlePayload1024) host := fmt.Sprintf("%s:%d", "0.0.0.0", 5001) http.ListenAndServe(host, nil) }
and the boom test result: ./boom -c 1000 -n 500000 -cpus 12 XXXXXX/header 500000 / 500000 Boooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
Summary: Total: 12.8799 secs. Slowest: 3.2799 secs. Fastest: 0.0018 secs. Average: 0.0239 secs. Requests/sec: 38810.4907
Status code distribution: [200] 499875 responses
Response time histogram: 0.002 [1] | 0.330 [499306] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 0.657 [0] | 0.985 [0] | 1.313 [312] | 1.641 [0] | 1.969 [0] | 2.297 [0] | 2.624 [0] | 2.952 [0] | 3.280 [256] |
Latency distribution: 10% in 0.0125 secs. 25% in 0.0172 secs. 50% in 0.0216 secs. 75% in 0.0257 secs. 90% in 0.0295 secs. 95% in 0.0327 secs. 99% in 0.0549 secs.
./boom -c 500 -n 500000 -cpus 12 XXXXXX/payload128 500000 / 500000 Boooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
Summary: Total: 62.5205 secs. Slowest: 3.0714 secs. Fastest: 0.0112 secs. Average: 0.0601 secs. Requests/sec: 7997.1501 Total Data Received: 63998208 bytes. Response Size per Request: 128 bytes.
Status code distribution: [200] 499986 responses
Response time histogram: 0.011 [1] | 0.317 [495652] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎ 0.623 [0] | 0.929 [0] | 1.235 [4092] | 1.541 [0] | 1.847 [0] | 2.153 [0] | 2.459 [0] | 2.765 [0] | 3.071 [241] |
Latency distribution: 10% in 0.0405 secs. 25% in 0.0436 secs. 50% in 0.0481 secs. 75% in 0.0546 secs. 90% in 0.0629 secs. 95% in 0.0731 secs. 99% in 0.1054 secs.
许哥:go如何通过一个字串动态创建对象?
比如java里面,有myObject = class.forName("my.com.myObject");
假设有一个mysql库字串是 "github/mysql",我如何像java一样动态得到这个mysql的接口或结构?比如假设可以 sqltest=newObject("github/mysql")?
Post preview:
Close preview