专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Go

互济分享 golang接口 简单架构

发布时间:2011-06-29 18:02:29 文章来源:www.iduyao.cn 采编人员:星星草
互助分享 golang接口 简单架构

已经停药30天,目前情况良好,就是受凉后,颈椎难受,各种小毛病,自己也懒惰,现在开始做了点golang的接口,这样可以做HTML5的项目,好了 ,废话少说了,先说下接下来用哪些技术

     1. gin   之所以选择他,看性能很高,目前也算稳定,版本发布也不是很快, echo变化有些快

     2. seelog 日志输出  

  3. xorm  数据库操作  我只用纯sql

  4. config  配置文件使用  github.com/robfig/config

 

  可能使用java的习惯

  我的结构如下:

     huzhu

       |_action

       |_conf

         |_config.cfg

         |_seelog.xml

       |_models

         |_xxx.go

       |_service

         |_init.go

         |_xxx.Service.go

       |_utils

         |_conf

           |_conf.go

           |_init.go

         |_utils.go

       |_app.go

 

       目前结构如上

 

     service下的init.go

package service

import (
    _ "github.com/go-sql-driver/mysql"
    "github.com/go-xorm/xorm"
	"github.com/go-xorm/core"
	log "github.com/cihub/seelog"
	"huzhu/utils/conf"
)

var engine *xorm.Engine

func InitDB() {
	defer log.Flush()
	cfg := conf.Config
	cfg.SetSection("DB")
	driverName,_ := cfg.String("driverName")
	dataSourceName,_ :=cfg.String("dataSourceName")
	
	var err error
    engine, err = xorm.NewEngine(driverName,dataSourceName)
	if(err != nil) {
		log.Error("InitDB ===> ",err)
	}
	//最大连接数量
	engine.SetMaxConns(800)
	//最大闲置数量
	engine.SetMaxIdleConns(30)
	//打印SQL
//	engine.ShowSQL = true
	//打印SQL错误
//	engine.ShowErr = true
	//sta_开头的表
	tbMapper := core.NewPrefixMapper(core.SnakeMapper{}, "sta_")
	engine.SetTableMapper(tbMapper)
}

 

  app.go

  

package main

import (
	"net/http"
	"time"
	"github.com/gin-gonic/gin"
	log "github.com/cihub/seelog"
	"huzhu/action"
	"huzhu/service"
	"huzhu/utils/conf"
)
func init() {
	//加载配置文件
	conf.InitConf("conf/config.cfg")
	//数据库初始化
	service.InitDB()
	//初始化日志
	initLog()
}

//初始化日志
func initLog() {
	logger, err := log.LoggerFromConfigAsFile("conf/seelog.xml")
	if err != nil {
		log.Error("解析日志配置文件失败", err)
		return
	}
	log.ReplaceLogger(logger)
}


func main() {
	//设置生产环境
//	gin.SetMode(gin.ReleaseMode)
	router := gin.Default()
	router.GET("/xxx.do", action.xxx)
	
    s := &http.Server{
        Addr:           ":80",
        Handler:        router,
        ReadTimeout:    30 * time.Second,
        WriteTimeout:   30 * time.Second,
        MaxHeaderBytes: 1 << 20,
    }
    s.ListenAndServe()
}

 

  以上简单配置,先到这里,后面会把一个demo发上来,大家自己试试,写的不好,请大家谅解。

 

   目前小主比较可怜,没人发表,只有自己默默的坚守,不管如何,希望可以帮助有需要的人,给自己加油...

   

   www.huzhu.me   

 

 

 

 

   

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • ModernUI课程:定义一个Logo

    ModernUI教程:定义一个Logo ModernWindow的标题栏包含了一块区域用来显示自定义的窗体Logo: 这个窗体logo通过ModernWindow.LogoD...

  • Django忘记管理员账号和密码的解决方法

    Django忘记管理员账号和密码的解决办法 看着Django的教程学习搭建网站,结果忘记第一次创建的账号和密码了。结果搭建成功以后,一直...

  • GO语言小结(1)——基本知识

    GO语言总结(1)——基本知识 1、注释(与C++一样)   行注释://  块注释:/*   ...  */ 2、标识符   可以这么说,除了数字开头...

  • golang 惯用的文件读取方式

    golang 常用的文件读取方式 Golang 的文件读取方法很多,刚上手时不知道怎么选择,所以贴在此处便后速查。 一次性读取 小文件推荐一...

  • 查询深圳市通相关信息

    查询深圳通相关信息 用 HTTP.GET 从开放 API 中查询深圳通信息,然后将 JSON 数据存入结构体中,再格式化输出。 注意:获取的并不是实...

  • Go语言设计模式实践:结合(Composite)

    Go语言设计模式实践:组合(Composite) 关于本系列 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就...

  • 列出索引和遍历目录

    列出目录和遍历目录 获取目录列表用 ioutil.ReadDir(),遍历目录用 filepath.Walk(),使用方法请参考文章示例。 示例代码: package ma...

  • io 包的惯用接口速记

    io 包的常用接口速记 我没有 C/C++ 基础,没有接口的概念,且从 Python 投奔而来,Python 的极简主义(一个结果往往只提供一个方法),让我在...

  • 代理服务扩充

    代理服务扩展 之前自己实现了一个代理服务,当时考虑的是只要支持SOCKS5就好了,因为我经常用CHROME,配合着SwitchySharp,体验还是很棒...

  • 文件的创造与打开

    文件的创建与打开 文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的。Golang 对文件的支持是在 os package ...

热门推荐: