使用go来做系统,如何比java node php 更 简单
使用go
go语言的好处不言而喻:
效率问题,
无论是开发效率还是运行效率至少都兼顾了,比较适合中国国情。
运行
可以以脚本运行,可以编译结果运行
跨平台
没有大问题
java
java1.7 后的非阻塞做的可以了 大量I/O的情况下,还没有好的解决方案,可以使用分布式,中国后台大量使用了java,以至于不懂技术的人说到后台就认为是java
node
node 很好,很喜欢,但是太脚本化,一般单线程运行,可以多进程运行,可以使用分布式,在运行脚本测试方面,其实比python更加快捷简单,效率高,当然并非使用python效率就不高,python的AI大量模块都是c,c++写的,node也是如此。
go
Goroutine 很好,不多说,使用就行,同样可以使用分布式,各方面比较先进
c c++
效率很好,可惜为此要引入的库时很不方便,编译一大堆库,要效率别无他法,尽量自己写代码,中国国情。。。。。
选择
所以使用go node java,现在偏重于go,其他效率方面的,c 第一 没有之一,如 linus 写的git ,他用c 写东西,那就是开发效率和运行效率一样高。
例子,五分钟httpserve 和 mysql 准备好
show me the code
先写一个数据库连接获取数据的
package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql""github.com/jmoiron/sqlx"
)var DB *sqlx.DBfunc initDb() error {var err errordsn := "root:root@tcp(127.0.0.1:3306)/test"DB, err = sqlx.Open("mysql", dsn)if err != nil {return err}DB.SetMaxOpenConns(100)DB.SetMaxIdleConns(16)return nil
}type User struct {ID int64 `db:"ID"`Name sql.NullString `db:"name"`Age int `db:"age"`
}func testSqlxQuery() {sqlstr := "select ID,name,age from user where ID = ?" var user Usererr := DB.Get(&user, sqlstr, 1)if err != nil {fmt.Printf("select failed, err:%v\n", err)return}fmt.Printf("user:%#v\n", user)
}func main() {err := initDb()if err != nil {fmt.Printf("init db failed, err:%v\n", err)return}testSqlxQuery()
}
运行立刻得到结果,速度效率兼顾,当然自己需要
加上httpserver,然后从httpserver返回结果
package mainimport ("github.com/gin-gonic/gin""fmt"//"database/sql"_ "github.com/go-sql-driver/mysql""github.com/jmoiron/sqlx"//"net/http"
)var (userName string = "root"password string = "root"ipAddrees string = "localhost"port int = 3306dbName string = "test"charset string = "utf8"
)type User struct {ID int `db:"ID"`Name string `db:"name"`Age int `db:"age"`Address string `db:"address"`
}func getUser(Db *sqlx.DB) ([]User) {var users []User // 这里创建的是存放结构体的切片if err := Db.Select(&users, "select * from user where ID > ?", 0); err != nil {fmt.Println("Select ERROR:", err)return nil}fmt.Println(users)return users
}func getUserRecord(Db *sqlx.DB,id int64){result, err := Db.Exec("select * from user where id = ?",id)if err != nil {fmt.Printf("delete faied, error:[%v]", err.Error())return}num, _ := result.RowsAffected()fmt.Printf("select success, affected rows:[%d]\n", num)//return result()
}func connectMysql() (*sqlx.DB) {dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s", userName, password, ipAddrees, port, dbName, charset)Db, err := sqlx.Open("mysql", dsn)if err != nil {fmt.Printf("mysql connect failed, detail is [%v]", err.Error())return nil}Db.SetMaxOpenConns(20)Db.SetMaxIdleConns(15)return Db
}func main() {var Db *sqlx.DB = connectMysql()if Db == nil{fmt.Println("db error")}defer Db.Close()x:=getUser(Db)r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "I am qianbo",})})r.GET("/get/user",func(c *gin.Context){c.JSON(200,gin.H{"data":x,})})r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
浏览器里输入http://127.0.0.1:8080/get/user
可以看到返回的json结果,我会继续写完整,go 语言和c,c++配合来写系统,事半功倍。
使用go来做系统,如何比java node php 更 简单相关推荐
- java简单手机脚本编写,Java认证:Java平台上更简单的脚本编写方法
本文向各位介绍一下Java性能监控小技巧:"JDK附带分析器.远程连接进程.跟踪统计.为离线分析创建一个堆转储.JConsole并不是高深莫测的." 现在,许多 Java 开发人员 ...
- html5在线客服系统,产品解析|Live800在线客服系统,让服务和营销更简单
随着互联网+时代的到来,消费者之间的关系互联正击穿以前人与人之间的圈层链,消费者的声音被放大.服务意识提升到新高度,企业不再闭门造车,开始听取用户的声音,采纳用户的意见,注重用户的需求. 于是,越来越 ...
- 【Java】Spring更简单的读取和存储
文章目录 Spring更简单的读取和存储对象 1. 存储Bean对象 1.1 前置工作:配置扫描路径 1.2 添加注解存储Bean对象 1.2.1 @Controller(控制器存储) 1.2.2 @ ...
- 大聪明教你学Java | EasyExcel - 用更简单的方式操作Excel
前言 我们在开发应用系统的时候经常遇到操作或解析 Excel 的需求,我们在实现此功能的时候也都是借助 Apach POI 去操作 Excel,但是使用过这个框架的小伙伴都知道,这个框架并不是很好用, ...
- php和java做众筹系统哪个好,Java版众筹系统和PHP众筹系统对比分析
众筹系统是为从事众筹行业设计开发的,用于满足众筹运营者和投资之间操作管理的一个平台.目前市场主流的众筹系统主要有java版和php版.今天小编就来介绍下这2个版本的众筹系统有何区别. Java版众筹系 ...
- 做一个完整的Java Web项目太难了,因为这些你不会!
作者:元素侠Jason 链接:https://blog.csdn.net/JasonLiuLJX 最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收 ...
- 在ubuntn kylin系统eclipse中Java语言helloworld程序
ubuntu kylin 系统也叫优麒麟 ,是一个有中国特色的操作系统.个人认为ubuntu kylin系统的界面做的很好,在安装系统的时候,就感觉是一个很美的系统.它很多地方都能有windows的功 ...
- java如何对一个表达式开根号_作为一个零基础的新手,如何系统的自学Java和JavaEE开发技术?...
0基础就找资料学习吧,建议不要看书,选择视频更好,对于新手来说,书本如果在没有人指导之下去看基本上很难看懂 在你学习Java之前一定要去了解一下这门语言,千万不要脑子热就选择来这行 如何系统的自学Ja ...
- 做一个完整的Java Web项目需要掌握的技能
转自: https://blog.csdn.net/JasonLiuLJX/article/details/51494048 ------------------------------------ ...
最新文章
- 简单好用的中文分词工具之HanLP的安装与使用
- Java:使用synchronized和Lock对象获取对象锁
- python在哪下载-2018版Python教程从哪儿下载
- 数据库acid简介(一)
- JUC锁-互斥锁ReentrantLock(二)
- [李景山php]每天TP5-20170111|thinkphp5-Model.php-4
- 单链表的增、删、查、改、python实现,超详细讲解
- linux脚本是什么语言,Linux学习之Shell脚本语言的优势是什么?
- linux判断网站被采集,网站被采集的几个处理方法(非技术)
- Axure 经典实例高保真原型下载(Axure高保真酒店管理交互组件连锁酒店erp酒店企业web端后台管理财务管理会员管理网销管理报表管理))
- 如何快速将文件中的空格更换成逗号(图文详解)
- 下载devc++和codeblocks记录
- 阿里首席架构师分享的Java工程师职业规划
- 使用CSS3 Animation实现输入文字动画
- Is It A Tree?(并查集)
- 11 Component Composition
- win10无法启动修复服务器,win10 bcd损坏无法开机怎样修复_win10系统bcd损坏开机进不了系统解决方法...
- java TIFF转JPG并压缩
- 新一轮勒索病毒变种全球肆虐 中国已遭攻击
- PCI Device Class Codes
热门文章
- MyEclipse中搭建spring-boot+mybatis+freemarker框架
- indesign照片放入太大_照片打印机,小米、华为到底哪家强?
- 网易云音乐刷听歌量_「PC端」解锁网易云音乐灰色歌曲,让你听歌不用东跑西跑...
- 马斯克开始行动:下调Twitter Blue订阅费 禁止广告
- 苹果年底推出搭载M2芯片MacBook Air和MacBook Pro
- 三星公布三款新型车用芯片 向大众供应
- 小米汽车总部正式落户北京,注册地为北京经济技术开发区
- 西门子宣布美国充电桩扩产计划
- 李彦宏:百度智能汽车预计2023年和大家见面
- 有点贵但卖光了!这款旗舰要火了吗...