Golang和java区别和特点:
主要优点:代码简洁(get、set、换行符都省了)、更好的支持高并发微线程、更多的基本类型对内存占用更精准(int8 uint8)、依赖更少更轻
共同点:都支持垃圾自动回收、静态类型(go支持自动推导类型)、反射
区别:Go支持接口,但是不支持继承,一般通过成员变量的方式实现类似的效果
其他:GQuery、Beego等框架,非常适合爬虫类项目,和后端高并发项目,有成熟的类库支持。
Golang核心: go 关键字、channel(类似于阻塞队列)、锁(互斥锁、读写锁)
go语言中开启一个goroutine非常简单,go函数名(),就开启了个微线程:比如 go addTicket();
支持高并发,隔离性、内存开销小、切换开销小。1个物理线程支持多个Goruntie,Go维护了Goruntie之间的隔离性,而且每个Goruntie物理开销很小,内存2kb,一般线程都是1M以上(JVM里面每个线程栈默认大小1M,线程独享的空间),且切换起来,代价不高。
channel是一个先进先出的队列,多线程之间通讯的工具(类似于阻塞队列)
go也学了有几天了,想写个一点东西练练手,光学不做,等于白学!!!
话不多说,开始写代码!
先到src创建个Rxin项目,用于写我们的服务器框架代码
进入文件夹创建两个文件夹,riface和rnet一个写我们的服务器接口,一个写我们的服务器模块
先进入riface创建IServer.go,定义一个服务器接口
在进入rnet创建server.go,让Iserver的接口实现,定义一个server的服务器模块
这样一个基本的tcp链接服务器框架就写好了,目前能够实现的功能只有接受信息并回显打印
以后添加更多功能业务!
在写个基于我们的服务框架的服务器端和客户端运行程序
在src中创建个myDemo,再到myDemo创建个Rxin1.0,写两个程序,Client.go和Server.go用于链接通信
最后让我把这个链接程序运行起来吧!
客户端和服务器端,实现了,tcp通信!
这次,就先写到这里了,
下次再给这个框架添加更多业务功能!
这是文件结构
如果觉看了对你有帮助的话请给我点个关注,并投个币吧!