标签: 编程

37 个内容

笔记(26)

本文针对正则表达式中词边界`\b`在处理中英文混排时失效的问题,提出了使用Unicode属性和环视(lookaround)的解决方案。针对JavaScript、Python和Go等常见语言,分别给出了使用建议和规避方案,并提供了多个典型用例。核心是CJK场景下避免依赖`\b`,利用环视和Unicode属性类实现更精确的匹配。

Elliot Yang·
77 浏览

Unicode字符类正则表达式`[\\pP\\pS\\pZ]`用于匹配标点符号(\pP)、符号(\pS)和分隔符(\pZ)。常用于文本清理、数据预处理、格式验证和分词处理,可匹配中英文标点、数学符号、货币符号及空格等,适用于处理多语言文本中的非字母数字字符。

Elliot Yang·
336 浏览

本文探讨了Go语言中`%v`格式化输出slice的行为,当slice为nil或empty时均显示为`[]`。为区分两者,建议使用`%#v`查看Go语法表示或直接判nil。此外,文章还提及了`%T`、`%p`等其他格式化选项。

Elliot Yang·
173 浏览

本文详细介绍了编程中泛型类型参数的逆变与协变概念。协变允许子类型容器向上转型为父类型容器(返回值场景),逆变允许父类型容器向下转型为子类型容器(参数场景)。文章对比了协变、逆变与不变,并解释了引入逆变与协变以兼顾灵活性和类型安全的原因。

Elliot Yang·
130 浏览

本文深入解析Go并发编程的四大核心组件:goroutine、channel、atomic和sync包锁。Goroutine提供轻量级并发,channel实现通信同步,atomic支持原子操作,sync包提供锁机制。文章剖析了各组件的原理、应用场景及最佳实践,并探讨了未来发展趋势。

Elliot Yang·
184 浏览

本文深入解析了Golang的类型组合哲学,区别于传统继承,采用结构体嵌入和接口组合实现代码复用和扩展。强调组合优于继承,解耦数据与行为,并探讨了工业级最佳实践、潜在问题及未来发展趋势。

Elliot Yang·
224 浏览

本文深入探讨了 TypeScript 类型系统的设计哲学与实践智慧,包括类型操作符进阶应用(`infer`、`keyof`、映射类型、`never`),声明空间的工程化实践,类型兼容性的协变与逆变,以及类型编程的最新进展和编译性能优化策略。同时,还讨论了类型安全的 API 响应处理和高级模式匹配实践,以及类型系统边界的探索。

Elliot Yang·
165 浏览

JavaScript 类型系统区分值类型和引用类型,影响内存存储和操作。通过 `typeof` 和 `instanceof` 进行类型判断,需注意其局限性。V8引擎使用隐藏类和指针标记优化类型处理。理解类型底层机制、内存管理及关注新提案,能编写更高效的 JavaScript 代码。

Elliot Yang·
93 浏览

本文深入解析正则表达式,涵盖语法层级、引擎原理、贪婪/惰性匹配、分组捕获、断言机制。强调性能优化(避免回溯、预编译)、多语言差异、安全防护(ReDoS)。探讨前沿发展、可视化工具、经典案例,并反思其适用边界和可读性平衡。

Elliot Yang·
134 浏览

本文深入解析 TypeScript 数组类型约束,涵盖非空数组、元素非空校验的实现,并探讨了递归类型映射、联合类型处理等高级机制。强调编译时类型与运行时校验协同,以及性能优化策略。最后给出工程实践、问题解决及最佳实践指南。

Elliot Yang·
106 浏览

本文深入解析了 JavaScript 核心机制,包括 caller 的底层原理及替代方案,this 绑定机制及解决方案,以及 Unicode 字符串处理,如 UTF-16 编码、代理对、Unicode 规范化及最佳实践。强调理解规范定义与引擎实现,并关注 ECMAScript 新特性。

Elliot Yang·
105 浏览

Rust 学习要点:变量绑定(可变性 `mut`),基本数据类型(整数、浮点、布尔、字符),复合类型(元组、数组),控制流(if, loop, while, for, match),所有权与借用,错误处理(Result, Option, unwrap, ?)。通过练习可掌握 Rust 特性。

Elliot Yang·
93 浏览

本文深入解析了 Rust 链表反转,强调了内存模型、所有权系统和工程实践。阐述了 Rust 中链表节点的设计,对比了智能指针的选择,剖析了经典反转算法,并探讨了安全操作、测试、并发、性能优化等实践要点,以及未来发展方向。

Elliot Yang·
122 浏览

本文深入解析了 TypeScript 类型系统,对比 interface 与 type 的差异和应用场景,强调类型注解的工程价值,并探讨类型谓词、泛型约束、条件类型等进阶实践。同时,分析了编译性能优化策略和未来演进方向。

Elliot Yang·
95 浏览

本文介绍了 TypeScript 中 `satisfies` 运算符的实用技巧。`satisfies` 允许在不丢失类型推断的情况下为值添加类型注解,特别适用于强类型化函数。文章通过 `URLSearchParams` 的例子,展示了如何使用 `satisfies` 实现更强的类型检查,避免因类型宽松导致的潜在错误。

Elliot Yang·
112 浏览

本文介绍了使用 Rust 反转链表的算法实现。针对链表反转问题,文章给出了 Rust 代码示例,并详细解释了代码中 `Box` 的作用,以及为何在链表数据结构中必须使用 `Box`。同时,对比了 `Box` 和 `Rc<RefCell<T>>` 的区别,并通过单元测试验证了代码的正确性。还解释了`take`、`as_mut`、`as_ref`、`unwrap`等方法的使用和所有权问题。

Elliot Yang·
99 浏览

本文介绍了解决 Car Fleet 问题的 Rust 代码实现。问题背景是计算到达相同目的地的车队数量,关键在于理解车队的概念:即以相同速度和位置行驶的车辆集合。解决方案是计算每辆车到达目的地的时间,排序后,如果后续车辆到达时间大于当前车队,则形成新的车队。

Elliot Yang·
92 浏览

本文介绍了求解数组中唯一元素和的问题。分别使用 Rust 和 TypeScript 两种语言,通过 Hashmap 统计数组中每个元素的出现次数,然后过滤出只出现一次的元素并求和。Rust 解法中使用了 `fold` 和 `filter_map` 方法。

Elliot Yang·
98 浏览

本文总结了 Rust 的关键概念,包括:可见性控制(`pub(crate)` vs `pub`)、默认私有性、范围迭代差异、单元测试、派生宏(`Default`、`Debug`)、`usize` vs `i32`、引用与解引用、Option处理(`as_ref()` vs `&`)、错误处理、字符串处理(`&str`、`String`、原始字符串),以及Rust语法的变量绑定、数据类型、控制流、所有权、模块和命名空间、集合、并发、文件I/O、网络、函数式编程和测试等重要特性。

Elliot Yang·
128 浏览

本文档介绍了 JavaScript 内置对象 Function 和 String 的相关知识。Function 部分涉及 `caller` 属性和 `this` 指向问题。String 部分讨论了 surrogate pair 的处理,以及 Unicode Decomposition 和 normalize 方法的使用。

Elliot Yang·
95 浏览

本文介绍了 TypeScript 中定义非空数组和元素非空数组的类型体操。`NonEmptyArray<T>` 类型确保数组至少包含一个元素。`NonNullableElement<T>` 类型则用于确保数组中的元素都不是可空类型。

Elliot Yang·
126 浏览

本文档为正则表达式速查表,旨在提供常用的正则表达式语法和标志位参考。内容包括字符类、锚点、转义字符、分组与断言、量词与替换等。同时提供了常见用法示例,例如去除字符串首尾空格。

Elliot Yang·
133 浏览

本文介绍了 JavaScript 中值类型(基本类型)和引用类型的区别。值类型存储在栈中,复制的是值本身;引用类型存储在堆中,复制的是指针。文章还讨论了使用 `typeof` 和 `instanceof` 检测类型的方法,以及内存空间分配、声明提升和严格模式等相关概念。

Elliot Yang·
110 浏览

本文总结了 TypeScript 的实用特性,包括:利用 `infer` 关键字在条件类型中推断类型;`never` 类型表示不可观测的值;`keyof + in` 用于创建类型转换。同时,针对 pnpm 安装后类型提示缺失的问题,提出在 `d.ts` 文件中使用三斜线指令 `/// <reference types="..." />` 解决。最后解释了函数返回非 void 类型可以赋值给返回 void 类型的原因,强调 void 函数的关键在于返回值被忽略。

Elliot Yang·
145 浏览

本文探讨递归的三种形式:记忆化、分治和回溯。重点讲解回溯法,用于解决N个for循环问题,通过试错和剪枝优化进行暴力搜索,并给出经典例题及代码示例。同时分析了JS中递归与迭代的效率问题,通常迭代效率更高。

Elliot Yang·
113 浏览

尾调用优化(TCO)是一种函数调用优化技术,当函数最后一个操作是调用另一个函数时,无需返回到原调用者,节省栈空间。文章解释了尾调用的概念、如何判断尾调用位置,以及如何将非尾递归函数转换为尾递归函数。TCO仅在严格模式下生效,目前仅Safari浏览器支持。

Elliot Yang·
128 浏览

动态(11)

E
Elliot Yang
公开
16:15 伊洪 :!! 5G 672 关注 人生有三件事学会了 就永远不会忘了: 游泳 骑自行车 退出vim 人生有三件事学会了就永远不会忘了: -游泳 -骑自行车 -退出 Vim 2 说点什么. 576 ?95 226
浏览:166点赞:0
E
Elliot Yang
公开

520想new一个对象,但是new不出来,才知道我是抽象类

from 現実的論理主義者

浏览:167点赞:0
E
Elliot Yang
公开
和尚不爱飘柔作者.14 956 热评 5天前·福建 1物是人非事事休,欲语泪先流? 2 抽刀断水水更流,举杯消愁愁更愁 3 寻寻觅觅,冷冷清清,凄凄惨惨戚戚? 4 假作真时真亦假,无为有处有还无: 5 明日复明日,明日何其多!日日待明日 万事成蹉跎 6.春风不与周郎便,铜雀春深锁二乔 7 鱼和熊掌不可兼得 8 举头望明月,低头思故乡。 9 先天下之忧而忧,后天下之乐而乐? 10 欲穷千里目,更上一层楼。 这是我自己猜的舒,我也不知道答案
10 24“码”上出发 程序员节主意活动 代玛猜诗词 ((item)&&(!people))everything=false, i杠(tears.setFlowing()) try{Speakerskr=newSpeaker();} catchlOException e;]() 餄醵锥cutWater(getKnife()){water+ +) r渥educeWorry(toastj{worry+ +}; S瘃施eeking++; 耢澥健oneliness++; (摜還奖isery++)+(Sadness++); if(FALSE =- true) TRUE =faise; i帶f(NULL == exist) 醄敵exist = NULL. while(tomorrow.hasNext()){ я瘺示howMany(tomorrow); tomorrow.next(); this.wait(WHOLE LIFE); return (null==everything)?null:nul if(leastWind.help(zhouyu)){ season=spring; b謚劳喔ronzeBird.lock(bigQiao); 鮐他ronzeBird.lock(smallQiao); 7 hold ? fish : palm; 鍪绪f(驾his.Head.SetDirection (TheMoon.Getlnstance().Position)) this,Head.SetDirection( G望篇ROUND DIRECTION); t鸟his.ThinkAbout(this.OriginatPlace): if(others.rejoice()=-true) 絨初self.rejoice();) else {self.worryO;} if(sight.getRange()<=1000) 醸building:level++
浏览:142点赞:0
E
Elliot Yang
公开

from Gawr Guraᅠ⁧~喵⁧

我的代码 )微博:@今日memes 运气 别人的旧数据库代码 网上的教程视频 Stack overflow 谷歌
浏览:202点赞:0
E
Elliot Yang
公开

via 匿名

from 心惊报

当凌晨2点时,你的代码还没成功运行 MYPLL INSTA I don't need sleep, lneed answers. 我不需要睡觉,我只想知道为啥
浏览:157点赞:0
E
Elliot Yang
公开
我玩游戏 vs 我写代码 我玩游戏:5 分钟存一个档 我写代码: git commit-am “优化代码” (+689-3812)
浏览:170点赞:0
E
Elliot Yang
公开

那些留在2023年的日子:五月

  • Docker 多阶段构建
  • TypeScript namespace 的妙用,在生成模版代码的时候可以免导入,直接使用 namespace 获取
  • BFS 和 DFS 的优缺点,fiber 为什么选择 DFS
浏览:154点赞:0
E
Elliot Yang
公开

喜报:人脑不能理解递归。(我已经栈溢出了)

浏览:195点赞:0
E
Elliot Yang
公开

BigInt 有啥用,就一个 int,小数都不能用。 10n/3n=3n

浏览:147点赞:0