Una base de conocimiento de la informática de pregrado/ciencias de la información geográfica de ZJU
El camino es largo y arduo
Aquí hay algunas notas/tareas para ciencias de la información geográfica/informática y tecnología (también incluye cursos de autocontrol abiertos, almacenar algunos artículos varios), como tareas, notas, enlaces de proyectos para varios cursos de pregrado, resumen y experiencia de cursos compartiendo, He encontrado excelentes blogs técnicos, etc., tal vez se puede usar para su referencia; consistencia de la calidad (advertencia: solo para referencia, no copie)
La intención original de construir este almacén es en realidad solo para almacenar algo也许您也曾碰到过这样的情况:好像曾经上过某些课程或者阅读过很久价值的文章,但反过来又忘记了具体内容... información para que pueda recordar rápidamente lo que he aprendido cuando lo necesito;也许您也曾碰到过这样的情况:好像曾经上过某些课程或者阅读过很久价值的文章,但反过来又忘记了具体内容...
No incluye el PPT impartido por los maestros, los últimos años que no son recordados por mí, y algún contenido de tarea que no sea adecuado para la divulgación pública, etc. (pero se pueden dar otros enlaces públicos)
(En el futuro, lentamente resolveré otras notas e información anteriores si tengo tiempo)
- Si te ayuda, también puedes ayudar con una estrella
- Pero de hecho, personalmente creo que aprovechar la tarea no es una mala forma de aprender, al menos es mejor que no hacer nada ...
- Mi pila de tecnología principal personal es la dirección de backend C/C ++/Rust.
Tabla de contenido
- Una base de conocimiento de la informática de pregrado/ciencias de la información geográfica de ZJU
- El camino es largo y arduo
- Tabla de contenido
- Estructura de la organización de carpetas
- Algunas tareas y enlaces de proyectos (sobre algunas cosas simples que hacer en la escuela)
- Proyecto de código abierto operativo actualmente: Eunomia-BPF
- Cosas misceláneas como clases/eventos abiertos/competiciones
- Blog/Paper/One Other Varios
Estructura de la organización de carpetas
La estructura del directorio de este repositorio está clasificada aproximadamente por los cursos, y puede no ser parcialmente la misma (¿tal vez puede intentar usar la función de búsqueda de GitHub?):
- notas
- Principio de compilación
- Red informática (incluidos sistemas de información geográfica y tecnología de red)
- Introducción a los sistemas informáticos
- Lenguaje de programación
- Temas de programación (H)
- Programación orientada a objetos
- Java/c mini-colección (tomé la clase pero parece que no queda nada)
- Estructuras y algoritmos de datos (incluidas estructuras de datos básicas, estructuras de datos avanzadas y análisis de algoritmos)
- Solución de preguntas de LEETCODE
- Solución de problemas de PTA/PAT
- Algunos de su propia implementación de estructura de datos
- base de datos
- Gráficos por computadora
- AI
- Arquitectura de computadora (incluida la composición de la computadora)
- Sistema operativo
- Otros cursos importantes
- Misceláneas
Algunas tareas y enlaces de proyectos (sobre algunas cosas simples que hacer en la escuela)
Esta parte es un enlace a algunos proyectos o tareas de cursos pequeños, así como algunas demostraciones escritas durante el proceso de aprendizaje.
Manifestación
Estructura de datos:
- Motor de búsqueda de texto basado en el índice inverso
- Índice geoespacial: curva Quadtree/Hilbert/Z
- Árbol AVL persistible implementado por Rust
Aprendizaje profundo:
- Poda de búsqueda para realizar el ajedrez en blanco y negro ai
- Clasificación de basura basada en una red neuronal convolucional
- Algoritmo de filtrado mediano adaptativo para eliminar la sal y el ruido de la pimienta
red:
- Implementar sala de chat de protocolo personalizada basada en la interfaz de socket
- Un servidor web liviano
Gráficos:
- Sistema solar tridimensional
- Rendedor de trazado de rayos de software simple
otro:
Proyecto
SIG:
- Programación SIG: Sistema de visualización especial de datos de Epidemic Hubei https://github.com/yunwei37/covid-19- ArcEngine
- Base de datos geoespacial: Plataforma del sitio web de análisis interactivo visual para datos epidémicos Covid-19 https://github.com/yunwei37/covid-19-nlp-vis
C ++:
- Programación orientada a objetos: juego de cartas en línea UNO LAN basado en el desarrollo de Qt https://github.com/yunwei37/uno-game-op
- Curso de práctica integral II: C ++ Práctica de ingeniería: OpenGL implementa un juego de sandbox simple similar a MC https://github.com/yunwei37/mc
- Un servidor escrito usando C ++ 20 Coroutines e IO_uring
Sistema informático:
- Composición de la computadora: ensamblador/desestimador/emulador de la interfaz gráfica MIPS Instrucciones de ensamblaje implementadas por qt https://github.com/yunwei37/mips-sc-zju
- Arquitectura de computadoras: diseño de la CPU de ciclo múltiple Arquitectura de computadora Diseño de CPU de ciclo múltiple
- Arquitectura de computadora: diseño de CPU de tuberías Arquitectura de computadora Diseño de CPU de tubería
- Sistema operativo: un kernel experimental simple escrito en Rust (el laboratorio original fue escrito en C, lo cambié a Rust) https://github.com/yunwei37/linux-0.11-rss
otro:
- Una simple práctica de blockchain: construir una cadena de bloques desde cero con óxido
Proyecto de código abierto operativo actualmente: Eunomia-BPF
Eunomia-BPF es un código de ejecución de carga dinámica de código abierto eBPF.
Usando eunomia-bpf, puede:
- Al escribir programas o herramientas EBPF, solo se escribe el código de estado de kernel para obtener automáticamente información de exportación de estado de kernel;
- Use WASM para desarrollar programas interactivos de estado de usuario, controlar la carga y ejecución de todo el programa EBPF dentro de la máquina virtual WASM y datos relacionados con el proceso;
- Eunomia-BPF puede empaquetar programas EBPF precompilados en módulos Generales JSON o WASM, distribuidos a través de las versiones de arquitectura y núcleo, y se puede cargar y ejecutar dinámicamente sin recompilación.
Eunomia-BPF consiste en una cadena de herramientas de compilación y una biblioteca de tiempo de ejecución. El código para construir fácilmente. Cuando necesite escribir código de modo de usuario, también puede usar WebAssembly para lograr el desarrollo en modo de usuario en varios idiomas. En comparación con las herramientas de secuencias de comandos como BPFTRace, Eunomia-BPF conserva una conveniencia similar y no se limita al rastro, pero se puede usar en más escenarios, como red, seguridad, etc.
- Eunomia-BPF Project Github Dirección: https://github.com/eunomia-bpf/eunomia-bpf
- Gitee Mirror: https://gitee.com/anolis/eunomia
- Sitio web del documento: https://eunomia-bpf.github.io/
Cosas misceláneas como clases/eventos abiertos/competiciones
Sistema operativo:
Versión antigua del MIT 6.828 Labs en 2018: 1-6:
Un curso de sistema operativo muy famoso, la primera práctica del sistema operativo para los jóvenes
OS Summer of Code 2020
Un evento realizado por la comunidad de código abierto RCORE
nginx-lua-ebpf-toolkit
Herramientas de perfil de Apache Apisix: Perfil y herramientas de seguimiento para Lua y Nginx usando EBPF
Eunomia
Primer premio en la final de la competencia del sistema operativo 2022: una herramienta liviana de monitor basada en EBPF: ¡ejecute EBPF como servicio!
- No es necesario modificar el código, no es necesario configurar tedioso, solo BTF y un pequeño binario para comenzar a monitorear y obtener funciones centrales de eunomia:
- El código se puede recopilar fuera de la caja sin intrusión, consumiendo solo una pequeña cantidad de recursos de memoria y CPU;
- Diga adiós al enorme espejo y la cadena de herramientas de compilación BCC, y solo requiere aproximadamente 4 MB para comenzar a rastrear en núcleos o contenedores soportados;
- Haga que la distribución y el uso de los programas EBPF sea tan natural como las páginas web y los servicios web:
- ¿Es difícil distribuir e implementar programas EBPF en grupos de cientos de nodos? El script BPFTRace es conveniente, pero ¿tiene una funcionalidad limitada? Eunomia admite la distribución y la actualización en caliente del código EBPF compilado localmente a través de la API RESTful HTTP, y puede completar la implementación y la actualización de los complejos rastreadores EBPF en casi cientos de milisegundos y una huella de memoria CPU casi insignificante;
- El seguimiento a pedido se puede lograr a través de la API HTTP con un rastreador EBPF eficiente en caliente (aproximadamente 100 ms);
- Proporcione un marco de monitoreo nativo de nube-nativo EBPF nativo de EBPF:
- Se deben heredar y modificar al menos treinta o cuarenta o cuarenta líneas de código, puede agregar rastreadores EBPF personalizados basados en andamios libbpf-bootstrap en eunomia, hacer coincidir las reglas de alarma de seguridad, obtener meta de contenedores, exportar datos a Prometheus y Grafana y lograr eficientes. Tiempo.
- Proporciona tutoriales de documentación y desarrollo ricos, esforzándose por reducir el umbral de desarrollo de los programas EBPF;
Blog/Paper/One Other Varios
- Portal: mi blog
- Zhihu: Zhihu de Yunwei