电话
400 9058 355
News
上下文切换是CPU在多线程间保存并恢复线程状态的开销操作,由操作系统执行;常见触发场景包括sleep、wait、锁竞争、IO阻塞及频繁创建线程;线程数过多反而降低性能,因缓存失效、时间片过短和内存压力增大;ThreadLocal不减少切换次数,误用还易致内存泄漏;根本优化在于减少切换,如控制线程数、使用异步IO、避免阻...
time.Sleep仅阻塞当前goroutine,其他goroutine仍运行;单位必须显式指定如time.Second,避免误写为纳秒;不可取消,需中断时应使用time.AfterFunc或time.NewTimer。
MySQL触发器中,BEFOREUPDATE/DELETE用OLD.字段获取旧值,BEFOREINSERT/UPDATE用NEW.字段获取新值;AFTER触发器不可修改NEW,且INSERT中OLD不可用。
Arrays.asList()不能直接修改原数组,因其返回的是不支持add/remove的内部ArrayList;传入基本类型数组会因泛型擦除导致仅含一个元素。
Java中用+拼接字符串需注意:编译期字面量相加被优化为常量,含变量时每次均创建StringBuilder和String对象;循环中滥用会导致O(n²)复杂度和大量临时对象;仅在3项且无循环时安全使用。
用archive/zip压缩单个文件时必须用zip.FileInfoHeader从os.FileInfo提取ModTime和Mode,否则解压后时间戳为1970年、权限丢失;递归压缩目录需规范路径、避免符号链接循环、正确处理目录项和路径安全校验。
用$arr===array_values($arr)可准确判断索引数组,因仅当键为从0开始的连续整数时两者才全等;该方法简洁高效、类型安全,且对空数组返回true。
Go工厂模式用接口+函数返回具体实例解耦创建与使用,应返回明确接口而非interface{},通过注册表替代if/else,支持选项函数或配置结构体传参,注册需线程安全,工厂应轻量无副作用。
邮箱:8955556@qq.com
Q Q:8955556