标签: 编程
37 个内容
笔记(26)
本文针对正则表达式中词边界`\b`在处理中英文混排时失效的问题,提出了使用Unicode属性和环视(lookaround)的解决方案。针对JavaScript、Python和Go等常见语言,分别给出了使用建议和规避方案,并提供了多个典型用例。核心是CJK场景下避免依赖`\b`,利用环视和Unicode属性类实现更精确的匹配。
Unicode字符类正则表达式`[\\pP\\pS\\pZ]`用于匹配标点符号(\pP)、符号(\pS)和分隔符(\pZ)。常用于文本清理、数据预处理、格式验证和分词处理,可匹配中英文标点、数学符号、货币符号及空格等,适用于处理多语言文本中的非字母数字字符。
JavaScript 类型系统区分值类型和引用类型,影响内存存储和操作。通过 `typeof` 和 `instanceof` 进行类型判断,需注意其局限性。V8引擎使用隐藏类和指针标记优化类型处理。理解类型底层机制、内存管理及关注新提案,能编写更高效的 JavaScript 代码。
本文深入解析了 JavaScript 核心机制,包括 caller 的底层原理及替代方案,this 绑定机制及解决方案,以及 Unicode 字符串处理,如 UTF-16 编码、代理对、Unicode 规范化及最佳实践。强调理解规范定义与引擎实现,并关注 ECMAScript 新特性。
本文深入解析了 TypeScript 类型系统,对比 interface 与 type 的差异和应用场景,强调类型注解的工程价值,并探讨类型谓词、泛型约束、条件类型等进阶实践。同时,分析了编译性能优化策略和未来演进方向。
本文介绍了 TypeScript 中 `satisfies` 运算符的实用技巧。`satisfies` 允许在不丢失类型推断的情况下为值添加类型注解,特别适用于强类型化函数。文章通过 `URLSearchParams` 的例子,展示了如何使用 `satisfies` 实现更强的类型检查,避免因类型宽松导致的潜在错误。
本文介绍了求解数组中唯一元素和的问题。分别使用 Rust 和 TypeScript 两种语言,通过 Hashmap 统计数组中每个元素的出现次数,然后过滤出只出现一次的元素并求和。Rust 解法中使用了 `fold` 和 `filter_map` 方法。
本文总结了 Rust 的关键概念,包括:可见性控制(`pub(crate)` vs `pub`)、默认私有性、范围迭代差异、单元测试、派生宏(`Default`、`Debug`)、`usize` vs `i32`、引用与解引用、Option处理(`as_ref()` vs `&`)、错误处理、字符串处理(`&str`、`String`、原始字符串),以及Rust语法的变量绑定、数据类型、控制流、所有权、模块和命名空间、集合、并发、文件I/O、网络、函数式编程和测试等重要特性。
本文档介绍了 JavaScript 内置对象 Function 和 String 的相关知识。Function 部分涉及 `caller` 属性和 `this` 指向问题。String 部分讨论了 surrogate pair 的处理,以及 Unicode Decomposition 和 normalize 方法的使用。
本文介绍了 TypeScript 中定义非空数组和元素非空数组的类型体操。`NonEmptyArray<T>` 类型确保数组至少包含一个元素。`NonNullableElement<T>` 类型则用于确保数组中的元素都不是可空类型。
本文档为正则表达式速查表,旨在提供常用的正则表达式语法和标志位参考。内容包括字符类、锚点、转义字符、分组与断言、量词与替换等。同时提供了常见用法示例,例如去除字符串首尾空格。
本文介绍了 JavaScript 中值类型(基本类型)和引用类型的区别。值类型存储在栈中,复制的是值本身;引用类型存储在堆中,复制的是指针。文章还讨论了使用 `typeof` 和 `instanceof` 检测类型的方法,以及内存空间分配、声明提升和严格模式等相关概念。
本文总结了 TypeScript 的实用特性,包括:利用 `infer` 关键字在条件类型中推断类型;`never` 类型表示不可观测的值;`keyof + in` 用于创建类型转换。同时,针对 pnpm 安装后类型提示缺失的问题,提出在 `d.ts` 文件中使用三斜线指令 `/// <reference types="..." />` 解决。最后解释了函数返回非 void 类型可以赋值给返回 void 类型的原因,强调 void 函数的关键在于返回值被忽略。
本文探讨递归的三种形式:记忆化、分治和回溯。重点讲解回溯法,用于解决N个for循环问题,通过试错和剪枝优化进行暴力搜索,并给出经典例题及代码示例。同时分析了JS中递归与迭代的效率问题,通常迭代效率更高。
尾调用优化(TCO)是一种函数调用优化技术,当函数最后一个操作是调用另一个函数时,无需返回到原调用者,节省栈空间。文章解释了尾调用的概念、如何判断尾调用位置,以及如何将非尾递归函数转换为尾递归函数。TCO仅在严格模式下生效,目前仅Safari浏览器支持。
动态(11)
那些留在2023年的日子:五月
- Docker 多阶段构建
- TypeScript namespace 的妙用,在生成模版代码的时候可以免导入,直接使用 namespace 获取
- BFS 和 DFS 的优缺点,fiber 为什么选择 DFS