Golang'da yeni başlayanlar için bir öğrenme projesi

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!

"Her Şey Güzel" Su Mingyu'nun kayıtsız görünümünde neden yumuşak bir kalbi var? Seyirci izledikten sonra onu seviyor
önceki
"Final Fantasy" 30th Anniversary Square Enix, oyuncular için pek çok içerik hazırladı
Sonraki
Bu beş gün boyunca Bose gürültü önleyici kulak tıkaçlarıyla uyudum.
"Yin Susu" Guo Feili'nin çiçekler giymiş ve satmak için ağzını surat asmasının yakın tarihli bir fotoğrafı, 47 yaşındaki sevimli, ince ve peri kadar güzel.
Biraz niş bir drama olan "Aşık Olduğum Kişi Garip Bir Çiçek", aşık olan iki garip çiçek hakkında bir hikaye.
Ma Sichun gösteri için kilo vermedi. Ou Hao'dan ayrıldıktan sonra vücut yönetiminden vazgeçti mi?
Donanım listem Lego'dan daha renkli şeffaf bir kamera: Ricoh XOBBOX
Jianghu kurtarma, duruşu değiştirmek "Servikal Spondiloz için Rehabilitasyon Rehberi" nden daha etkilidirGeek Resmi Evi
BOCHKnın kredi değer düşüklüğü karşılığı geçen yıl 5,4 milyar HK $ 'ya ulaştı ve CEOnun yıllık maaşı 10 milyon oldu
"Her şey yolunda": Su ailesinin en aklı başında iki kız çocuğu var ve iki oğlunun kaderini söylemek zor
"Holmes and Watson" insanları güldürmeyi başaramayan niteliksiz bir komedi.
Kuyruk yolculuğu, gerçek koku ikinci tarafı Jeju Adası'nın tadı için uyarıyor
Yang Tianzhen, Zhu Yawen ve Zhang Yuqi'yi realite şovuna götürecek.O sahnede görünmeye başlıyor ve trafik rotasını mı kullanmak istiyor?
1099 yuan olarak fiyatlandırılan Honor Play 8C resmi olarak piyasaya sürüldü
To Top