golang
Go与Java对比
用途场景
1.Java的用途
用途一:服务器后端系统开发(web后端、微服务后端支付系统、业务系统、管理后台,各种后台交互的接口服务)。
用途二:大数据框架的底层实现和Java的API支持。(Hadoop)。
用途三:其它中间件的底层开发。(Tomcat、RocketMq、Hbase、Kafka、SpringCloud,Dubbo...)。
特点
做服务端系统性能高。
有虚拟机,跨平台。
功能强大,支持的类库多,生态圈类库多,开发框架和工具更易找。
2.go用途
和Java一样,Go语言最多的应用场景就是服务器后端系统的开发,包括Web后端,微服务后端接口。
Go非常适用需要高性能高并发的网络编程,这里的网络编程是指不需要界面,底层只是用Socket相互传输数据的系统,类似于Java中Netty的用途。
一些云计算容器,比如Docker,K8s,底层就是Go语言开发的,也可以用做底层自研运维项目的开发。
一些游戏系统的开发,可以用Go语言。
区块链的一些底层软件和一些应用软件。(区块链程序的第一开发语言)
最大场景:网络最中间
GO产生
Go语言是Google内部公司大佬开发的,主要起因于Google公司有大量的C程序项目,但是开发起来效率太低,维护成本高,于是就开发了Go语言来提高效率,而且性能只是差一点。
语法区别
指针
C指针比较繁琐的在于指针运算
Go语言没有指针运算,go 指针只读
Go & 取地址,C C++ 引用(别名)同时也是取地址符
函数
函数是go语言一等公民,java一等公民是类
并发
Go并发 抢 java c c++ php市场的关键点
java 线程 Go routine(协程)
//并发
go handle(conn)
在go语言中,一个线程就是一个Goroutines,主函数就是(主) main Goroutines。使用go语句来开启一个新的Goroutines
完全等同于线程池任务?
线程池的task不具备协调能力,Golang中可以用channel来做协程协调(在用户空间模拟cpu切换)
go用同步的写法完成异步的操作
go没有切面编程(动态代理)
没有泛型
Go内存管理
GO内存模型采用操作系统虚拟内存-物理内存思想
分类型处理
共67种大小的空间,根据不同的对象大小分配不同类的空间中(存在浪费空间)。
本文来自博客园,作者:gary2048,转载请注明原文链接:https://www.cnblogs.com/zhoum/p/16597338.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2021-08-18 Redis2-string和bitmap