论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
程序人生
›
【程序人生】毕业入职后,C++转Go语言工作半年感受,202 ...
【程序人生】毕业入职后,C++转Go语言工作半年感受,2024年最新2024年Golan ...
罪恶克星
金牌会员
|
2024-7-23 20:29:50
|
显示全部楼层
|
阅读模式
楼主
主题
534
|
帖子
534
|
积分
1602
其中一个地方就是代码格式题目。在各大论坛、各大语言板块都充斥着括号位置、空格、缩进的
讨论,这些讨论在Go语言中都可以打住了。go fmt可以自动帮我们处理好这些题目,让我们的每
个源码文件的代码格式都是统一规范的。在现实应用中,这个特性可以大大提高团队的开发服从:
最简单的,写代码时,你再也不用在=两边,函数参数的后面等地方加上空格了,只要输入
go fmt myProject,一切题目都烟消云散。
6.只有一个的二进制可实行文件
利用过Go语言的同砚,应该都知道程序编译后仅仅天生一个可实行的二进制文件,非常
方便,但是我仍旧认为我们大大低估了这个语言特性的好处,特殊是在项目标后续开发、维护过程
中。现在社会,网络带宽和存储装备都不再昂贵,但是部署、配置、管理、升级各种软件服务的
代价照旧较为高昂的。如果各人自己管理过多个系统、集群,就会知道:升级或安装依靠库、JDK等
组件时,总会碰到特殊痛楚的时候,几天的加班加点搞定一个题目都有可能!而纯Go写的程序则不
一样,不管项目处于在哪个阶段,我们需要的也仅仅是一个binary文件,对于提高生产力来说,这个
无疑是非常巨大的。
7.完善的标准测试框架
Go的测试框架是非常棒的,和别的语言差别的是:我们仅仅利用Go语言自带的标准化测试
框架,就可以很好实现各种测试功能:单元,黑盒,白盒,压力测试等等。除了标准测试外,还有很
多第三方的优秀测试框架,但是要记取的是:最好只利用一套测试框架,如许能保持项目标完备性和
同等性。就笔者的履历来看,现在的标准测试框架充足用了,如果需要单步断点可以看这里。
8.性能分析
Go语言自带标准的性能分析工具,包括CPU、内存、阻塞操作(http请求,数据库请求,
time.Sleep等)在内的都可以丈量,influxdb就是利用这些工具实现了数据库的常量时间访问。
9.那么对于网上经常被喷的那些所谓的Go的‘题目’呢?
1)GC
Go语言从1.3开始,GC的改进就在持续进行中,1.5中,GC改成三色mark and
sweep后,性能得到了极大的提高,在1.6中,对于内存占用很高、对象很多的系统又进行了一
次大优化,可以说,现在的Go程序一般不存在GC题目,除非:分布式缓存、数据库、消息推送
如许海量对象的场景,这时候需要自己做好可复用对象管理、归并部分小对象、将一些小型的struct
结构定义为值范例而不是指针范例、还可以从业务层面和架构层面进行优化设计等等。
不过,虽然说不太需要担心GC题目,但是各人照旧最好学习一下Go的GC原理和
内存管理,理解底层原理对于很多时候快速的定位办理题目是大有裨益的。
PS: 2016年7月7日补充,昨天看到一个利用GO作为核心语言的国外大型视频直播
网站分享了关于GC的演变史,直接说结果吧:1.2版本的时候,GC STW时间是2秒左右,到了1.6版本
再联合一些GC参数调优,到达了30-50ms的级别,现在的1.7版本由于将一些STW工作放到了并发去
实行,因此GC时间到了1m级别,整整上千倍的提拔,根本上延时已经不是题目了。后续版本将进一步
改进STW题目,同时大大改善GC的吞吐率。
2)泛型
其实刚从别的语言过来时,我或多或少会在写Go代码时用到模版的头脑,但是后
面发现,如许会让代码更难维护,因此,写Go代码就要用Go的哲学和头脑。
写过C++代码的都知道:抽象是一把双刃剑,过度的抽象就可能存在埋伏的题目。
在我看来,Go所具有的OO头脑,是简洁的,是纯粹的,是组合的核心头脑。
编程现在就是化繁为简,充分利用组合的头脑(也是Unix程序设计提倡的头脑),可
以让我们的开发模型和项目代码大大简化、返璞归真 。Go的OO头脑充分体现了三位大神作者的
编程和设计功底,估计也只有Unix的作者才气写出这么完美的OO实现了!
3)GOPATH
对于新手来说,GOPATH很难理解清楚,我当时刚打仗时,也是含糊了一段时间。
现在则是混淆了两种方式,第一种,在默认的GOPATH下的src中存放项目;第二种,自定义一个
临时的GOPATH,然后存放项目。后者的独立性更好,但是全局利用go build ,go test等命令时就
会有题目,比如手动导出
GOPATH才行:
mkdir sunface
cd sunface-bench/
export GOPATH=$PWD
go get -v github.com/otoolep/bleve-bench
go install github.com/otoolep/bleve-bench/cmd/bench/.
$GOPATH/bin/bench -h
10.Go语言的总结
Go从出身来看更像学院派语言,但是现实上它是彻头彻尾的工程语言,特殊是它很得当
我们团队,很得当基础架构、中间件、云计算平台、PasS平台的开发,因为说它是云时代的未来第
一语言,丝毫不为过。
就我这边的项目而言,分布式日志平台、搜索系统、消息推送等项目中,避免了JVM或者
EVM的麻烦,着实是太美好了,所以,如果条件允许,我会完全选择纯Go来设计实现一个系统,也
许这种美好只有真正深入用过的人才气体会
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
罪恶克星
金牌会员
这个人很懒什么都没写!
楼主热帖
dotnet 6 为什么网络请求不跟随系统网 ...
2. 函数
学习ASP.NET Core Blazor编程系列十五 ...
分享 — 如何在 Linux_Kali 中进行Clas ...
HCIA学习笔记十一:ARP地址解析协议 ...
【C#/.NET】RESTful风格的Post请求与Cr ...
花了两天从几十万行代码里总结出的22个 ...
初识Kafka
使用SLF4J和LOGBACK (二 :核心组件 ...
Resilience4J通过yml设置circuitBreake ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表