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种大小的空间,根据不同的对象大小分配不同类的空间中(存在浪费空间)。
标签:Java,语言,golang,go,开发,Go,底层 来源: https://www.cnblogs.com/zhoum/p/16597338.html