电话
400 9058 355
News
Java9模块化解决“谁该用”问题,通过JPMS根治JARHell、public泛滥和启动臃肿;module-info.java是强制性模块声明文件,需置于源码根目录;必须使用--module-path而非-cp启动,否则退化为未命名模块。
优先使用组合而非继承,因组合支持运行时替换、降低耦合、符合单一职责;继承仅在满足“是”关系且父类明确设计为可继承时才安全。
必须检查strconv解析函数的error,否则会因静默失败导致业务逻辑错误;Atoi仅支持十进制int,复杂需求应使用ParseInt/ParseFloat并显式指定base和bitSize;浮点解析需防范NaN/Inf及精度问题;[]byte场景优先用ParseBytes和Append以减少内存分配。
*T是Go中指向类型T的指针类型,与T完全不同,不能直接赋值;必须用&对可寻址变量取地址,解引用前需判空,传指针可修改原值但仅限*p=v,小类型通常传值,大结构体或需可选性/修改receiver时用指针。
std::stack不能遍历是因为它是仅提供LIFO接口的容器适配器,不提供begin()/end()等迭代器成员函数;若需遍历或查找,应改用vector/deque等合适容器。
能用但绝大多数场景下不该用;C++标准未废弃goto,它合法且被编译器支持,但破坏可读性与可维护性,仅适用于错误清理、多层跳出等极少数底层场景。
assert仅用于开发测试阶段暴露逻辑错误,禁用优化后失效;不可用于用户输入校验,因其可能被跳过且抛AssertionError而非业务异常;错误消息中避免副作用操作,且不应被try/except捕获。
Proxy和Reflect是运行时干预对象行为的底层机制,用于解决属性拦截、方法重写、可观测性等真实问题,而非语法糖;Proxy可拦截新增/删除属性等操作,优于Object.defineProperty,Reflect则提供统一、安全的默认操作接口。
邮箱:8955556@qq.com
Q Q:8955556