-
怎么用二维数组表示五子棋盘和落子状态棋盘本质就是个char[][]或int[][],每个位置存空、黑子、白子——别用String[][],内存和比较都慢;也别用boolean[][],两种状态不够,得区分“空”“黑”“白”。推荐用int:0表示空,1表示黑子,2表示白子,后续判定逻辑更直白。常见错误是初始化时写成newint[15][15]却忘了边界检查,用户输15,15就直接ArrayIndexOutOfBoundsException。实际下标范围是0–14,输入要先
-
module-info.java文件必须放在模块根目录Java模块系统不会自动发现或扫描子包里的module-info.java,它只认顶层源码根目录(即src/main/java或src下直接放的)下的那个文件。放错位置会导致编译器完全无视模块声明,还可能报error:modulenotfound或静默退化为非模块化运行。正确路径:src/main/java/module-info.java错误路径:src/main/java/com/example/module-inf
-
Micrometer依赖需同时引入spring-boot-starter-actuator和对应registry(如micrometer-registry-prometheus),并配置management.endpoints.web.exposure.include显式暴露端点;Prometheus的scrape_config中metrics_path必须设为/actuator/prometheus;@Timed依赖SpringAOP代理,须确保方法由容器注入且为public;自定义指标应规范使用Tag
-
异常转译是将底层技术异常(如SQLException)包装为语义明确的业务异常(如UserNotFoundException),保留cause链、暴露业务上下文、避免泄露技术细节。
-
POJO是不继承父类、不实现框架接口、不依赖注解的纯Java对象;Entity耦合JPA生命周期管理,PO仅作SQL映射;推荐统一用UserDO命名数据库类,DTO用于服务间传输,VO用于前端展示,且均需实现Serializable。
-
自定义类实现AutoCloseable接口需重写close()方法,确保幂等、线程安全及资源正确释放;try-with-resources会自动调用该方法,异常时close()仍执行且可能被抑制;I/O类建议继承Closeable以语义更清晰。
-
直接调用枚举类的values()方法可获取所有已定义常量实例,返回按声明顺序排列的枚举类型数组,支持for-each或传统for循环遍历。
-
ServiceConfigurationError是包装异常,真实冲突在getCause()中;常见原因包括类加载器不一致导致“notasubtype”、配置文件多处覆盖、类路径缺失或static块异常,需逐个捕获迭代并校验类加载器一致性。
-
答案:通过开发在线投票应用掌握JavaWeb核心技能。该系统使用JavaServlet处理请求,JSP生成前端页面,MySQL存储投票数据,实现用户投票、防重投及结果展示功能,部署于Tomcat服务器,涵盖前后端交互、数据库操作等关键技术点。
-
Optional.ifPresent仅用于本地空值防护,不能解决微服务迁移中的上下文断裂、分布式容错等问题;它适用于DTO转换、配置读取等轻量场景,需配合契约定义、统一结果封装和降级机制保障变量安全。
-
数组可模拟内存对齐:用char数组申请原始内存,通过位运算计算对齐地址,再按类型对齐要求顺序布局变量;封装为内存池结构后支持反复分配,但需确保对齐值为2的幂且避免非对齐解引用。
-
应手写ThreadPoolExecutor替代Executors工厂方法,因其无界队列易致OOM、无限建线程引发内存与CPU飙升;需显式配置有界队列、合理线程数及拒绝策略,并规范异常处理与监控联动。
-
应用模块描述文件规范核心在于用机器可读契约明确“谁提供什么”和“谁依赖什么”,通过module.json等声明exposes、requires及runtimeConstraints,CI/CD自动校验依赖、冻结共有变量对象,并由契约委员会协同治理。
-
方法重载指同一类中多个同名方法参数列表不同,编译期根据参数数量、类型或顺序精确匹配,仅参数列表决定重载,与返回值、修饰符、异常声明无关。
-
答案:Java项目中通过明确服务、仓库、实体与值对象、应用服务的角色边界,实现低耦合高内聚;服务封装业务逻辑并协调组件,仓库抽象数据访问,实体与值对象承载领域核心,应用服务编排用例并处理横切关注点,职责分明提升可维护性与测试性。