-
fetch()发起GET请求分三步:调用函数、处理响应、解析JSON;默认为GET,需用response.json()解析数据,推荐async/await写法并用try/catch统一捕获错误。180 收藏 -
答案:通过Socket编程实现Java群聊功能,服务端用多线程管理客户端连接并广播消息,客户端双线程处理收发,使用线程安全集合存储输出流,确保消息实时同步。107 收藏 -
应优先选择ChannelInboundHandlerAdapter;SimpleChannelInboundHandler会自动释放消息,仅适用于只读场景,否则易致ReferenceCountException或ClassCastException。341 收藏 -
用StringBuilder.reverse()最省事但会修改原对象;应优先使用newStringBuilder(str).reverse().toString()避免副作用,手写翻转只需遍历一半长度。357 收藏 -
ATM类设计需保证线程安全:账户余额用AtomicInteger或synchronized保护;Account与ATM解耦;余额操作返回boolean;避免在getter/toString中做业务判断;withdraw需严格参数校验。480 收藏 -
for循环中声明的变量作用域仅限于该for语句块内,循环结束后变量不可访问,这是Java语言规范明确规定的声明作用域规则。398 收藏 -
Math.ceil()用于向上取整,正确计算分页总数:inttotalPages=(int)Math.ceil((double)totalCount/pageSize),需确保除法为double类型且pageSize>0。369 收藏 -
Collectors.collectingAndThen先执行收集操作再对结果进行转换,适用于不可变集合包装、类型转换和结果封装;例如结合toList与unmodifiableList创建只读列表,或对averagingInt结果取整,还可将结果封装进自定义对象,使用时需确保finisher无副作用且处理null情况。264 收藏 -
HashSet底层基于HashMap实现,元素作为key、value为静态对象PRESENT,唯一性由hashCode()和equals()共同保证,二者必须同时重写且保持一致性。234 收藏 -
装饰器模式通过组合动态扩展对象行为,核心是装饰器持有被装饰对象引用并委托调用;需定义统一接口,抽象装饰器提供默认委托实现,具体装饰器只添加自身逻辑,使用时可自由叠加。434 收藏 -
@Transactional+@Rollback是最直接有效的回滚方案,SpringBoot默认不自动回滚测试数据,必须显式启用事务管理才能触发回滚,核心机制是在测试方法执行前开启事务、结束时由@Rollback自动回滚。192 收藏 -
本文介绍一种“匹配优先”而非“分割优先”的正则策略:通过交替模式(alternation)一次性捕获所有目标单元——包括浮点数、预设关键词(如"cats""dogs")及其余单字符,避免复杂循环与多轮拆分。162 收藏 -
Collections.rotate()是Java中对List原地循环移位的方法;distance>0时向右移(末尾元素移至前面),<0时向左移,不创建新列表。225 收藏 -
setSoTimeout()仅控制单次阻塞读操作的空等超时,即无数据可读时最多等待时长;对connect()、write()无效,不约束整体请求耗时,需配合连接超时与业务层超时共同实现端到端控制。437 收藏 -
Scanner.nextLong()能直接读取long范围内大整数,无需额外处理;但需用hasNextLong()预检、注意超范围抛异常、超长整数应改用BigInteger,并在nextLong()后调用nextLine()清除换行符。152 收藏