Varsayılanlar ve İzleme
Varsayılanları belirleyin ve sıcak yeniden yükleme yapın
Varsayılanlar ve İzleme, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
Makul Varsayılanlar
İyi yapılandırma sistemleri hiçbir değer ayarlanmadığında bile çalışır. Varsayılanlar, her anahtara bir yedek değer vererek programınızın eksik bir değer yüzünden çökmesini önler.
Viper bunun için SetDefault işlevini sunar ve bu işlev öncelik zincirinin en altında yer alır.
Varsayılanları Ayarlama
Dosyayı okumadan önce varsayılanları kaydedin. Herhangi bir kaynak (dosya, ortam, bayrak) bunların üzerine yazabilir.
viper.SetDefault("port", 8080)
viper.SetDefault("logLevel", "info")
fmt.Println(viper.GetInt("port"))Varsayılanlar Neden Yararlıdır
Varsayılanlar yapılandırma dosyalarınızı küçültür: operasyon ekibi yalnızca standarttan farklı olan değerleri geçersiz kılar. Ayrıca beklenen yapılandırma biçimini doğrudan kod içinde belgelendirir.
WatchConfig ile Sıcak Yeniden Yükleme
Bazen yapılandırma değişikliklerinin yeniden başlatmadan etkin olmasını istersiniz. viper.WatchConfig(), fsnotify kullanarak dosyayı değişikliklere karşı izler.
viper.WatchConfig()Değişikliklere Tepki Verme
Dosya değiştiğinde çalışacak bir geri çağırma işlevi kaydedin:
viper.OnConfigChange(func(e fsnotify.Event) {
fmt.Println("config changed:", e.Name)
})
viper.WatchConfig()Sıcak Yeniden Yükleme Ne Zaman Yararlıdır
Sıcak yeniden yükleme, çalışırken değiştirilmesi güvenli olan değerlerde özellikle yararlıdır:
- Günlük ayrıntı düzeyi
- Özellik bayrakları
- Hız sınırları
Dinleme bağlantı noktası veya veritabanı DSN'si gibi genellikle yeniden başlatma gerektiren değerleri sıcak yeniden yüklemekten kaçının.
İş Parçacığı Güvenliği Konusu
Yapılandırma çalışma zamanında değişebildiğinde, birden çok eşzamanlı yordam onu okuyabilir. Viper alıcılarını eşzamanlı olarak çağırmak güvenlidir; ancak değerleri kendi değişkenlerinize önbelleklerseniz bunları bir karşılıklı dışlama kilidi veya atomik değerle koruyun.
var cfg atomic.Value // stores a Config struct
cfg.Store(loadConfig())Viper Olmadan Varsayılanları Modelleme
Aynı varsayılan değer fikrini yalın Go ile ifade edebilirsiniz: değer mevcutsa onu, aksi halde bir yedek değeri döndüren bir işlev.
func intOr(m map[string]int, key string, def int) int {
if v, ok := m[key]; ok {
return v
}
return def
}Yeniden Yükleme Sonrası Doğrulama
Uygulamadan önce yeniden yükleme sonrasında her zaman doğrulama yapın. Dosyadaki bir yazım hatası çalışan hizmeti çökertmek yerine önceki geçerli yapılandırmayı korumalıdır. Hatayı günlüğe kaydedip hizmet sunmaya devam edin.
newCfg, err := load()
if err != nil {
log.Println("bad config, keeping current:", err)
return
}
current.Store(newCfg)Yeniden Yüklemeyi Benzetme
Kavramsal olarak yeniden yükleme, kaynağın yeniden okunmasını ve etkin yapılandırmanın değiştirilmesini içerir. İzleyici, dosyanın değişiklik zamanı değiştiğinde bu değiştirme işlemini tetikler. Bir sonraki çalıştırılabilir gösterimde değerin değiştiğini göreceksiniz.
Çalıştırılabilir: Varsayılanlar ve Yeniden Yükleme
Bu kendi kendine yeten program, önce varsayılan değer mantığını, ardından bir değeri değiştiren benzetilmiş bir yeniden yüklemeyi gösterir.
package main
import "fmt"
func get(m map[string]int, k string, def int) int {
if v, ok := m[k]; ok {
return v
}
return def
}
func main() {
cfg := map[string]int{}
fmt.Println("port (default):", get(cfg, "port", 8080))
cfg["port"] = 9090 // simulated reload
fmt.Println("port (reloaded):", get(cfg, "port", 8080))
}Hızlı Kontrol
Varsayılanlar ve izleme konusundaki anlayışınızı sınayın.
Özet
Varsayılanları ve sıcak yeniden yüklemeyi öğrendiniz:
SetDefault, en düşük öncelik düzeyinde yedek değerler sağlarWatchConfigveOnConfigChange, canlı yeniden yüklemeleri etkinleştirir- Yalnızca çalışma zamanında güvenle değiştirilebilen değerleri sıcak yeniden yükleyin
- Önbelleğe alınmış yapılandırmayı atomik değerlerle veya karşılıklı dışlama kilitleriyle koruyun ve uygulamadan önce doğrulayın
Sıkça Sorulan Sorular
“Varsayılanlar ve İzleme” dersi ücretsiz mi?
Evet — “Varsayılanlar ve İzleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Varsayılanlar ve İzleme” dersinde ne öğreneceğim?
Varsayılanları belirleyin ve sıcak yeniden yükleme yapın Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Varsayılanlar ve İzleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Yapılandırma Dosyalarını Okuma
- Ortam Değişkenleri
- Varsayılanlar ve İzleme
- Struct'lara Bağlama