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 ...
随机推荐
- HDU-6109 数据分割 并查集(维护根节点)
题目链接:https://cn.vjudge.net/problem/HDU-6109 题意 给出多组等式不等式 对于每一个式子,首先判断是否不可能 如果不可能,记录本组正确式子的个数,然后进入下一组 ...
- HDU 4941 Magical Forest (Hash)
这个题比赛的时候是乱搞的,比赛结束之后学长说是映射+hash才恍然大悟.因此决定好好学一下hash. 题意: M*N的格子,里面有一些格子里面有一个值. 有三种操作: 1.交换两行的值. 2.交换两列 ...
- selenium的安装(2)
selenium的安装: 1):selenium的在线按:使用dom的cmd打开命令提示符窗口.然后敲上这个命令可以安装了==> 安装命令 pip install selenium 删除命令: ...
- js获取css
原帖地址:http://kingphp.blog.163.com/blog/static/20042324420120109438458/ 我们通过dom.style获得的属性是有限制的,只能获取ht ...
- 【Hibernate步步为营】--多对多映射具体解释
上篇文章具体讨论了一对多映射,在一对多映射中单向的关联映射会有非常多问题,所以不建议使用假设非要採用一对多的映射的话能够考虑使用双向关联来优化之间的关系,一对多的映射事实上质上是在一的一端使用< ...
- java中string与json互相转化
在Java中socket数据传输时,数据类型往往比較难选择.可能要考虑带宽.跨语言.版本号的兼容等问题. 比較常见的做法有两种:一是把对象包装成JSON字符串传输,二是採用java对象的序列化和反序列 ...
- 基于CC2530的ZigBee转以太网网关的设计与实现
*已刊登至:<无线电>8月刊 物联网技术的实现中,无线技术是必不可少的部分. 近年无线技术的发展,将ZigBee推入人们的视线中.那么ZigBee是如何的一种技术呢?带着疑问.我查询了它的 ...
- RenderScript on LLVM笔记
Android 为何引入 Render Script: 3D 可移植 ( 直接用 opengl 也能够移植呀?) 性能 易用性 ( 让 opengl 难入门的人,用 Render Script ?) ...
- android ViewPager实现 跑马灯切换图片+多种切换动画
近期在弄个项目.要求有跑马灯效果的图片展示. 网上搜了一堆,都没有完美实现的算了还是自己写吧! 实现原理利用 ViewPager 控件,这个控件本身就支持滑动翻页非常好非常强大好多功能都能用上它.利用 ...
- Gym - 100203A Ariel 暴力+位运算
题意:第i种生物有k[i]个特征,分数是score[i],现在要参加竞赛,报出一种生物a,和一些特征h[i],参加竞赛的所有生物在这些h[i]上面的特征是一样的,a生物有h[i],则所有竞赛的生物都必 ...