Colección de citas famosas - Diccionario de frases chinas - Diccionario de clasificación Jeecg

Diccionario de clasificación Jeecg

¡JeecgBoot es una plataforma de desarrollo de código bajo basada en generadores de código! Arquitectura de separación de front-end y back-end SpringBoot2.x, SpringCloud, Ant Design & Vue, Mybatis-plus, Shiro, JWT, que admiten microservicios. El potente generador de código permite generar código de front-end y back-end con un solo clic, ¡lo que permite el desarrollo con poco código!

JeecgBoot proporciona una serie de módulos de código bajo para lograr un verdadero desarrollo en línea sin código: desarrollo de formularios en línea, informes en línea, capacidades de configuración de informes, diseño de gráficos en línea, diseño de pantalla grande, capacidades de configuración móvil, diseñador de formularios. , proceso de diseño en línea, configuración de automatización de procesos, capacidades de complemento (conectable) y más.

El propósito de JEECG es realizar funciones simples a través de la configuración de OnlineCoding y realizar el desarrollo de código cero; las funciones complejas se generan mediante el generador de código y se combinan manualmente para realizar el desarrollo de código bajo, lo que garantiza inteligencia y flexibilidad; se da cuenta Admite el desarrollo de código bajo y admite codificación flexible, resolviendo las deficiencias de los productos de código bajo actuales que generalmente son inflexibles.

Proceso de negocio JEECG: utilice el flujo de trabajo para implementar y ampliar la interfaz de tareas para desarrollar y escribir lógica de negocios. Forms ofrece varias soluciones: diseñador de formularios, formulario de configuración en línea y formulario de codificación. Al mismo tiempo, realiza el diseño de separación (acoplamiento flexible) de procesos y formularios, y admite la configuración flexible de nodos de tareas, lo que no solo garantiza la confidencialidad de los procesos de la empresa, sino que también reduce la carga de trabajo de los desarrolladores.

La plataforma de desarrollo de código bajo Jeecg-Boot se puede aplicar al desarrollo de cualquier proyecto J2EE, especialmente para proyectos SAAS, sistemas de gestión de información empresarial (MIS), sistemas de oficina interna (OA) y recursos empresariales. sistemas de planificación (ERP), sistema de gestión de relaciones con el cliente (CRM), etc. Su modo de desarrollo de fusión manual semiinteligente puede mejorar significativamente la eficiencia del desarrollo en más del 70% y reducir en gran medida los costos de desarrollo.

1. Registro y descubrimiento del servicio Nacos

2. Centro de configuración unificado

3. Postura distribuida, k8s, Jenkins

15, inicio de sesión único CAS

16, límite actual de enrutamiento

Diagrama de arquitectura de microservicio

. Ingrese la descripción de la imagen

Resultados de salida:

Mire primero la primera declaración impresa. En Java, el símbolo == es un operador de comparación que determina si un tipo de datos básico y un tipo de datos de referencia son iguales. Si es un tipo de datos básico, == compara si los valores son iguales. Si es un tipo de datos de referencia, == compara si las direcciones de memoria de los dos objetos son iguales. Las cadenas no pertenecen a los tipos de datos básicos en 8, pero los objetos de cadena pertenecen a tipos de datos de referencia. En el código anterior, "abc" se asigna a dos objetos de cadena st1 y st2, los cuales apuntan a la misma dirección, por lo que el resultado de la comparación == en la primera declaración impresa es verdadero.

Entonces veamos la comparación de signos iguales en la segunda declaración impresa. Sabemos que igual es un método del objeto de la clase principal y anulamos este método igual en la clase String. Encontramos el método igual en la clase String en la documentación de JDK API 1.6 y hacemos clic para comparar la cadena con el objeto especificado. El resultado es verdadero si y sólo si el argumento no es nulo y es un objeto de cadena que representa la misma secuencia de caracteres que este objeto.

Preste atención a la misma secuencia de caracteres y compare dos matrices, listas y diccionarios para ver si son iguales. Esta lógica se utiliza para escribir código. Dado que los valores de st1 y st2 son "abc", ambos apuntan al mismo objeto y la secuencia de caracteres actual es la misma, por lo que el resultado impreso de la segunda línea también es correcto.

Dibujemos un diagrama de memoria para representar el código anterior para que parezca más convincente.

El proceso de la memoria es aproximadamente el siguiente:

La respuesta es: crear dos objetos en la memoria, uno en la memoria del montón y el otro en el grupo constante. Los objetos de memoria del montón son copias de objetos del grupo constante.

Veamos el diagrama de memoria.

Cuando vemos la palabra clave new, debemos pensar que los objetos generados por new se almacenan en la memoria del montón. Luego explicaremos por qué los objetos en el montón son copias de objetos en el grupo constante.

"abc" pertenece a una cadena y la cadena pertenece a una constante, por lo que debe crearse en el grupo de constantes, por lo que el primer objeto creado es "abc" en el grupo de constantes.

¿Por qué el segundo objeto es una copia en el montón? Para hacer esto, necesita encontrar la anotación para el constructor String (String original) en JDK API 1.6: Inicializa un objeto String recién creado con los mismos parámetros que representan una secuencia de caracteres; en otras palabras, la cadena recién creada es el parámetro; copia de cadena de. Entonces salió la respuesta: dos objetos.

Respuesta: Falso y verdadero.

Gracias a la experiencia y teoría del análisis de la memoria mencionada en los dos párrafos anteriores, puedo obtener rápidamente la respuesta anterior. ==Compare las direcciones de memoria de los objetos st1 y st2. Dado que st1 apunta a la dirección de la memoria del montón, st2 no creará una nueva cuando vea que "abc" ya existe en el grupo constante, por lo que st2 apunta a la dirección de memoria. del grupo constante, por lo que == juicio El resultado es falso y los dos no son iguales. La segunda comparación es si las dos secuencias de cadenas son iguales. Debido a que solo hay un "abc", son completamente iguales. El diagrama de memoria es el siguiente

La respuesta es: verdadero y verdadero

Análisis:

Respuesta: falso y verdadero.

La primera respuesta anterior es falsa, la segunda respuesta es verdadera y la segunda respuesta es verdadera. Podemos entenderla fácilmente, porque una es "abc" y la otra está empalmada. la comparación es igual a, este es el resultado real y podemos entenderlo fácilmente. Entonces, ¿por qué fue falso el primer juicio? Estamos confundidos. Nuevamente, usemos comentarios de API y gráficos de memoria para explicar por qué esto no es igual.

Primero, abra la introducción a las cadenas en JDK API 1.6 y busque la imagen a continuación.

Los puntos clave están en círculos rojos. Sabemos que todos los datos y cadenas se operan mediante el signo más (+) y el resultado final es una nueva cadena concatenada. El comentario anterior explica que el principio de este empalme es que la clase StringBuilder o StringBuffer y el método append dentro implementan el empalme, y luego llaman a toString () para convertir el objeto empalmado en un objeto String y finalmente asignan la dirección del objeto de cadena a la variable. Con esta comprensión, dibujemos un diagrama de memoria para su análisis.

Proceso de memoria aproximado

Por lo tanto, los resultados del juicio == de st3 y st2 no son iguales porque las direcciones de memoria de los dos objetos son diferentes.

Esta pregunta de la entrevista requiere dominar por completo algunas anotaciones y principios en la API JDK, así como el análisis de gráficos de memoria, para poder obtener el resultado correcto. Admito que dibujar mapas de memoria me ayudó a comprender por qué las respuestas eran como eran. Después de dibujar un mapa de memoria y obtener la respuesta, lo encontrarás realmente interesante y tendrás este suspiro al final.