首页 文章 精选 留言 我的

精选列表

搜索[快直播],共10005篇文章
优秀的个人博客,低调大师

《快学 Go 语言》第 1 课 —— Hello World

Go 语言的 Logo 最初 Go 语言的 Logo 是一只可爱的土拨鼠,土拨鼠昼伏夜出的习性让它显得很有 Geek 范。土拨鼠的行动其实并不敏捷,不过它繁殖能力很强,生长发育的很快。 到了 2018年,Go 语言重新制定了 Logo,消灭了土拨鼠,取而代之的是纯文字。这好像是在告诉用户 Go 语言不再是一个玩具语言,而是一个严肃的高效的正式语言。 不过这个新 Logo 不是很受欢迎,它虽然给人一种快速的感觉,但是也显得很极为古板。到目前为止,你在 Google 图片里搜索 Golang Logo,铺天盖地的还是土拨鼠的形象。 Go 语言的「元团队」 很多著名的计算机语言都是那么一两个人业余时间捣鼓出来的,但是 Go 语言是 Google 养着一帮团队打造出来的。这个团队非常豪华,它被称之为 Go Team,成员之一就有大名鼎鼎的 Unix 操作系统的创造者 Ken Thompson,C 语言就是他和已经过世的李奇一起发明的。 图片 图中翘着二郎腿的谢顶老头就是 Ken Thompson,它参与 Go 项目时个人已经处于半退休状态 —— 年纪大了。有条件的读者可以看看 Youtube 上 Go Team 的访谈视频一睹大师们的风采,地址是 https://www.youtube.com/watch?v=sln-gJaURzk。 Hello World 学习任何一门语言的第一步是看它的 Hello World 程序怎么写。下面是 Go 语言的 Hello World package mainimport "fmt"func main() { fmt.Println("hello world!") } 这个文件的名字是 main.go,使用下面的命令运行这个文件 $ go run main.go 输出 hello world! 是不是有一种操纵脚本的感觉,写完代码直接运行,中间的编译链接过程似乎都省去了。不过 go run 指令只是用来开发调试用的,在生产环境中程序可不是这样跑的。在开发完成后,需要将程序编译成没有任何依赖的二进制可执行文件,扔到服务器上运行起来。这个编译成二进制文件的指令就是 $ go build main.go 执行完毕后可以看到目录下多了一个 main 的可执行文件。运行它可以直接看到输出结果 $ ./main hello world! 再强调一遍,这个二进制可执行文件是没有任何依赖的,即使服务器上没有 go 环境,它也是可以直接运行的。因为编译器已经将运行时依赖项都融进了这单一的可执行文件。这也是 go 语言的特色之处,让用户编写的程序可以轻装上阵。 我也想运行上面的 Hello World 有很多语言的初学者总要为开发环境发愁,不知道上面的 go 命令哪里来的,main.go 源码文件该放在哪里运行。下面我简单介绍一下 Go 语言开发环境的搭建。使用 Go 语言推荐使用 Mac 和 Linux 环境。搭建环境两步走,第一步安装,第二步设置 GOPATH 环境变量。 Mac 环境 使用 Mac 电脑的程序员一般都比较 Geek,安装开发类软件离不开 brew 命令。 $ brew install go 执行上面这个语句,你也许会等上一段时间,取决于你的网络状况。不出意外, 执行成功后 Go 语言的完整开发包就已经装进去了。Mac 会默认安装在下面的目录中,目录的最后一层是 Go 的版本号。目录里面包含 Go 的编译器程序、Go 的标准库、Go 的源码库和文档。 /usr/local/Cellar/go/1.10.3 安装程序会自动在 /usr/local/bin 下创建一个软连接 go 指向 /usr/local/Cellar/go/1.10.3/bin/go 编译器程序,于是你就可以在命令行里直接使用 go 命令了。如果你在命令汗里键入 go 命令,有下面这样的输出,那就是安装成功了。 $ go Go is a tool for managing Go source code. Usage: go command [arguments] ... Linux 环境 Linux 环境的安装也很简单,使用下面这条指令在 ubuntu 下可以直接安装完成 $ apt-get install golang 如果你用的是红帽子或者 Centos 系统,那就使用下面的等价命令 $ yum install golang Windows 环境 Windows 用户很悲催,需要下载 Go 语言的安装包,这很头疼,鉴于 Go 语言的官网被墙了,你需要代理穿越过去下载。如果你没有代理,那就使用搜索引擎找找非官方的下载包吧。这里我就不照顾你们了,建议你们使用虚拟机安装 Linux 吧。 设置 GOPATH 环境变量 Go 的开发包已经安装成功了,下面还需要设置一个重要的环境变量,这个环境变量就是 GOPATH,它指向一个目录,以后我们下载的第三方包和我们自己开发的程序代码包都要放在这个目录里面,它就是 Go 语言的工作目录。当你在源码里使用 import 语句导入一个包时,编译器都会来 GOPATH 目录下面寻找这个包。 Mac 和 Linux 用户的 GOPATH 通常都设置成 ~/go,也就是在 home 目录下建一个名为 go 的目录。将下面环境变量的设置命令追加到 ~/.bashrc 或者 ~/.zshrc 的文件末尾,然后重新打开命令行即可。 export GOPATH=~/go 在 Go 语言的早期版本中,还需要用户设置 GOROOT 环境变量。这个 GOROOT 环境变量指代 Go 语言开发包的目录,是上面提到的 /usr/local/Cellar/go/1.10.3。它类似于 Java 语言里面的 JAVA_HOME 环境变量。不过后来 Go 取消了这个环境变量的设置,也就是说用户可以不必再操心这个环境变量了,当它不存在就行。之所以这里提到它,是担心读者在网上看到某些文章时提到这个 GOROOT 变量会感到迷惑不解。 在哪里写代码? 如果你只是跑一下 demo ,写一个 main 方法,那么你可以在任意路径编写 main.go 文件,然后执行 go run main.go 就可以运行代码了。如果你要自己编写一个 package,那么就必须在 GOPATH 里面的指定路径来编写代码。 在基础学习阶段,大部分代码都是一个简单的 main 函数,所以对于源码路径没有限制。到了高级阶段,我们免不了要自己编写 package,这时候就必须在 GOPATH 目录下面工作了。 读者请尝试在任意目录下创建 main.go 文件,将代码贴进去。执行 go run main.go 命令观察输出结果是否是期望的 hello world!。 用什么编辑器写代码? 推荐使用 vscode,如果你觉得自己是一个 GEEK,那也可以使用 vim。不过 vscode 也有 vim 插件,所以还是推荐读者使用 vscode 。 vscode 的官方网站是 https://code.visualstudio.com/,首页有一个 Download 按钮,点进去选择你需要的安装包下载安装吧。 下面是作者使用 vscode 编写代码的截图,这是默认的 Dark 主题,不知道读者是否喜欢这个配色方案。不喜欢也没关系,vscode 提供了很多主题用户可以自己挑选。 图片 思考题 如果你觉得本节对 GOPATH 环境变量解释的很浅显,请使用下面的命令来阅读 GOPATH 的更多细节,很遗憾,是全英文,而且内容很长。如果你是初学者,还是建议你成为 Go 语言老鸟以后再来阅读这些细节。 $ go help gopath 内容开头告诉我们 GOPATH 环境变量也可以不用设置了,因为编译器提供了默认值,这个默认值就是我们上面提到的 ~/go 目录。所以 Go 的开发工具是可以直接拿来即用的 —— 零配置。除非你觉得这个目录不好,想自己换一个,那就必须配置 GOPATH 环境变量了。 下一节 我们开始讲解 Go 语言的基础变量类型。 原文发布时间为: 2018-11-13 本文作者:码洞 本文来自云栖社区合作伙伴“码洞”,了解相关信息可以关注“码洞”。

优秀的个人博客,低调大师

快学 Go 语言 第 1 课 —— Hello World

Go 语言的 Logo 最初 Go 语言的 Logo 是一只可爱的土拨鼠,土拨鼠昼伏夜出的习性让它显得很有 Geek 范。土拨鼠的行动其实并不敏捷,不过它繁殖能力很强,生长发育的很快。 到了 2018年,Go 语言重新制定了 Logo,消灭了土拨鼠,取而代之的是纯文字。这好像是在告诉用户 Go 语言不再是一个玩具语言,而是一个严肃的高效的正式语言。 不过这个新 Logo 不是很受欢迎,它虽然给人一种快速的感觉,但是也显得很极为古板。到目前为止,你在 Google 图片里搜索 Golang Logo,铺天盖地的还是土拨鼠的形象。 Go 语言的「元团队」 很多著名的计算机语言都是那么一两个人业余时间捣鼓出来的,但是 Go 语言是 Google 养着一帮团队打造出来的。这个团队非常豪华,它被称之为 Go Team,成员之一就有大名鼎鼎的 Unix 操作系统的创造者 Ken Thompson,C 语言就是他和已经过世的李奇一起发明的。 图片 图中翘着二郎腿的谢顶老头就是 Ken Thompson,它参与 Go 项目时个人已经处于半退休状态 —— 年纪大了。有条件的读者可以看看 Youtube 上 Go Team 的访谈视频一睹大师们的风采,地址是 https://www.youtube.com/watch?v=sln-gJaURzk。 Hello World 学习任何一门语言的第一步是看它的 Hello World 程序怎么写。下面是 Go 语言的 Hello World package mainimport "fmt"func main() { fmt.Println("hello world!") }这个文件的名字是 main.go,使用下面的命令运行这个文件 $ go run main.go 输出 hello world! 是不是有一种操纵脚本的感觉,写完代码直接运行,中间的编译链接过程似乎都省去了。不过 go run 指令只是用来开发调试用的,在生产环境中程序可不是这样跑的。在开发完成后,需要将程序编译成没有任何依赖的二进制可执行文件,扔到服务器上运行起来。这个编译成二进制文件的指令就是 $ go build main.go 执行完毕后可以看到目录下多了一个 main 的可执行文件。运行它可以直接看到输出结果 $ ./main hello world! 再强调一遍,这个二进制可执行文件是没有任何依赖的,即使服务器上没有 go 环境,它也是可以直接运行的。因为编译器已经将运行时依赖项都融进了这单一的可执行文件。这也是 go 语言的特色之处,让用户编写的程序可以轻装上阵。 我也想运行上面的 Hello World 有很多语言的初学者总要为开发环境发愁,不知道上面的 go 命令哪里来的,main.go 源码文件该放在哪里运行。下面我简单介绍一下 Go 语言开发环境的搭建。使用 Go 语言推荐使用 Mac 和 Linux 环境。搭建环境两步走,第一步安装,第二步设置 GOPATH 环境变量。 Mac 环境 使用 Mac 电脑的程序员一般都比较 Geek,安装开发类软件离不开 brew 命令。 $ brew install go 执行上面这个语句,你也许会等上一段时间,取决于你的网络状况。不出意外, 执行成功后 Go 语言的完整开发包就已经装进去了。Mac 会默认安装在下面的目录中,目录的最后一层是 Go 的版本号。目录里面包含 Go 的编译器程序、Go 的标准库、Go 的源码库和文档。 /usr/local/Cellar/go/1.10.3 安装程序会自动在 /usr/local/bin 下创建一个软连接 go 指向 /usr/local/Cellar/go/1.10.3/bin/go 编译器程序,于是你就可以在命令行里直接使用 go 命令了。如果你在命令汗里键入 go 命令,有下面这样的输出,那就是安装成功了。 $ go Go is a tool for managing Go source code. Usage: go command [arguments] ... Linux 环境 Linux 环境的安装也很简单,使用下面这条指令在 ubuntu 下可以直接安装完成 $ apt-get install golang 如果你用的是红帽子或者 Centos 系统,那就使用下面的等价命令 $ yum install golang Windows 环境 Windows 用户很悲催,需要下载 Go 语言的安装包,这很头疼,鉴于 Go 语言的官网被墙了,你需要代理穿越过去下载。如果你没有代理,那就使用搜索引擎找找非官方的下载包吧。这里我就不照顾你们了,建议你们使用虚拟机安装 Linux 吧。 设置 GOPATH 环境变量 Go 的开发包已经安装成功了,下面还需要设置一个重要的环境变量,这个环境变量就是 GOPATH,它指向一个目录,以后我们下载的第三方包和我们自己开发的程序代码包都要放在这个目录里面,它就是 Go 语言的工作目录。当你在源码里使用 import 语句导入一个包时,编译器都会来 GOPATH 目录下面寻找这个包。 Mac 和 Linux 用户的 GOPATH 通常都设置成 ~/go,也就是在 home 目录下建一个名为 go 的目录。将下面环境变量的设置命令追加到 ~/.bashrc 或者 ~/.zshrc 的文件末尾,然后重新打开命令行即可。 export GOPATH=~/go 在 Go 语言的早期版本中,还需要用户设置 GOROOT 环境变量。这个 GOROOT 环境变量指代 Go 语言开发包的目录,是上面提到的 /usr/local/Cellar/go/1.10.3。它类似于 Java 语言里面的 JAVA_HOME 环境变量。不过后来 Go 取消了这个环境变量的设置,也就是说用户可以不必再操心这个环境变量了,当它不存在就行。之所以这里提到它,是担心读者在网上看到某些文章时提到这个 GOROOT 变量会感到迷惑不解。 在哪里写代码? 如果你只是跑一下 demo ,写一个 main 方法,那么你可以在任意路径编写 main.go 文件,然后执行 go run main.go 就可以运行代码了。如果你要自己编写一个 package,那么就必须在 GOPATH 里面的指定路径来编写代码。 在基础学习阶段,大部分代码都是一个简单的 main 函数,所以对于源码路径没有限制。到了高级阶段,我们免不了要自己编写 package,这时候就必须在 GOPATH 目录下面工作了。 读者请尝试在任意目录下创建 main.go 文件,将代码贴进去。执行 go run main.go 命令观察输出结果是否是期望的 hello world!。 用什么编辑器写代码? 推荐使用 vscode,如果你觉得自己是一个 GEEK,那也可以使用 vim。不过 vscode 也有 vim 插件,所以还是推荐读者使用 vscode 。 vscode 的官方网站是 https://code.visualstudio.com/,首页有一个 Download 按钮,点进去选择你需要的安装包下载安装吧。 下面是作者使用 vscode 编写代码的截图,这是默认的 Dark 主题,不知道读者是否喜欢这个配色方案。不喜欢也没关系,vscode 提供了很多主题用户可以自己挑选。 图片 思考题 如果你觉得本节对 GOPATH 环境变量解释的很浅显,请使用下面的命令来阅读 GOPATH 的更多细节,很遗憾,是全英文,而且内容很长。如果你是初学者,还是建议你成为 Go 语言老鸟以后再来阅读这些细节。 $ go help gopath内容开头告诉我们 GOPATH 环境变量也可以不用设置了,因为编译器提供了默认值,这个默认值就是我们上面提到的 ~/go 目录。所以 Go 的开发工具是可以直接拿来即用的 —— 零配置。除非你觉得这个目录不好,想自己换一个,那就必须配置 GOPATH 环境变量了。 下一节 我们开始讲解 Go 语言的基础变量类型。 原文发布时间为:2018-10-30 本文作者:码洞 本文来自云栖社区合作伙伴“码洞”,了解相关信息可以关注“码洞”。

优秀的个人博客,低调大师

JavaScript为什么快--第一篇?

为啥升级了NodeJS版本,速度会提升?为啥NodeJS代码启动时那么慢,运行起来了会变快?V8 JIT是啥? 前言 V8的产品定义:Speed up real-world performance for modern JavaScript, and enable developers to build a faster future web. 最近看了V8核心小组3个视频,感觉很有价值,做一次搬运工(英语好的同学可以自行观赏),我计划将3个视频分为3篇文章来: 第一篇来源,V8小组的产品经理;V8, Advanced JavaScript, & the Next Performance Frontier (Google I/O '17) 第二篇来源,V8的语法解析;Parsing JavaScript - better lazy

优秀的个人博客,低调大师

在云计算时代,“块”还得再“快”点儿

在云计算时代,曾经无限风光的“块”技术正在遭遇不小的尴尬。 “块”是IT存储中十分常见的概念,而所谓的块存储就是事先在存储空间中画好整齐的格子(格式化),然后以一个格子为最小单位进行存取,即每次存取至少涉及一个格子的空间。基于这样的存储方式,便衍生出了诸如读写、复制、传输等相关技术。 不过,在云计算时代,曾经无限风光的“块”技术却遭遇了不少的尴尬。 首先是有限带宽下的数据传输问题 在一切向“云”看的当下,一个企业如果想转向云计算,那或多或少会需要改变企业网络带宽。大部分企业选择的云计算都是最简单的带有数据保护机制的云存储解决方案就要面临一个问题,即企业现有的带宽是否能支持上云所需的庞大的数据流。 这里将块块级与字节级复制进行对比:假设某系统下的一个文件中发生了一次大小为512B(例如将某一个A改成了B)更改,这时如果是数据块级复制的话,即使在一些数据处理方式下,其灾备系统仍需要传输至少64KB的网络包到灾备机上以完成数据保护,而如果是字节级复制的话,灾备系统则只需要传输512B字节的网络包到灾备机上以完成数据保护,如果是海量数据的传输的,字节级的复制技术的这一优势将会更加明显,因此,在带宽已经成为稀缺资源的云计算时代,字节级数据捕获与复制技术显然更加符合“云”的要求。 其次是,数据的删除问题 云端环境下,对于云端的选型能力较弱,所以只能进行源端的数据重删,无法做到目标段数据的删除。固定块的大小可能为8KB或64KB,区别在于块越小,被判定为冗余的概率越大。这也就意味着消除的冗余更多,存储的数据更少。如果文件发生变化,而重复数据删除产品依然利用上次检查到的固定块,那就可能无法监测冗余部分。 有了冗余就涉及到了数据删除问题,但块级删除技术仍然无法给出令人满意的答案。块级删除技术需要利用主索引匹配数据块和该数据块的指针,从而“重新组装”数据块。块级重复数据删除所需的索引较多,因此,在数据重复确定时所需要耗费的计算时间也就更多,备份功能也因此在重复数据删除过程中受到更大的影响。 最后,我们再来了解一下基于块的CDP技术: CDP(Continuous Data Protection,持续数据保护)实现的关键技术是对数据变化的记录和保存,以便实现任意时间点的快速恢复。数据基于数据块的CDP功能直接运行在物理的存储设备或逻辑的卷管理器上,甚至是数据传输层上。当数据块写入生产数据的存储设备时,CDP系统可以捕获数据的拷贝并将其存放在备份服务器中,当灾难发生后,简单地选择需要恢复到的时间点即可实现数据的快速恢复。 基于块的CDP主要包括两个技术:COW(copy-on-write)和ROW(redirect-on-write)。COW技术具有如下两个缺点:明显的写延迟以及无法实现系统级别的全景恢复,仅能恢复由于误操作导致的局部数据污染。而结合了快照备份数据的ROW技术虽然可以实现系统级别的全量恢复,但由于备份数据量的增加,数据版本之间形成相互依赖的链条,使得数据管理越来越复杂,数据块在存储层进行异步的传输过程中,很难保证数据库的一致性,进而影响数据的可恢复性和恢复效率。虽然有企业希望采用独立硬件的方式解决上述问题,但这样做需要额外的服务器和网络硬件,每台代理服务器上的虚拟机的数量受到严格的限制,所以成本和性能往往也难以接受。 当然,“块”技术在银行、保险等行业依然被广泛应用,但随着新技术、新需求的不断出现,任何一种技术都不可能停下迭代的脚步,比如分布式块存储和OpenStack等开源项目之间的联系正在进一步加深,未来,块存储、块复制等技术将在企业私有云平台上做更好的集成和运维。 本文转自d1net(转载)

优秀的个人博客,低调大师

【直播预告】云栖直播:阿里热修复产品HotFix2.0升级详解

全面——你知道吗?1891年,卡尔森纳做出的第一把瑞士军刀,只有螺丝刀和开罐器。经过一代又一代能工巧匠的打磨,这把刀陆续增加了锯子、剪刀、镊子、放大镜、改锥,甚至内藏激光、LED手电筒、USB记忆碟等功能。 稳定——你知道吗?公元前1500多年前,埃及人就已经用绳子和竖棍做成了简易天平,成为现代天平的雏型。天平是平衡的象征,托盘内不断增加的砝码,更是自信与质量的保障。 精准——你知道吗?1608年,荷兰眼镜商汉斯·利伯希用两块镜片发明了人类历史上第一架望远镜,随着技术的发展,大千世界在人类的探索下无所遁形。射电望远镜,更是将观测目标锁定在直径10万光年的银河系边缘。 热修复技术一直在移动开发领域颇受关注,在行业的推动下不断发展和完善,随着后移动互联网时代的到来,这项技术越来越多的被APP开发者所使用,从内测到公测,从1.0到2.0

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册