bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

包含go語言使用mycat的詞條

go語言如何調(diào)用c函數(shù)

直接嵌入c源代碼到go代碼里面

創(chuàng)新互聯(lián)公司2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元自貢做網(wǎng)站,已為上家服務(wù),為自貢各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

package main

/*

#include stdio.h

void myhello(int i) {

printf("Hello C: %d\n", i);

}

*/

import "C"

import "fmt"

func main() {

C.myhello(C.int(12))

fmt.Println("Hello Go");

}

需要注意的是C代碼必須放在注釋里面

import "C"語句和前面的C代碼之間不能有空行

運行結(jié)果

$ go build main.go ./main

Hello C: 12

Hello Go

分開c代碼到單獨文件

嵌在一起代碼結(jié)構(gòu)不是很好看,很多人包括我,還是喜歡把兩個分開,放在不同的文件里面,顯得干凈,go源文件里面是go的源代碼,c源文件里面是c的源代碼。

$ ls

hello.c hello.h main.go

$ cat hello.h

void hello(int);

$ cat hello.c

#include stdio.h

void hello(int i) {

printf("Hello C: %d\n", i);

}

$ cat main.go

package main

// #include "hello.h"

import "C"

import "fmt"

func main() {

C.hello(C.int(12))

fmt.Println("Hello Go");

}

編譯運行

$ go build ./main

Hello C: 12

Hello Go

編譯成庫文件

如果c文件比較多,最好還是能夠編譯成一個獨立的庫文件,然后go來調(diào)用庫。

$ find mylib main

mylib

mylib/hello.h

mylib/hello.c

main

main/main.go

編譯庫文件

$ cd mylib

# gcc -fPIC -shared -o libhello.so hello.c

編譯go程序

$ cd main

$ cat main.go

package main

// #cgo CFLAGS: -I../mylib

// #cgo LDFLAGS: -L../mylib -lhello

// #include "hello.h"

import "C"

import "fmt"

func main() {

C.hello(C.int(12))

fmt.Println("Hello Go");

}

$ go build main.go

運行

$ export LD_LIBRARY_PATH=../mylib

$ ./main

Hello C: 12

Hello Go

在我們的例子中,庫文件是編譯成動態(tài)庫的,main程序鏈接的時候也是采用的動態(tài)庫

$ ldd main

linux-vdso.so.1 = (0x00007fffc7968000)

libhello.so = ../mylib/libhello.so (0x00007f513684c000)

libpthread.so.0 = /lib64/libpthread.so.0 (0x00007f5136614000)

libc.so.6 = /lib64/libc.so.6 (0x00007f5136253000)

/lib64/ld-linux-x86-64.so.2 (0x000055d819227000)

理論上講也是可以編譯成整個一靜態(tài)鏈接的可執(zhí)行程序,由于我的機器上缺少靜態(tài)鏈接的系統(tǒng)庫,比如libc.a,所以只能編譯成動態(tài)鏈接。

有關(guān)于《my cat》英語作文

寫作思路:根據(jù)題目要求,圍繞貓進行描寫。

I have a cat named Mimi. Its hair is as white as snow.

我有一只貓叫咪咪,它的毛像雪一樣白。

I often play games with it, it makes me very happy, I regard it as a child.

我經(jīng)常和它玩游戲,它讓我很開心,我把它當成了一個小朋友。

Every morning, I say goodbye to it before I go to school.

每天早上,我都會在上學前和它道別。

Mimi will wave its front legs to me, it brings me a lot of happiness.

咪咪會向我揮舞它的前腿,它給我?guī)砹撕芏嗫鞓贰?/p>

But it takes time and money to raise a cat. My parents and I spend a lot of time looking after it, feeding it and cleaning it.

但是養(yǎng)貓需要時間和金錢,我父母和我花了很多時間照顧它,喂它,打掃它。

We must clean the house from time to time, otherwise the cat will make them dirty and stink.

我們必須不時打掃房子,否則貓會把它們弄得又臟又臭。

如何使用Go語言實現(xiàn)遠程執(zhí)行命令

一般命令

所謂一般命令,就是在一定時間內(nèi)會執(zhí)行完的命令。比如 grep, cat 等等。 執(zhí)行命令的步驟是:連接,執(zhí)行,獲取結(jié)果

連接

連接包含了認證,可以使用 password 或者 sshkey 2種方式來認證。下面的示例為了簡單,使用了密碼認證的方式來完成連接。

import (

"fmt"

"time"

"golang.org/x/crypto/ssh"

)

func connect(user, password, host string, port int) (*ssh.Session, error) {

var (

auth []ssh.AuthMethod

addr string

clientConfig *ssh.ClientConfig

client *ssh.Client

session *ssh.Session

err error

)

// get auth method

auth = make([]ssh.AuthMethod, 0)

auth = append(auth, ssh.Password(password))

clientConfig = ssh.ClientConfig{

User: user,

Auth: auth,

Timeout: 30 * time.Second,

}

// connet to ssh

addr = fmt.Sprintf("%s:%d", host, port)

if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {

return nil, err

}

// create session

if session, err = client.NewSession(); err != nil {

return nil, err

}

return session, nil

}

連接的方法很簡單,只要提供登錄主機的 用戶*, *密碼*, *主機名或者IP*, *SSH端口

執(zhí)行,命令獲取結(jié)果

連接成功后,執(zhí)行命令很簡單

import (

"fmt"

"log"

"os"

"time"

"golang.org/x/crypto/ssh"

)

func main() {

session, err := connect("root", "xxxxx", "127.0.0.1", 22)

if err != nil {

log.Fatal(err)

}

defer session.Close()

session.Run("ls /; ls /abc")

}

上面代碼運行之后,雖然命令正常執(zhí)行了,但是沒有正常輸出的結(jié)果,也沒有異常輸出的結(jié)果。 要想顯示結(jié)果,需要將 session 的 Stdout 和 Stderr 重定向 修改 func main 為如下:

func main() {

session, err := connect("root", "xxxxx", "127.0.0.1", 22)

if err != nil {

log.Fatal(err)

}

defer session.Close()

session.Stdout = os.Stdout

session.Stderr = os.Stderr

session.Run("ls /; ls /abc")

}

這樣就能在屏幕上顯示正常,異常的信息了。

交互式命令

上面的方式無法遠程執(zhí)行交互式命令,比如 top , 遠程編輯一個文件,比如 vi /etc/nginx/nginx.conf 如果要支持交互式的命令,需要當前的terminal來接管遠程的 PTY。

func main() {

session, err := connect("root", "olordjesus", "dockers.iotalabs.io", 2210)

if err != nil {

log.Fatal(err)

}

defer session.Close()

fd := int(os.Stdin.Fd())

oldState, err := terminal.MakeRaw(fd)

if err != nil {

panic(err)

}

defer terminal.Restore(fd, oldState)

// excute command

session.Stdout = os.Stdout

session.Stderr = os.Stderr

session.Stdin = os.Stdin

termWidth, termHeight, err := terminal.GetSize(fd)

if err != nil {

panic(err)

}

// Set up terminal modes

modes := ssh.TerminalModes{

ssh.ECHO: 1, // enable echoing

ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud

ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud

}

// Request pseudo terminal

if err := session.RequestPty("xterm-256color", termHeight, termWidth, modes); err != nil {

log.Fatal(err)

}

session.Run("top")

}

Mycat集群部署(高可用)

MyCat 官方推薦使用 HAProxy 做 MyCat 的高可用負載均衡代理。

HAProxy 是一款提供高可用性、負載均衡以及基于 TCP(第四層)和 HTTP(第七層)應用的代理軟件,支持虛擬主機,它是免費、快速并且可靠的一種解決方案。

MyCat 服務(wù)主機上需要開放檢測端口用來檢測 mycat 服務(wù)的狀態(tài),提供給 HAProxy 對 MyCat 的服務(wù)狀態(tài)進行檢測判斷。

檢測 mycat 服務(wù)狀態(tài)以通過xinetd 來實現(xiàn), 使得HAProxy 可以用 httpchk 來檢測 MyCat 的存活狀態(tài)。

1、安裝xinetd:

2、修改配置

檢查是否有includedir /etc/xinetd.d,如果沒有該配置需要加上:

3、檢查 /etc/xinetd.d 目錄

檢查是否有 /etc/xinetd.d 目錄,如果沒有該目錄需要加上:

4、配置存活狀態(tài)檢測

增加 MyCat 存活狀態(tài)檢測服務(wù)配置:

5、配置服務(wù)腳本

添加服務(wù)腳本/usr/local/bin/mycat_status:

6、添加可執(zhí)行權(quán)限

7、配置啟動服務(wù)

在 /etc/services 中加入 mycat_status 服務(wù):

保存后重啟:

9、開放端口

MyCat 服務(wù)主機的防火墻上打開 48700 端口:

設(shè)置開機啟動:

[:[port]] 指定將客戶端連接請求發(fā)往此服務(wù)器時的目標端口,此為可選項

[param*] 為此 server 設(shè)定的一系列參數(shù),均為可選項,參數(shù)比較多,下面僅說明幾個常用的參數(shù):

weight: 權(quán)重,默認為 1,最大值為 256, 0 表示不參與負載均衡

backup: 設(shè)定為備用服務(wù)器,僅在負載均衡場景中的其他 server 均不可以啟用此 server;

check: 啟動對此 server 執(zhí)行監(jiān)控狀態(tài)檢查,其可以借助于額外的其他參數(shù)完成更精細的設(shè)定;

inter: 設(shè)定監(jiān)控狀態(tài)檢查的時間間隔,單位為毫秒,默認為 2000,

也可以使用 fastinter 和 downinter 來根據(jù)服務(wù)器端專題優(yōu)化此事件延遲

rise: 設(shè)置 server 從離線狀態(tài)轉(zhuǎn)換至正常狀態(tài)需要檢查的次數(shù)(不設(shè)置的情況下,默認值為 2);

fall: 設(shè)置 server 從正常狀態(tài)轉(zhuǎn)換至離線狀態(tài)需要檢查的次數(shù)(不設(shè)置的情況下,默認值為 3);

cookie: 為指定 server 設(shè)定 cookie 值,此處指定的值將會在請求入站時被檢查,第一次為此值挑選的 server 將會被后續(xù)的請求所選中,其目的在于實現(xiàn)持久連接的功能;

maxconn: 指定此服務(wù)器接受的最大并發(fā)連接數(shù),如果發(fā)往此服務(wù)器的連接數(shù)目高于此處指定的值,其將被放置于請求隊列,以等待其他連接被釋放。

默認情況下 haproxy 是沒有日志的,如果有需要則配置系統(tǒng)的 syslog, 也就是 linux 系統(tǒng)中的 rsyslog 服務(wù)。

修改配置

增加haproxy日志配置文件

修改配置:

配置生效:

網(wǎng)站名稱:包含go語言使用mycat的詞條
轉(zhuǎn)載源于:http://vcdvsql.cn/article38/hejpsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗網(wǎng)站排名商城網(wǎng)站企業(yè)網(wǎng)站制作網(wǎng)站收錄

廣告

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

網(wǎng)站托管運營