golang-小试牛刀
首先说下,我为什么选择go吧。之前一直做的都是.net平台下的开发,常用的服务端语言就是C#。刚接触C#的时候,就喜欢上了这种高级语言,它优雅、易上手、开发周期短,很多高级特性以及自带的托管内存管理GC。。。这样用了将近3年的时间,慢慢地感受到了它的不足之处(内存占用大,体系庞杂,不够精悍,对.net framework的强依懒性,无法跨平台,当然目前.net core 开源且跨平台,性能也有很大的提升,只是坑太多,目前使用还没有普及起来)而变得无法忍受。与此同时,一个叫go的语言越来越火,于是把目光瞄准了它。据说:
- 简洁、快速、安全
- 并行、有趣、开源
- 内存管理、v数组安全、编译迅速
正好解决了一部分C#无法解决的问题,最重要的还是短小精悍,简洁快速。说不如做,在工作之余,俺用试着做了了一个与之前接手的物联网项目类似的data service。这个service涉及到了消息队列RabbitMQ,NoSql Redis缓存,Mysql数据库等常用的开源项目。从学习到完成一个完整的service差不多花了断断续续将近1个月的空闲时间。程序的运行环境是win7 64bit,下面直接上图展示一下运行内存情况的先后对比吧:
1.C#(data service)
进程情况:

2.go (data service)
编译后的windows控制台:

进程情况:

可以看出,go程序的运行内存基本为c#程序的零头。(129M-7M)这里只比较了它们的内存运行情况,这也是我用它的一个非常重要的原因,当然还有IOPS,CPU,与mq,redis的通信效率等等性能的比较,等以后抽点时间,依次贴出展示。
对此项目感兴趣的新手,可以到我的git上看源码,已开源。不足之处,也欢迎各位大神批评指正!
https://gitee.com/zhaohu37/zhiot-go
golang-小试牛刀的更多相关文章
- Golang在视频直播平台的高性能实践
		http://toutiao.com/i6256894054273909249/ 熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量 ... 
- Golang在视频直播平台的高性能实践(含PPT下载)
		熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量与重要性比较高,所以成为 golang 小试牛刀的首批高性能高并发服务. 把大服务 ... 
- Golang框架beego电影网爬虫小试牛刀
		学习了一段时间golang,又参考课程学习了beego开发网站爬虫,项目的目录结构是: 采集的目标是豆瓣网电影,入口地址是:https://movie.douban.com/subject/19008 ... 
- Golang框架Beego在Windows环境下小试牛刀
		Beego官网beego官网 : https://beego.me/github : https://github.com/beego Beego安装前提: ①Go 1.1+ 以确保所有功能的正常使用 ... 
- GO语言的进阶之路-Golang高级数据结构定义
		GO语言的进阶之路-Golang高级数据结构定义 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过Golang的基本数据类型,字符串和byte,以及rune也有所了解, ... 
- GO语言的进阶之路-Golang字符串处理以及文件操作
		GO语言的进阶之路-Golang字符串处理以及文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们都知道Golang是一门强类型的语言,相比Python在处理一些并发问题也 ... 
- Golang的交互模式进阶-读取用户的输入
		Golang的交互模式进阶-读取用户的输入 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 读写数据除了 fmt 和 os 包,我们还需要用到 bufio 包来处理缓冲的输入和输出. ... 
- CQRS简单入门(Golang)
		一.简单入门之入门 CQRS/ES和领域驱动设计更搭,故整体分层沿用经典的DDD四层.其实要实现的功能概要很简单,如下图. 基础框架选择了https://github.com/looplab/even ... 
- Golang字符串处理以及文件操作
		一.整数 1.int与uint的初值比较以及其大小. 1 /* 2 #!/usr/bin/env gorun 3 @author :xxxx 4 Blog:http://www.cnblogs.com ... 
- Golang的变量定义及使用案例
		Golang的变量定义及使用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.变量的定义 package main import "fmt" func m ... 
随机推荐
- php八大设计模式之装饰器模式
			我们都知道,得到一匹布需要大概这么几步: 1.染色 2.印花 3.裁剪 这种形式在面向对象中怎么实现呢? 面向过程[继承模式]实现: 继承模式得到需要的布料,一步一步的加工. 继承的层次越来越深,扩展 ... 
- Linux 常用命令:系统状态篇
			前言 Linux常用命令中,有些命令可以用于查看系统的状态,通过了解系统当前的状态,能够帮助我们更好地维护系统或定位问题.本文就简单介绍一下这些命令. 1. 查看系统运行时间--uptime 有时候我 ... 
- 介绍静态链接库和动态链接库的差别,及在VC++6.0中的建立和使用
			首先介绍一下链接库:链接库分为动态链接库和静态链接库两种 LIB是静态链接库,在程序编译连接的时候是静态链接,其相应的文件格式是.lib. 即当程序採用静态链接库的时候..lib文件里的函数被链接到终 ... 
- Java Web乱码分析及解决方式(二)——POST请求乱码
			引言 GET请求的本质表现是将请求參数放在URL地址栏中.form表单的Method为GET的情况.參数会被浏览器默认编码,所以乱码处理方案是一样的. 对于POST请求乱码.解决起来要比GET简单.我 ... 
- 把握linux内核设计思想(三):下半部机制之软中断
			[版权声明:尊重原创.转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 中断处理程序以异步方式执行,其会打断其它重要代码,其执行时该中 ... 
- 【图像配准】基于互信息的图像配准算法:MI、EMI、ECC算法
			简单介绍: 基于互信息的图像配准算法以其较高的配准精度和广泛的适用性而成为图像配准领域研究的热点之中的一个.而基于互信息的医学图像配准方法被觉得是最好的配准方法之中的一个.基于此.本文将介绍简单的基于 ... 
- web前端开发——AJAX入门
			什么是AJAX AJAX: A New Approach to Web Applications XML AJAX是老技术新思想. 它所包括的内容我们之前都接触过.例如以下: (1)使用XHTML和C ... 
- HDU3265 Examining the Rooms【stirling数】
			题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=3625 题目大意: 有N个房间,每一个房间的要是随机放在某个房间内,概率同样.有K次炸门的机会. 求 ... 
- Docker Network Configuration 高级网络配置
			Network Configuration TL;DR When Docker starts, it creates a virtual interface named docker0 on the ... 
- Anatomy of an IIS7 configuration path
			The concept of configuration paths is fundamental to managing and operating an IIS server, so I want ... 
