Recomendado por programadores T9, ruta de aprendizaje Linux C / C ++ (con información)

Prefacio

Linux C / C ++ es una ruta de aprendizaje desde cero conceptos básicos hasta grandes dioses, mi propia ruta de aprendizaje real, hay muchos productos secos, se recomienda recopilar y leer con atención.

Durante el período escolar, estuve tomando la ruta de aprendizaje de Linux C / C ++. Después de la pasantía de verano, la batalla de reclutamiento de otoño y el reclutamiento de la escuela, la mayoría de los puestos que voté estaban en la dirección de fondo de Linux C / C ++. Tengo mi propio comprensión de esta dirección.

Han pasado aproximadamente 2 años desde que entré en contacto con C ++ y ahora estoy trabajando oficialmente. He explorado algunas rutas de aprendizaje en esta dirección y métodos de aprendizaje de programación. Después de leer este artículo, espero que los estudiantes que están en el camino de Linux C / C ++ puede ayudar.

Inserte la descripción de la imagen aquí

[Beneficios del artículo]: el editor recomienda un grupo de comunicación en lenguaje C / C ++: 832218493! He seleccionado algunos libros de aprendizaje y materiales de video que creo que es mejor compartir en los archivos del grupo, ¡y puede agregarlos si los necesita! ~

1. La situación de la escuela que contrata la oferta Linux C / C ++

Soy un estudiante de pregrado en una universidad dual no universitaria y una clase no disciplinaria. La especialidad está orientada al hardware (el plan de estudios de la escuela tiene solo un lenguaje C relacionado con la programación, y el resto de los cursos no tienen nada que ver con programación), y nunca lo he tomado en la escuela.Qué gran premio.

La base informática es cero. Estuve expuesto al lenguaje C en el primer semestre de mi segundo año. Aprendí el lenguaje C y la estructura de datos en mi segundo año. Empecé a aprender conceptos básicos de computación y C ++ en mi tercer año en el laboratorio de la escuela. Recibí una oferta de Dachang.

Situación de la oferta de contratación escolar:

Ingeniero de desarrollo de fondo de Tencent (conversión de pasantía)
Baidu Shoubai feeds stream, ingeniero de desarrollo de software Desarrollo de
fondo de Meituan (entrevista de dirección de C ++)
trabajo para ayudar al ingeniero de desarrollo de fondo
Buen futuro ingeniero de
desarrollo de fondo Thunder Ingeniero de desarrollo de fondo de
juego Shanda Ingeniero de desarrollo de C ++
. . .
Pasantía en Tencent en el verano de 2018 y Baidu a principios de 2019. La escuela reclutó más de una docena de ofertas en la dirección de Linux C / C ++. La elección final también fue muy metafísica. Fui a la empresa a la que quiero ir y trabajo en un puesto que me gusta Ahora estoy programando El camino va más y más lejos.

2. Algunas reflexiones sobre la dirección de Linux C / C ++

Para elegir la dirección, muchas personas han elegido la dirección Java o Python. De hecho, hay muchas personas que estudian Java o Python, y hay muchos requisitos laborales. Comenzar puede ser más fácil que la dirección Linux C / C ++, pero aprender más En profundidad, cada uno tiene su propia Dificultad, primero determine la dirección y luego estudie en profundidad.

La dirección Linux C / C ++ es en realidad muy poca en China. La cantidad de personas que estudian en esta dirección es relativamente pequeña. En términos generales, se prefiere el lenguaje C o Python para ingresar. C y C ++ también perduran en las clasificaciones de programación. Adelante, si te gusta y te interesa, puedes ir en esta dirección.

Dirección Linux C / C ++. Muchas grandes empresas nacionales tienen puestos de contratación en esta dirección. BAT los tiene, especialmente Tencent. La arquitectura subyacente está escrita en C ++. Muchos módulos de búsqueda del núcleo de Baidu también están escritos en C ++. Alibaba Cloud también está contratando C ++ Los ingenieros que estudian bien en esta dirección no tienen que preocuparse en absoluto por encontrar trabajo, los que estudian en general son en realidad más difíciles de encontrar.

La eficiencia de Linux C / C ++ es más rápida que la de Java y Python. Se inclina más hacia la capa inferior. Puede manipular directamente la memoria, lo que es útil para mejorar el pensamiento de programación y la capacidad lógica. De hecho, aprender esto La dirección es un poco aburrida. Por ejemplo, los rastreadores de Python, Java y el front-end pueden hacer algunas cosas interesantes, y pequeños programas han desarrollado algunos productos, que se pueden usar rápidamente en el combate real para divertirse programando y estimular aún más su propio aprendizaje.

No hay tantas cosas interesantes que hacer en la dirección de C ++. Durante un largo período de tiempo, debe seguir aprendiendo por su propio interés.

Es realmente doloroso caminar todo el camino. Pensé en dejar esta dirección durante la escuela. Una vez quise aprender Java. Podría ser mejor (todavía hay mucha gente aprendiendo Java). Siempre que me rindo, pienso en ello. Llevo tanto tiempo estudiando, y luego insisto en perseverar, y he llegado hasta el final, siento que tengo mucha suerte. A veces, realmente no tengo que estar en C ++. Depende de todo el mercado. ¡Para, elige una buena dirección, profundiza!

En cuanto a la elección de Java o C ++, ninguna dirección es necesariamente fácil de encontrar un trabajo, y ninguna dirección está garantizada para tener altos salarios La industria de Internet, especialmente aquellos que dependen de la tecnología, todos dependen de sus propias capacidades técnicas.

Aquellos que eligen ir en la dirección de C ++ deben ir a Linux C / C ++. Para la programación de redes, ¡aprender Linux es muy importante!

A Dachang le gusta estudiar los conocimientos básicos de informática. Los conocimientos básicos determinarán en gran medida si puedes ingresar a Dachang. Debes prestar atención al aprendizaje de los conocimientos básicos; preparación de reclutas de otoño: básico + algoritmo + proyecto, además de ti mismo La dirección (C ++, Java, Python, front-end, etc.), cada enlace debe estar preparado para obtener la oferta más grande de la gran fábrica. El conocimiento es muy importante. Una vez que tenga conocimiento, verá el ruta de aprendizaje.

3. Clasificación de los conocimientos informáticos básicos

Conceptos básicos de la computadora: estructura de datos + algoritmo, sistema operativo + red informática, base de datos + Linux, lenguaje C

Herramientas esenciales para el trabajo: Linux + Git + Sql

No importa en qué dirección esté estudiando, estos cimientos no pueden ignorarse. Si tiene tiempo, debe ser sólido. Con una base sólida, puede ir más lejos y más rápido en esta industria.

En términos de requisitos de algoritmos, la dirección C ++ tiene requisitos significativamente más altos para los algoritmos, ¡y las habilidades de algoritmos deben ser sólidas!

Cuarto, la ruta de aprendizaje en profundidad para LinuxC ++

Conceptos básicos de C ++: C ++ es un lenguaje orientado a objetos. Debe comprender la idea de orientado a objetos. En primer lugar, los conocimientos básicos de C ++ deben establecerse firmemente. Justo después de la transición de la orientación a procesos, debe adaptarse a la orientación a objetos. escritura.

Al aprender la orientación a objetos, también debe considerar cómo usar la orientación a procesos para lograr la orientación a objetos (de hecho, un miembro de la estructura es un puntero de función). Para el conocimiento de Linux C ++, enumero brevemente lo siguiente:

Análisis de código fuente

1. Estructura de datos de
uso común 2. Patrón de diseño de uso común
3.
Nginx 4. ZeroMQ

La importancia de la estructura de datos y los algoritmos es evidente.
Combinación de lo nuevo y lo antiguo: "Estructura de datos y análisis de algoritmos" + "¡Ajá! Algoritmo ''
enlace: https://pan.baidu.com/s/1EHFdvfvR6C3t0nQn9Z8cQQ Contraseña: nrni

Nginx
principalmente maestros
1.
Infraestructura nginx
2. Arquitectura http 3. Mecanismo de comunicación entre procesos
4. Estructura de datos avanzada de nginx
5. Memoria compartida en bloque
6. Diseño del mecanismo de subida

E-book: "Competente en nginx", "Desarrollo de Nginx desde la entrada al maestro", "Análisis en profundidad de nginx"
enlace: https://pan.baidu.com/s/1dzp0EfrhWeRjLObavP1r2w Contraseña: 3ejg

Video:
código fuente nginx : implementación del
enlace del grupo de subprocesos : https://pan.baidu.com/s/1GFcfdlK1fcg1E6PW9q3mLQ contraseña: implementación
práctica eo8o del
enlace de desarrollo del módulo nginx : https://pan.baidu.com/s/ 1d3O9-6CRbI- K5fW39_9JsA Contraseña: cpoc

ZeroMQ
1. Modelo de mensaje
2. Protocolo común
3. Análisis de rendimiento y comparación clásica de mq
4. Mecanismo de implementación de comunicación de red de bajo nivel
5. Arquitectura del sistema y principio de implementación
Libro electrónico
: enlace "tutorial zeromq" : https://pan.baidu .com / s / 12Le05HyW2gESnCDQMPBWxw Contraseña: bcxl
Video:
Enlace "Programa de servicio de actualización sin tiempo de inactividad" : https://pan.baidu.com/s/1VG3t3apQctbBzjvZuOgl2A Contraseña: 8i3c

desarrollo sdk

Debe tener la capacidad de hacer ruedas y también debe tener la conciencia de no hacer ruedas SDK es una capacidad de empaquetado necesaria para el desarrollo avanzado.

Componentes de alto rendimiento
1. Cómo diseñar un grupo de memoria
2. Cola de mensajes en escenarios de alta concurrencia
3. Implementación de un marco de rutina
4. Grupo de subprocesos de escritura a mano
5. Grupo de solicitudes asincrónicas
6. Grupo de enlaces

IO de red de alta concurrencia
1. La diferencia entre los modelos select, poll y epoll 2.
Modelo de IO del sistema
Linux 3. Comprender la programación de alta concurrencia del servidor Linux
4. Diseño de la arquitectura de la capa de acceso a la red

Pila de protocolos de red
1.TCP / UDP / IP / ETH
2. multihilo para lograr una alta concurrencia
3. Ventana corredera
4. Retardo de confirmación
5. temporizado retransmisión
6. El control de flujo
7. TCP apretón de manos de onda
e-libro: "Desarrollo SDK Manual"
enlace : https://pan.baidu.com/s/1IE9MLCBWQsDci9f5VNKDsw Contraseña: 7nqh
Video: "Análisis en profundidad de la pila de protocolos tcp / ip" + enlace "Epoll combat secret"
: https://pan.baidu.com/s / 1hTwcaFjxoynFW8xZUMQhgA contraseña: 2err

Racimo

Habilidades de producto imprescindibles

1.Mysql cluster
2.redis cluster
3.fastdfs cluster
4.nginx cluster
5.mongoDB cluster
6.zookeeper cluster

e-book: "Estudio de caso de sistema Linux", "Implementación de clúster de Linux de alta disponibilidad", "Arquitectura y servicios de clúster de Alibaba Hadoop Sistema ",
enlace " clúster mysql " : https://pan.baidu.com/s/1qYmE8yLu3qHmWBb-8BVL9Q Contraseña: 1zj9

Sistema Linux

Linux es un tema que todos los ingenieros discutirán

1. Programación del entorno
2. Operación y mantenimiento del sistema
3.

Libro electrónico de programación del kernel : "Tutorial de introducción a Linux", "Cocina privada de Linux de Niaoge", "Diseño e implementación del kernel de Linux", "Análisis en profundidad del código fuente del kernel de Linux"
Enlace: https: //pan.baidu.com/s/1Qcm1QZEZyI8e9b3klRxZrg Contraseña: c9vh
Video: Serie de tutoriales de introducción a Linux, Serie de tutoriales de kernel de Linux
Introducción: https://ke.qq.com/course/444655?taid=3884084955105519&tuin = 37cd5811
Kernel: https: //ke.qq.com/course/431590? SaleToken = 1746506 & from = pclink

Optimización del rendimiento

El punto de inflexión entre el maestro y el novato

1. Ajuste de mysql
2. Ajuste de Linux
3.

Libro electrónico de ajuste de gcc : "Mysal de alto rendimiento", "Monitoreo y diagnóstico del rendimiento de la base de datos mysql", "Compartir tecnología mysql: un paso para lograr la optimización de mysql"
Enlace: https: // pan .baidu.com / s / 1pJNjzRG2U9GqsXpd80G1OQ Contraseña: rjke

Video:
Enlace "Optimización del rendimiento del servidor-Eficiencia asincrónica" : https://pan.baidu.com/s/1TE-qTFcnvCkq5mNm7EFs3g Contraseña: mkzf

Git

1. Cómo funciona Git
2. Almacén remoto
3. Administración de etiquetas
4. Administración de sucursales Resolución de conflictos
5.

Libros electrónicos de GitHub y Code Cloud : "Administración de control de versiones de Git", "Guía autorizada de Git", "Introducción a Git a la competencia"
enlace: https: //pan.baidu.com/s/10SMPuGjj3oxV7OQXbtqCbA Contraseña: f3e3

Video: La serie "Introducción a la competencia en Git" se completará pronto.
Parte del video: Enlace: https://pan.baidu.com/s/1kuYnZNlMN4AjLlYVnY6RXQ Contraseña: csfr

Arquitectura distribuida

La arquitectura técnica de los productos de primera línea de Internet, mejora la visión propia y un paso hacia la actualización tecnológica integral

Libro electrónico: "La belleza de la arquitectura",
enlace "Arquitectura de tecnología de Internet fácil de entender y su desarrollo" : https://pan.baidu.com/s/117jVwPMh9Ww1QYGaYB32nA Contraseña: 5dp2

Video: "0 ~ 10 mil millones de arquitectura de capa de acceso a la red pv"
Enlace: https://pan.baidu.com/s/1eRqaYQmvJnalB2KXb_5qkg Contraseña: hitg

Para la comprensión de iteradores y configuradores de espacio, por ejemplo, ¿cuáles son los escenarios de aplicación del configurador de espacio de primer nivel y el configurador de espacio de segundo nivel? ¿Cuál es la naturaleza del configurador de espacio primario y secundario y cómo usar el grupo de memoria para administrarlo? Cuáles son los problemas, cómo se implementa el código fuente, etc., estos problemas deben ser considerados.

Programación de red Linux:

1. Entorno de proceso Linux: proceso zombie, proceso huérfano, proceso demonio, grupo de proceso, sesión, grupo de proceso en primer plano, grupo de proceso en segundo plano
2. Proceso de Linux siete métodos de comunicación: señal, archivo, tubería, shm, sem, msg, socket
3, Subprocesos de Linux: mutex, mecanismo de bloqueo, variables de condición, semáforos, bloqueos de lectura y escritura
4. Modelo de simultaneidad en Linux: multiproceso, multiproceso, grupo de subprocesos
5. Multiplexación de E / S en Linux: select, poll, epoll Alta concurrencia
6, programación de red Linux
7, biblioteca estática y biblioteca dinámica

Cinco, resumen

Para los lectores que no pueden encontrar recursos de libros y videos, pueden agregar el grupo de comunicación de lenguaje C / C ++ del editor: 832218493! He seleccionado algunos libros de aprendizaje y materiales de video que creo que es mejor compartir en los archivos del grupo, ¡y puede agregarlos si los necesita! ~

Notas y videos básicos de C / C ++
Inserte la descripción de la imagen aquí

Materiales de video de C / C ++ Linux

Inserte la descripción de la imagen aquí

¡Acumula con el tiempo, finalmente logra algo! ! !

Supongo que te gusta

Origin blog.csdn.net/lingshengxueyuan/article/details/112954146
Recomendado
Clasificación