1. BloomFilterhistorical

    1. Usage 2. Source analysis 3. References

  2. How Lombok Workshistorical

    1. JSR 269 2. Principle

  3. Introductionhistorical

    Why MyBatis exists and its execution flow

  4. Spring Cloudhistorical

    What Spring Cloud is and a reference.

  5. Spring Learning Resourceshistorical

    Spring interview questions with detailed answers; how Spring resolves circular dependencies.

  6. Spring Boothistorical

    Spring + auto-configuration, a framework for quickly starting projects.

  7. 2.7 Introductionhistorical

    Spring MVC components and request-processing flow.

  8. RateLimiterhistorical

    1. What it is 2. Usage 3. Source analysis 4. Summary 5. References

  9. Usagehistorical

    Create a Maven project, configure MyBatis, create the mapper, test it, and inspect the project structure

  10. 2.10 Spring Moduleshistorical

    Spring core container, data access/integration, Web, AOP, Instrumentation, Test, and miscellaneous modules.

  11. Spring Boot Learning Resourceshistorical

    20 Spring Boot interview questions - Java Technology Stack - SegmentFault.

  12. 2.12 Usagehistorical

    Create a Spring MVC project in two ways, configure Maven and Spring MVC, add controllers/JSP/HTML, configure Tomcat, and run the project.

  13. MyBatis Source Analysishistorical

    Framework layers, four core objects, SqlSessionFactory configuration parsing, SqlSession and Executor creation, mapper proxy creation, CRUD execution, mapped statements, first-level and second-level cache, and JDBC execution.

  14. Spring MVC Source Analysishistorical

    Breakpoint call stack, servlet class relationships, DispatcherServlet loading, request dispatch, HandlerMapping, HandlerAdapter, handler invocation, and view rendering.

  15. Learning Resourceshistorical

    Reference: MyBatis interview questions

  16. Thread Safetyhistorical

    Thread-safety issues caused by Spring MVC singleton beans, solutions, and a reference.

  17. Spring MVC Learning Resourceshistorical

    Common Spring MVC interview questions with detailed answers - CSDN Blog.

  18. Usagehistorical

    1. Create the project 2. pom.xml 3. Code

  19. Netty 3.x Source Analysishistorical

    1. Overview 2. Boss-array initialization 3. Worker-array initialization 4. Bind

  20. 2.20 Apollohistorical

    What Apollo is, how to use it, and how its push-pull configuration update mechanism works.

  21. Eurekahistorical

    1. What it is 2. Usage 3. Principles 4. Problems 5. References

  22. Feignhistorical

    What Feign is, why it exists, and how its interface proxy, Ribbon, Eureka, and HTTP request construction work.

  23. Gatewayhistorical

    What Spring Cloud Gateway is, its Route/Predicate/Filter concepts, and its asynchronous non-blocking thread model.

  24. Hystrixhistorical

    1. What Hystrix is 2. Why Hystrix is needed 3. Usage 4. Features 5. Principles 6. References

  25. 2.25 Ribbonhistorical

    What Ribbon is, why load balancing is needed, usage, working flow, and load-balancing strategies.

  26. 2.26 Sleuthhistorical

    What Spring Cloud Sleuth is and how it works with Zipkin.

  27. Zuulhistorical

    1. What it is 2. Usage 3. Principles 4. Zuul 1 vs Zuul 2 5. References

  28. ApplicationListenerhistorical

    1. What ApplicationListener is 2. How to use the event-listener mechanism 3. References

  29. Bean Scopeshistorical

    1. Scope categories 2. Why prototype exists 3. References

  30. Usagehistorical

    1. Create the project 2. pom.xml 3. Code

  31. Usagehistorical

    1. Create the project 2. pom.xml 3. Code

  32. 2.32 Autowired Principlehistorical

    Class inheritance diagram and principle analysis of Spring's AutowiredAnnotationBeanPostProcessor.

  33. Spring Transaction Source Analysishistorical

    1. Enable transaction management. 2. TransactionManagementConfigurationSelector imports AutoProxyRegistrar and ProxyTransactionManagementConfiguration. 3. Study AutoProxyRegistrar. 4. Study ProxyTransactionManagementConfiguration and transaction interception.

  34. 2.34 Custom Startershistorical

    Two questions behind a custom Spring Boot starter and a complete hello-spring-boot-starter example.

  35. 2.35 Usagehistorical

    Create a project, configure pom.xml, and use Spring Boot caching with Application, TestController, and TestService.

  36. Spring Boot Jar Startup Principlehistorical

    1. Experiment. 2. Structure of an executable Jar. 3. How the program entry point is found. 4. Jar packages that can start without the java -jar command. 5. Reference.

  37. MyBatis Auto-Configurationhistorical

    How Spring Boot enables MyBatis auto-configuration and how AutoConfiguredMapperScannerRegistrar determines which package to scan for @Mapper interfaces.

  38. Spring MVC Auto-Configuration Principlehistorical

    1. Auto-configuration classes pre-imported by spring-boot-starter-web. 2. How custom configuration takes effect. 3. Why @EnableWebMvc disables Spring Boot MVC auto-configuration. 4. Reference.

  39. 2.39 Usagehistorical

    Create a project, configure pom.xml, and write Application.java.

  40. Embedded Tomcat Auto-Configuration Principlehistorical

    1. Enable ServletContainer auto-configuration. 2. Inject the Tomcat container factory. 3. How custom configuration takes effect. 4. How to modify Tomcat configuration. 5. Summary.

  41. Learning Resourceshistorical

    Netty learning resources

  42. Summaryhistorical

    Historical Netty source-analysis summary diagrams

  43. 2.43 Thread Isolationhistorical

    Why thread isolation is needed, isolation modes, and thread-pool versus semaphore isolation.

  44. Bean Lifecyclehistorical

    1. Process 2. Usage 3. References

  45. What Spring AOP Ishistorical

    1. What AOP is 2. Implementation principle

  46. What It Ishistorical

    1. Explanation of IoC 2. Implementation principle 3. Benefits of IoC

  47. 2.47 Common Spring Annotationshistorical

    Common Spring annotations and Aware interfaces, including Configuration, ComponentScan, Bean, Scope, Lazy, Conditional, Import, Value, Autowired, Qualifier, Primary, and Profile.

  48. Spring Transaction Propagationhistorical

    1. What transaction propagation is. 1.1. Propagation behaviors including REQUIRED, SUPPORTS, MANDATORY, REQUIRES_NEW, NOT_SUPPORTED, and NEVER. 1.2. Notes. 2. References.

  49. Spring Boot Cache Auto-Configuration Principlehistorical

    How the cache manager and cache classes are generated, how cache proxy classes are generated, and the overall execution flow.

  50. Component Introductionhistorical

    1. What it is 2. Components 3. Processing flow 4. ChannelPipeline

  51. Off-Heap Memoryhistorical

    1. What off-heap memory is 2. NIO off-heap memory 3. Netty off-heap memory 4. References

  52. BeanFactoryhistorical

    1. BeanFactory and ApplicationContext 2. References

  53. 2.53 Usagehistorical

    Create a project, configure pom.xml, and use Spring transactions with DbConfig, TestService, and TestDao.

  54. Circular Dependencieshistorical

    1. What a circular dependency is 2. What problems it causes 3. How to solve it 4. References

  55. How to Load Beans A and B in Order in Springhistorical

    1. Use @DependsOn 2. References

  56. 2.56 1. Create NioEventLoopGrouphistorical

    NioEventLoopGroup class hierarchy, constructor chain, initialization of selector/select strategy/rejection policy, EventLoop count, executor, child EventLoops, and chooser.

  57. 2. Bootstrap Creationhistorical

    1. Code to analyze 2. Create ServerBootstrap 3. Set ServerBootstrap properties 4. ReflectiveChannelFactory

  58. 3. Bind the Porthistorical

    1. Code to analyze 2. Server binds the port

  59. 1. Detect a New Connectionhistorical

    1. Set a breakpoint 2. New connection enters

  60. Pipeline Initializationhistorical

    1. When pipeline is created 2. What pipeline looks like 3. Tail and Head

  61. 1. Creating the Serverhistorical

    bind, channelFactory, and creation of NioServerSocketChannel

  62. 1. Create the Spring Containerhistorical

    1. Code to analyze 2. Create ApplicationContext and trace the refresh process

  63. Spring Boot Startup Principlehistorical

    1. Start Spring Boot. 2. Process of creating SpringApplication: determine web environment, load ApplicationContextInitializer and ApplicationListener instances, save the main configuration class, and run the application.

  64. Create Executorhistorical

    1. Code to analyze 2. Create the thread factory 3. Create the executor

  65. 2. Create NioSocketChannelhistorical

    1. Code to analyze 2. NioSocketChannel constructor

  66. Adding and Removing ChannelHandlershistorical

    1. Add a handler 2. Remove a handler

  67. 2. Server Initializationhistorical

    Call path and ServerBootstrap.init

  68. 2. Call BeanFactoryPostProcessor's postProcess Methodhistorical

    1. Code to study 2. Process BeanDefinitionRegistryPostProcessors 3. Process BeanFactoryPostProcessors

  69. Spring Boot Auto-Configuration Principlehistorical

    1. Enable Spring Boot auto-configuration. 2. Inject AutoConfigurationImportSelector into the container and import auto-configuration classes from META-INF/spring.factories. 3. Summary. 4. Reference.

  70. Create the NioEventLoop Arrayhistorical

    1. Code to analyze 2. Parameters passed to NioEventLoop 3. NioEventLoop is a single-threaded thread pool 4. Constructor

  71. 3. Allocate a Thread and Register the Selectorhistorical

    1. Code to analyze 2. Propagate through the pipeline 3. Pass through ServerBootstrapAcceptor 4. Analyze channelRead

  72. 3. Register the Selectorhistorical

    Call path and event-loop registration

  73. 3. Register BeanPostProcessorhistorical

    1. Code to study 2. Obtain BeanPostProcessors 3. Classify them 4-7. Register each group

  74. 4. Register Read Events with the Selectorhistorical

    1. Code to analyze 2. Set a breakpoint and connect with nc 3. Propagate channelActive 4. Reach HeadContext 5. Read through AbstractUnsafe

  75. 4. Bind the Server Porthistorical

    Call path, AbstractBootstrap, AbstractUnsafe, and AbstractNioChannel

  76. Spring IoC Source: Instantiating All Non-Lazy Singleton Beanshistorical

    Source tracing of finishBeanFactoryInitialization and preInstantiateSingletons through getBean, singleton lookup and creation, BeanPostProcessors, bean instantiation, property population, initialization, proxy creation, and destruction registration.

  77. Server Startuphistorical

    Historical server-startup diagram

  78. UML Diagramhistorical

    Spring IoC UML diagram

  79. 2.79 1. Instantiate the Channelhistorical

    Instantiate NioServerSocketChannel through reflection, configure it as non-blocking, and create channelId, Unsafe, and pipeline.

  80. Netty Bind Source: Actually Binding the Listening Porthistorical

    1. Code to analyze. 1.1. How NioEventLoop executes the Runnable. 1.2. What the bind task executed by NioEventLoop does, including JDK NIO bind, channelActive propagation, and registering interest in accept events.

  81. Inbound Eventshistorical

    1. Add handlers for the experiment 2. Start from the pipeline 3. Forward through AbstractChannelHandlerContext 4. Enter HeadContext 5-8. Traverse inbound handlers to TailContext

  82. ByteBufhistorical

    Data structure, API, class hierarchy, and classification

  83. 1. Inject AspectJAnnotationAutoProxyCreator into the Containerhistorical

    Enable AOP, register AspectJAnnotationAutoProxyCreator, and trace when ImportBeanDefinitionRegistrar.registerBeanDefinitions is called

  84. 2.1 How the AnnotationAwareAspectJAutoProxyCreator Bean Instance Is Createdhistorical

    Class hierarchy, call-stack analysis, BeanFactoryAware setBeanFactory, registration and initialization of AnnotationAwareAspectJAutoProxyCreator

  85. Spring AOP Source Analysis Summaryhistorical

    Created on Monday, July 22, 2019. Source analysis of Spring AOP from @EnableAspectJAutoProxy through auto-proxy creation and target-method interceptor execution.

  86. 2. Initialize Channelhistorical

    1. Code to analyze 2. Obtain the channel pipeline and add a ChannelInitializer

  87. Netty Source: NioEventLoop run Methodhistorical

    Code analysis of the NioEventLoop run loop: select, selector rebuild, selected-key optimization, processSelectedKeys, and asynchronous task execution.

  88. Outbound Eventshistorical

    1. Add handlers for the experiment 2. Start from the pipeline 3. Enter TailContext 4-7. Traverse outbound handlers back to HeadContext

  89. ByteBufAllocatorhistorical

    ByteBufAllocator class hierarchy, AbstractByteBufAllocator, unpooled allocation, and pooled allocation

  90. 2.2 When Does AnnotationAwareAspectJAutoProxyCreator Take Effect?historical

    Trace postProcessBeforeInstantiation and postProcessAfterInitialization while creating singleton Beans

  91. 2.91 3. Register the Channelhistorical

    Select a NioEventLoop, create a ChannelPromise/Future, register the channel through Unsafe with the JDK NIO selector, and invoke handlerAdded/initChannel callbacks.

  92. Exception Eventshistorical

    1. Prepare experiment data 2. Start debugging 3-7. Propagate the exception through handlers to TailContext

  93. Usagehistorical

    Historical example of allocating, reading, writing, and releasing a pooled direct ByteBuf

  94. 2.3 How AnnotationAwareAspectJAutoProxyCreator Creates Proxy Objectshistorical

    Trace to postProcessBeforeInstantiation, determine whether a proxy is needed, wrap the Bean with advisors, and create JDK/CGLIB proxies

  95. Channel Class Hierarchyhistorical

    1. Channel class hierarchy 2. Config class hierarchy

  96. 2.4 How the Target Method Is Executedhistorical

    Invoke Calc.div, enter the proxy intercept method, build the interceptor chain, and execute interceptors plus the target method

  97. PooledByteBufAllocatorhistorical

    newDirectBuffer, PoolThreadLocalCache, PoolThreadCache, and PoolArena

  98. PoolThreadCachehistorical

    Constructor and the tiny, small, and normal MemoryRegionCache groups