java教程技术文章
-
服务端支持断点续传需响应含Accept-Ranges:bytes或返回206;实操须先HEAD校验,再设Range请求头,写入前用独立RandomAccessFile.seek()定位,状态持久化至元数据文件,并禁用连接复用、手动处理重定向。453 收藏 -
不会自动放栈上,而是JIT编译器在方法内联且逃逸分析通过后,对未逃逸对象进行标量替换或栈上分配,需满足字段可拆解、无同步、无虚引用等约束。501 收藏 -
Quartz的CronTrigger时间不准根本原因是默认时区与调度器启动时机未对齐,解析表达式时按JVM默认时区偏移而非系统或启动时间时区;Job中@Autowired失效因Quartz反射创建实例不走Spring容器;SimpleTrigger适用于固定间隔场景,CronTrigger适用于含日历语义(如L、#、W)的触发;集群重复执行多因数据库锁未生效,需确认isClustered=true、LOCKS表存在、用户有SELECTFORUPDATE权限且不用H2/HSQLDB。175 收藏 -
当需元素唯一且按插入顺序遍历时应选LinkedHashSet;它用哈希表+双向链表实现,遍历稳定O(n),顺序可预测,而HashSet无序、TreeSet按自然序排序。220 收藏 -
需穿透多层异常封装定位根本原因:逐层调用getCause()或getRootCause(),识别InvocationTargetException、UndeclaredThrowableException等反射包装异常,结合堆栈中的Method.invoke等反射入口及字节码验证,辅以日志配置%ex{full}和框架配置优化。366 收藏 -
for循环适用于已知循环次数的场景,其语法为for(初始化;条件;更新){执行语句},如打印1到5:for(inti=1;i<=5;i++)System.out.println(i);325 收藏 -
静态内部类只能访问外部类的static成员,不能访问非静态成员;其实例化无需外部类实例,适用于无需隐式引用外部类实例的工具类等场景。440 收藏 -
Java集合交集用retainAll会修改原集合,需先复制;并集需根据类型选择addAll或HashSet/Stream;差集a.removeAll(b)对应A−B;三操作均依赖正确实现的equals/hashCode。106 收藏 -
安装OpenJDK需根据操作系统选择对应方式:Windows下载.exe安装,macOS可用.pkg或Homebrew,Linux用apt命令安装;随后配置JAVA_HOME及PATH环境变量,通过java-version验证;编写HelloWorld.java并编译运行测试环境;可选使用Maven等工具管理项目。291 收藏 -
可使用正则表达式删除中文字符:基础场景用/\u4e00-\u9fa5/g,扩展需求加CJK扩展区,推荐/\p{Script=Han}/gu(需u标志),并可叠加标点类匹配。
212
收藏
任务不返回结果是因为用了execute()而非submit(),或任务未正确返回值;Future.get()阻塞或抛ExecutionException需检查异常原因并统一收集后调用。
409
收藏
代理模式通过代理对象控制对真实对象的访问,分为静态代理和动态代理。静态代理在编译期生成,需为每个被代理类编写对应代理类,代码冗余;动态代理在运行时生成,包括JDK动态代理(基于接口)和CGLIB动态代理(基于继承),具有更高灵活性,适用于AOP、事务管理等场景。两者主要区别在于生成时机、灵活性、依赖条件和性能。
350
收藏
Eclipse启动提示“NoJavavirtualmachinewasfound”或JRESystemLibrary显示unbound,说明未正确配置外部JDK;需先验证java-version和javac-version可用,再在Preferences→Java→InstalledJREs中手动添加JDK根目录,最后为项目指定JRE。
405
收藏
抽象类必须用abstract修饰且不能被实例化,本质是“不完整的类”,用于被继承而非创建对象;含抽象方法的类必须声明为abstract,抽象方法无方法体、不可用private/static/final修饰;子类非abstract则须实现全部抽象方法。
208
收藏
ByteBuffer.wrap()不等于入池,它仅创建共享原数组的非池化HeapByteBuffer;真正入池需用Netty等框架的PooledByteBufAllocator分配并拷贝数据。
484
收藏