-
没有真正“开箱即用、免部署、纯免费”的Java成品网站——所谓成品多为需编译配置的源码包,所谓免费不等于零运维成本;GitHub上搜spring-boot+admin/blog最靠谱,但需核对启动方式、JDK兼容性及数据库配置。
-
ClassGraph扫描注解接口实现类返回空,主因是未显式配置扫描范围、类加载器隔离或未启用enableClassInfo()/enableAnnotationInfo();正确做法是先获取接口ClassInfo,再调用getClassesImplementing()并过滤非抽象非接口类。
-
必须用Math.ceil(),因分页需“宁多勿少”:Math.round()和parseInt()会漏页,而Math.ceil()确保余数也占1页;总页数公式为Math.ceil(total/pageSize),需防除零、负数及字符串输入,并校验当前页不越界。
-
语法错误:while(i++后缺少右括号和循环体,导致语句不完整。
-
答案:基于Java技术栈设计在线作业提交提醒系统,涵盖用户管理、作业发布、截止时间设定及自动提醒功能。系统分为教师与学生两类角色,教师负责创建课程、发布作业并设置截止时间,学生则查看任务、提交文件并接收提醒。核心模块包括用户认证(SpringSecurity/Shiro)、作业管理(增删改查)、提交记录(状态追踪)和提醒引擎。通过@Scheduled注解实现定时任务,每天凌晨扫描24小时内即将截止的作业,识别未提交学生并触发通知。提醒支持邮件(JavaMailSender)、站内信或短信(集成阿里云、企业
-
DoubleAdder和LongAccumulator通过Striped64的base+Cell[]分段结构及@Contended注解隔离缓存行,将集中竞争分散为多点独立写入,从而避免伪共享导致的cachelinebouncing;其高效前提是正确预热、纯函数accumulatorFunction和弱一致性sum()使用。
-
真堆内存不够需先确认是否为内存泄漏:检查jstat-gc中OU是否持续上涨且GC后不回落,或用jmap-histo查异常多的类;若OU每次FullGC后升高则极可能泄漏,EU频繁满而OU增长慢则可能是短期对象过多;切忌盲目加大-Xmx,应优先分析堆快照定位持有大量对象的根因。
-
Java接口默认方法均为publicabstract,字段为publicstaticfinal;Java8+支持default/static方法(Java9+才支持privatedefault);多接口同名方法需实现类覆盖,返回类型冲突则编译失败;default方法应限于向后兼容,避免职责模糊和隐式依赖。
-
答案是通过包管理器安装OpenJDK或手动安装OracleJDK。使用apt或dnf命令可安装OpenJDK,如sudoaptinstallopenjdk-17-jdk;手动安装需下载OracleJDK压缩包,解压至/opt/java,并配置JAVA_HOME和PATH环境变量,最后通过java-version验证。多版本时可用update-alternatives设置默认JDK。
-
组合替代继承的核心是将“我是一个什么”转为“我拥有什么”,通过接口抽象、小而专的类封装、构造注入、运行时策略切换及生命周期管理实现松耦合。
-
Selector不能直接支撑万级连接,因其仅为事件分发开关而非自动扩容线程池;真正决定并发能力的是SelectionKey的有效管理、及时取消、避免select阻塞或空轮询,以及IO与业务逻辑严格分离。
-
TLAB是什么,为什么每个线程要自己分一块小内存TLAB(ThreadLocalAllocationBuffer)是JVM在堆内存中为每个线程单独划出的一小块连续空间,专供该线程快速分配对象。它不是独立于堆之外的区域,而是Eden区内的“私有子区”。没有TLAB时,所有线程都要竞争Eden的公共指针(如top),频繁加锁或CAS,成为性能瓶颈;启用后,线程直接在自己的缓冲区里挪动本地指针,几乎无竞争。常见错误现象:GClogs里看到大量TLABwaste或TLA
-
?extendsT只读不可写,因编译器无法确定具体子类型,添加非null元素会破坏类型安全;仅允许get()等读操作,可传null;适用于只读方法参数,提升API兼容性与安全性。
-
Collections.checkedCollection()提供运行时类型安全包装,仅对写操作检查元素类型,不验证已有元素或读操作返回值;需传入非空原始集合和具体类型Class,适用于API边界防护等场景。
-
MetaspaceSize和MaxMetaspaceSize应设为相等以避免动态扩容引发的频繁FullGC和OOM;需结合服务复杂度合理设定值(128m~1g),并优先排查类加载器泄漏,而非盲目调参。