go

用Golang处理每分钟100万份请求

廉价感情. 提交于 2020-11-01 18:56:22
我在几家不同的公司从事反垃圾邮件,防病毒和反恶意软件行业工作超过15年,现在我知道这些系统最终会因为我们每天处理的大量数据而变得复杂。 目前,我是smsjunk.com的CEO和KnowBe4的首席架构师,他们都是网络安全行业的公司。 有趣的是,在过去的10年左右,作为一名软件工程师,我参与过的所有Web后端开发大部分都是在Ruby on Rails中完成的。不要误会我的意思,我喜欢Ruby on Rails,我相信这是一个了不起的环境,但是过了一段时间,你开始用ruby的方式思考和设计系统,而且如果你忘记了软件架构的效率和简单性-可以利用多线程,并行化,快速执行和小内存开销。多年来,我是一名C / C ++,Delphi和C#开发人员,而且我刚开始意识到使用正确的工具进行工作可能会有多复杂。 我对互联网总是争论的语言和框架战争并不太感兴趣。 我相信效率,生产力和代码可维护性主要取决于您构建解决方案的简单程度。 问题 在处理我们的匿名遥测和分析系统时,我们的目标是能够处理来自数百万端点的大量POST请求。Web处理程序将收到一个JSON文档,该文档可能包含需要写入Amazon S3的多个有效内容的集合,以便我们的map-reduce系统稍后对这些数据进行操作。 传统上,我们会考虑创建一个工作层架构,利用诸如以下方面的内容: Sidekiq Resque DelayedJob

go语言path/filepath包之Walk源码解析

天涯浪子 提交于 2020-11-01 18:24:47
go语言的 path/filepath包包 提供了很多兼容各个操作系统的文件路径实用操作方法,今天只来看看Walk方法: Walk(root stirng, walkFn WalkFunc) error 该方法主要用于递归遍历目录: walk方法会遍历root下的所有文件(包含root)并对每一个目录和文件都调用walkFunc方法。在访问文件和目录时发生的错误都会通过error参数传递给WalkFunc方法。文件是按照词法顺序进行遍历的,这个通常让输出更漂亮,但是也会导致处理非常大的目录时效率会降低。另外,Walk函数不会遍历符号链接。 方法名 定义 WalkFunc type WalkFunc func(path string, info os.FileInfo, err error) error Walk func Walk(root string, walkFn WalkFunc) error type WalkFunc func(path string, info os.FileInfo, err error) 函数根据文件信息path和info进行自定义操作: WalkFunc是一个方法类型,Walk函数在遍历文件或者目录时调用。调用时将参数传递给path,将Walk函数中的root作为前缀。将root + 文件名或者目录名作为path传递给WalkFunc函数。例如在

Waymo首发最详自动驾驶报告,500年驾龄老司机如何炼成?

僤鯓⒐⒋嵵緔 提交于 2020-11-01 09:59:12
  作为自动驾驶领域的领跑者,Waymo 又开了一个先例。   美东时间 10 月 30 日, Waymo 首次公开披露了其在凤凰城运营自动驾驶汽车的里程和碰撞数据, 有成绩也有不足。    报告传送门 : https://waymo.com/safety   报告称,自 2009 年以来,Waymo 自动驾驶车辆已在现实道路上行驶了超过 2000 万英里,最新报告分析的这部分,则是 2019 年 1 月~2020 年 9 月期间的测试数据,期间共发生了 18 起真实撞车事故。   目前,很多在搞自动驾驶的公司可能都在努力创造一个“黑匣子”,对可衡量的指标都有严格限制,并且仅在最受控制的环境下向公众展示其技术领先性、跑了多少里程、拿了多少牌照,很少自曝短板。但这份报告开始直面问题,详细披露了自动驾驶汽车在现实生活中的情况。   自 2016 年 Waymo 从 Google 分离出来独立运营开始,常规操作都是通过新闻稿来传达其自动驾驶计划,但在新闻中很少揭示有关自动驾驶的实际细节,通常只披露少量阶段性数据。2020 年 10 月初,Waymo 已向更多公众开放了其完全无人驾驶的汽车出行服务,以前,只允许少数人参加。    此次进行详细报告,Waymo 表示其意图是建立公众对自动驾驶汽车技术的信任,但是这些研究也对其他竞争对手的技术细节披露提出挑战。    Waymo 安全负责人马修

一种最小(限制规模)语言kernel配合极简(无语法)扩展系统的开发

不想你离开。 提交于 2020-10-31 19:00:30
本文关键字:可裁剪语言。better c only rust, easier scripting programming,Easy ori programming,非专业编程 在《terra++ - 一种中心稳定,可扩展的devops可编程语言系统》《terracling前端metalangsys后端uniform backend免编程binding生成式语言系统设想》《利用terralang实现terrapp(1):深刻理解其工作原理和方法论》中我们讲到对语言核心和扩展进行可裁剪的特性(类linux kernel),这种设计在app和kernel都存在,却没被用在语言设计上,。这种需求很明显,是因为现在围绕语言为中心作为代表的各种开发生态已经十分破碎,又变动频繁断层横生,提高了人们学习它们的曲线(而语言决定开发,不可能要求所有的程序员订立契约,倾向使用某种语言的统一良好特性,一门语言好的坏的都会被继承下来,又没有一种真正可裁剪的语言存在个人不可能进行改良),。一些整合现有语言类的统一后端多前端语言(c#,jvm languages)又做不到真正的前后或后端统一解决多语言带来的痛点。而一些更为新潮的语言希望彻底更新这类弊端,所以直接发明新语言,这类语言往往基于强化C简化CPP的目的出现。如go/rust/dlang。却也有新的问题产生,见《编程语言选型之技法融合

英语学习-华尔街英语学习法

别来无恙 提交于 2020-10-31 10:01:50
Learning Cycle:学习循环 When you listen, do you : try to understand 100% ? listen for the main idea ? What the goal of “Listen”? What do you find difficult in “Listen”? What’s the solution ? When you pronounce, do you: focus on the word? the sentence?  the sentence + situation ?  the sentence +situation + emotion? What's the goal of “Pronounce”?What do you find difficult in “Pronounce” ?What's the solution? 句子声音+情景+情感 When you read, do you:  focus on the spelling of the words or the sound ? try to write down every sentence? What's the goal of “Read ”? What do you find difficult in “Read”

ubuntu安装、升级、卸载go语言

痴心易碎 提交于 2020-10-31 09:51:15
ubuntu安装、升级、卸载golang 一、安装go 二、升级go 1.卸载go 2.重新安装新版本的golang ubuntu安装、升级、卸载golang 一、安装go 下载go 方法一:官网下载: https://golang.org/dl/ 方法二:打开ubuntu输入: wget https : / / dl . google . com / go / go1 . 15.3 . linux - amd64 . tar . gz 解压安装包: sudo tar - C / usr / local - xzf go1 . 15.3 . linux - amd64 . tar . gz 建立软连接: (1) sudo ln - s / usr / local / go / bin /* /usr/bin/ (2) sudo vim ~ / . bashrc 进入编辑界面后Shift+G跳转至尾行,按o新插入一行,输入: export GOPATH = "$HOME/go" export PATH = "$PATH:/usr/local/go/bin:$GOPATH/bin" Esc退出编辑,输入以下代码退出文件保存并生效: : wq source ~ / . bashrc 查看安装是否生效: go version 二、升级go 1.卸载go 删除目录: sudo rm - rf

PHP转Go系列:字符串

人走茶凉 提交于 2020-10-31 07:06:31
字符串的赋值 在PHP中,字符串的赋值虽然只有一行,其实包含了两步,一是声明变量,二是赋值给变量,同一个变量可以任意重新赋值。 $str = 'Hello World!'; $str = 'hia'; Go语言实现上述两步也可以用一行语句解决,就是通过标识 var 赋值时同时声明变量,切记等号右侧的字符串不能用单引号,对变量的后续赋值也不能再重新声明,否则会报错。除此之外,定义的变量不使用也会报错,从这点来看,Go还是比PHP严格很多的,规避了很多在开发阶段产生的性能问题。 var str = "Hello World!" str = "hia" 关于声明,Go提供了一种简化方式,不需要在行首写var,只需将等号左侧加上一个冒号就好了,切记这只是替代了声明语句,它并不会像PHP那样用一个赋值符号来统一所有的赋值操作。 str := "Hello World!" str = "hia" 字符串的输出 PHP中的输出非常简单,一个echo就搞定了。 <?php echo 'Hello World!'; ?> 而Go不一样的是,调用它的输出函数前需要先引入包 fmt ,这个包提供了非常全面的输入输出函数,如果只是输出普通字符串,那么和PHP对标的函数就是 Print 了,从这点来看,Go更有一种万物皆对象的感觉。 import "fmt" func main() { fmt.Print(

SQL SERVER 行列转换(动态)

╄→尐↘猪︶ㄣ 提交于 2020-10-31 05:34:17
行转列测试数据: --测试数据 if not object_id(N'Tempdb..#T') is null drop table #T Go Create table #T([Name] nvarchar(22),[Subject] nvarchar(22),[Score] int) Insert #T select N'李四',N'语文',60 union all select N'李四',N'数学',70 union all select N'李四',N'英语',80 union all select N'张三',N'语文',90 union all select N'张三',N'数学',80 union all select N'张三',N'英语',70 Go --测试数据结束 动态写法(加上了总分和平均分): DECLARE @sql VARCHAR(MAX) SET @sql = 'select Name' SELECT @sql = @sql + ',max(case Subject when ''' + Subject + ''' then Score else 0 end)[' + Subject + ']' FROM ( SELECT DISTINCT Subject FROM #T ) a SET @sql = @sql + ',sum(Score) 总分

浅谈GO语言中interface

你离开我真会死。 提交于 2020-10-31 04:20:49
接触了go语言已经有几个月的时间了,虽然大部分的系统包还不是很熟练,但是对于go也算是有一定的了解。go语言在语言的层面上并没有非常亮眼的地方。在效率方面,go语言不及c/c++,在移植性上go语言不及java,在高并发方面erlang也能做的很好。所以go会给人有一种很全能的感觉,在各个方面都做了适当的取舍。在开发效率上go会比较快些。 go语言中,interface是重点。在面向对象设计中,有组合优于继承这句话。go语言放弃了继承,在组合方面表现的很好。首先来看看interface的用法。interface有两种用法: 1,空接口,用过C/C++的人看了空接口的定义第一时间想到的就是C/C++中的void*。 var Businesser interface{} var IntData int = 100 var StringData string = "i love hxc" Businesser = IntData var IntData2 int = Businesser.(int) fmt.Println(Businesser) // 100 fmt.Println(IntData2) //100 Businesser = StringData var StringData2 string = Businesser.(string) fmt.Println

买了iPhone之后,生活有什么改变?

霸气de小男生 提交于 2020-10-30 19:57:23
来源: 科技每日推送 文案:不黑 制作:胖胖 背锅:毒少 最近 iPhone12 不是出了嘛 所以在某乎出现了这样的话题 看了不少网友的总结后 身为iPhone用户之一 俺觉得真是太™真实了 来看看你被说中了几个 Go φ(* ̄0 ̄)′ 还记得年少时的梦吗 像朵永远不凋零的花 陪我经过那风吹雨打 -END- 【文章版权归原作者所有,其内容与观点不代表Unitimes立场。 本微信平台出现的图片、音乐、视频部分是在互联网收集而来,版权归版权所有人所有,若版权者认为其作品不宜供大家浏览或不应无偿使用, 请发邮件至 editor@unitimes.io 或添加微信unitimes2019 联系 我们,本平台将立即更正。 】 扫二维码|关注我们 加入Unitimes精选用户群 解锁更多精彩内容 喜欢今天的内容吗?喜欢就点个 在看 哦 本文分享自微信公众号 - Unitimes(Uni-times)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/4277503/blog/4695386