Go語言硬件驅(qū)動開發(fā) golang領(lǐng)域驅(qū)動設(shè)計(jì)

go語言postgresql數(shù)據(jù)庫驅(qū)動怎么用

PostgreSQL和MySQL比較,它更加龐大一點(diǎn),因?yàn)樗怯脕硖娲鶲racle而設(shè)計(jì)的。所以在企業(yè)應(yīng)用中采用PostgreSQL是一個(gè)明智的選擇。

站在用戶的角度思考問題,與客戶深入溝通,找到上城網(wǎng)站設(shè)計(jì)與上城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋上城地區(qū)。

現(xiàn)在MySQL被Oracle收購之后,有傳聞Oracle正在逐步的封閉MySQL,,鑒于此,將來我們也許會選擇PostgreSQL而不是MySQL作為項(xiàng)目的后端數(shù)據(jù)庫。

1、驅(qū)動

Go實(shí)現(xiàn)的支持PostgreSQL的驅(qū)動也很多,因?yàn)閲夂芏嗳嗽陂_發(fā)中使用了這個(gè)數(shù)據(jù)庫。

支持database/sql驅(qū)動,純Go寫的

支持database/sql驅(qū)動,純Go寫的

支持database/sql驅(qū)動,純Go寫的

在下面的示例中我采用了第一個(gè)驅(qū)動,因?yàn)樗壳笆褂玫娜俗疃?,在github上也比較活躍。

2、實(shí)例代碼

數(shù)據(jù)庫建表語句:

復(fù)制代碼

CREATE TABLE userinfo

(

uid serial NOT NULL,

username character varying(100) NOT NULL,

departname character varying(500) NOT NULL,

Created date,

CONSTRAINT userinfo_pkey PRIMARY KEY (uid)

)

WITH (OIDS=FALSE);

CREATE TABLE userdeatail

(

uid integer,

intro character varying(100),

profile character varying(100)

)

WITH(OIDS=FALSE);

復(fù)制代碼

看下面這個(gè)Go如何操作數(shù)據(jù)庫表數(shù)據(jù):增刪改查

復(fù)制代碼

package main

import (

"database/sql"

"fmt"

_ "github.com/bmizerany/pq"

)

func main() {

db, err := sql.Open("postgres", "user=astaxie password=astaxie dbname=test sslmode=disable")

checkErr(err)

//插入數(shù)據(jù)

stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) RETURNING uid")

checkErr(err)

res, err := stmt.Exec("astaxie", "研發(fā)部門", "2012-12-09")

checkErr(err)

//pg不支持這個(gè)函數(shù),因?yàn)樗麤]有類似MySQL的自增ID

id, err := res.LastInsertId()

checkErr(err)

fmt.Println(id)

//更新數(shù)據(jù)

stmt, err = db.Prepare("update userinfo set username=$1 where uid=$2")

checkErr(err)

res, err = stmt.Exec("astaxieupdate", 1)

checkErr(err)

affect, err := res.RowsAffected()

checkErr(err)

fmt.Println(affect)

//查詢數(shù)據(jù)

rows, err := db.Query("SELECT * FROM userinfo")

checkErr(err)

for rows.Next() {

var uid int

var username string

var department string

var created string

err = rows.Scan(uid, username, department, created)

checkErr(err)

fmt.Println(uid)

fmt.Println(username)

fmt.Println(department)

fmt.Println(created)

}

//刪除數(shù)據(jù)

stmt, err = db.Prepare("delete from userinfo where uid=$1")

checkErr(err)

res, err = stmt.Exec(1)

checkErr(err)

affect, err = res.RowsAffected()

checkErr(err)

fmt.Println(affect)

db.Close()

}

func checkErr(err error) {

if err != nil {

panic(err)

}

}

復(fù)制代碼

從上面的代碼我們可以看到,PostgreSQL是通過$1,$2這種方式來指定要傳遞的參數(shù),而不是MySQL中的?,另外在sql.Open中的dsn信息的格式也與MySQL的驅(qū)動中的dsn格式不一樣,所以在使用時(shí)請注意它們的差異。

還有pg不支持LastInsertId函數(shù),因?yàn)镻ostgreSQL內(nèi)部沒有實(shí)現(xiàn)類似MySQL的自增ID返回,其他的代碼幾乎是一模一樣

現(xiàn)在學(xué)習(xí)什么編程語言比較有前景

從目前的市場需求來看, java 需求最大,開高工資的企業(yè)很多(架構(gòu)師級別都有4 ,5萬)。另外,根據(jù)看雪論壇所公布的招聘需求,很多做反向工程的收入也高。具體的,你可以自己上去看一下。編程語言只是一個(gè)工具,編程的技術(shù)發(fā)展方向有很多的。不同的方向,會用不同的編程語言。你主要需要看的不是那門語言,而是你的技術(shù)發(fā)展方向。 目前我所了解過的有,前端和后端,移動開發(fā),嵌入式系統(tǒng),硬件驅(qū)動開發(fā)(Windows端和Linux端),上位機(jī)開發(fā),數(shù)據(jù)分析(R語言,VBA語言,python等,F(xiàn)#),人工智能,物聯(lián)網(wǎng),大數(shù)據(jù),神經(jīng)網(wǎng)絡(luò),中國目前還特別想搞出自己的操作系統(tǒng),別外還有各種行業(yè)軟件的二次開發(fā),如CAD 什么的。另外還有人學(xué)編程就是通過比賽來掙錢。多的,水平夠的話,一個(gè)月也搞個(gè)二萬左右,沒啥問題。

GO語言商業(yè)案例(十六):Curve-

Golang 的創(chuàng)建是為了實(shí)現(xiàn)最大的用戶效率和編碼效率。已經(jīng)熟悉 Java 或 PHP 的程序員可以在幾周內(nèi)接受 Go 的培訓(xùn)(許多人最終會更喜歡它)。在本文中,Dewet Diener 探討了 Golang 的優(yōu)缺點(diǎn),以及它的測試驅(qū)動開發(fā) (TDD) 如何完美契合。

Golang 由 Google 開發(fā)和設(shè)計(jì),于 2009 年作為一種綜合性編程語言首次出現(xiàn),旨在最大限度地提高編碼效率。創(chuàng)建該語言的目的是修正其他已建立語言的缺陷。盡管 Golang(或簡稱為“Go”)是一門年輕的語言,但已經(jīng)積累了大量的開發(fā)人員,因此我們想分享為什么在 Curve 我們喜歡 Golang,以及我們?nèi)绾尾捎盟鼇韺?shí)現(xiàn)我們移動銀行業(yè)務(wù)的目標(biāo)到云端。

Go 是一種精致的編程語言:它支持“所見即所得”的原則,這意味著清晰易讀的代碼和更少的復(fù)雜抽象。該語言本身易于使用且易于訓(xùn)練。盡管如此,作為一個(gè)相對較新的生態(tài)系統(tǒng),要找到對 Go 具有廣泛預(yù)先知識的工程師可能會很棘手。

然而,與其他編程語言不同,Go 的創(chuàng)建是為了最大限度地提高用戶效率。因此,具有 Java 或 PHP 背景的開發(fā)人員和工程師可以在幾周內(nèi)獲得使用 Go 的技能和培訓(xùn)——根據(jù)我們的經(jīng)驗(yàn),他們中的許多人最終更喜歡它。

在 Curve,我們大力提倡測試驅(qū)動開發(fā) (TDD),Go 的框架與這種方法保持一致。通過簡單地命名一個(gè)文件 foo_test.go 并在該文件中添加結(jié)構(gòu)化測試函數(shù),Go 將快速有效地運(yùn)行您的單元測試。這一創(chuàng)新功能提高了生產(chǎn)力,因?yàn)樗梢愿訉W⒂跍y試驅(qū)動的開發(fā)和改進(jìn)的同行評審機(jī)會。

Golang 具有出色的生產(chǎn)優(yōu)化品質(zhì),例如內(nèi)存占用小,這支持其在大型項(xiàng)目中作為構(gòu)建塊的能力,以及開箱即用的與其他架構(gòu)的輕松交叉編譯。由于 Go 代碼被編譯為單個(gè)靜態(tài)二進(jìn)制文件,因此它可以輕松進(jìn)行容器化,并且通過擴(kuò)展,將 Go 部署到任何高可用性環(huán)境(例如 Kubernetes)中幾乎是微不足道的。

它提供了一種機(jī)制來保護(hù)工作負(fù)載,通過擁有非常纖薄的生產(chǎn)容器而沒有任何無關(guān)的依賴項(xiàng)。這使得構(gòu)建、部署和維護(hù)基于 Go 的資產(chǎn)更加直接和安全,并為希望建立或發(fā)展其微服務(wù)戰(zhàn)略的公司提供了可靠的選擇。

Go 是專門為滿足我們快速發(fā)展的技術(shù)生態(tài)系統(tǒng)的需求而創(chuàng)建的。例如,Go 可以滿足您構(gòu)建 API 所需的一切,并將其作為其標(biāo)準(zhǔn)庫的一部分。它使用簡單,高性能的 http 服務(wù)器消除了團(tuán)隊(duì)設(shè)計(jì)新項(xiàng)目時(shí)經(jīng)常發(fā)生的一些常見的 探索 和設(shè)計(jì)癱瘓問題——這對于一些其他流行語言(如 Java 和 Node.js)來說太常見了。

Golang 還通過其內(nèi)置于語言本身的自動格式化程序巧妙地解決了代碼格式化分歧。這完全消除了格式爭議,進(jìn)而提高了團(tuán)隊(duì)的生產(chǎn)力和注意力。

盡管我是 Go 的擁護(hù)者,但它顯然也不是沒有缺陷。一個(gè)爭論不休的特性是 Go 沒有顯式接口,這是許多開發(fā)人員習(xí)慣的概念。雖然不是有害的,但它可以使選擇最適合您的結(jié)構(gòu)的接口成為一項(xiàng)任務(wù)。這是因?yàn)槟粫裨谄渌餍械木幊陶Z言中那樣編寫 X 實(shí)現(xiàn) Y,但您很快就會接受。

依賴管理也是另一個(gè)不屬于 Google Golang 開發(fā)團(tuán)隊(duì)原始設(shè)計(jì)的功能。開源社區(qū)介入并創(chuàng)建了 Glide 和 Dep,最初的努力并沒有完全解決問題。從 Go 1.11 開始,添加了對模塊的支持,這似乎已成為官方的依賴管理工具。這些挑戰(zhàn)并沒有削弱 Go 作為一種高效編程語言的獨(dú)創(chuàng)性,并且它繼續(xù)為我們提供優(yōu)于其他編程語言的顯著優(yōu)勢。

Golang 吸引了全球敏銳的開發(fā)人員的注意,并且圍繞它的興奮繼續(xù)增長。開源社區(qū)因有趣的項(xiàng)目而蓬勃發(fā)展;最著名的是 Docker 和 Kubernetes。

正是這種新鮮、有創(chuàng)意但又簡單的包裝吸引了我們?nèi)o:它是一種令人興奮的編碼語言,可以幫助我們在 Curve 中快速開發(fā)以構(gòu)建更好的產(chǎn)品。

分享標(biāo)題:Go語言硬件驅(qū)動開發(fā) golang領(lǐng)域驅(qū)動設(shè)計(jì)
轉(zhuǎn)載注明:http://muchs.cn/article20/doedgco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司App設(shè)計(jì)、品牌網(wǎng)站制作、用戶體驗(yàn)、網(wǎng)站導(dǎo)航、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化