Yazar | asta
1 Golang'ın geçen yılki önemli başarıları
2017 yılında Go'nun bulut bilişimde lider konuma geldiği söylenebilir.Kubernetes tüm bulut bilişim şirketlerinin temel mimarisi haline geldi ve gittikçe daha fazla internet şirketi sistem mimarisini github, Ali, Tencent, Baidu gibi k8'lere taşıdı. Didi ve JD.com gibi büyük şirketler onu benimsedi. Bu sistem Go tarafından geliştirildi. Birçok şirket Go'nun geliştirilmesine büyük yatırım yapmaya başladı. Go, bulut bilişimin temel dili haline geldi. Herkes bunu duymuş olmalı. Organizasyon, Bulut Bilişim Vakfı organizasyonu olan CNCF olarak adlandırılıyor ve bir dizi bulut bilişim projesi aşağıda inkübe ediliyor. Https://www.cncf.io/ temelde projelerin% 90'ının Go dilinde geliştirildiğini görebilirsiniz. Go'nun gerçek bir bulut bilişim sistemi dili haline geldiği görülebilir.
Aynı zamanda Go'nun ikinci alanda gücünü göstermeye başladığı yıl ... Bahsettiğim ikinci alan ise blockchain ... Bitcoin'in son bir yıl içinde tüm dünyada hızla popüler hale geldiği söylenebileceğini ve temelindeki teknoloji bloklarını herkes biliyor. Zincir teknolojisi de herkesin bilincini kazanmaya başlıyor. Bunun, blockchain sürüm 1.0'ın uygulaması olduğu ve blockchain sürüm 2.0'ın uygulanmasının akıllı kontrat olduğu söylenebilir. Ethereum herkesin bilincini kazanmaya başladı. Temel olarak, çoğu şu anda blok zinciri yapıyor Şirketlerin tümü ikincil geliştirme için Ethereum'u temel alır ve Ethereum'un alt katmanı Go tarafından geliştirilir. Aynı zamanda, IBM de açık kaynaklı. Fabric, temel olarak akıllı sözleşmeler yürütmek ve güvenilir kullanmak için kullanılan dağıtılmış bir defter platform çözümüdür. Çeşitli iş uygulama senaryolarının modüler mimarisini gerçekleştirmenin teknolojisi ve takılabilir yolu ve bu sistem de Go tarafından geliştirilmiştir.Bu iki blok zincirindeki yıldız projelerin hepsi Go ile geliştirilmiştir, bu da Go'nun dağıtılmış bir sistemde olduğunu göstermeye yeterlidir. Bu nedenle, bu yıl çok sayıda finans şirketi Go mühendislerini işe almaya başladı.
2 En son Golang sürüm güncellemelerinin önemli noktaları
Son iki ana sürüm Go1.9 ve Go1.10. Bu iki sürümün getirdiği yeni özellikleri kısaca tanıtacağım.
Dil seviyesi
Takma adı yazın
Hepimiz, Go kod yeniden düzenleme sürecindeki en büyük zorluğun uyumluluk olduğunu biliyoruz ve Go'da değişkenleri ve işlevleri dışa aktardığımızda, yeniden yeniden düzenleme yapmak istersek, çok zor hale gelecektir. Sorun şu ki, bu özellik orijinal olarak Robert Griesemer tarafından önerilmişti ve 1.8 sürümünde eklenmesi planlanıyor, ancak 1.9 sürümüne kadar acilen erteleniyor.
Tür takma adının resmi tanımı çok basittir:
Bir takma ad bildirimi, verilen türe bir tanımlayıcı bağlar.
Yeni tür takma adı ile geleneksel tür tanımı arasındaki farkı nasıl anlarız?
T1 T2 türü // Geleneksel tür tanımı ile T1 türü = T2 // Yeni tür diğer adı
Bir noktayı kavrayın: Geleneksel tür tanımı "yeni bir tür" oluştururken, tür takma adı "yeni bir tür" oluşturmadı.
Verim iyileştirmesi
Derleme performansı
Go 1.9'da, paket düzeyinde paralel derlemeye yönelik orijinal destek temelinde, çok çekirdekli kaynakları daha tam olarak kullanmak için paket işlevi düzeyinde paralel derleme uygulanır. Go 1.10 derleme performansındaki en büyük değişiklik, önbellek mekanizmasının uygulanmasıdır. Gerçekler, önbellek mekanizmasının kullanımının günlük geliştirme sürecinde iş verimliliğinizi büyük ölçüde artıracağını kanıtlamıştır.Proje ne kadar büyükse, o kadar fazla.
Nesne kodu performansı
Yıllar boyunca Go ekibi, Go 1.7'de ssa arka ucunu tanıtmak gibi derleyici tarafından oluşturulan hedef kodun performansını sürekli olarak optimize etmektedir. Go 1.10, eylem ssa'nın tanıtımından çok daha az olmasına rağmen, hedef kod üretiminin daha fazla optimizasyonuna devam ediyor.
GC performansı
GC'nin performansı her zaman Gopher'ın çoğunluğunun yakından ilgilendiği bir konu olmuştur ve Go 1.9'da optimize edilmeye ve geliştirilmeye devam etmektedir.Çoğu program 1.9 ile derlendikten sonra belirli bir performans artışı elde edebilir. Özellikle 1.9'da bahsedilen, büyük bellek nesnelerinin tahsis performansında önemli bir gelişmedir. Go 1.10, bellek ayırma gecikmesini ve GC çalışma zamanının yükünü azaltmak için çok çalışmıştır, ancak genel olarak, GC değişiklikleri çok büyük değildir.
Standart kitaplık
Monotonik saat desteği ekleyin
2017 Yılbaşı Gecesi, tarihte 27. ikinci sıçrama meydana geldi.Bu sıçrama nedeniyle, Avrupa ve Amerika Birleşik Devletleri'nde tanınmış bir CDN servis sağlayıcısı olan Cloudflare'nin DNS'si büyük çaplı bir başarısızlıkla sonuçlandı ve birçok Avrupa ve Amerikan web sitesine normal şekilde erişilememesine neden oldu. Daha sonra Cloudflare mühendisleri sorunun nedenini analiz etti ve suçlu o golang zamanıydı.Şimdi Sub, zamanı ölçmek için monoton saat yerine sadece duvar saatini kullandı ve bu da negatif değerlerin geri dönüşüyle sonuçlandı. Genel olarak, duvar saati yalnızca zamanı bildirmek için kullanılır ve mnontonik saat, zamanın geçişini ölçmek için kullanılır. Problemi temelden çözmek için, Go 1.9, zaman paketindeki zamanın geçmesini ölçmek için monoton saati uygular ve gelecekte zamanın "negatif geçmesi" olmayacaktır. Bu değişiklik, zamanlayıcı paketinin yöntem düzeyinde mevcut kullanımını etkilemeyecektir.
Matematik / bit paketi ekle
Bazı algoritma programlamasında, genellikle bit işlemlerini içerir. Go 1.9, bu problemin üstesinden gelmek için yüksek performanslı bir matematik / bit paketi sağlar.
Eşzamanlılığı destekleyen bir Harita türü sağlar
Go'nun yerel haritası, gorutin açısından güvenli değildir. Harita eşzamanlılığının tespiti ve hatırlatıcısı önceki sürümlere eklenmiş olsa da, gopher eşzamanlı haritaya ihtiyaç duyduğunda, kendi başına uygulanması gerekir. Go 1.9'da standart kitaplık, eşzamanlılığı destekleyen bir Harita türü sağlar: sync.Map
Dizeler ekleyin. Oluşturucu
Dizeler paketi yeni bir tür ekler: "dize yazımı" sahnesinde bytes.Buffer'ı değiştirmek için kullanılan Builder.Kullanıcı son dizeyi döndürmek için Builder.String'i çağırdığında, güvenli olmayan pakette bazı siyah teknolojilerin kullanılması nedeniyle, Bazı yinelenen ve gereksiz bellek kopyalarından kaçınmak, işlem performansını iyileştirmek ve bellek ayırmayı optimize etmek.
Profil oluşturucu etiketlerini destekleyin
Genel profil oluşturucu bazen gereksinimleri tam olarak karşılamıyor. Profil için genellikle "işle ilgili" yürütme yolunu izlememiz gerekir. Go 1.9, çalışma zamanı / pprof paketinde etiket desteği ve go tool pprof aracı ekler. Go takım üyesi rakyll'ın profil oluşturucu etiketlerinin kullanımını detaylı olarak tanıtan "Profilci etiketleri iş başında" adlı bir makalesi var, ona başvurabilirsiniz, burada tekrar etmeyeceğim.
3 Hangi şirketler Golang kullanmaya odaklanıyor?
Şu anda Golang kullanan yerli ve yabancı birçok firma var, burada ana firmaları listeleyeceğim.
Yabancı şirketlerin listesi
Yerli şirketlerin listesi
Daha fazla şirket buraya başvurabilir: https://github.com/golang/go/wiki/GoUsers
4 Önemli Golang açık kaynak projeleri
Go'da çok fazla büyük açık kaynaklı proje var. Bulut bilişim, devops, blockchain, yapay zeka, oyunlar, depolama motorları, Web, sistemler / komutlar dahil olmak üzere yakın zamanda yaptığımız bilgi grafiğindeki bazı açık kaynak projelerine başvurabilirsiniz. Uygulama araçları, ara katman yazılımı, test / sürekli teslimat ve dosya sistemleri gibi çeşitli yönlerden açık kaynaklı projeler.
Ayrıntılı adres: https://www.processon.com/view/link/5a9ba4c8e4b0a9d22eb3bdf0
5 Golang'a yeni başlayanlar için nasıl başlanır, bazı öğrenme projeleri önerin
Bence bir dil öğrenmek için en önemli şey üç şey yapmak, önce temel bilgilere bakmak, ikincisi kodları kopyalamayı öğrenmek ve üçüncüsü kod yazmayı öğrenmek.
İlk nokta, birçok insanın sadece elle yazdığınızı düşünmesi, ancak temel bilgilere hakim değilsinizdir Nasıl yazılır? Acele etmek yeterli değildir, bu yüzden önce temel şeylere hakim olunmalıdır. İşte birkaç temel giriş materyali:
https://tour.golang.org/#1
Https://github.com/mikespook/Learning-Go-zh-cn Xing Xing tarafından çevrildi
Örnek olarak gidin https://gobyexample.com/
Sanırım bu temel bilgileri öğrendikten sonra intihal yapmaya başlayabilirsiniz.Eğer önceki PHP geliştirme deneyiminiz varsa, belki yazdığım bu kitap golang'ı anlamanıza yardımcı olabilir, https://github.com/astaxie / build-web-application-with-golang
İkinci nokta, çoğu kez kod yazmaya başladığımızda hiçbir fikrimiz ve başlama yolumuz olmadığıdır, ancak başkalarını kod yazmaları için taklit edebiliriz. Şangay deyiminde sık sık "büyük müşterileri yemek, büyük müşterileri kullanmak ve büyük müşterileri ortadan kaldırmak" denir, sadece "koda bakarız, kopyalayın Kodlayın ve son olarak kendi kodunuzu yazın ". İşte göz atmanız ve öğrenmeniz gereken birkaç giriş seviyesi kodu:
https://github.com/hoisie/web çok basit, sadece onun yönlendirmesini nasıl uygulayacağınızı, kendi yönlendirmenizi nasıl yazacağınızı öğrenin
https://github.com/icub3d/home/ Bu, Go + AngularJS'nin bir uygulamasıdır, API uygulamalarının nasıl yapılacağını görün
Son olarak, başarmak için başvurabileceğiniz bazı işlevleri listeleyeyim: Sınıf arkadaşlarımızı Kaplanlar'da eğitirken bunları birlikte öğrenmek için kullandım.
Günlük analizi
IP kitaplığı analizi
Yönetim arka planında analiz günlüğünü görüntüleyin
Üçüncü nokta, kodu kendiniz yazmaktır. Şu anda, zaten belli bir golang anlayışına sahibiz. O zaman kendi projemize başlayabiliriz. Yapılması gereken en önemli şey hızlı bir şekilde geliştirmek. O halde size tavsiye ederim
https://github.com/astaxie/beego Web veya API uygulamalarınızı hızlı bir şekilde geliştirmek için beego çerçevesini kullanın
https://www.docker.com/ Sanallaştırma için docker kullanın
https://github.com/nsqio/nsq Mesaj sırasını öğrenin, kanalı öğrenin ve dağıtın
https://github.com/coreos/etcd dağıtılmış uygulama
Bu aşama, golang'da yazacak çeşitli şeyler bulmaktır ve ne kadar çok yazarsanız, o kadar derin ve derin bir anlayışa sahip olursunuz.
6 Faydalar! refah!
4. Gopher Çin Konferansı Nisan ayında Şangay'da yapılacak ve bu yıl ilk kez konferans öncesi çalıştay eklenecek. Bu yılki konferans, ölçek ve içerik açısından rekor seviyeye ulaşacak ve GoPher sınırlı tişörtlerini sunmaya devam edecek. Cazip hissetmek, hızla para tasarrufu sağlayan hileleri dürtmek:
Tıklamak Orijinali okuyun Konferansa kaydolun, indirim kodunu girin [Geekbang],% 15 indirim sizi bekliyor!