在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/ GO問答
凹凸曼 回答

使用隱私瀏覽功能時,瀏覽器不會保存訪問過的網(wǎng)站、看過的網(wǎng)頁等信息。

有兩種方式可以開始隱私瀏覽:

打開新的空白隱私瀏覽窗口:點(diǎn)擊菜單按鈕,再點(diǎn)擊 新建隱私瀏覽窗口 按鈕。

在隱私瀏覽窗口中打開鏈接:右擊
鏈接,在上下文菜單中選擇 在新隱私瀏覽窗口中打開鏈接。

注意:隱私瀏覽模式并不會讓您匿名地瀏覽網(wǎng)絡(luò)。您的網(wǎng)絡(luò)提供商,雇主或?yàn)g覽過的網(wǎng)站本身依然可以追蹤到您訪問的頁面。此外,隱私瀏覽不能保護(hù)您免遭在您計(jì)算機(jī)上安裝的 鍵盤記錄 或 間諜軟件 的侵害。

怪痞 回答

不知道你的db是怎么設(shè)置的,打印一下執(zhí)行的sql語句.

看你的數(shù)據(jù)庫設(shè)置應(yīng)該是沒有問題的。因?yàn)槲以谑褂胓orm的時候是開啟了數(shù)據(jù)庫連接池,因此我沒有在一個地方專門對db進(jìn)行close。我不知道你代碼里面db的生命周期是怎么樣的。建議你在調(diào)試環(huán)境中使用db = db.Debug(),可以打印要執(zhí)行的sql語句。此外,還可以在你的代碼中通過err := db.Save(&like).Error, 檢出err查看你程序的執(zhí)行是否有問題.

======補(bǔ)充================

package database

var db *gorm.DB

func init() {
    var dbSrc = "username:password.@(127.0.0.1:3309)/gotest?charset=utf8&parseTime=True&loc=Local"
    newDb, err := gorm.Open("mysql", dbSrc)
    if err != nil {
        panic(err)
    }

    db = newDb

    sqlDb := db.DB()
    sqlDb.SetMaxOpenConns(100)
    sqlDb.SetMaxIdleConns(15)

    if gin.IsDebugging() {
        db = db.Debug()
    }
}

func DB() *gorm.DB {
    return db.New()
}

一般情況下我會將數(shù)據(jù)庫的初始化工作放到一個init中,然后在包含main函數(shù)的文件中導(dǎo)入這個包(package),這里就舉個例子:

import _ "database"

這樣在程序啟動的時候, 就會會自動初始化db(而且不用擔(dān)心會初始化多次)。然后在需要使用的地方只需要調(diào)用

db := database.DB()

這樣可以拿到一個db對象。

話寡 回答

在使用golang進(jìn)行開發(fā)中,數(shù)據(jù)并發(fā)安全是經(jīng)常要考慮到的因素,開發(fā)框架中并不會處理用戶數(shù)據(jù)的并發(fā)安全。從1.9.2版本開始golang也提供了sync.Map并發(fā)安全的封裝類型,此外也可以參考gf框架的并發(fā)安全容器:http://gf.johng.cn/494392

荒城 回答

想到兩個方法:

方法一:
如果是比較新的內(nèi)核版本3.9以上,支持SO_REUSEPORT,那么你可以:

  1. 啟動一個新的進(jìn)程,也監(jiān)聽相同的端口。
  2. 新的進(jìn)程啟動后給老的進(jìn)程發(fā)個信號。
  3. 老的進(jìn)程收到后停止接收新的連接請求(停止Accept,關(guān)閉Listen Socket),
    等所有已經(jīng)存在的連接處理完自動退出。

如果不支持SO_REUSEPORT,不同進(jìn)程無法同時監(jiān)聽同一個端口,則需要在老的進(jìn)程內(nèi)fork一個子進(jìn)程,并且把負(fù)責(zé)監(jiān)聽的文件描述符傳給新進(jìn)程。
這個方法可以實(shí)現(xiàn)你的需求,但需要比較多的修改Golang封裝的net/http等系統(tǒng)庫,技術(shù)復(fù)雜度比較高。
好處是不需要nginx參與,對它透明。

方法二:
可以同時運(yùn)行兩個或更多個http server,同時提供服務(wù),讓nginx做負(fù)載均衡,其中有一個需要升級重啟時,就發(fā)個信號,收到信號后停止接收新請求,已有請求處理完畢正常退出就可以了。這個過程不需要修改nginx配置,也不需要reload nginx。
這個方法也需要改Golang封裝的net/http,但修改量相比方法一會小很多。

雅痞 回答

一般主要靠兩點(diǎn)保證數(shù)據(jù)一致性:
1.事務(wù)控制,如這里操作1執(zhí)行完以后不提交事務(wù),執(zhí)行操作2等操作2返回正常請求了,然后提交操作1的事務(wù)
2.補(bǔ)償機(jī)制,如這里的業(yè)務(wù),可以通過保存請求信息和狀態(tài),然后后續(xù)通過定時任務(wù)等操作來掃描是否有總庫和本地庫會員不一致的情況,有的話,進(jìn)行業(yè)務(wù)處理

陌璃 回答

需要先docker login

吢涼 回答

自己研究一下pprof,也許你會找到答案

浪蕩不羈 回答

都是用的net/http的Request。

req.RemoteAddr = "192.0.2.1:1234"只是直接指定了一個地址和端口。

枕頭人 回答
  1. 傳給GetFansIncrementNum一個chan error, 然后select fansNum和errChan
  2. 使用context包,
  3. 如果不需要獲取error具體值,可以在GetFansIncrementNum函數(shù)中直接關(guān)掉fansNum

個人更推薦2

黑與白 回答

b通道接收之前,獲取的數(shù)據(jù)是a<-i傳入的,在b通過接受后,由于go func里面的for已經(jīng)執(zhí)行過了,也就是將a通道內(nèi)容循環(huán)全部輸出了,所以在b通過之后無法獲取a通道的內(nèi)容(因?yàn)橐呀?jīng)全部在go func里面獲取了)

焚音 回答

使用filepath.Glob+ 帶緩沖的channel:

package main

import (
    "fmt"
    "path/filepath"
    "sync"
)

func main() {
    ls, err := filepath.Glob("*") // 獲取頂層文件/文件夾
    CheckErr(err)

    wg := new(sync.WaitGroup)
    ch := make(chan string, 5)

    go DeleteFile(ch, wg)

    for _, v := range ls {
        wg.Add(1)

        ch <- v
    }

    close(ch)

    wg.Wait()
}

func DeleteFile(ch chan string, wg *sync.WaitGroup) {
    for v := range ch {
        fmt.Println("to remove : ", v)
        wg.Done()
    }
}

func CheckErr(err error) {
    if err != nil {
        panic(err)
    }
}
清夢 回答
<div dangerouslySetInnerHTML={ {__html: '測試文本,lilnong'.replace(/(測試文本)/g,'<i>$1</i>')} }/>
情未了 回答

這個是因?yàn)闇y試域名的部分節(jié)點(diǎn)會報(bào)401的錯,所以同一個鏈接有時候能下載有時候不能下載。

玄鳥 回答

用同步的思想寫出異步的代碼這句話我在golang沒有聽過。如果非要說這個事的話,目前我只知道javascript的async/await是可以理解為用同步的思想寫出異步的代碼。

好了,回到問題上來,你的問題這里用同步的思想寫出異步的代碼,golang有是有這個,那就是go關(guān)鍵字
不管什么操作,都可以加上go關(guān)鍵詞來實(shí)現(xiàn)異步前提是go調(diào)度器會把執(zhí)行權(quán)給到你這個協(xié)程,一般發(fā)生阻塞go調(diào)度器就會切換協(xié)程

妖妖 回答

v2-c37363cfc462c4131c9a5489bff818bb_hd.jpg

如圖,其實(shí)我就是想問,應(yīng)用服務(wù)器如何把消息放到隊(duì)列中的,是應(yīng)當(dāng)放到本地還是通過websocket發(fā)送到其他服務(wù)器在放到隊(duì)列呢?

薄荷糖 回答

之前segmentfault是有篇文章介紹這個的,貼給你,可以看下
https://segmentfault.com/a/11...

撥弦 回答

使用類型sync.WaitGroup,相關(guān)的操作要使用到該類型的Add方法,Done方法,Wait方法。

貓小柒 回答

你確定執(zhí)行的時候所使用的shellbash嗎,不是zsh之類?

伴謊 回答
package main

import (
    "os"
    "bufio"
    "fmt"
    "io/ioutil"
)

func main()  {
    f,err := os.Open("b.txt")
    if err != nil {
        panic(err)
    }

    nReader := bufio.NewReader(f)
    nReader.Peek(64)
     //_,err= bufio.NewReader(f).Peek(64)
    if err != nil {
        panic(err)
    }
     r,err:=ioutil.ReadAll(nReader)
    if err != nil {
        panic(err)
    }
     fmt.Println(string(r))
}

問題解決了,peek是對Reader來說的,所以應(yīng)該操作的是Reader對象,而不是f

淺時光 回答

建議自己配log,指定寫文件,在middleware里使用