05-08 后端开发 Netty Netty是JBOSS提供的Java开源框架,现为Github独立项目。Netty是一个异步的、基于事件驱动的网络应用框架,本质是NIO框架,适用于TCP协议下的高并发应用和Peer-to-Peer场景的大量数据持续传输。 Linux网络I/O模型包括五种:阻塞I/O、非阻塞I/O、I/O复用、信号驱动I/O和异步I/O。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select上,使系统在单线程下同时处理多个客户端请求。epoll相比select有重大改进:支持无限制的FD、I/O效率不随FD增加而下降、使用mmap加速内核与用户空间消息传递、API更简单。 Java支持三种网络编程模型:BIO(同步阻塞)、NIO(同步非阻塞)和AIO(异步非阻塞)。NIO是同步非阻塞的,核心组件包括Channel(通道)、Buffer(缓冲区)和Selector(多路复用器)。ByteBuffer是NIO中最常用的缓冲区,支持读写模式切换(flip/clear/compact),包含capacity、limit、position、mark等属性,分为HeapByteBuffer(堆内存)和DirectByteBuffer(直接内存)两种类型。 2
04-03 后端开发 Dubbo Dubbo是高性能、轻量级的开源Java RPC框架,提供远程方法调用、智能容错负载均衡和服务自动注册发现三大核心能力。分布式架构从单一应用、垂直应用、分布式服务到流动计算架构逐步演进。RPC是远程过程调用的思想,核心模块包括通讯和序列化。 Dubbo基本概念包括服务提供者、服务消费者、注册中心和监控中心。环境搭建需要Zookeeper作为注册中心,可配合Dubbo Admin管理控制台使用。快速入门通过创建订单服务和用户服务两个模块演示Dubbo调用,建议将服务接口、模型、异常放在API包中,接口应大粒度按业务场景划分。 4
02-21 后端开发 Mybatis MyBatis映射文件解析过程中,XMLMapperBuilder负责解析resultMap、cache、sql等节点。XMLStatementBuilder负责解析SQL节点(select、insert、update、delete),创建MappedStatement对象和SqlSource。 include节点解析由XMLIncludeTransformer完成,通过applyIncludes方法递归处理include节点,将include节点替换为sql节点定义的SQL片段,并使用Properties对象替换占位符。selectKey节点用于解决主键自增问题,解析后生成独立的MappedStatement和SelectKeyGenerator对象,根据order属性决定执行时机(BEFORE或AFTER)。 SQL节点解析通过LanguageDriver.createSqlSource方法创建SqlSource对象,默认使用XMLLanguageDriver实现。XMLScriptBuilder.parseScriptNode方法判断SQL是否动态,包含动态标签或"${}"占位符则创建DynamicSqlSource,否则创建RawSqlSource。最终通过MapperBuilderAssistant.addMappedStatement方法将MappedStatement添加到Configuration.mappedStatements集合中保存。 1
08-11 后端开发 SpringBoot SpringBoot2是简化Spring开发的框架,快速入门包括导入依赖、编写主类、创建控制层、配置文件和打包部署。核心依赖包括spring-boot-starter-parent(父依赖)和spring-boot-starter-web(Web场景启动器)。 主类使用@SpringBootApplication注解,通过SpringApplication.run()启动应用,是整个SpringBoot的入口。控制层使用@RestController注解(@Controller和@ResponseBody结合)。配置文件为application.properties,可配置Tomcat等参数。 SpringBoot特点包括依赖管理和自动配置。依赖管理通过spring-boot-starter-parent继承spring-boot-dependencies,实现自动版本仲裁,默认不需要写版本号,支持自定义修改版本号。场景启动器spring-boot-starter-*自动引入该场景所有常规依赖。 自动配置方面,SpringBoot根据引入场景自动配置相应组件(如web场景引入tomcat、Spring、SpringMVC),各种配置拥有默认值并映射到对应类,主方法返回的IOC容器包含当前应用所有组件,采用默认扫描机制(主程序所在包及其子包)。SpringBoot可打包成jar包部署,无需war包。 1
08-11 后端开发 Spring Spring是轻量级开源JavaEE框架,解决企业应用开发复杂性,核心包括IOC(控制反转)和AOP(面向切面)。IOC把对象创建和调用过程交给Spring管理,降低耦合度;AOP不修改源代码进行功能增强。Spring特点包括方便解耦简化开发、支持AOP编程、方便程序测试、方便整合其他框架、方便事务操作、降低API开发难度。 IOC底层原理包括xml解析、工厂模式、反射。IOC容器基于两个接口:BeanFactory(基本实现,加载配置文件时不创建对象,使用时才创建)和ApplicationContext(子接口,加载配置文件时创建对象,功能更强大)。ApplicationContext实现类包括FileSystemXmlApplicationContext(文件路径)和ClassPathXmlApplicationContext(类路径)。 Bean管理指Spring创建对象和注入属性。基于XML方式实现Bean管理:使用bean标签创建对象,属性包括id(唯一标识)和class(类全路径)。属性注入方式包括DI依赖注入(set方法注入)、有参数构造注入(constructor-arg标签)、p名称空间注入(简化配置)。默认执行无参数构造方法创建对象。 1
08-11 后端开发 JUC JUC(java.util.concurrent)是Java并发编程的工具类库。内容涵盖进程与线程的概念,进程具有动态性、并发性、独立性和结构性特征。线程状态包括NEW(新建)、RUNNABLE(就绪)、RUNNING(运行)、BLOCKED(阻塞)、WAITING(等待)、TIMED_WAITING(计时等待)和TERMINATED(死亡)。start方法底层调用native方法start0启动线程。 线程分为用户线程和守护线程,守护线程为其他线程提供服务,当所有用户线程结束时JVM会自动退出。ArrayList在多线程环境下不安全,底层基于Object数组实现,初始容量10(JDK8采用懒加载),扩容机制为原容量的1.5倍。多线程操作ArrayList会产生并发安全问题。 1
08-11 后端开发 JVM JVM体系结构包含类加载器、执行引擎、本地接口、方法区、栈、堆等核心组件。类加载器采用双亲委派机制保证安全性。堆内存分为新生区、养老区和元空间,通过垃圾回收算法(Minor GC、Full GC)自动管理内存,新生区对象频繁收集,养老区较少收集。 5