亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

golang使用信號量熱更新的實現(xiàn)示例

 更新時間:2018年04月21日 10:47:12   作者:wshelly  
這篇文章主要介紹了golang使用信號量熱更新的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

配置文件熱更新是服務器程序的一個基本功能,通過熱更新可以不停機調(diào)整程序的配置,特別是在生產(chǎn)環(huán)境可以提供極大的便利,比如發(fā)現(xiàn)log打得太多了可以動態(tài)調(diào)高日志等級,業(yè)務邏輯參數(shù)變化,甚至某個功能模塊的開關等都可以動態(tài)調(diào)整。

package main  
import ( 
  "encoding/json" 
  "fmt" 
  "io/ioutil" 
  "log" 
  "os" 
  "os/signal" 
  "sync" 
  "syscall" 
) 
 
//用json配置測試 
type Config struct { 
  Test1 string `json:"Test1:` 
  Test2 int  `json:"Test1:` 
} 
 
var ( 
  config   *Config 
  configLock = new(sync.RWMutex) 
) 
 
func loadConfig() bool { 
  f, err := ioutil.ReadFile("config.json") 
  if err != nil { 
    fmt.Println("load config error: ", err) 
    return false 
  } 
 
  //不同的配置規(guī)則,解析復雜度不同 
  temp := new(Config) 
  err = json.Unmarshal(f, &config) 
  if err != nil { 
    fmt.Println("Para config failed: ", err) 
    return false 
  } 
 
  configLock.Lock() 
  config = temp 
  configLock.Unlock() 
  return true 
} 
 
func GetConfig() *Config { 
  configLock.RLock() 
  defer configLock.RUnlock() 
  return config 
} 
 
func init() { 
  if !loadConfig() { 
    os.Exit(1) 
  } 
 
  //熱更新配置可能有多種觸發(fā)方式,這里使用系統(tǒng)信號量sigusr1實現(xiàn) 
  s := make(chan os.Signal, 1) 
  signal.Notify(s, syscall.SIGUSR1) 
  go func() { 
    for { 
      <-s 
      log.Println("Reloaded config:", loadConfig()) 
    } 
  }() 
} 
 
func main() { 
  select {} 
} 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • GoLang?channel關閉狀態(tài)相關操作詳解

    GoLang?channel關閉狀態(tài)相關操作詳解

    Channel?和?goroutine?的結合是?Go?并發(fā)編程的大殺器。而?Channel?的實際應用也經(jīng)常讓人眼前一亮,通過與?select,cancel,timer?等結合,它能實現(xiàn)各種各樣的功能。接下來,我們就要介紹GoLang?channel關閉狀態(tài)相關操作
    2022-10-10
  • 基于Go語言實現(xiàn)一個目錄樹打印工具

    基于Go語言實現(xiàn)一個目錄樹打印工具

    在日常開發(fā)中,我們經(jīng)常需要可視化項目的目錄結構,下面小編將介紹一款用Go語言開發(fā)的目錄樹打印工具,它不僅能生成美觀的目錄結構圖,還提供多種實用功能
    2025-06-06
  • Go字典使用詳解

    Go字典使用詳解

    今天和大家一起學習Go語言的字典。Go語言的字典又稱為map,一種使用廣泛的數(shù)據(jù)結構。它是擁有key/value對元素的「無序集合」,而且在集合中key必須是唯一的
    2022-11-11
  • Golang正整數(shù)指定規(guī)則排序算法問題分析

    Golang正整數(shù)指定規(guī)則排序算法問題分析

    這篇文章主要介紹了Golang正整數(shù)指定規(guī)則排序算法問題,結合實例形式分析了Go語言排序算法操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • 詳解Golang實現(xiàn)http重定向https的方式

    詳解Golang實現(xiàn)http重定向https的方式

    這篇文章主要介紹了詳解Golang實現(xiàn)http重定向https的方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Go語言Http調(diào)用之Post請求詳解

    Go語言Http調(diào)用之Post請求詳解

    前文我們介紹了如何進行 HTTP 調(diào)用,并通過 GET 請求的例子,講述了 query 參數(shù)和 header 參數(shù)如何設置,以及響應體的獲取方法。 本文繼上文,接下來會通過 POST 請求,對其他參數(shù)的設置進行介紹,感興趣的可以了解一下
    2022-12-12
  • Go語言結合正則表達式實現(xiàn)高效獲取數(shù)據(jù)

    Go語言結合正則表達式實現(xiàn)高效獲取數(shù)據(jù)

    這篇文章主要為大家詳細介紹了Go語言如何結合正則表達式實現(xiàn)高效獲取數(shù)據(jù),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-04-04
  • Go?channel結構體源碼和讀寫和關閉過程詳解

    Go?channel結構體源碼和讀寫和關閉過程詳解

    這篇文章主要介紹了Go?channel結構體源碼和讀寫和關閉過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 使用Go初始化Struct的方法詳解

    使用Go初始化Struct的方法詳解

    面向?qū)ο缶幊陶Z言最基礎的概念就是類(class),不過Go語言并沒有類的概念,所以使用Go語言開發(fā)時,我們一般會用struct(結構體)來模擬面向?qū)ο笾械念?下面我們來介紹幾種創(chuàng)建struct類型變量的方法,需要的朋友可以參考下
    2024-01-01
  • Go語言切片??嫉拿嬖囌骖}解析

    Go語言切片??嫉拿嬖囌骖}解析

    了解最新的Go語言面試題型,讓面試不再是難事,下面這篇文章主要給大家介紹了關于Go語言切片面試常考的一些問題,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02

最新評論