¡La amarga historia de la agricultura de códigos! Después de cinco años de experiencia como arquitecto avanzado en Java, ¡mirando hacia atrás en el viaje a lo largo del camino!

1. Introducción

Los hermanos que se dedican a Java definitivamente quieren alcanzar un nivel superior, resolver más problemas con menos código y prepararse para una posible herencia y mantenimiento con una estructura más clara. Piénselo cuando crucé el río palpando las piedras, y he visto las rutas de aprendizaje introducidas por mucha gente, he ganado algunos avances en los últimos diez años. Ahora resumo un artículo basado en mi propia experiencia para referencia de los hermanos.

2.Haga un buen uso del marco que está utilizando

En el equipo que se ha unido, utilice el marco que el equipo ha seleccionado en colaboración con todos. Independientemente de si el marco es bueno o malo, y sus características, debe haber alguna razón para elegirlo. Y el marco que puede ser popular en la industria durante mucho tiempo debe tener sus ventajas.

El primer paso en el uso del marco es familiarizarse. Puede ser posible realizar nuevas funciones o modificar funciones existentes copiando y modificando el código de los predecesores, y gradualmente familiarizarse con el uso del marco.

El segundo paso es comprender en profundidad, después de saber cómo usarlo, dominar sus leyes según el uso y los fenómenos, y adivinar la estructura interna y el mecanismo operativo del marco, la mayoría de los cuales son definitivamente correctos.

El tercer paso es usarlo bien, después de tener un cierto sentido del mecanismo interno del marco, gradualmente ir resumiendo y adoptando mejores prácticas y adoptando métodos más concisos, claros o eficientes para lograr el mismo propósito. Puede consultar los documentos de "mejores prácticas" del marco (como el último capítulo del manual de referencia de Hibernate). Para aquellos que no proporcionan documentos de "mejores prácticas", puede resumir algo de experiencia y continuar mejorando.

No existe una mejor práctica absoluta, solo la mejor práctica adaptada a un escenario determinado, y una mejor implementación aplicable a la mayoría de las ocasiones. La posibilidad de elegir diferentes modos según la escena es un signo de mejora de nivel.

3. Comprender las bibliotecas estándar, las tecnologías de nivel empresarial y los proyectos de código abierto.

La acumulación existente en el mundo Java ya es muy rica.Cuando un determinado problema se siente como un problema común, es muy probable que haya bibliotecas de clases estándar listas para usar o proyectos de código abierto esperando allí. Un buen conocimiento de las bibliotecas estándar y los proyectos de código abierto puede reducir la carga de trabajo y hacer que la estructura del código sea clara y fácil de entender. La tecnología de nivel empresarial se refiere a la tecnología en la plataforma JavaEE, la mayoría de los cuales son estándares extraídos de acumulaciones existentes.Por ejemplo, JPA se deriva en gran medida de Hibernate. El uso de tecnología a nivel empresarial es muy beneficioso para la estandarización de procedimientos.

La comprensión de las bibliotecas estándar y los proyectos de código abierto no está en ningún orden en particular. Pueden ser transversales. Puede aprender lo que utilice. También puede utilizar su tiempo libre para elegir lo que le gusta estudiar, estudiar y hacer experimentos.

3.1. Biblioteca de clases estándar

En la documentación que viene con Java, puede ver la lista de bibliotecas de clases estándar (y herramientas de plataforma) y sus relaciones. La siguiente imagen es el diagrama de relaciones jerárquicas:

Elija los puntos que le interesan para obtener más información al respecto.

A primera vista, hay mucho contenido, pero de hecho es posible que muchos de ellos ya se hayan utilizado. Por ejemplo, JDBC debería haber sido utilizado por todos los programadores de Java antes de estar en el mundo. JNDI también debe ser algo con lo que se debe contactar al realizar proyectos WEB. Tal vez sean solo algunas de las API, pero todo son los tres pasos de comprensión, competencia y competencia. Si comprende, no se quedará atrás.

Entre ellos, las expresiones regulares, procesamiento XML, applet, concurrencia (multiproceso), red, IO, gráficos son funciones más prácticas, puede comenzar con ellas. En ocasiones más avanzadas se puede utilizar la interfaz local (JNI), la extensión de gestión (JMX), la reflexión, etc. Después de la reunión, se pueden aportar soluciones para más escenarios.

3.2. Empresa y tecnología

Incluyendo JavaMail, JMS, EJB, JPA, JSF, servicio web, etc., la lista específica se puede encontrar en el sitio web oficial de la tecnología JavaEE. Estas técnicas no son esotéricas de usar, e incluso más simples que las bibliotecas estándar.

3.3. Proyectos de código abierto

Los marcos son generalmente proyectos de código abierto, y actualmente no existe ninguna organización con la mayor cantidad de proyectos de código abierto que Apache. Puede aprender sobre proyectos de código abierto a través de sus necesidades. Por ejemplo, si necesita procesar documentos de Excel, entonces aprenda a usar PDI; si desea usar servicios web, puede ver CXF; si necesita procesamiento de cadenas, vea si está implementado en Commons Lang; si necesita operaciones IO, puede ver Ver si está implementado en Commons IO.

Además de Apache, hay muchas organizaciones de código abierto como eclipse, springsource y Jboss que ofrecen una gran cantidad de productos gratuitos. Si tiene tiempo, es una buena manera de aprender más. "Los caballeros no son diferentes por naturaleza, y también son buenos para engañar las cosas": los tipos poderosos no necesariamente escriben todo por sí mismos, pero a menudo usan una combinación de varios artefactos.

Por cierto, muchos proyectos de código abierto utilizan como nombres palabras relativamente raras en inglés o palabras hechas por uno mismo, por lo que es mejor ir al sitio web oficial para determinar su pronunciación. Mucha gente lee Struts (originalmente: swagger) como Structs, que obviamente se confunde con struct (estructura), que suena realmente amateur. Y PostgreSQL debe leerse como postgres-QL, no como postgre-SQL, respete la intención original del autor. Debian debería pronunciarse "Daiboian", que es una combinación de los nombres del autor y de su esposa. Es demasiado triste leer "stool". No lea "patrón excelente" en Ubuntu.

4. Escribe mejores programas

4.1. El formato del código es ordenado y elegante

Intente seguir las sugerencias de formato de código en el sitio web oficial y haga un buen uso de la función de formateo automático de la herramienta de desarrollo (Eclipse).

Las condiciones complicadas y el anidamiento de bucles se refinan en métodos, y los nombres de los métodos son significativos, de modo que las generaciones futuras vean el programa como si leyeran oraciones en inglés. Seguir el auto comentario del código. Preste atención para tratar de no usar pinyin tanto como sea posible, especialmente la interfaz entre módulos (es mejor usar un rango pequeño dentro del módulo) El uso mixto de palabras en inglés y pinyin hará que las generaciones futuras se desmayen. Hoy en día los diccionarios electrónicos tienen una gran variedad y son fáciles de usar, haz un buen uso de ellos para que el código sea elegante y al mismo tiempo puedas reconocer algunas palabras más.

4.2. Contenido de código eficiente

Después de usar muchos frameworks y proyectos de código abierto y escribir muchos programas usted mismo, puede comenzar a pensar en practicar el contenido de "Eficaz Java", cuándo, dónde y cómo usar tecnologías y mecanismos apropiados.

5. Comprender el modelo a través de bibliotecas estándar, tecnologías de nivel empresarial y proyectos de código abierto.

Cuando se trata de patrones, lo primero que piensas es en "patrones de diseño". Muchos principiantes han leído el libro "Patrones de diseño" para progresar. Sin embargo, según mi experiencia, no los entendía en ese momento. . No sabía por qué existían esos patrones. Sepa cuándo puede usarlos. De hecho, el llamado "modo" es solo el idioma de los predecesores, que se considera fácil de usar y ampliamente difundido por las generaciones posteriores. Todo el código del predecesor se copia, cambia y utiliza, y se puede decir que tal código es la realización de un cierto "patrón".

Con el uso de bibliotecas estándar, tecnologías de nivel empresarial y algunos proyectos de código abierto, el sentido de patrón se establecerá en la mente. Estas bibliotecas, tecnologías y proyectos en sí mismos han implementado muchos patrones, y su uso también es un patrón. Es solo que este último a menudo se conoce como combate real y no aparece como un "modelo" en las publicaciones.

"Modo" además de "Patrones de diseño", incluido el "Modo de arquitectura de aplicaciones empresariales", "Modo principal J2EE", puede haber más otros. Las bibliotecas estándar y los proyectos de código abierto (incluidos muchos marcos populares) tienen aplicaciones sobresalientes para la flexibilidad, conveniencia y elegancia del diseño.

La primavera es la realización del patrón de fábrica. JDBC y JMS son la realización del patrón de método de fábrica abstracto.

Además del conocido MVC, Struts en realidad implementa varios de los patrones centrales de J2EE.

Hibernate usa el modo Proxy internamente, y su existencia general es la realización de la "entrada de datos de tabla" en el "Modo de arquitectura de aplicaciones empresariales". El CMB en el antiguo EJB2.0 es más como una implementación de "entrada de datos de fila".

Estos patrones se aprenden directamente como conceptos. Sin experiencia práctica, no sé por qué existen y cómo usarlos, como hice al principio.

Si usa más productos prefabricados, lo sentirá. Sienta la conveniencia que brindan y compare las funciones similares entre ellas, puede ver la existencia de varios modos y su excelencia.

6. Comprender el verdadero significado de la orientación a objetos.

Después de comprender los patrones, encontrará que la base para realizar estos patrones es la encapsulación y el polimorfismo proporcionado por la orientación a objetos Este es también el significado de la aparición de la orientación a objetos.

Los ocho principios orientados a objetos se presentan en "Desarrollo de software ágil: principios, patrones y prácticas". Entre ellos, valoro el principio de "responsabilidad única". Este principio es muy útil al dividir módulos, y su pensamiento puede incluso extenderse al Organización Sobre la construcción de la estructura.

7. Arquitecto de Outlook

El arquitecto es un líder de equipo que necesita no solo controlar el todo, sino también comprender los cuellos de botella locales y proporcionar soluciones basadas en escenarios comerciales específicos. Un arquitecto necesita suficiente imaginación para expandir varios requisitos de destino en diferentes dimensiones y proporcionar una lista más completa de requisitos para los clientes de destino.

Los arquitectos juegan un papel muy importante en todo el proceso de desarrollo de software.

Método de obtención: Sígueme y agrega VX: MXW5308 para obtener recursos gratis. Recuerda conseguirlo después de prestar atención.

Con los pasos anteriores, debería poder existir como diseñador calificado. Si quieres ser arquitecto, un entrenador nos dijo una vez: "Aprende el kernel de Linux".

Los grandes pasos son: mire la versión 0.01 para comprender su estructura, mire la versión 0.10 para comprender su progreso, mire la versión 0.12 para comprender su mejora y mire la última versión para comprender su situación actual.

El método de aprendizaje es utilizar herramientas UML para realizar ingeniería inversa en los archivos fuente descargados del kernel de Linux. En el diagrama de clases obtenido, puede ver las dependencias del módulo. El módulo con el grado más alto es el núcleo del sistema. Desde este módulo, busque Cómo programar otros módulos y luego ver cómo cada módulo implementa sus propias funciones.

Diagrama de arquitecto avanzado

1. Leer el código fuente

Leer y analizar el código fuente es la capacidad de código más básica de los programadores, y también es la base de los productores de código. Aprender las ideas de diseño clásicas y los patrones de diseño comunes utilizados en el código fuente clásico puede ayudarlo a comprender cómo Daniel escribe código, de modo que pueda absorber macrodatos. Las habilidades de código de Niu. En las entrevistas de Alibaba, a menudo se preguntan los principios subyacentes de marcos como MyBatis y Spring.

Alguna experiencia y planificación de carrera de arquitecto avanzado programador Java de cinco años

Análisis del marco de código abierto

2. Arquitectura distribuida

Alibaba tiene muchos equipos grandes. Hay muchos equipos pequeños en este equipo grande. Después de los equipos pequeños, hacen negocios diferentes. Si desea convertirse en un jugador universal entre las empresas de Internet de primera línea, hay muchos en las empresas distribuidas más convencionales arquitectura, el conocimiento debe entenderse y aprenderse. Y durante el proceso de entrevista de Alibaba, el entrevistador hará preguntas sobre escenarios de aplicaciones reales: como microservicios, volumen de usuarios, simultaneidad, complejidad empresarial y escalabilidad, etc. No entraré en detalles aquí. Este pene proporciona una idea de aprendizaje de una arquitectura distribuida y también es un sistema que estoy aprendiendo actualmente:

Alguna experiencia y planificación de carrera de arquitecto avanzado programador Java de cinco años

Temas de arquitectura de alto rendimiento

3. Arquitectura de microservicios

Los microservicios son uno de los temas más candentes en la tecnología de la arquitectura de Internet, y también es la dirección que Bendi está estudiando e investigando actualmente. Durante la entrevista de Alibaba, el entrevistador rara vez hace preguntas sobre microservicios. Pero como desarrollador, un programador con sueños técnicos, la arquitectura de microservicios es la tecnología principal que debe entenderse ahora. El editor ha desarrollado un plan de aprendizaje de tecnología de microservicios para sí mismo:

Alguna experiencia y planificación de carrera de arquitecto avanzado programador Java de cinco años

Tema de arquitectura de microservicios

4. Programación concurrente

La programación concurrente es casi una pregunta obligada para todas las empresas de Internet en las entrevistas.La programación concurrente es una de las habilidades más importantes para los programadores de Java y una de las habilidades más difíciles de dominar. Requiere que los programadores tengan una comprensión profunda de los principios operativos del nivel más bajo de la computadora y, al mismo tiempo, requiere que los programadores tengan una lógica clara y un pensamiento cuidadoso, de modo que puedan escribir de manera eficiente, segura y confiable de múltiples subprocesos concurrentes. programas. En la actualidad, no existe un plan de estudios sistemático y completo para la programación concurrente en Internet. He recopilado mucha información y resumí un plan de estudios de estudio más completo:

Alguna experiencia y planificación de carrera de arquitecto avanzado programador Java de cinco años

Programación concurrente

5. Optimización del rendimiento

El rendimiento siempre ha sido un dolor de cabeza para los programadores. Cuando la arquitectura del sistema se vuelve compleja y grande, el rendimiento disminuirá. Especialmente las empresas de Internet de primera línea como Alibaba prestan la mayor atención. Por lo tanto, si desea ingresar a Alibaba, la optimización del rendimiento debe ser parte del aprendizaje y la comprensión en profundidad. . Aunque la optimización del rendimiento no es un experto, puede decir con confianza que es competente (nota: no debe escribir xxxx competente en su currículum, o el entrevistador lo aturdirá. Afortunadamente, este idiota todavía tiene confianza).

Alguna experiencia y planificación de carrera de arquitecto avanzado programador Java de cinco años

Optimización del rendimiento

6. Patrones de diseño

El patrón de diseño (patrón de diseño) es un conjunto de experiencia de diseño de código que se ha utilizado repetidamente, la mayoría de la gente conoce, clasifica y cataloga. El uso de patrones de diseño es para reutilizar el código, facilitar la comprensión de otros y garantizar la confiabilidad del código. No hay duda de que los patrones de diseño son mutuamente beneficiosos para los demás y los sistemas. Los patrones de diseño hacen que la preparación del código sea verdaderamente ingeniería. Los patrones de diseño son la piedra angular de la ingeniería de software, al igual que los ladrillos de un edificio. El uso razonable de patrones de diseño en el proyecto puede resolver perfectamente muchos problemas. Cada patrón tiene un principio correspondiente que le corresponde ahora. Cada patrón describe un problema recurrente que nos rodea y el núcleo del problema. Solución, por lo que puede ser ampliamente utilizado.

Alguna experiencia y planificación de carrera de arquitecto avanzado programador Java de cinco años

Patrones de diseño

Este diagrama de estructura fue dibujado por mí. No es difícil dominar las habilidades anteriores con un salario mensual de 30.000 yuanes. No es realmente fácil dominar todas estas tecnologías. Así que resolví estas tecnologías, y especialmente encontré algunos amigos para grabar algunos videos de tecnología de arquitectura Estos amigos tienen cierta reputación en el círculo y solían trabajar como arquitectos en empresas de Internet de primera línea. Estos materiales se han resuelto y ahora se pueden compartir con todos.

Alguna experiencia y planificación de carrera de arquitecto avanzado programador Java de cinco años

 

Alguna experiencia y planificación de carrera de arquitecto avanzado programador Java de cinco años

Captura de pantalla de datos parciales

Método de obtención: Sígueme y agrega VX: MXW5308 para obtener recursos gratis. Recuerda conseguirlo después de prestar atención.

8. Conclusión

Estos pasos no tienen límites estrictos y se pueden intercalar y realizar de forma iterativa.

El aprendizaje es un proceso que primero diverge y luego converge. Al principio parecía tener forma de abanico, cuanto más salías, más no sabrías y más necesitas aprender. Pero luego descubrirá que las cosas que ha aprendido tienen muchas similitudes, puede comprender rápidamente las cosas nuevas e incluso puede descubrir que algunas cosas son solo vino viejo en una botella nueva.

"Los tontos perciben las diferencias, los sabios perciben las semejanzas." Los tontos ven las cosas de manera diferente y encuentran el mundo difícil de comprender, mientras que los sabios son buenos para ver los puntos en común (leyes) entre las cosas para obtener el doble de resultado con la mitad del esfuerzo. Dado que los programadores pueden hacerlo, no crea que es un tonto.

Supongo que te gusta

Origin blog.csdn.net/weixin_45132238/article/details/114084239
Recomendado
Clasificación