Dengan perkembangan Internet, permintaan untuk cakera rangkaian semakin meningkat Walau bagaimanapun, produk cakera rangkaian di pasaran sering diadu tentang kebocoran privasi dan isu-isu lain Oleh itu, membina cakera rangkaian anda sendiri telah menjadi trend . Artikel ini akan memperkenalkan cara menggunakan golang untuk membina cakera rangkaian mudah.
1. Persediaan persekitaran
Menggunakan golang untuk membina cakera rangkaian memerlukan keupayaan pengaturcaraan tertentu dan penyediaan persekitaran berikut:
1.1 Alat yang diperlukan
- go >= 1.8
- godep
- git
1.2 Perpustakaan tanggungan
- golang.org/x/crypto: In sebagai tambahan kepada pakej penyulitan terbina dalam bahasa Go, ia menyediakan sokongan algoritma penyulitan yang lebih selamat, termasuk SHA256/384/512, RC4, DES, AES, dsb.
- github.com/gin-gonic/gin: Rangka kerja HTTP berprestasi tinggi yang boleh digunakan untuk menulis aplikasi web ringkas dengan cepat, serta aplikasi yang lebih kompleks.
- github.com/go-xorm/core: Rangka kerja ORM ringan untuk operasi CRUD pada pangkalan data.
- github.com/go-xorm/xorm: Versi yang dipertingkatkan berdasarkan pakej teras, yang menyediakan penjanaan SQL yang dipermudahkan, transaksi, caching dan akses kepada berbilang sumber data, dsb., sesuai untuk akses data dalam projek semua lapisan saiz.
2. Seni bina projek
Hujung belakang cakera rangkaian ialah sistem pengurusan fail yang membaca fail ke dalam memori dan menyediakan perkhidmatan akses melalui pelayan HTTP / Halaman CSS/JS membolehkan interaktiviti. Semasa proses pembangunan, kami mengikuti corak reka bentuk MVC dengan ketat dan memisahkan tiga peringkat Model, Paparan dan Pengawal.
2.1 Lapisan model
Lapisan Model bertanggungjawab terutamanya untuk akses data, mengekstrak data daripada storan data asas, dan kemudian memberikannya kepada lapisan Pengawal untuk pemprosesan perniagaan. Dalam sistem kami, operasi CURD dilakukan terutamanya pada fail. Kami menggunakan rangka kerja ORM xorm untuk mengabstrak data asas dan menyediakan API yang lebih mudah dan jelas.
Model data ditakrifkan menggunakan struktur bahasa Go, seperti berikut:
type User struct { Id int64 Username string `xorm:"unique"` Password string }
2.2 Lapisan Lihat
Lapisan Paparan sepadan dengan lapisan Persembahan dalam aplikasi Web dan terutamanya bertanggungjawab untuk menukar lapisan kawalan Data yang dikembalikan akan diberikan kepada antara muka program, dan data permintaan yang dihantar oleh antara muka akan dihantar ke lapisan kawalan untuk diproses. Dalam sistem kami, lapisan Paparan bertanggungjawab terutamanya untuk mengendalikan dok halaman hujung hadapan.
Kami menggunakan rangka kerja Gin untuk menulis kod lapisan Lihat. Pertama, kita perlu menyediakan pengurusan penghalaan Apabila kita memasukkan URL tertentu, fungsi pemprosesan yang sepadan akan dipanggil secara automatik untuk diproses. Dalam rangka kerja Gin, ini sangat mudah untuk dilaksanakan:
router := gin.Default() router.GET("/files", handlers.ListFiles) router.PUT("/files/:name", handlers.AddFile) router.POST("/files/:name", handlers.UpdateFile) router.DELETE("/files/:name", handlers.DeleteFile) router.Run(":8020")
2.3 Lapisan Pengawal
Lapisan Pengawal bertanggungjawab untuk memproses permintaan, mendapatkan data ke lapisan Lihat dan akhirnya mengembalikan hasil pemprosesan . Dalam sistem kami, lapisan Pengawal bertanggungjawab terutamanya untuk memproses logik perniagaan.
Semasa pemprosesan, kita mesti terlebih dahulu menentukan sama ada pengguna telah log masuk. Jika tidak, lompat ke halaman log masuk, jika tidak, lompat ke senarai fail. Begitu juga, apabila pengguna meminta fail, kita perlu menyemak dahulu sama ada fail itu wujud Jika ia tidak wujud, kembalikan halaman ralat 404.
3. Operasi fail
3.1 Muat naik fail
Sebelum memuat naik fail, kami mesti melakukan pemeriksaan jenis pada fail terlebih dahulu. Untuk mengelakkan jenis fail daripada diganggu dengan menganalisis paket HTTP, kami mengesyorkan anda melakukan pemeriksaan jenis pada bahagian hadapan. Kami menggunakan objek FileReader JavaScript untuk membaca fail yang dimuat naik dan menyekat permintaan AJAX.
Apabila pengguna memilih untuk memuat naik fail, kami akan mula membaca fail secara tidak segerak Selepas bacaan selesai, fail akan dimuat naik ke pelayan dalam mod binari. Selepas muat naik berjaya, maklumat fail disimpan dalam pangkalan data untuk pengurusan mudah.
3.2 Muat Turun Fail
Apabila meminta untuk memuat turun fail, kami menggunakan perkhidmatan HTTP untuk memulangkan terus fail tersebut kepada penyemak imbas dalam bentuk strim. Pada masa yang sama, kami menggunakan fungsi http.ServeContent untuk memindahkan fail dan memastikan pemindahan fail adalah betul dan boleh dikawal sepenuhnya.
func (h Pengendali) Muat TurunFail(c gin.Konteks) {
fileName := c.Param("name") filePath := h.filePath(fileName) if _, err := os.Stat(filePath); os.IsNotExist(err) { c.String(http.StatusNotFound, "file not exist") return } c.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%s", fileName)) c.Writer.Header().Add("Content-Type", getContentType(fileName)) http.ServeFile(c.Writer, c.Request, filePath)
}
3.3 Pemadaman Fail
Pemadaman Fail Ia adalah operasi yang agak mudah. Pertama, kita perlu menyemak sama ada fail itu wujud dan mengembalikan mesej ralat jika ia tidak wujud. Kemudian kita perlu memadam maklumat fail dari pangkalan data dan akhirnya memadam fail dari cakera.
func (h Pengendali) DeleteFail(c gin.Context) {
fileName := c.Param("name") filePath := h.filePath(fileName) if _, err := os.Stat(filePath); os.IsNotExist(err) { c.String(http.StatusNotFound, "file not exist") return } session := h.engine.NewSession() defer session.Close() if err := session.Begin(); err != nil { log.Printf("begin transaction failed: %s", err.Error()) c.String(http.StatusInternalServerError, err.Error()) return } if _, err := session.Delete(&File{FileName: fileName}); err != nil { session.Rollback() c.String(http.StatusInternalServerError, err.Error()) return } if err := session.Commit(); err != nil { c.String(http.StatusInternalServerError, err.Error()) return } if err := os.Remove(filePath); err != nil { c.String(http.StatusInternalServerError, err.Error()) return } c.Header("Access-Control-Allow-Origin", "*") c.String(http.StatusOK, "file delete success")
}
4 Untuk meningkatkan keselamatan sistem cakera rangkaian, kita harus mematuhi dasar keselamatan berikut dengan ketat semasa proses pembangunan:
4.1 Kawalan Kebenaran
Hanya pengguna yang dibenarkan sahaja dibenarkan menggunakan pelbagai fungsi sistem, dan pengguna lain tidak boleh mengakses dan mengubah suai data.
4.2 Penyulitan Data
Semua maklumat sensitif harus disulitkan untuk mengelakkan insiden keselamatan seperti kecurian dan pengubahan maklumat semasa penghantaran dan penyimpanan.
4.3 Mencegah Serangan Rangkaian
Sistem perlu menggunakan langkah pencegahan yang berkesan untuk mengelakkan serangan daripada rangkaian, termasuk tetapi tidak terhad kepada tembok api, perisian anti-virus, dsb.
5
Melalui artikel ini, kami mempelajari cara menggunakan golang untuk membina sistem cakera rangkaian yang mudah. Semasa proses pembangunan, kami mengikut ketat corak reka bentuk MVC dan modul yang dipisahkan untuk meningkatkan kualiti dan kebolehselenggaraan. Di samping itu, kami telah mempertimbangkan keselamatan sistem dengan ketat, mengelakkan beberapa isu keselamatan biasa, dan meningkatkan kebolehpercayaan dan keselamatan sistem cakera rangkaian. Kami percaya bahawa bagi mereka yang baru memulakan pengaturcaraan dalam golang, artikel ini dapat membantu mereka memahami dengan lebih baik senario aplikasi golang dan segera memulakan pembangunan projek.
Atas ialah kandungan terperinci Pembinaan cakera rangkaian Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Golang cemerlang dalam aplikasi praktikal dan terkenal dengan kesederhanaan, kecekapan dan kesesuaiannya. 1) Pengaturcaraan serentak dilaksanakan melalui goroutine dan saluran, 2) Kod fleksibel ditulis menggunakan antara muka dan polimorfisme, 3) memudahkan pengaturcaraan rangkaian dengan pakej bersih/HTTP, 4) Membina crawler serentak yang cekap, 5) Debugging dan mengoptimumkan melalui alat dan amalan terbaik.

Ciri -ciri teras GO termasuk pengumpulan sampah, penyambungan statik dan sokongan konvensional. 1. Model keseragaman bahasa GO menyedari pengaturcaraan serentak yang cekap melalui goroutine dan saluran. 2. Antara muka dan polimorfisme dilaksanakan melalui kaedah antara muka, supaya jenis yang berbeza dapat diproses secara bersatu. 3. Penggunaan asas menunjukkan kecekapan definisi fungsi dan panggilan. 4. Dalam penggunaan lanjutan, kepingan memberikan fungsi saiz semula dinamik yang kuat. 5. Kesilapan umum seperti keadaan kaum dapat dikesan dan diselesaikan melalui perlumbaan getest. 6. Pengoptimuman prestasi menggunakan objek melalui sync.pool untuk mengurangkan tekanan pengumpulan sampah.

Pergi bahasa berfungsi dengan baik dalam membina sistem yang cekap dan berskala. Kelebihannya termasuk: 1. Prestasi Tinggi: Disusun ke dalam Kod Mesin, Kelajuan Berjalan Cepat; 2. Pengaturcaraan serentak: Memudahkan multitasking melalui goroutine dan saluran; 3. Kesederhanaan: sintaks ringkas, mengurangkan kos pembelajaran dan penyelenggaraan; 4. Cross-Platform: Menyokong kompilasi silang platform, penggunaan mudah.

Keliru mengenai penyortiran hasil pertanyaan SQL. Dalam proses pembelajaran SQL, anda sering menghadapi beberapa masalah yang mengelirukan. Baru-baru ini, penulis membaca "Asas Mick-SQL" ...

Hubungan antara konvergensi stack teknologi dan pemilihan teknologi dalam pembangunan perisian, pemilihan dan pengurusan susunan teknologi adalah isu yang sangat kritikal. Baru -baru ini, beberapa pembaca telah mencadangkan ...

Golang ...

Bagaimana membandingkan dan mengendalikan tiga struktur dalam bahasa Go. Dalam pengaturcaraan GO, kadang -kadang perlu untuk membandingkan perbezaan antara dua struktur dan menggunakan perbezaan ini kepada ...

Bagaimana untuk melihat pakej yang dipasang di seluruh dunia? Dalam proses membangun dengan bahasa Go, sering menggunakan ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Dreamweaver Mac版
Alat pembangunan web visual

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini