中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

GoFrame v0.99.682 beta 發(fā)布,更強大的 Go Web 框架

2018-08-07    來源:oschina

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

GoFrame v0.99.682 beta 發(fā)布了。GF(Go Frame)是一款模塊化、松耦合、輕量級、高性能的Go語言Web開發(fā)框架。支持熱重啟、熱更新、多域名、多端口、多服務(wù)、HTTP/HTTPS、動態(tài)路由等特性,并提供了Web服務(wù)開發(fā)的系列核心組件,如:Router、Cookie、Session、服務(wù)注冊、配置管理、模板引擎、數(shù)據(jù)校驗、分頁管理、數(shù)據(jù)庫ORM等等等等,并且提供了數(shù)十個實用開發(fā)模塊集,如:緩存、日志、時間、命令行、二進制、文件鎖、對象池、連接池、數(shù)據(jù)編碼、進程管理、進程通信、TCP/UDP組件、并發(fā)安全容器、Goroutine池等等等等等等。

新特性:

  • 新增gdes包,用于DES加密/加密算法處理;

  • 新增gkafka包,kafka的golang客戶端;

  • 新增gpool對象復(fù)用池,比較于標準庫的sync.Pool更加靈活強大,可自定義對象的緩存時間、創(chuàng)建方法、銷毀方法(http://gf.johng.cn/686654);

  • 完成網(wǎng)絡(luò)通信gtcp/gudp包的重構(gòu),并進行了大量的改進工作,新增了詳盡的開發(fā)文檔及示例代碼(http://gf.johng.cn/494382);

  • 增加gring并發(fā)安全環(huán),標準庫container/ring包的并發(fā)安全版本,并做了易用性的封裝(http://gf.johng.cn/686655);

  • gtime包新增了自定義日期格式話的支持,格式化語法類似PHP的date語法(http://gf.johng.cn/494387);

  • gdb增加調(diào)試模式特性,使用SetDebug方法實現(xiàn),在調(diào)試模式下可以獲取詳細的SQL執(zhí)行記錄,增加了詳細的開發(fā)文檔及示例代碼(http://gf.johng.cn/702801);

  • gdb增加查詢緩存特性,使用Cache方法實現(xiàn),增加了詳細的開發(fā)文檔及示例代碼(http://gf.johng.cn/702801);

  • ghttp.Server路由功能增加字段匹配規(guī)則特性,支持如:/order/list/{page}.html 動態(tài)路由規(guī)則特性(http://gf.johng.cn/702766);

  • gpage分頁包增加分頁URL規(guī)則生成模板特性,內(nèi)部可使用{.page}變量指定頁碼位置(http://gf.johng.cn/716438);

  • 增加gmap.Map對象,這是gmap.InterfaceInterfaceMap的別名;

新功能:

  • gdb增加MaxIdleConnCount/MaxOpenConnCount/MaxConnLifetime三項配置,并增加SetMaxConnLifetime方法;

  • ghttp.Client增加HTTP賬號密碼設(shè)置功能(SetBasicAuth);

  • glog新增對系統(tǒng)換行符號的自適配調(diào)整(\n|\r\n);

  • 增加glog控制臺調(diào)試模式打印開關(guān)(SetDebug);

  • gcfg增加SetFileName方法設(shè)置默認讀取的配置文件名稱;

  • gcfg/gjson/gparser包新增Int8/16/32/64,Uint8/16/32/64方法;

  • 增加gzip方法的封裝(Zip/Unzip);

  • gview增加模板變量分隔符設(shè)置方法SetDelimiters;

  • ghttp.Response增加Writef、Writefln方法;

 功能改進:

  • 改進gfilepool文件指針池設(shè)計;改進gfile文本內(nèi)容寫入,增加指針池使用

  • gdb包增加調(diào)試模式特性,并支持在調(diào)試模式下獲得已執(zhí)行的SQL列表結(jié)果

  • 改進gproc進程間通信機制,增加進程消息分組特性,并限定隊列大小

  • gdb結(jié)果方法處理增加ToXml/ToJson方法

  • gregx包名修改為gregex

  • 改進gtime.StrToTime方法,新增對常見標準時間日期的自動轉(zhuǎn)換,以及對時區(qū)的自動識別支持,并調(diào)整gconv,gvalid對該包的引用

  • 增加對字符集轉(zhuǎn)換的封裝,gxml包中使用新增的字符集轉(zhuǎn)換包來做處理

  • ghttp.Server.EnableAdmin頁面Restart接口支持GET參數(shù)newExeFilePath支持

  • ghttp.Server平滑重啟機制增加可自定義重啟可執(zhí)行文件路徑,特別是針對windows系統(tǒng)特別有用(因為windows下不支持可執(zhí)行文件覆蓋更新)

  • 改進ghttp.Server靜態(tài)文件檢索設(shè)計,增加開發(fā)環(huán)境時的main包源碼目錄查找機制;改進gcfg/gview的main包源碼目錄查找機制

  • 優(yōu)化gcache設(shè)計,LRU特性非默認開啟;優(yōu)化gtype/gcache基準測試腳本;新增gregx基準測試腳本,改進設(shè)計,提升性能

  • gfile包增加GoRootOfBuild方法,用于獲取編譯時的GOROOT數(shù)值;并改進glog包中backtrace的GOROOT路徑過濾處理;

  • 改進grpool代碼質(zhì)量,并改進對池化goroutine數(shù)量的限制設(shè)計

  • 改進gdb.Map/List及g.Map/List的類型定義,改用別名特性以便支持原生類型輸入(map/slice),并修復(fù)gdb.Model.Update方法參數(shù)處理問題

  • 調(diào)整ghttp包示例代碼目錄結(jié)構(gòu),增加ghttp.Client自定義Header方法,ghttp.Cookie增加Map方法用于獲得客戶端提交的所有cookie值,構(gòu)造成map返回

  • 刪除gcharset中的getcharset方法

  • 去掉gmap中常用的基本數(shù)據(jù)類型轉(zhuǎn)換獲取方法

  • 改進gconv.String方法,當無法使用基本類型進行字符串轉(zhuǎn)換時,使用json.Marshal進行轉(zhuǎn)換

  • gvalid.CheckObject方法名稱修改為gvalid.CheckStruct

問題修復(fù):

  • 修正gstr.IsNumeric錯誤

  • 修復(fù)當xml中encoding字符集為非UTF-8字符集時報錯的問題

  • 修正gconv包float32->float64精度問題

  • 修復(fù)gpage包分頁計數(shù)問題

  • 修復(fù)gdb批量數(shù)據(jù)Save錯誤

  • 去掉gpool中math.MAXINT64常量的使用,以修復(fù)int64到int類型的轉(zhuǎn)換錯誤,兼容32位系統(tǒng)

  • 修正ghttp包沒有使用Server仍然初始化相關(guān)異步goroutine的問題

安裝

go get -u gitee.com/johng/gf

限制

golang版本 >= 1.9.2

特點

  1. 輕量級、高性能,模塊化、松耦合設(shè)計,豐富的開發(fā)模塊;

  2. 熱重啟、熱更新特性,并支持Web界面及命令行管理接口;

  3. 專業(yè)的技術(shù)交流群,完善的開發(fā)文檔及示例代碼,良好的中文化支持;

  4. 支持多種形式的服務(wù)注冊特性,靈活高效的路由控制管理;

  5. 支持服務(wù)事件回調(diào)注冊功能,可供選擇的pprof性能分析模塊;

  6. 支持配置文件及模板文件的自動檢測更新機制,即修改即生效;

  7. 支持自定義日期時間格式的時間模塊,類似PHP日期時間格式化;

  8. 強大的數(shù)據(jù)/表單校驗?zāi)K,支持常用的40種及自定義校驗規(guī)則;

  9. 強大的網(wǎng)絡(luò)通信TCP/UDP組件,并提供TCP連接池特性,簡便高效;

  10. 提供了對基本數(shù)據(jù)類型的并發(fā)安全封裝,提供了常用的數(shù)據(jù)結(jié)構(gòu)容器;

  11. 支持Go變量/Json/Xml/Yml/Toml任意數(shù)據(jù)格式之間的相互轉(zhuǎn)換及創(chuàng)建;

  12. 強大的數(shù)據(jù)庫ORM,支持應(yīng)用層級的集群管理、讀寫分離、負載均衡,查詢緩存、方法及鏈式ORM操作;

  13. 更多特點請查閱框架手冊和源碼;

文檔

GoFrame開發(fā)文檔:http://gf.johng.cn

使用

Hello World

package main

import (
    "gitee.com/johng/gf/g"
    "gitee.com/johng/gf/g/net/ghttp"
)

func main() {
    s := g.Server()
    s.BindHandler("/", func(r *ghttp.Request) {
        r.Response.Write("Hello World")
    })
    s.Run()
}

多域名支持

package main

import (
    "gitee.com/johng/gf/g"
    "gitee.com/johng/gf/g/net/ghttp"
)

func main() {
    s := g.Server()
    s.Domain("localhost1,localhost2").BindHandler("/", func(r *ghttp.Request) {
        r.Response.Write("localhostx")
    })
    s.Run()
}

多端口支持

package main

import (
    "gitee.com/johng/gf/g"
    "gitee.com/johng/gf/g/net/ghttp"
)

func main() {
    s := g.Server()
    s.BindHandler("/", func(r *ghttp.Request){
        r.Response.Writeln("go frame!")
    })
    s.SetPort(8080, 8081, 8082)
    s.Run()
}

路由控制

package main

import (
    "gitee.com/johng/gf/g"
    "gitee.com/johng/gf/g/net/ghttp"
)

func main() {
    s := g.Server()
    s.BindHandler("/order/:action/{page}.html", func(r *ghttp.Request){
        r.Response.Writef("action:%s, page:%s", r.Get("action"), r.Get("page"))
    })
    s.SetPort(8199)
    s.Run()
}

數(shù)據(jù)庫ORM

ORM創(chuàng)建/關(guān)閉

// 獲取默認配置的數(shù)據(jù)庫對象(配置名稱為"default")
db, err := gdb.New()
// 獲取配置分組名稱為"user-center"的數(shù)據(jù)庫對象
db, err := gdb.New("user-center")
// 關(guān)閉數(shù)據(jù)庫操作對象(丟回連接池對象復(fù)用)
db.Close()

單表/聯(lián)表查詢

// 查詢多條記錄并使用Limit分頁
r, err := db.Table("user").Where("u.uid > ?", 1).Limit(0, 10).Select()
// 查詢符合條件的單條記錄(第一條)
r, err := db.Table("user u").LeftJoin("user_detail ud", "u.uid=ud.uid").Fields("u.*,ud.site").Where("u.uid=?", 1).One()
// 查詢指定字段值
r, err := db.Table("user u").RightJoin("user_detail ud", "u.uid=ud.uid").Fields("ud.site").Where("u.uid=?", 1).Value()
// 分組及排序
r, err := db.Table("user u").InnerJoin("user_detail ud", "u.uid=ud.uid").Fields("u.*,ud.city").GroupBy("city").OrderBy("register_time asc").Select()
// 不使用john的聯(lián)表查詢
r, err := db.Table("user u,user_detail ud").Where("u.uid=ud.uid").Fields("u.*,ud.city").All()
// 不使用Fields方法指定查詢字段時,默認查詢?yōu)?quot;*"
r, err := db.Table("user").Where("u.uid=1",).One()

更新/刪除

// 更新
r, err := db.Table("user").Data(gdb.Map{"name" : "john2"}).Where("name=?", "john").Update()
r, err := db.Table("user").Data("name='john3'").Where("name=?", "john2").Update()
// 刪除
r, err := db.Table("user").Where("uid=?", 10).Delete()
// Data數(shù)值方法的參數(shù)形式比較靈活
r, err := db.Table("user").Data(`name="john"`).Update()
r, err := db.Table("user").Data("name", "john").Update()
r, err := db.Table("user").Data(g.Map{"name" : "john"}).Update()

寫入/保存

r, err := db.Table("user").Data(gdb.Map{"name": "john"}).Insert()
r, err := db.Table("user").Data(gdb.Map{"uid": 10000, "name": "john"}).Replace()
r, err := db.Table("user").Data(gdb.Map{"uid": 10001, "name": "john"}).Save()

事務(wù)操作

if tx, err := db.Begin(); err == nil {
    if r, err := tx.Table("user").Data(gdb.Map{"uid":1, "name": "john"}).Save(); err == nil {
        tx.Commit()
    } else {
        tx.Rollback()
    }

    fmt.Println(r, err)
}

...

更多特性及示例請查看官方開發(fā)文檔:gf.johng.cn

標簽: 安全 代碼 腳本 數(shù)據(jù)庫 通信 網(wǎng)絡(luò) 域名

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Onyx 0.13.3 alpha3 發(fā)布,分布式計算系統(tǒng)

下一篇:Play-Mongo 0.3.0,重構(gòu)自動生成 Json Formats 模塊