-
在SpringMVC中构建RESTfulAPI,核心在于围绕资源设计、正确使用HTTP方法、统一错误处理和版本控制。1.使用名词表示资源,避免动词,如/users而非/getAllUsers;2.使用复数名词表示集合资源,如/products;3.通过ID定位单个资源,如/users/123;4.嵌套资源表达关系,如/users/123/orders;5.避免文件扩展名,通过Accept头协商格式;6.统一使用小写字母和连字符增强可读性;7.正确使用HTTP方法语义,GET获取、POST创建、PUT更新、
-
SpringBoot打war包部署到Tomcat需满足:版本≥2.0(2.6+有额外限制);主类继承SpringBootServletInitializer并重写configure();pom.xml中spring-boot-starter-tomcat设为provided且packaging为war;避免硬编码server.port和context-path。
-
学生、课程与选课记录构成多对多关系,需通过SelectRecord中间实体及studentRecords、courseRecords两个Map维护双向关联,配合Set去重和HashMap高效查询,选课退课须原子性同步更新三方数据,业务逻辑应封装在服务类中以保障可维护性与可扩展性。
-
AQS中独占模式靠tryAcquire/tryRelease控制锁获取与释放,共享模式靠tryAcquireShared(返回负数失败、0成功不传播、正数成功并传播)和releaseShared实现唤醒传播,二者共用队列但行为不同,需严格区分模式使用。
-
首先安装JDK确保javac可用,再用update-alternatives管理多版本,最后设置JAVA_HOME提升工具兼容性与环境一致性。
-
Java旧项目异常治理核心是减少无效捕获、明确异常语义、切断传播链,需分层归因、收敛处理、补全可观测性:一识别伪异常删空catch;二统一分类分层处理;三补全上下文与可观测性;四渐进式改造高频点。
-
断言适用于检测内部程序错误,如私有方法参数非法、控制流异常等,默认关闭,仅开发测试启用。1.用于私有方法参数校验、控制流断言、算法状态验证;2.语法为assertcondition或assertcondition:expression;3.运行时需加-ea参数开启;4.不同于异常,断言属Error类型,不捕获,不可替代公共方法的输入校验。
-
jstack-l<pid>是最轻量的死锁检测工具,必须加-l才显示锁关系,推荐配合-e连续执行2–3次;ThreadMXBean可程序化检测已形成的死锁,但无法捕获伪死锁。
-
推荐用DateTimeFormatter而非SimpleDateFormat,它线程安全、不可变、支持ISO与自定义模式,需通过ofPattern、ISO常量或ofLocalizedDateTime等静态工厂创建,不可new;format/parse需类型匹配,时区字符串须用ZonedDateTime/OffsetDateTime解析,应staticfinal复用。
-
死锁的典型现象是Java程序卡住、线程长时间处于BLOCKED或WAITING状态且CPU使用率极低;快速检测方法包括jstack-l查看Found1deadlock、JVM启动加-XX:+PrintConcurrentLocks、JConsole检测死锁;预防手段有tryLock()超时获取、按System.identityHashCode固定顺序加锁、优先使用ConcurrentHashMap等并发工具类替代手动锁。
-
Oracle官网下载JDK需先注册并登录Oracle账号(第三方登录无效),再访问归档页https://www.oracle.com/java/technologies/javase/jdk-archive-downloads.html,选择对应版本与平台,禁用广告拦截插件后勾选许可协议方可下载;\_bin结尾为完整JDK,\_jre为历史残留命名,现代开发应选用\_bin包。
-
异常链是将底层异常包装为高层异常并保留原始异常作为原因,通过带cause参数的构造函数实现,如thrownewBusinessException("业务失败",e);它既提供业务语义又保留调试信息,打印堆栈时显示“Causedby”,便于排查问题。
-
Arrays专治数组,Collections专治集合;Arrays.sort()不接受List,须用Collections.sort();Arrays.asList()返回不可变视图,需newArrayList<>包装;同步用Collections.synchronizedList()但复合操作仍需手动同步;基本类型数组排序更快但不稳定,对象排序稳定。
-
var仅限方法体内局部变量声明,需初始化且类型可静态推断,禁用于字段、参数、返回值及lambda形参;推断类型最具体但可能丢失泛型信息,影响可读性与维护性。
-
本文深入解析在使用findViewById()时部分视图(如TextView、RecyclerView)意外返回null的典型场景,重点揭示因UI状态变更、视图可见性控制及初始化顺序不当引发的“伪空指针”问题,并提供可复现的修复方案与最佳实践。