ฐานความรู้ด้านวิทยาศาสตร์สารสนเทศด้านคอมพิวเตอร์/ข้อมูลทางภูมิศาสตร์ ZJU
ถนนยาวและลำบาก
นี่คือบันทึกย่อ/การบ้านสำหรับวิทยาศาสตร์สารสนเทศทางภูมิศาสตร์/วิทยาศาสตร์คอมพิวเตอร์และเทคโนโลยี (รวมถึงหลักสูตรเปิดการศึกษาด้วยตนเองจัดเก็บรายการเบ็ดเตล็ดบางอย่าง) เช่นการบ้านหมายเหตุลิงก์โครงการสำหรับหลักสูตรระดับปริญญาตรีต่างๆสรุปและประสบการณ์การแบ่งปันหลักสูตร ฉันได้พบกับบล็อกทางเทคนิคที่ยอดเยี่ยม ฯลฯ ... บางทีมันอาจใช้สำหรับการอ้างอิงของคุณ ความสอดคล้องของคุณภาพ (คำเตือน: สำหรับการอ้างอิงเท่านั้นโปรดอย่าคัดลอก)
ความตั้งใจดั้งเดิมของการสร้างคลังสินค้านี้เป็นเพียงการจัดเก็บข้อมูลบางอย่างด้วยตัวเองเพื่อที่ฉันจะได้ระลึกถึงสิ่ง也许您也曾碰到过这样的情况:好像曾经上过某些课程或者阅读过很久价值的文章,但反过来又忘记了具体内容... ฉันได้เรียนรู้เมื่อฉันต้องการ也许您也曾碰到过这样的情况:好像曾经上过某些课程或者阅读过很久价值的文章,但反过来又忘记了具体内容...
ไม่รวม PPT ที่สอนโดยครูปีที่ผ่านมาที่ฉันไม่ได้เรียกคืนและเนื้อหาการบ้านบางอย่างที่ไม่เหมาะสำหรับการเปิดเผยสาธารณะ ฯลฯ (แต่อาจมีการเชื่อมโยงสาธารณะอื่น ๆ )
(ในอนาคตฉันจะค่อยๆจัดเรียงบันทึกและข้อมูลก่อนหน้านี้อย่างช้าๆหากฉันมีเวลา)
- หากช่วยคุณได้คุณสามารถช่วยดาวได้ด้วย
- แต่ในความเป็นจริงฉันคิดว่าการวาดภาพการบ้านไม่ใช่วิธีการเรียนรู้ที่ไม่ดีอย่างน้อยก็ดีกว่าไม่ทำอะไรเลย ...
- สแต็คเทคโนโลยีหลักของฉันคือ Backend C/C ++/Rust Direction
สารบัญ
- ฐานความรู้ด้านวิทยาศาสตร์สารสนเทศด้านคอมพิวเตอร์/ข้อมูลทางภูมิศาสตร์ ZJU
- ถนนยาวและลำบาก
- สารบัญ
- โครงสร้างองค์กรโฟลเดอร์
- ลิงค์การบ้านและโครงการบางอย่าง (เกี่ยวกับสิ่งง่าย ๆ ที่ต้องทำในโรงเรียน)
- ปัจจุบันดำเนินโครงการโอเพนซอร์ส: Eunomia-BPF
- สิ่งเบ็ดเตล็ดเช่นชั้นเรียนเปิด/กิจกรรม/การแข่งขัน
- บล็อก/กระดาษ/เบ็ดเตล็ดอื่น ๆ
โครงสร้างองค์กรโฟลเดอร์
โครงสร้างไดเรกทอรีของที่เก็บนี้จัดโดยหลักสูตรโดยประมาณและอาจไม่เหมือนกันบางส่วน (บางทีคุณอาจลองใช้ฟังก์ชั่นการค้นหาของ GitHub?)::
- หมายเหตุ
- หลักการรวบรวม
- เครือข่ายคอมพิวเตอร์ (รวมถึงระบบข้อมูลทางภูมิศาสตร์และเทคโนโลยีเครือข่าย)
- เบื้องต้นเกี่ยวกับระบบคอมพิวเตอร์
- ภาษาการเขียนโปรแกรม
- หัวข้อการเขียนโปรแกรม (H)
- การเขียนโปรแกรมเชิงวัตถุ
- Java/C mini-collection (ฉันเข้าเรียน แต่ดูเหมือนว่าไม่มีอะไรเหลืออยู่)
- โครงสร้างข้อมูลและอัลกอริทึม (รวมถึงโครงสร้างข้อมูลพื้นฐานโครงสร้างข้อมูลขั้นสูงและการวิเคราะห์อัลกอริทึม)
- โซลูชันคำถาม leetcode
- วิธีแก้ปัญหา PTA/PAT
- การใช้งานโครงสร้างข้อมูลของตัวเองบางส่วน
- ฐานข้อมูล
- กราฟิกคอมพิวเตอร์
- AI
- สถาปัตยกรรมคอมพิวเตอร์ (รวมถึงองค์ประกอบคอมพิวเตอร์)
- ระบบปฏิบัติการ
- หลักสูตรสำคัญอื่น ๆ
- เบ็ดเตล็ด
ลิงค์การบ้านและโครงการบางอย่าง (เกี่ยวกับสิ่งง่าย ๆ ที่ต้องทำในโรงเรียน)
ส่วนนี้เป็นลิงค์ไปยังโครงการหลักสูตรขนาดเล็กหรือการบ้านรวมถึงการสาธิตบางอย่างที่เขียนในระหว่างกระบวนการเรียนรู้
การสาธิต
โครงสร้างข้อมูล:
- เครื่องมือค้นหาข้อความตามดัชนีผกผัน
- ดัชนีเชิงพื้นที่: Quadtree/Hilbert Curve/Z เส้นโค้ง
- ต้นไม้ AVL ที่สามารถดำเนินการได้โดย Rust
การเรียนรู้ลึก:
- การตัดแต่งกิ่งเพื่อรับรู้หมากรุกสีดำและสีขาว AI
- การจำแนกประเภทขยะขึ้นอยู่กับเครือข่ายประสาท Convolutional
- อัลกอริทึมการกรองค่ามัธยฐานแบบปรับตัวเพื่อกำจัดเสียงเกลือและพริกไทย
เครือข่าย:
- ใช้ห้องแชทโปรโตคอลที่กำหนดเองตามอินเตอร์เฟสซ็อกเก็ต
- เว็บเซิร์ฟเวอร์ที่มีน้ำหนักเบา
กราฟิก:
- ระบบสุริยจักรวาลสามมิติ
- Simple Software Ray Tracing Renderer
อื่น:
โครงการ
GIS:
- การเขียนโปรแกรม GIS: Hubei Epidemic Data ระบบการแสดงผลพิเศษ https://github.com/yunwei37/covid-19-arcengine
- ฐานข้อมูล Geospatial: แพลตฟอร์มการวิเคราะห์แบบอินเทอร์แอคทีฟสำหรับข้อมูลการแพร่ระบาดของโรค covid-19
C ++:
- การเขียนโปรแกรมเชิงวัตถุ: เกมไพ่ออนไลน์ของ Uno LAN ตามการพัฒนา QT https://github.com/yunwei37/uno-game-oop
- การปฏิบัติที่ครอบคลุมของหลักสูตร II: การฝึกฝนด้านวิศวกรรม C ++: OpenGL ใช้เกม Sandbox ง่าย ๆ คล้ายกับ MC https://github.com/yunwei37/mc
- เซิร์ฟเวอร์ที่เขียนโดยใช้ c ++ 20 coroutines และ io_uring
ระบบคอมพิวเตอร์:
- องค์ประกอบคอมพิวเตอร์: แอสเซมเบลอร์/ถอดถอน/ตัวจำลองของอินเทอร์เฟซกราฟิกคำแนะนำการประกอบแอสเซมบลีที่ใช้โดย QT https://github.com/yunwei37/mips-sc-zju
- สถาปัตยกรรมคอมพิวเตอร์: การออกแบบ CPU หลายวงจรสถาปัตยกรรมคอมพิวเตอร์ Multi-Cycle CPU Design
- สถาปัตยกรรมคอมพิวเตอร์: การออกแบบ CPU Pipeline สถาปัตยกรรมคอมพิวเตอร์ Pipeline CPU Design
- ระบบปฏิบัติการ: เคอร์เนลทดลองง่าย ๆ ที่เขียนด้วย Rust (ห้องปฏิบัติการดั้งเดิมเขียนเป็น C ฉันเปลี่ยนเป็น Rust) https://github.com/yunwei37/linux-0.11-rs
อื่น:
- การฝึกบล็อกเชนอย่างง่าย: การสร้างบล็อกเชนตั้งแต่เริ่มต้นด้วยสนิม
ปัจจุบันดำเนินโครงการโอเพนซอร์ส: Eunomia-BPF
EUNOMIA-BPF เป็นรันไทม์แบบเปิดกว้างของ EBPF แบบไดนามิกและเครื่องมือพัฒนา
การใช้ Eunomia-BPF คุณสามารถ:
- เมื่อเขียนโปรแกรมหรือเครื่องมือ EBPF มีเพียงรหัสเคอร์เนล-รัฐเท่านั้นที่เขียนขึ้นเพื่อรับข้อมูลการส่งออกเคอร์เนลสถานะโดยอัตโนมัติ
- ใช้ WASM เพื่อพัฒนาโปรแกรมการโต้ตอบของผู้ใช้รัฐควบคุมการโหลดและการดำเนินการของโปรแกรม EBPF ทั้งหมดภายในเครื่องเสมือน WASM และข้อมูลที่เกี่ยวข้องกับกระบวนการ
- Eunomia-BPF สามารถบรรจุโปรแกรม EBPF ที่คอมไพล์ไว้ล่วงหน้าลงในโมดูล General JSON หรือ WASM กระจายไปทั่วสถาปัตยกรรมและเคอร์เนลรุ่นและสามารถโหลดและเรียกใช้งานแบบไดนามิกโดยไม่ต้องรวมเข้าด้วยกัน
Eunomia-BPF ประกอบด้วยเครื่องมือรวบรวมและห้องสมุดรันไทม์ รหัสเพื่อสร้างแพ็คเกจและเผยแพร่แอปพลิเคชั่น EBPF ที่สมบูรณ์ในขณะที่รหัส EBPF ของเคอร์เนลสถานะทำให้มั่นใจได้ถึงความเข้ากันได้ 100% กับ Libbpf หลัก, Libbpfgo, LibBPF-RS และเฟรมเวิร์กการพัฒนาอื่น ๆ เมื่อคุณต้องการเขียนรหัสโหมดผู้ใช้คุณยังสามารถใช้ webAssembly เพื่อให้บรรลุการพัฒนาโหมดผู้ใช้ในหลายภาษา เมื่อเปรียบเทียบกับเครื่องมือการเขียนสคริปต์เช่น BPFTRACE, Eunomia-BPF ยังคงความสะดวกที่คล้ายกันและไม่ จำกัด เฉพาะการติดตาม แต่สามารถใช้ในสถานการณ์ที่มากขึ้นเช่นเครือข่ายความปลอดภัย ฯลฯ
- Eunomia-bpf โครงการ GitHub ที่อยู่: https://github.com/eunomia-bpf/eunomia-bpf
- Gitee Mirror: https://gitee.com/anolis/eunomia
- เว็บไซต์เอกสาร: https://eunomia-bpf.github.io/
สิ่งเบ็ดเตล็ดเช่นชั้นเรียนเปิด/กิจกรรม/การแข่งขัน
ระบบปฏิบัติการ:
MIT 6.828 Labs รุ่นเก่าในปี 2018: 1-6:
หลักสูตรระบบปฏิบัติการที่มีชื่อเสียงมากการฝึกฝนระบบปฏิบัติการครั้งแรกสำหรับคนหนุ่มสาว
OS Summer of Code 2020
เหตุการณ์ที่จัดขึ้นโดยชุมชนโอเพนซอร์ส RCORE
nginx-lua-ebpf-toolkit
เครื่องมือโปรไฟล์ Apache Apisix: โปรไฟล์และเครื่องมือติดตามสำหรับ LUA และ NGINX โดยใช้ EBPF
ขันที
รางวัลแรกในการแข่งขันระบบปฏิบัติการ 2022 รอบสุดท้าย: เครื่องมือตรวจสอบที่ใช้ EBPF น้ำหนักเบา: เรียกใช้ EBPF เป็นบริการ!
- ไม่จำเป็นต้องแก้ไขรหัสไม่จำเป็นต้องกำหนดค่าที่น่าเบื่อเพียง BTF และไบนารีเล็ก ๆ เพื่อเริ่มการตรวจสอบและรับฟังก์ชั่นแกนยูโรเมีย:
- รหัสสามารถรวบรวมได้นอกกรอบโดยไม่มีการบุกรุกใช้ทรัพยากรหน่วยความจำและ CPU เพียงเล็กน้อยเท่านั้น
- กล่าวคำอำลากับกระจกขนาดใหญ่และ BCC Compilation Chain และต้องใช้เวลาประมาณ 4MB เพื่อเริ่มการติดตามในเมล็ดหรือภาชนะที่รองรับเท่านั้น
- ทำให้การกระจายและการใช้โปรแกรม EBPF เป็นธรรมชาติเช่นหน้าเว็บและบริการเว็บ:
- เป็นการยากที่จะแจกจ่ายและปรับใช้โปรแกรม EBPF ในกลุ่มของหลายร้อยโหนดหรือไม่? สคริปต์ BPFTRACE นั้นสะดวก แต่มีฟังก์ชั่นที่ จำกัด หรือไม่? Eunomia รองรับการกระจายและการอัปเดตอย่างรวดเร็วของรหัส EBPF ที่รวบรวมไว้ในเครื่องผ่าน HTTP RESTFUL API และสามารถดำเนินการปรับใช้และอัปเดตของตัวติดตาม EBPF ที่ซับซ้อนในเวลาประมาณหลายร้อยมิลลิวินาที
- การติดตามตามความต้องการสามารถทำได้ผ่าน HTTP API ด้วยตัวติดตาม EBPF แบบสลับร้อนที่มีประสิทธิภาพ (ประมาณ 100ms);
- จัดเตรียมกรอบการตรวจสอบคลาวด์ EBPF ที่เป็นมิตรกับมือใหม่:
- อย่างน้อยสามสิบหรือสี่สิบบรรทัดของรหัสต้องได้รับการสืบทอดและแก้ไขคุณสามารถเพิ่มตัวติดตาม EBPF ที่กำหนดเองตาม LibBPF-bootstrap scaffolding ใน Eunomia จับคู่กฎการเตือนความปลอดภัยรับข้อมูล meta คอนเทนเนอร์ส่งออกข้อมูลไปยัง Prometheus และ Grafana เวลา
- จัดทำเอกสารประกอบและการสอนที่หลากหลายมุ่งมั่นที่จะลดระดับการพัฒนาของโปรแกรม EBPF
บล็อก/กระดาษ/เบ็ดเตล็ดอื่น ๆ
- พอร์ทัล: บล็อกของฉัน
- Zhihu: Zhihu ของ Yunwei