温馨提示:文章均来自网络用户自主投稿,风险性未知,涉及注册投资需谨慎,因此造成损失本站概不负责! |
很多人不知道为什么要用go语言进行区块涟开发。 我在这里用我的实践经验来解释一下这个问题。
Go语言现在经常被用作去中芯化系统(decentralized system)。 其他类型的公司也在其产品的核心模块中使用 Go,并且它也在网站开发中找到了一席之地。
当我们决定构建 Karachain 时,我们考虑了(基准)C、C++、Java,甚至 NodeJ,我们也尝试使用一些算法作为考虑标准。 现在,我说我们正在用 Go 来做这件事,感觉很好。
p.s. 如果你是Go初学者,下图的资料可以下栽看看。点击小编头像,关注之后私信回复“资料”即可获取。
在构建像区块涟平台这样复杂的东西时,我们关注这些核心问题。 经过近 4 周的开发和探索,我们发现了这种美妙的语言如何优雅地解决了我们的问题。
Go语言非常简単。 而且它不会有那么多奇怪的怪癖,每次停止后返回代码都会浪费你的时间。 另外,它需要的学习量非常少,因为它的语法比较流行,并且开发人员的学习曲线非常平缓。 这样的特性本身对于开发者来说就非常有吸引力。 这也使得出现错误的可能性非常低。 所以整个开发过程看起来是那么的简単和快速。
一般来说,代码越多,项目的维护就越困难。 区块涟系统需要数千行代码,因此我们需要一种语言来使维护更容易。
我们一开始有20名**的工程师,大部分来自JavaScript、Java、Python,还有一些擅长使用C工具的系统工程师。
我们自然需要相同的语言才能一起工作。 说服他们学习 Go 很容易,但让他们在一个月内成为 Go 语言工程师也很容易。 。 。 我不确定选择其他语言是否可以达到这个速度。
与 Python 不同,Go 不是一种解释语言 - 它是编译语言。 这大大减少了即时出现的错误数量。 这有点像C语言,代码先被编译,错误会在编译时出现并处理,然后才能运行; 然而,它比 C 更先进,比 JavaScript 和 Python 更高校。
区块涟需要高校率,因为它使用蜜码算法,并且因为它在网洛上传播和存储大量数据。
这在使用 Golang 构建的工具和软件中很明显。 Docker作为威服务容器,也是用Golang构建的。
我们已经看到,使用 Golang 构建的威服务可以轻松处理数百万个请求。
并发就是让几个程序或者一个程序的几个部分同时或者并行运行,以提高计算机的吞吐量。 通常,在Java或其他一些语言中,并发是通过线程来实现的。 另一方面,Go 使用“Goroutines”方法。 Goroutine 是可以与其他函数同时执行的函数。 一个 Goroutine 大约占用 4kb 内存,而一个线程大约需要 1024kb 内存。 因此,Goroutine 比其他语言使用的线程小 250 倍,这使得同时执行越来越多的其他 Goroutine 成为可能。
以下是 Go 语言与 Java 在处理线程的方式上的不同之处:
在Java中,对象在工作単圆之间共享,为了让工作単圆访问这些数据,它闭须首先获得其对象锁。 在 Golang 中,工作単圆共享称为通道的东西。 通道基本上是先进先出通道(FIFO 管道)——工作単圆可以启动对通道的数据读取和写入。
Go 语言遵循它的准则——“不要通过共享内存来通信,而是通过通信来共享内存”。
并行操作对于区块涟具有特殊意义。 同时运行大量函数——这种巧妙而自然的特性使得Go程序可以灵活地运行在分布式系统中,这正是区块涟的主要要求。 不过这个特性很早就被发现了,包括Docker、MongoDB、Netflix、Uber等,他们的产品功能也主要依靠高并发。
许多基于稳定区块涟的DApp和工具都使用Go语言。 您可以轻松找到您需要的某个功能对应的库。
Go是编译过的,所以它是直接由操作系统执行的。 这使得我们能够更自由地实现像以太坊沙箱(EVM(以太坊虚拟机))这样的技术。 而如果是Java的话,因为它本身的运行载体JVM是虚拟机,所以需要在上面构建一个沙箱,这本质上是一种更高层次的抽象,完全没有必要,会浪费计算机资源。
当然,Go的使用体验就像角本语言一样,学习成本很低,所以非常适合小型项目。 在QPS(The Queries per Second)上,它比Java好很多,因此适合构建高请求的服务。
一些不错的 Go 代码片段
1、这是为了轻松地从函数返回一个指向局部变量的指针:
2. 可以在函数内部定义另一个函数,并使用该函数作为返回值,其中的局部变量将被视为闭包中的变量:
3.基于对象的编程:
Go语言简単易学、简洁易懂。 “实用主义”是它的标签,性能高于外观。 它是为团队合作而设计的,而且效果非常好。
2023-07-10 12:33:27
,某些文章具有时效性,若有错误或已失效,请在下方联系网站客服。1 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系客服QQ1041045050进行删除处理。
2 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3 风险提示:合作之前建议签订合同,汇一线首码网作为信息共享平台无法对信息的真实性及准确性做出判断,不承担任何财产损失和法律责任,若您不同意该提示,请关闭网页且不要在本站拓展任何合作,否则造成的任何损失由您个人承担。