- Go语言
面向对象编程是目前软件开发技术的主流,Go语言作为一门新的面向对象编程的语言,相对于Java,C 等传统的面向对象的编程语言,弥补了他们的一些不足。秦云霞在《浅谈Go语言的面向对象技术[[1]]》一文中,简单介绍了Go语言与面向对象技术、C 、Java语言中面向对象技术存在的问题,以及Go语言对以上问题的解决和实现面向对象技术的新思想与关键技术。作者认为,Go语言与其他语言相比,具有四点优势:
- 类型安全和内存安全
- 可直接编译成机器语言,不依赖其他库
- 虽然是一门j静态类型语言,但是有动态语言的感觉,既可以在编译时检查出来隐藏的大多问题,又有很多包可以使用,写起来效率更高。
- 内置runtime,支持垃圾回收。
作者还分析了Go语言实现面向对象技术的新思想与关键技术,比如Go语言很可能是第一个将代码风格强制统一的语言,Go语言不用在m每个语句后面加上“;”作为结束语标志,在定义函数时,必须以关键字func开头,左花括号“{”比如放在func这一行的后面,否则会编译出错。Go语言面向对象的新技术使得Go语言的面向对象编程(OOP)非常简洁而优雅,没有了传统面向对象技术的很多概念,例如:继承,虚函数,构造函数和析构函数等。而且它的面向对象编程是语言类型系统中的天然的一部分,整个类型系统通过接口(interface)串联,浑然一体。
Goroutine是Go语言提出的轻量级线程,可应用于需要高并发的场景中,北京信息科技大学计算机学院的陈伟颖,李艳平,翟玥三人在《基于goroutine的web并发编程的研究与应用》[[2]]中对Goroutine并发编程及其所涉及到的相关知识和编程基础进行了讨论,对其效率进行了对比和分析,并实现了社交网站服务端语言层面的应用。文中说到,Go语言并发编程的核心是:同步通信。
Goroutine本质上是一个线程,但规模比线程要小,体现在底层是五六个线程。它由Go运行时初始化并调度,操作系统根本看不到Goroutine的存在。它以多路复用的形式运行于操作系统为应用程序分配的少数几个线程上,创建一个Goroutine只需要8k的内存空间, 它们根据需要在堆上分配和释放内存以实现自身的增长。作者们还将Goroutine和Threadsj进行比较,他们发现,由于Java的多线程机制和Golang的Goroutine机制是不一样的,当系统发生1亿次并发的时候,Java的多线程上下文切换占据了不少时间,占用了大量的CPU时间,系统负载过高。Goroutine在执行1亿次并发下,在同等线程条件下,处理速度是Java多线程的4倍这是因为Golang在启动时,会根据runtime.GOMAXPROCS设定同时并行的线程,1 亿个Goroutine会在这两个线程间运行。当线程数增多时,线程间切换的代价也会变高。这也是每处理一个request就创建一个新线程的服务程序方案被诟病的原因。不过Goroutine完全不同。它们由Go运行时初始化并调度,服务器根本看不到Goroutine的存在。所有的goroutines以多路复用的形式运行于服务器为应用程序分配的少数几个线程上。
刘艳平在《Go语言实现数据库驱动的方法》[[3]]中分析了Go语言的标准包database/sql,driver和数据库工作原理,对driver包的核心接口的实现进行重点研究,并给出了应用程序中数据库操作的方法。文中介绍,数据库驱动程序是软件开发语言和数据库之间联系的“翻译员”, 把编程语言的相关数据库操作翻译为数据库能够处理的语言[[4]],Go语言应用程序和数据库的相关操作是通过database/sql包和database/sql/driver共同实现的。 SQL包提供了保证SQL或类SQL数据库的应用接口, 实现了数据库的通用处理逻辑, SQL包自定义了数据库相关的数据类型, 这些数据类型把driver包中的接口作为成员之一,driver包定义了应被数据库驱动实现的接口, 实现了对接口的继承, driver包的接口的方法在数据库驱动程序包中具体实现。应用软件需要操作数据库时, 应用程序中导入SQL包和数据库驱动程序包, 以SQL包中的方法为主线, 驱动程序包中的方法为具体实现, 从而驱动数据库并进行数据的操作。按照Go语言的运行顺序, 在主程序运行之前, 先运行mysql包的init函数, init函数调用SQL包的Register函数注册数据库驱动, 通过SQL包的Open函数连接数据库, 返回数据库库对象, 如果执行非查询操作, Prepare函数以SQL语句为参数, 执行数据库操作, 调用driver包的Conn接口, 执行打开连接等操作,并向Conn绑定一个Stmt状态, 返回Stmt, Stmt是继承了driver包Stmt的数据类型, 通过成员变量和方法调用数据库驱动中的接口的具体方法, 如果执行查询操作, Query以查询的SQL语句为参数, 并通过Query Context调用driver.Rows接口的相关方法, 如果执行查询操作, Query以查询的SQL语句为参数, 并通过Query Context调用driver.Rows接口的相关方法。
作为一门全新的编程语言, Go结合了众多编程语言的优点, 作为开源语言, Go语言汇集了全球最优秀的语言专家的智慧。人工智能和大数据技术的发展, 使得数据处理成为很多业务的核心, Go语言对并发的优秀支持, 使得Go语言的应用将越来越广泛。[[5]]
- 服务器及通信协议
随着国民经济的不断增长,科学技术的不断创新,我国计算机网络行业发展得到了质的飞跃。由于计算机网络通信协议设计开发的复杂性在不断增加,这样也促使了协议工程技术的产生。王兴华在《浅析计算机网络通信协议验证技术》[[6]]中提到,通信协议作为现代计算机网络、数据通信以及多机系统等分布式系统的核心灵魂,是实现不同实体相互发生通信行为的具体规则和格式。然而,要想充分保障通信协议的完整性、正确性以及科学性,相关工作人员就必须通过合理应用验证技术对其进行测试工作。计算机网络协议实质是指不同计算机设备之间在通信过程中必须严格遵循的一些实现制定好的规则。网络协议必须遵循标准化的体系结构, 随着时间的不断推移,在当前网络通信市场上主要存在的标准体系包括了ISO的标准以及TCP/IP协议组标准。要想实现通信功能就必须保证其所有涉及内容都要认同其中一套用于信息交换的基本规则。[[7]]
数据网关广泛应用于各种网络数据采集与传输系统,为终端网络设备提供数据传输的接口,实现对终端网络设备发起的数据传输请求的解析和响应。刘力维在《基于安卓平台的HTTP数据网关设计与实现》[[8]]中介绍了一款实现了一个HTTP数据服务器功能安卓应用系统,其将数据网关和终端设备之间通过HTTP协议进行数据通信。数据网关与终端网络设备之间的数据传输过程可以按功能分解为两个主要部分:
- 数据的封装及解析过程。
在网络终端设备上,进行数据发送前,需要将发送数据按照一定格式进行封装,以便数据网关接收数据后能够通过解析过程得到正确的数据。在数据网关向网络终端设备发送响应报文时同样需要数据的封装和解析过程。
以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。