El andamio que ha dominado durante mucho tiempo el campo Javaee ha liderado con Spring Struts2 mybatis/Hibernate;
Primavera:
La primavera no es solo para los servicios de Java. Como la implementación de Spring como estándar CGI, no es solo un marco en el campo Java, sino que la plataforma C# aún puede beneficiarse; Spring proporciona varios métodos de configuración de anotación convenientes como Abstraction o Bootde Solutions Integrated, que simplifican enormemente la base del proyecto de Javaee;
Durante el uso de la primavera, los dos lados se diferencian, algunos son anotaciones de peso ligero y otros tienden a ser anotaciones completas.
En primer lugar, la premisa de la anotación es que debe pasar por proxy proxy, dinámico, estático y cglib. Para anotaciones livianas, el ángulo es anotaciones estáticas o únicas.
Por ejemplo, las anotaciones del controlador, estas anotaciones únicas o anotaciones en tiempo de compilación se inicializan en el contexto del proyecto como una exploración implícita y anotaciones relacionadas como el servicio, proporcionando instancias de objetos livianos singleton. Considerado como la primera opción. Esto reduce el costo del proxy y la reflexión durante el período de ejecución, y también ahorra mejores recursos para la pila de tiempo de ejecución.
Otro tipo, como ResponseBody, es una anotación dinámica o anotación en tiempo de ejecución. Cada vez que solicite, se ejecutará el reflejo de la anotación. La anotación del período de ejecución es, por supuesto, ocupar recursos.
En general, no se pueden ignorar por completo las anotaciones necesarias. Basado en el método de solicitud y respuesta basado en los conceptos básicos de servlet, no hay MVC, que no se puede resolver, tomando parámetros, pasando parámetros, devolviendo, etc., y no hay necesidad de anotaciones durante el tiempo de ejecución. Las anotaciones durante el tiempo de ejecución parecen reducir la cantidad de código. Para compensar las diversas deficiencias en este proceso, se ejecutará una anotación dinámica de un círculo para ejecutar una anotación que use dentro del método. Para las anotaciones de parámetros escritas en el método, ¿qué código falta en comparación con el uso de la solicitud, obtenga? Es solo que el proceso original de un solo paso se ha agregado para agregar una capa de intercepción de código.
Cómo saber si una anotación es una anotación en el período de tiempo de ejecución o tiempo de compilación es muy simple. Haga clic en Ctrl+mouse y verá:
@Target ({elementtype.type, elementtype.method})
@Retention (retenciónPolicy.Runtime)
@Documented
Retención Este tipo de enumeración ilustra por completo e ilustra claramente el período de la anotación que usa.
A todos les gusta usar singletons con primavera, lo cual es una excelente manera. Singleton no tiene nada que ver con la concurrencia misma, excepto que debe hacer que compite por la identificación de recursos.
Si tiene que tener muchos objetos prototipo en su proyecto, significa que abusó o usó el objeto incorrecto. MVC básicamente tiene parámetros y retornos entrantes. Cada solicitud es un hilo. Una respuesta de solicitud separada tiene lo que ingresan y salen, que está completamente aislado. A partir de esto, cuando se trata de mybatis, muchas personas usan varios resumen en la configuración de mybatis, y cada vez que varios frijoles van y vienen. Después de una solicitud, los frijoles como parámetros y resultados deben ser una vez. La superficie de mybatis es clara para el mantenimiento de SQL, lo que tiene costa de reducir en gran medida la eficiencia de JDBC. Entonces a nadie le importa. Para ellos, los frijoles no tienen nada, y no entienden ni se preocupan por GC. Si tienen problemas, agregue memoria y agregue memoria a la parte superior. Todo lo que resuelven es el problema del tiempo y usa el espacio para intercambiar tiempo. Con los mismos parámetros y la asignación de resultados, entonces si usa el mapa de JDK, cuál es mejor, es naturalmente el mapa propio de JDK.
Siempre he creído obstinadamente que el consumo del propio objeto de New JDK es mucho más pequeño que el de definir un frijol por uno mismo. Por qué, lo siento, tampoco lo sé. Así que siempre vengo a mapear y mapear. Cuando usa mybatis, ¿debe detectar de cerca si sus cosas están representando a su clase? El método es muy simple. En el registro del proyecto, abra la depuración para ver si su registro se crea una nueva SQLSession cada vez. Si este es el caso, debe tener en cuenta que su sesión de mybatis no está agrupada y no proxyed por las cosas. Si hay un SQL competitivo en un método, no hay error en lo siento, pero se descubre que la base de datos no ejecuta su SQL. Pronto, encontrará que el grupo de conexión se usa muy rápidamente y con frecuencia creará nuevas conexiones. Por supuesto, si no puede usar mybatis, no lo dude, es correcto no usarlo.
¿Por qué tenemos que intentar usar anotaciones estáticas? Es muy simple. Las clases de primavera son básicamente singletons. Los proyectos son lo suficientemente grandes, y las instancias de frijoles son suficientes. ¿Qué toman estos singletons? La instancia del objeto está en el espacio del montón y se hace referencia en la pila. Entonces, ¿cuándo GC reciclará objetos de estos singletons? ¿qué piensas? Por lo tanto, cuando se basa en la anotación, intente minimizar el uso de proxy dinámico. Deje más recursos para su uso donde sea necesario.
En el pasado, diríamos que no hay montón, pero ahora el grupo constante de cadena de JDK1.7 ya ha entrado en el montón.
¿Cuál es mejor, tipo de compilación o interpretabilidad? Por supuesto, es analítico, y el tipo de compilación es similar al modelo de mediación. Por lo tanto, es mucho más difícil construir un excelente lenguaje compilado que un lenguaje interpretado.
La estructura de la web es muy clara. Primero, todavía está en el contexto, y luego una serie de componentes en secuencia. Lo más importante que somos el componente Servlet, que es el estándar Javaee, y el resto de los componentes web son estándares de protocolo, que todos deben tener. Luego verá que el mapeo de servlets en muchos proyectos es /, lo cual es una mala manera. Debido a que es muy simple, JS o CSS nunca necesitan ser procesados a través de servlets. Por lo tanto, el mapeo considera principalmente la interacción con los componentes del servidor de los contenedores web, y generalmente proporciona dos tipos de identificación, como .do y .Action .Do requiere autenticación de permiso, etc., la acción se libera directamente. JS, etc. no necesita ingresar al servlet y regresar directamente del contexto web de acuerdo con la URL, y luego no hay forma de interceptar y liberar MVC en MVC. Esta es una pérdida de tiempo para crear problemas y resolver problemas, lo cual no es una buena manera. De esta manera, independientemente de si Nginx está involucrado o no, sus recursos estáticos son estáticos para los contenedores web y no tienen ninguna relación con los servlets. Los servlets solo se relacionan con lo que necesita manejar.
¿Dónde está el mejor lugar para escribir JS?
Muchas personas están acostumbradas a escribir JS en JSP o HTML, lo cual es malo.
Cuando construimos un proyecto, debemos esperar que el navegador almacene en caché nuestros JS y CSS.
Luego, JS escrita en la etiqueta de script de la página es solo una etiqueta, que no es diferente de DIV o entrada y no se almacenará en caché. Revisé mucha información, y el caché que vi obviamente dijo que la unidad de caché es un archivo. No la etiqueta. Por lo tanto, no estoy completamente seguro de escribir su CSS JS en el archivo e introducir el archivo para que el archivo se almacene en caché, porque no hay una respuesta afirmativa directa, es mi suposición.
JSP es en realidad un servlet, por lo que es una página dinámica. Cada vez que necesita cargar la clase para traducirse dinámicamente, y luego el método de escritura en la clase escribe la página a HTTP al navegador y representa el navegador. Si es HTML, es estático. Dinámico y flexible, no hay duda de que, dado que es un servlet, es un objeto Java, y varias etiquetas y métodos Java se denominan posibilidades. Las páginas estáticas deben ser manejadas por usted mismo. Si usa un lenguaje macro similar a las páginas estáticas, es mejor usar JSP directamente.
¿Cuántos datos se cargan a la vez en la página?
Si el contenido que se muestra en su página se basa en categorías y listas, la cantidad de datos es muy pequeña, con cientos de elementos. El tipo ahora se muestra en la aplicación de orden de comida para llevar, luego todas las categorías y datos se dan al mismo tiempo. Por lo tanto, el procesamiento se procesa en el lado del cliente, el cambio de categoría y la vista previa en todo el proceso se procesan en la página, incluida la búsqueda. El JS ejecutado en nuestro cliente, el teléfono móvil o la computadora de A no competirá con el teléfono móvil o la computadora de B. Si cambia un tipo cada vez que cambia a un tipo, cepillará un AJAX y es el mismo grupo de contenedores web, para que haya competencia. Cuanto más frecuente sea la operación, mayor será la competencia. Esto está estrechamente relacionado con el escenario real.
La cantidad de datos devueltos por una consulta no tiene nada que ver con el rendimiento. Miles de miles de datos están solo en el nivel de decenas de KB.
El número de consultas, es decir, el número de interacciones con el servidor, es la razón directa que afecta el rendimiento general.
La cantidad de datos en una consulta es proporcional al tamaño de la tabla que se considera. No acelerará la consulta devolviendo 10 consultas a la vez, y 10 consultas a la vez, frenando la consulta. La operación de la base de datos es esencialmente una aplicación de colección y no se crea nada.
La premisa de la sintonización es que la cantidad dada es la más apropiada, no cuanto más das, más apropiado es. La memoria que JDK o Tomcat pueden consumir en diferentes dígitos de OS.
Usar nginx;
Use caché cuando sea necesario;
Seleccione Mensaje Middleware u otro middleware de acuerdo con si necesita;
La separación de bases de datos o esclavos maestros, etc. debe ser que la base de datos actual no pueda admitir el volumen de tráfico.
Singleton es una buena manera.
La lectura múltiple es una cuchilla afilada, y no distingue entre el lenguaje específico.
Maven Management es una buena manera, pero el cuerpo principal de su proyecto debe ser WebMVC, crear un proyecto web, incrustar a Maven como un componente, en lugar de crear un proyecto Maven y luego convertirlo en un proyecto web, a menos que esté inactivo.
Usando la primavera, actualmente es el mejor andamio.
Use JDBC tanto como sea posible, si es posible.
No interactúe con el servidor cuando pueda lograr cosas en el cliente. Los recursos del cliente son vastos y los recursos del servidor son limitados.
Intente enviar menos solicitudes. Los códigos que envían menos solicitudes son un buen código, a menos que sea una aplicación instantánea.
Las herramientas en cada código son herramientas, y la API es lo que más necesita comprender. No hay una respuesta precisa a la que uno sea mejor y cuál no es bueno.
Todo es un objeto, y es puro para Java. El proxy es un objeto, la reflexión es un objeto, el objeto es un objeto y el tipo de datos básicos no es un objeto.
Las cosas distintas de los tipos básicos se completan a través de objetos. No importa cuán complejo sea el proceso, se completan a través de los métodos de objeto correspondientes combinados con los parámetros del método. Cómo serializar una clase y deserializarla, para decirlo sin rodeos, es el IO y la transmisión del archivo, y luego cargarlo en JVM y construirlo en un objeto.
La razón por la cual RPC no se llama en un hilo. La cosa llamada es proxyed. El proxy convierte sus necesidades en parámetros y las envía como flujos de datos. El servidor convierte su transmisión de solicitud en objetos y luego los transmite hacia atrás. Luego construye el objeto y lo procesa a través del objeto.
Nio es una buena manera, Netty es una buena opción, ¿hay algún enchufe de múltiples subprocesos que supere a Netty?
Zookeeper es una excelente herramienta para una serie de soluciones, como un buen registro distribuido.
Estas cosas son todos principios y objetos, por lo que debe usarlas para leerlas con fuerza.
Lo anterior es la comprensión personal, y puede corregirlo.