自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孙飞的博客

大道至简,技术如歌

原创 给.git(github)仓库瘦身(对照官方最新版本)

在网上搜索的文章基本都过期了,然后自己摸索了一番,总结一下。查询较大的文件cd ROOT_OF_YOUR_REPOgit verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3edcfd306818542eecbbea3982ae83fc5a726cbe5 blob 6888412 2402254 3319670...

2019-08-05 13:28:48 1839

原创 如何从零开始设计一款好的技术开源产品

如何从零开始设计一款好的技术开源产品 本文发表时间:2018 年 7 月 13 号 文章最初发表于sunface.io前言技术男擅于想象也擅于幻想,类如在全球最大同性交友平台上,打造你的最强兵器,出尽风头,博得更多的同性友谊。那么问题来了,那么大的用户群体,你怎么才能脱颖而出,笔者自己也思考了很久,总结出一套可行的方案。七种兵器 剑之灵动,刀之雄厚,七种兵器...

2018-07-13 13:07:58 1161 1

原创 从逻辑思维角度提升自己的表达技巧

从逻辑思维角度提升自己的表达技巧逻辑性从事软件开发行业的同学们或多或少都具有相当不错的逻辑性,毕竟编程开发本身就是逻辑性较强的任务。但是大家是否考虑过这种逻辑性应该怎么应用到社交技巧上?下面就跟着笔者一起来详细分析下吧。逻辑思维当逻辑性上升到软技能(社交技巧)层面,就成了逻辑思维。逻辑思维一直是职场社交和个人职业发展中最重要的软技能之一。它的本质就是在遇到问题时,给你提供一...

2018-07-10 18:05:24 1404 1

原创 Linux下从零开始部署和使用Jaeger

原文链接:https://imscc.io/posts/trace/install_jaeger_on_linux/ 原文作者: 聪少最近在折腾Jaeger,Jaeger官网都是介绍如何通过Docker部署,二进制部署文档基本没有(已咨询过作者,作者说没文档!你参考Docker自己部署好了!!!),所以打算写一篇Linux部署。JaegerJaeger是Uber推出的...

2018-05-07 14:29:04 3875 1

原创 使用Go语言编写区块链P2P网络(译)

外文发表日期: 2018-04-14 外文链接:https://medium.com/coinmonks/code-a-simple-p2p-blockchain-in-go-46662601f417在之前的文章中,我们已经知道了怎么编写PoW也知道了IPFS怎么工作, 但是有一个致命的缺点,我们的服务都是中心化的,这篇文章会教你怎么实现一个简单的完全去中心化的P2P网络。...

2018-04-15 20:45:38 13122 3

原创 (译)使用Go语言从零编写PoS区块链

原文发表日期: 2018-03-26 原文链接:https://medium.com/@mycoralhealth/code-your-own-proof-of-stake-blockchain-in-go-610cd99aa658 转载请在文章开头注明作者和出处 作者: ChainGod(孙飞) 原文链接: http://chaingod.io/article...

2018-03-26 14:11:47 6350 1

原创 Cockroach数据库初体验

结论前置CR(笔者对cockroach的简称)数据库的产品体验比TIDB要好,例如官网、文档、部署维护、后台管理、监控,当然这里不是说tidb不好,tidb兼容mysql协议就非常棒,而且中文文档和中文的客服支持也是极棒的。2.CR对标准sql的支持比较完善,详情见sql特性支持 sql语句3.单节点性能大概是postgre数据库的60%,延迟抖动控制的较好4.整体上手速度很快,从看文档、搭建

2017-11-04 13:09:22 6041

转载 最佳日志数据实践

原文链接: https://zhuanlan.zhihu.com/p/273634840. 缘起大约在三年前,我曾经写过一篇 最佳日志实践,还被码农周刊选为那年的 最受欢迎技术干货 之一。当时我任职于网易杭州研究院的存储平台组,主要做网易对象存储(NOS)的开发和部分运维工作。由于网易云音乐,易信等几个重要产品陆续上线,业务压力剧增,我们的系统在前前后后大约半年的时间里,出现了大大小小各种事故。通

2017-07-13 11:24:38 2179

转载 那些年使用缓存踩过的坑

原文链接: https://mp.weixin.qq.com/s?__biz=MzI3OTUwMjM4MA==&mid=2247483718&idx=1&sn=3324abf6b2a3245e330b35213ee922a5&chksm=eb478a05dc300313355f4e437ec701b58356c4aa19ad36c46c4031216dab3016e016bda8afee#rd今天

2017-07-13 11:21:57 878

翻译 [Go语言]我的性能我做主(1)

对于一些服务来说,性能是极其重要的一环,事关系统的吞吐、访问的延迟,进而影响用户的体验。写性能测试在Go语言中是很便捷的,go自带的标准工具链就有完善的支持,下面我们来从Go的内部和系统调用方面来详细剖析一下Benchmark这块儿。benchmarkGo做Benchmar只要在目录下创建一个_test.go后缀的文件,然后添加下面函数:func BenchmarkStringJoin1(b *te

2017-06-08 13:04:25 5982 3

转载 [产品设计]如何绘制业务流程图(下)

原文链接 http://www.woshipm.com/pmd/27239.html有一些同学看过了我写的《如何绘制业务流程图》,发私信过来希望我谈谈页面流程图。这个话题其实我也酝酿过,但一直没有写出来。细究起来,除了懒,原因其实有好几条:这一年半来的工作都是围绕数据平台建设,不是很通用,没法举例。虽然自己一直画页面流程图,但是说实话属于偏方多一些,按直觉行事,要总结出一两条可通用的“规则”比较难

2017-02-08 15:50:09 7412 1

转载 [产品设计]如何绘制业务流程图(上)

本来写完上篇,我发现没有太多必要单纯讨论这一部分内容,因为对于很多人来讲,缺的不是具体的做法,而是做这件事情的意义以及目标性的明确。一旦对这件事情的意义和目标有深刻认同,那自然会产生较大的动力去研究How这个层次的所需方法和技能。时间管理也如此,很多时间管理技巧牛逼的人未必能够把时间管理做到位,因为内心克服不了强大的拖延症,而克服拖延很多时候是一个心理问题而不是技巧问题……咳咳,这不是在说我自己吗

2017-02-08 15:47:46 3546

转载 不懂这些法律问题,你的创业融资很危险

9月3日,混沌研习社大课《创新撬动资本》北京开讲,汉坤律师事务所创始合伙人李朝应走上讲台,和研习社社员分享了《创业融资的架构、流程以及热点法律》。李朝应说,也许各位现在不一定马上会去做融资,但是相信以后要做融资时,把今天的课程内容拿出来看看,会很有帮助。(本文根据李朝应9月3日在混沌研习社的课程内容整理而成,有删节,约为课程内容1/8。戳此获取课程PPT。研习社社员登陆混沌APP<点此下载>,免费

2017-02-08 15:37:03 4493

原创 [Go语言]binary tree算法的华山论剑

在benchmarkgame(世界上最火的性能对比网站)上,Go语言一直有一个槽点,就是极其慢的binary tree性能,执行用时40秒 (我的机器上,16秒),与此对比,Java版本是6秒,那么问题来了:为什么慢得令人发指?我们来深入研究下慢的原因,然后看看能否对其进行改进。  对于binary tree算法中,最耗性能的地方就是海量的node分配和bottomUpTree()递归函数的调用,与

2016-12-31 16:32:33 3712 1

原创 [Go语言] 面向外网的Web调优详解(go1.8)

很早以前crypto/tls(TLS长连接库)和net/http的性能不敢恭维,因此我们都使用Nginx做反向代理,但是Go1.8将要来了,这种格局即将被打破了! 我们最近尝试性的将Go1.8编译的服务暴漏到了外网,结果发现crypto/tls 和net/http都得到了极大的提升:稳定性、性能以及服务的可伸缩性!crypto/tls 现在已经是2016年了,我们不可能再去裸奔在互联网了,因此基

2016-12-20 17:48:20 4194

翻译 Raft算法国际论文全翻译

最近在开发强一致性的分布式算法,因此需要深入理解下Raft算法,这里对Raft论文进行了翻译,留以备用 - Sunface. 英文版论文:https://ramcloud.atlassian.net/wiki/download/attachments/6586375/raft.pdf     Raft 是一种通过日志复制来实现的一致性算法,提供了和(多重)Paxos 算法相同的功能和性能,但是它的

2016-12-15 16:43:46 15552 7

原创 深层神经网络结构及可能存在的致命问题详解

Logistic回归、传统多层神经网络1.1 线性回归、线性神经网络、Logistic/Softmax回归线性回归是用于数据拟合的常规手段,其任务是优化目标函数:h(θ)=θ+θ1x1+θ2x2+....θnxn" role="presentation" style="margin: 0px; padding: 0px; dis

2016-12-12 17:12:13 18205 1

原创 5张图看尽Go语言GC的演变史

1.5版本:1.6版本:1.6.2版本:1.7版本:1.8beta1(18G堆栈全采样):总结:在18G的堆栈下,GC STW时间已经不会超过1ms了;在正常偏高负载下,STW时间应该低于100微妙,在正常服务中,STW时间应该低于10微妙。不得不说,go又一次取得了对GC的阶段性胜利,有谷歌做亲爹果然威力无边!

2016-12-02 14:22:10 3998

转载 是时候选择NewSQL数据库了

开源 RDBMS 与互联网的崛起很长时间以来,关系型数据库一直是大公司的专利,市场被 Oracle / DB2 等企业数据库牢牢把持。但是随着互联网的崛起、开源社区的发展,上世纪九十年代 MySQL 1.0 的发布,标志着关系型数据库的领域社区终于有可选择的方案。MySQL第一个介绍的单机 RDBMS 就是 MySQL。相信大多数朋友都已经对 MySQL 非常熟悉,基本上 MySQL 的成长史就是

2016-12-01 13:53:47 19582

转载 群聊这么复杂,该怎么玩转?

原文链接 【需求缘起】之前的文章更多的聊了单对单的消息投递:《微信为什么不丢消息?》《http如何像tcp一样实时的收消息?》群聊是多人社交的基本诉求,不管是QQ群,还是微信群,一个群友在群内发了一条消息:(1)在线的群友能第一时间收到消息(2)离线的群友能在登陆后收到消息由于“消息风暴扩散系数”的存在(概念详见《QQ状态同步究竟是推还是拉?》),群消息的复杂度要远高于单对单消息。群消息的实时性,

2016-11-11 10:58:36 1351

转载 直播如何解决延时问题?

原文链接:http://mp.weixin.qq.com/s?__biz=MzA5Nzc4OTA1Mw==&mid=2659598371&idx=1&sn=b9e81fc19c36c0c2a29dc98e27a6b215&chksm=8be99531bc9e1c275c0452fcc5ce9317b9617ca038f867c0d2c0bcd5f3c8c5cb17ea3008b6c8&mpshar

2016-10-27 13:07:13 32683 2

转载 我们如何用Go来处理每分钟100万复杂请求的场景

在Malwarebytes 我们经历了显著的增长,自从我一年前加入了硅谷的公司,一个主要的职责成了设计架构和开发一些系统来支持一个快速增长的信息安全公司和所有需要的设施来支持一个每天百万用户使用的产品。我在反病毒和反恶意软件行业的不同公司工作了12年,从而我知道由于我们每天处理大量的数据,这些系统是多么复杂。有趣的是,在过去的大约9年间,我参与的所有的web后端的开发通常是通过Ruby on Ra

2016-10-08 16:51:42 4517 1

原创 Go、Nginx、Php、Nodejs谁能胜出紫禁之巅

声明:这里的测试框架都是很常用的框架,不去跟一些奇葩但是所谓性能极高的框架进行对比 由于我们在项目中大量使用Iris和nginx这两个Web框架(纯Go语言实现,零内存拷贝),同时也听过很多人问Go的Http性能对比nginx、对比nodejs到底如何,有鉴于此,今天我们就来做一个Web框架性能真实比拼。 测试环境图: 下面从多个维度对4个框架进行对比:Nginx   VS   Nginx-php

2016-10-06 15:38:31 14996 3

转载 工程师也该学习机器学习了!

一、 程序员是一个知识更新较为迅速的一个职业,这个行业的知识的更新速度,有的时候会超过你的学习速度。大部分的人都在不断的更新自己的知识体系,这里笔者要向读者安利一下机器学习(包含深度学习)的重要性,以及常见的知识。作为个人能力的提升,笔者觉得这一点是程序猿/媛,需要掌握的一想技能。 其实在互联网公司工作过的同学都应该有这样的感触,我们正在从IT到DT的转型,算法在应用中变得越来越重要了。 处在向D

2016-10-02 23:33:18 1579

原创 机器学习之工程师入门路线

相信想学习机器学习的广大工程师们已经被那些算法大神的言论虐的怕怕的了吧?不用担心,我来带你们理理一个工程师需要入门机器学习,到底要走哪个路线? 一、 基础 不用多说,机器学习作为高门槛领域,基础还是需要的,但是也没有想得那么恐怖,很多人提问机器学习需要哪些数学知识,然后就会得到一大堆犹如天书般高大上的回答: 矩阵分析、微积分、概率论、统计学、数学分析等等,如果按照这些算法大神的路线去走,也许这条

2016-10-02 17:47:05 6629 3

转载 一些不常见的Go命令参数详解

你是刚开始使用Go工具么?或者你想扩展知识?这篇文章将会描述每个人都需要知道的Go工具参数。免责声明:这篇文章可能会有些偏见。这篇文章描述了我个人会用到的Go工具参数,还有一些是我周围的人遇到的问题。如果你还有别的想法,在Twitter联系我。$ go build -x-x会列出来go build调用到的所有命令。如果你对Go的工具链好奇,或者使用了一个跨C编译器,并且想知道调用外部编译器用到的具

2016-09-29 16:41:47 7527 1

原创 想在公司推广Golang吗-Golang之美

我们组的小伙伴们在融合了心理学的基础上,写出了这一套高大上的推广文案,想要向老板、朋友推广Golang的话,甩这个文案甩他们脸上就对了。 地址: https://github.com/corego/gobeauty 觉得喜欢的朋友们,不要忘了Star一下哈,更多的Star对Golang的发展也有更好的推动。

2016-09-22 12:03:52 2706 1

原创 [独家] Go1.8大幅改进了海量对象的GC性能(不同语言的横向对比)

 众所周知,Go1.7版本及之前的版本都是针对高并发下的系统吞吐进行优化,对海量对象存储时的优化力度并不够。下个版本就是1.8了,那么1.8会给我们带来这种惊喜吗?请继续往下看。 本次benchmark使用多语言实现,测量的是一个web服务,该服务通过一个大型的hashtable存储了250K个对象。 该服务还满足了下述3个前提条件: 1.每次http请求都会添加一个新对象,并且在对象数大于2

2016-09-18 10:16:13 14246 6

转载 机器学习应该了解的十大算法

毫无疑问,近些年机器学习和人工智能领域受到了越来越多的关注。随着大数据成为当下工业界最火爆的技术趋势,机器学习也借助大数据在预测和推荐方面取得了惊人的成绩。比较有名的机器学习案例包括Netflix根据用户历史浏览行为给用户推荐电影,亚马逊基于用户的历史购买行为来推荐图书。那么,如果你想要学习机器学习的算法,该如何入门呢?就我而言,我的入门课程是在哥本哈根留学时选修的人工智能课程。老师是丹麦科技大学

2016-08-23 11:32:42 14636 1

原创 博客迁移到sunface.io

非常富有互联网气息的域名后缀,欢迎大家通过这个域名来访问。 更多原创、翻译内容,敬请期待!

2016-08-21 17:32:12 1774

转载 为什么公司要从Scala转到Go?

Jim Plush是网络安全服务提供商CrowdStrike的云工程高级总监。CrowdStrike由McAffee的前CTO George Kurtz及前副总裁Dimitri Alperovitch于2011年创建。Scala是CrowdStrike内部使用的主要语言。2011年,Jim主导了Scala的使用。在加入CrowdStrike之前,Jim就职的Gravity公司也是Scala重度用户

2016-08-03 18:22:04 9940

原创 Go和Rust计算性能大比武

作为Go语言的狂热粉丝最近听说了同样鼎鼎大名的现代化语言-Rust,看了介绍后,发现Rust绝对是一门非常有潜力的系统级语言,因此特抽出业务时间进行了学习。 在网上有不少关于Go和Rust的对比文章,但是从我个人的观点来看,这两个语言没有什么好对比的,因为它们的使用场景基本没有重叠之处。Go适合网络编程、软实时系统; Rust适合内存使用苛刻、无GC、超高性能的场景,因此这两门语言如果结合起来,完

2016-07-31 15:05:57 26355 6

转载 为什么我们这么期待Kubernetes?

Kubernetes的目标用一张被很多人引用过的图来说明最好:Kubernetes的目标是让你可以像管理牲畜一样管理你的服务,而不是像宠物一样,同时提高资源的利用率,让码农关注在应用开发本身,高可用的事情就交给Kubernetes吧。这个图本来是openstack提出的,但纯粹IaaS层的解决方案实现不了这个目标,于是有了Kubernetes。Kubernetes和Borg系出同门,基本是Borg

2016-07-11 10:47:20 4598

原创 为Go语言GC正名-20秒到100微妙的演变史

原文链接:https://blog.twitch.tv/gos-march-to-low-latency-gc-a6fa96f06eb7#.lrmfby2xs 下面我们会介绍https://www.twitch.tv视频直播网站在使用Go过程中的GC耗时演变史。  我们是视频直播系统且拥有数百万的在线用户,消息和聊天系统全部是用Go写的,该服务单台机器同时连接了50万左右的用户。在Go1.4到1.

2016-07-07 17:09:17 27278 10

原创 [Rust]学习笔记-序

先自我介绍下,笔者从事互联网行业多年,一直在从事基础架构和中间件领域开发,对于分布式系统、高并发服务有一定的理解。        最开始是用Erlang和Java来构建服务,后面随着Go的强势崛起,本人也对这种工程性强的语言情有独钟,因此构建服务的首选语言变为了Go语言,事实也证明了选择正确性,Go语言给我们团队带来了非常高的生产力,写出的项目的可维护性也非常好,具体可以参加我的这篇文章。不过随着

2016-07-07 14:04:15 2396

原创 该重新认识一下APNS推送了

前言:APNs 协议在近两年的 WWDC 上改过两次,2015年12月17日更是推出了革命性的新特性。但在国内传播的博客、面试题里关于APNs的答案全都是旧的、错的。正文:对 APNs 的吐槽APNs 是 Apple Push Notification service 的简称(注意 APNs 的大小写, s不需要大写)。以下是我收集的一些关于 APNs 的吐槽,你先看下哪些吐槽比较“到位”:答案会

2016-06-18 18:21:56 11616 2

原创 [Go语言] 操作channel时遇到panic怎么办?

很多同学在使用channel时都遇到过这种情况:Panic问题,相信大家对于这种设计也吐槽了不少吧?这篇文章我们就来扒一扒这样设计的初衷。 潜在的Panic主要有两种: 重复close一个channel,向已经closed的channel继续发送消息。 最懒的解决办法就是通过recover来简单粗暴的恢复,可是这就违背了设计者的初衷。对于channel c来说,内置的close函数表明了不会再有任

2016-06-04 13:23:03 7601 1

翻译 用Go构建Teamwork项目的9条教训

我们爱 Go。在过去的一年中,我们为了构建 Teamwork Desk 多个服务,写下了将近 20 万行 Go 代码。我们已经构建了该产品的十多个小型 HTTP 服务。为什么要使用 Go?Go 是一种快速(非常快)的静态类型编译语言,它有强大的并发模型、垃圾收集、优异的标准库、无继承、传奇的作者、多核支持以及非常不错的社区。更别说对于我们这种写 Web 应用的程序员,它的 goroutine-pe

2016-05-19 09:19:35 6927

原创 听说,你想让自己的Go程序运行的更快?

到现在为止,我已经忘记了我在写什么,但我确定这篇文章是关于Go语言的。这主要是一篇,关于运行速度,而不是开发速度的文章——这两种速度是有区别的。 我曾经和很多聪明的人一起工作。我们很多人都对性能问题很痴迷,我们之前所做的是尝试逼近能够预期的(性能)的极限。应用引擎有一些非常严格的性能要求,所以我们才会做出改变。自从使用了Go语言之后,我们已经学习到了很多提升性能以及让Go在系统编程中正常运转的方法

2016-04-22 15:07:57 8319 4

原创 让vscode完美支持go vendor的代码跳转(使用vscode必看)

使用vscode作为Go的IDE是一件非常爽的事情。 可是事情总有不完美。现在有很多项目都是用vendor来做第三方包的版本控制,可是godef竟然不支持vendor的代码跳转!!我们想跳转到vendor中的代码,目前是无法做到的。 现在特分享一个自修改的版本,完美支持vendor特性,只要go install后,就可以爽爽的用vscode了。 欢迎大家加入Golang隐修会,群号894864,在

2016-04-16 23:44:21 36388 4

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