Red de conocimiento informático - Conocimiento sistemático - Catálogo de libros que analiza en profundidad la historia interna de la tecnología web Java

Catálogo de libros que analiza en profundidad la historia interna de la tecnología web Java

Capítulo 1 Proceso de solicitud web en profundidad 1

1.1 Descripción general de la arquitectura de red B/S 2

1.2 Cómo iniciar una solicitud 4

1.3 Análisis del protocolo HTTP 6

1.3.1 Herramientas para ver información HTTP 8

1.3.2 Mecanismo de almacenamiento en caché del navegador 9

1.4 Resolución de nombres de dominio DNS 12

p>

1.4.1 Proceso de resolución de nombres de dominio DNS 12

1.4.2 Seguimiento del proceso de resolución de nombres de dominio 15

1.4.3 Borrar nombres de dominio almacenados en caché 18

1.4.4 Varios métodos de resolución de nombres de dominio 19

1.5 Mecanismo de funcionamiento de CDN 20

1.5.1 Arquitectura de CDN 20

1.5 .2 Equilibrio de carga 21

1.6 Resumen 24

Capítulo 2 Análisis en profundidad del mecanismo de trabajo de Java I/O 25

2.1 La arquitectura básica de Biblioteca de clases de E/S de Java 25

2.1.1 Interfaz de operación de E/S basada en bytes 26

2.1.2 Interfaz de operación de E/S basada en caracteres 27

2.1.3 Interfaz de conversión de bytes y caracteres 28

2.2 Mecanismo de trabajo de E/S del disco 29

2.2.1 Varias formas de acceder a archivos 29

2.2 .2 Acceso Java a archivos de disco 33

2.2.3 Tecnología de serialización Java 34

2.3 Mecanismo de trabajo de E/S de red 36

2.3.1 Conversión de estado TCP 37

2.3.2 Factores que afectan la transmisión de la red 39

2.3.3 Mecanismo de funcionamiento de Java Socket 39

2.3.4 Establecimiento del enlace de comunicación 40

2.3.5 Transmisión de datos 41

2.4 Cómo funciona NIO 41

2.4.1 Desafíos que plantea BIO 41

2.4.2 Mecanismo de trabajo de NIO 42

p>

2.4.3 Método de trabajo del búfer 45

2.4.4 Método de acceso a datos NIO 47

2.5 Ajuste de E/S 49

2.5.1 Optimización de E/S de disco 49

2.5.2 Ajuste de parámetros de red TCP 50

2.5.3 Optimización de E/S de red 52

2.6 Diseño Análisis de patrones: patrón de adaptador 56

2.6.1 Estructura del patrón de adaptador 56

2.6.2 Patrón de adaptador en Java I/O 57

2.7 Análisis de patrón de diseño del patrón decorador 57

2.7.1 La estructura del patrón decorador 58

2.7.2 El patrón decorador en Java I/O 58

2.8 El diferencia entre el modo adaptador y el modo decorador 59

2.9 Resumen 59

Capítulo 3 Análisis en profundidad de los problemas de codificación china en Java Web 60

3.1 Varios comunes Formato de codificación 60

3.1.1 Por qué deberíamos codificar 60

3.1.2 Cómo "traducir" 61

3.2 Escenarios que requieren codificación en Java 63

p>

3.2.1 Codificación 63 en operaciones de E/S

3.2.2 Codificación 65 en operaciones de memoria

3.3 Cómo codificar y decodificar 66 en Java

3.3.1 Código 68 según ISO-8859-1

3.3.2 Código 69 según GB2312

3.3.3 Código 70 según GBK

3.3.4 Codificar 70 según UTF-16

3.3.5 Codificar 71 según UTF-8

3.

3.6 Fragmento de código de codificación UTF-871

3.3.7 Comparación de varios formatos de codificación73

3.4 Códecs involucrados en Java Web73

1 códec de URL 75

3.4.2 Códec de encabezado HTTP 78

3.4.3 Códec de formulario POST 78

3.4.4 CUERPO HTTP Codificación y decodificación 79

3.5 Problemas de codificación en JS 80

3.5.1 Archivos JS importados externamente 80

3.5.2 Codificación de URL JS 81

p>

3.5.3 Otros lugares que requieren codificación83

3.6 Análisis de problemas comunes83

3.6.1 El chino se ha convertido en caracteres incomprensibles83

3.6.2 Un carácter chino se convierte en un signo de interrogación84

3.6.3 Un carácter chino se convierte en dos signos de interrogación84

3.6.4 Una codificación correcta anormal85

3.7 Resumen 86

Capítulo 4 Principios de compilación de Javac 87

4.1 Qué es Javac 88

4.2 La estructura básica del compilador Javac 88

4.3 Análisis del principio de funcionamiento de Javac 90

4.3.1 Analizador léxico 91

4.3.2 Analizador de sintaxis 98

4.3 3 Analizador semántico 103

4.3.4 Generador de código 113

4.4 Patrón de visitante para análisis de patrones de diseño 116

4.4.1 Estructura del patrón de visitante 117

4.4.2 Implementación del patrón de visitante en Javac 118

4.5 Resumen 119

Capítulo 5 Estructura detallada de archivos de clases 120

5.1 Introducción al conjunto de instrucciones JVM 120

5.1.1 Instrucciones relacionadas con clases 122

5.1.2 Definición de métodos 123

5.1.3 Definición de atributos 124

5.1.4 Otros conjuntos de instrucciones 125

5.2 Forma de representación de encabezado del archivo de clase 133

5.3 Grupo de constantes 137

5.3.1 Tipo de constante UTF8 140

5.3.2 Fieldref, tipo de constante Methodref 141

5.3.3 Tipo de constante de clase 141

5.3.4 Tipo de constante NameAndType 142

5.4 Información de clase 142

5.5 Definición de campos y métodos 143

5.6 Descripción del atributo de clase 147

5.7 Estructura de archivos de clase generada por Javap 148

5.7.1 LineNumberTable 150

5.7.2 LocalVariableTable 151

5.8 Resumen 153

Capítulo 6 Análisis en profundidad del mecanismo de trabajo de ClassLoader 154

6.1 Análisis de la estructura de clases de ClassLoader 155

6.2 Carga a nivel de ClassLoader mecanismo 156

6.3 Cómo cargar archivos de clase 159

6.3.1 Cargando Bytecode a la memoria 159

6.3.2 Verificación y análisis 161

6.3.3 Inicialización del objeto Clase 161

6.4 Análisis de errores comunes de carga de clases 161

p>

6.4.1 ClassNotFoundException 161

6.4.2 NoClassDefFoundError 162

6.4

.3 UnsatisfiedLinkError 163

6.4.4 ClassCastException 164

6.4.5 ExceptionInInitializerError 165

6.5 Análisis de ClassLoader de uso común 166

6.6 Cómo para implementar su propio ClassLoader 170

6.6.1 Cargar archivos de clase en rutas personalizadas 170

6.6.2 Cargar archivos de clase en formatos personalizados 172

6.7 Implementar en caliente implementación de clases 174

6.8 ¿Debería Java cargar las clases dinámicamente? 176

6.9 Resumen 177

Capítulo 7 Arquitectura JVM y método de trabajo 178

7.1 Arquitectura JVM 178

7.1.1 Qué es JVM 178

7.1.2 Explicación detallada de la arquitectura JVM 181

7.2 Mecanismo de trabajo de JVM 183

7.2.1 Cómo la máquina ejecuta el código 183

7.2.2 Por qué la JVM elige una arquitectura basada en pila 184

7.2.3 Diseño arquitectónico del motor de ejecución 185

7.2.4 Proceso de ejecución del motor de ejecución 186

7.2.5 Pila de llamadas al método JVM 191

7.3 Resumen 195

Capítulo 8 Capítulo Gestión de memoria JVM 196

8.1 Memoria física y memoria virtual 197

8.2 Espacio del kernel y espacio de usuario 198

8.3 Qué componentes de Java necesitan usar memoria 199

8.3.1 Java Heap 199

8.3.2 Hilos 199

8.3.3 Clases y cargadores de clases 200

8.3.4 NIO 200

8.3.5 JNI 201

8.4 Estructura de memoria JVM 201

8.4.1 Registro de PC 202

8.4.2 Java Pila 202

8.4.3 Montón 203

8.4.4 Área de método 203

8.4.5 Grupo constante de tiempo de ejecución 204

8.4. 6 Pila de métodos locales 204

8.5 Estrategia de asignación de memoria JVM 204

8.5.1 Estrategia común de asignación de memoria 205

8.5.2 Explicación detallada de la asignación de memoria en Java 205

8.6 Estrategia de reciclaje de memoria JVM 210

8.6.1 Asignación y reciclaje de memoria estática 210

8.6.2 Asignación y reciclaje de memoria dinámica 211

8.6.3 Cómo detectar basura 211

8.6.4 Algoritmo de recolección de basura basado en generación 213

8.7 Análisis de problemas de memoria 222

8.7.1 Análisis de registros de GC 222

8.7.2 Análisis de archivos instantáneos de montón 225

8.7.3 Análisis de registros de fallos de JVM 225

8.8 Ejemplo 1 231

8.9 Ejemplo 2 233

8.10 Ejemplo 3 235

8.11 Resumen 240

Capítulo 9 Análisis del principio de funcionamiento de Servlet 241

9.1 Comenzando desde el contenedor de Servlet 241

9.1.1 El proceso de inicio del contenedor de Servlet 242

9.1.2 Inicialización de la aplicación web 245

9.2 Creación de un Instancia de servlet 247

9.2.1 Crear objeto Servlet 248

9.2.2 Inicializar Servlet 248

>9.3 Arquitectura de servlet 250

9.4 Cómo funciona Servlet 253

9.5 Oyente en Servlet 255

9.6 Cómo funciona el filtro 257

9.7 URL -pattern en Servlet 259

9.8 Resumen 260

Capítulo 10 Comprensión profunda de la sesión y las cookies 261

10.1 Comprensión de las cookies 262

10.1.1 Elementos de atributos de cookies 262

10.1.2 Cómo funcionan las cookies 263

10.1.3 Limitaciones en el uso de cookies 266

10.2 Comprensión de la sesión 267

10.2.1 Sesión y cookies 267

10.2.2 Cómo funciona la sesión 268

10.3 Problemas de seguridad de las cookies 271

10.4 Marco de sesión distribuido 272

10.4.1 Qué problemas existen272

10.4.2 Qué problemas se pueden resolver273

10.4.3 Ideas generales de implementación273

10.5 Compresión de cookies 278

10.6 El problema del envío repetido de formularios 280

10.7 Resumen 281

Capítulo 11 Arquitectura del sistema y patrón de diseño de Tomcat 282

11.1 Diseño general de Tomcat 282

11.1.1 Estructura general de Tomcat 283

11.1.2 Componente conector 289

11.1.3 Contenedor de servlet Contenedor 294

11.1.4 Otros componentes en Tomcat 305

11.2 Patrones de diseño en Tomcat 305

11.2.1 Patrón de diseño de fachada 305

11.2.2 Patrón de diseño de observador 307

11.2.3 Patrón de diseño de comandos 309

11.2.4 Patrón de diseño de cadena de responsabilidad 310

11.3 Resumen 312

p>

Capítulo 12 Análisis del principio de funcionamiento de Jetty 313

12.1 Arquitectura básica de Jetty 313

12.1.1 Introducción a la arquitectura básica de Jetty 313

12.1.2 Arquitectura del controlador 315

12.2 Proceso de inicio de Jetty 316

12.3 Aceptar solicitudes 317

12.3.1 Trabajar según el protocolo HTTP 317

12.3.2 Trabajar según el AJP 319

12.3.3 Trabajando basado en NIO 322

12.4 Procesando solicitudes 323

12.5 Integrando con Jboss 326

12.6 Comparación con Tomcat 327

12.6.1 Comparación de arquitectura 327

12.6.2 Comparación de rendimiento 328

12.6.3 Comparación de características 328

12.7 Resumen 329

Capítulo 13 Concepto de diseño y análisis de patrones de diseño de Spring Framework 330

13.1 Arquitectura esquelética de Spring 330

13.1.1 Concepto de diseño de Spring 331

13.1.2 Cómo funcionan juntos los componentes principales 332

13.2 Explicación detallada de los componentes principales 333

13.2.1 Componentes Bean 333

13.2.2 Contexto componente 335

13

.2.3 Componente principal 336

13.2.4 Cómo funciona el contenedor Ioc 338

13.3 Explicación detallada de las características de AOP en Spring 348

13.3.1 Principio de implementación de dinámica proxy 348

13.3.2 Cómo implementa Spring AOP 351

13.4 Análisis de patrones de diseño del modo proxy 354

13.4.1 Principio del modo proxy 354

13.4.2 Implementación del patrón proxy en Spring 354

13.5 Patrón estratégico de análisis de patrones de diseño 357

13.5.1 Principio del patrón estratégico 357

13.5.2 Implementación del patrón de estrategia en Spring 358

13.6 Resumen 358

Capítulo 14 Mecanismo de trabajo y patrón de diseño de Spring MVC 360

14.1 Diseño general de Spring MVC 360

14.2 Diseño de control 365

14.2.1 Inicialización de HandlerMapping 366

14.2.2 Inicialización de HandlerAdapter 368

14.2.3 Control llamar a la lógica 369

14.3 Diseño del modelo 370

14.4 Ver diseño 371

14.5 Reflexiones sobre el diseño del marco 373

14.5.1 ¿Por qué? ¿Se necesita un marco 373

14.5.2 ¿Qué tipo de marco se necesita 373

14.5.3 Principios del diseño del marco 374

14.5.4 "Luz de navegación" 374

14.5.5 Los principios más básicos 374

14.6 Análisis de patrones de plantilla de patrones de diseño 375

14.6.1 La estructura del patrón de plantilla 375

14.6 .2 Ejemplo de patrón de plantilla en Spring MVC 376

14.7 Resumen 377

Capítulo 15 Análisis en profundidad de la arquitectura del sistema y principios de mapeo del marco Ibatis 378

15.1 Ibatis La jerarquía de clases principal del marco 378

15.2 La estrategia de diseño del marco Ibatis 379

15.3 El principio operativo del marco Ibatis 381

15.4 Ejemplo 383

15.5 Análisis Ibatis de sentencias SQL 385

15.6 Campos de base de datos asignados a objetos Java 386

15.7 Resultados de la ejecución de la muestra 388

15.8 Análisis de patrones de diseño Simple Factory Pattern 388

15.8.1 Principio de implementación de Simple Factory Pattern 388

15.8.2 Ejemplo de patrón de fábrica simple en Ibatis 389

15.9 Análisis de patrones de diseño Patrón de fábrica 390

15.9.1 Principio de implementación del patrón de fábrica 390

15.9.2 Ejemplo de patrón de fábrica en Ibatis 391

15.10 Resumen 392

Capítulo 16 Análisis del principio de funcionamiento de Velocity 394

16.1 Arquitectura general de Velocity 395

16.2 Análisis del proceso de renderizado de JJTree 398

16.2.1 #set sintaxis 402

16.2.2 Llamada al método Velocity 403

16.2.3 #if, #elseif y #else sintaxis 406

16.2.4 Sintaxis #foreach 407

16.2.5 Sintaxis #parse 409

16.3 Mecanismo de procesamiento de eventos 410

16.4 De uso común

Consejos de optimización 413

16.4.1 Reducir el número total de nodos en el árbol 413

16.4.2 Reducir el número de nodos que tardan en renderizarse 413

16.5 Comparación con JSP 414

16.5.1 Mecanismo de renderizado JSP 414

16.5.2 Velocidad y JSP 420

16.6 Análisis de patrones de diseño y modo de síntesis 420

16.6.1 Estructura del patrón de síntesis 420

16.6.2 Implementación del patrón de síntesis en Velocity 421

16.7 Patrón intérprete de análisis de patrones de diseño 422

16.7.1 Estructura del modo intérprete 422

16.7.2 Implementación del modo intérprete en Velocity 423

16.8 Resumen 423

Capítulo 17 Práctica de optimización de velocidad 424

17.1 Problemas de la vida real 424

17.2 Bases teóricas de la optimización 425

17.2.1 Estructura triangular del lenguaje de programación 425

17.2.2 Las estructuras de datos reducen la abstracción 426

17.2.3 Los programas simples se vuelven más complicados 426

17.2.4 Reducir el costo de la traducción 427

17.2.5 Cambiado Convertir a sin cambios427

17.3 Ideas de implementación de un motor de plantillas eficiente427

17.3.1 Cómo se compilan las plantillas de VM429

17.3.2 Llamada a métodos Optimización sin reflexión 436

17.3.3 Salida de caracteres cambiada a salida de bytes 439

17.4 Resultados de optimización 440

17.4.1 Convertir caracteres a bytes 440

17.4.2 Ejecución sin reflejos 441

17.5 Otros métodos de optimización 442

17.6 Resumen 442