第一章 Java基础

简介: 第一章 Java基础

8、反射及泛型
8.1 反射
什么是反射
反射是 java 提供的一套 API,通过这套 API 能够在运行期间
根据类名加载类
获取类的各种信息,如类有哪些属性、哪些方法、实现了哪些接口 ...
类型参数化,根据类型创建对象
方法、属性参数化,以统一的方式来使用方法和属性
反射广泛应用于各种框架实现,例如
Spring 中的 bean 对象创建、依赖注入
JUnit 单元测试方法的执行
MyBatis 映射查询结果到 java 对象
...
反射在带来巨大灵活性的同时也不是没有缺点,那就是反射调用效率会受一定影响
8.2 泛型
什么是 Java 泛型
泛型的主要目的是实现类型参数化,java 在定义类、定义接口、定义方法时都支持泛型
泛型的好处有
提供编译时类型检查,避免运行时类型转换错误,提高代码健壮性
设计更通用的类型,提高代码通用性
【例如】想设计 List 集合,里面只放一种类型的元素,如果不用泛型,怎么办呢?你必须写很多实现类
Impl1 实现类中,只放 String
Impl2 实现类中,只放 Integer
...
要支持新的元素类型,实现类型也得不断增加,解决方法需要把元素类型作为参数,允许它可变化:List,其中 T 就是泛型参数,它将来即可以是 String,也可以是 Integer ...
P.S.
【例如】是为了帮助你理解,不是必须答出来。
关键是答出类型参数化,懂的面试官不必多说,不懂的也没必要跟他继续啰嗦
9、Tomcat优化
P.S.
Tomcat 优化要从多方面综合考虑,如
Tomcat JVM 参数调优
Tomcat 线程池配置
网络配置优化
静态资源优化
日志记录优化
...
篇幅原因,本题作答时只侧重其中线程池配置和网络配置这两方面
以 springboot(3.2.3) 中的 tomcat 配置为例
Plain Text
复制代码
1
2
3
4
server.tomcat.max-connections=8192
server.tomcat.accept-count=100
server.tomcat.threads.max=200
server.tomcat.threads.min-spare=10
Tomcat I/O 模式默认采用 NIO,由于一般采用 Linux 系统,因此改成 NIO2 没有必要
这些配置项值都是 springboot 的默认值,这些值其实够用,根据情况调整,其中
max-connections 控制最大连接数
accept-count 控制连接队列中的连接数
threads.max 控制线程池中最大线程数
threads.min-spare 控制线程池中最少备用线程数
【进阶】虚拟线程优化
springboot(3.2.x)配合 jdk 21 可以使用虚拟线程来优化
更早 springboot 想使用 jdk 21 虚拟线程,可以用替换 Tomcat 线程池的办法

相关文章
|
4月前
|
Java 测试技术 Linux
生产环境发布管理
在一个大型团队中,生产发布涉及多环境推进(DEV→TEST→PRE→PROD),以及热更新、回滚等问题。本文基于公司自动化部署平台,讲解如何实现多环境部署与发布管理,涵盖各环境职责、分支管理、自动化构建、日志排查等内容,帮助理解大型企业如何通过CI/CD提升发布效率与稳定性。
112 0
|
4月前
|
消息中间件 存储 Java
第15课: Spring Boot中集成ActiveMQ
第15课: Spring Boot中集成ActiveMQ
385 0
|
4月前
|
Java 数据格式 微服务
SpringBoot使用汇总
SpringBoot使用汇总
104 0
SpringBoot使用汇总
|
4月前
|
安全 Java 数据库
第16课:Spring Boot中集成 Shiro
第16课:Spring Boot中集成 Shiro
652 0
|
4月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
207 0
|
4月前
|
负载均衡 Dubbo Java
Dubbo篇
Dubbo篇
135 0
|
4月前
|
开发框架 前端开发 Java
Spring篇
Spring是一个用于简化Java企业级应用开发的开源框架,核心功能包括控制反转(IoC)和面向切面编程(AOP)。它通过管理对象生命周期、解耦组件、支持多种注入方式及提供如MVC、事务管理等模块,提升开发效率与代码质量。常用于构建轻量、灵活、易维护的企业级应用程序。
263 0
|
4月前
|
敏捷开发 Dubbo Java
需求开发人日评估
敏捷开发中,工时评估是关键环节,常用“人日”衡量任务工作量。本文介绍人日概念及评估方法,涵盖开发、自测、联调、测试、发布各阶段周期参考,并提供常见需求的人日示例,助力团队更科学地制定计划。
196 0
|
4月前
|
运维 Kubernetes Java
物理部署图
物理部署图用于描述系统运行时的结构,展示硬件配置与软件部署在网络中的方式。它帮助理解分布式系统的部署架构,核心元素包括节点、构建、物件、连接和框架,常用于指导软硬件的协同运行与运维管理。
127 0
|
4月前
|
缓存 JSON 前端开发
第07课:Spring Boot集成Thymeleaf模板引擎
第07课:Spring Boot集成Thymeleaf模板引擎
470 0
第07课:Spring Boot集成Thymeleaf模板引擎
下一篇
开通oss服务