标签: Go

5 个内容

笔记(5)

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

Elliot Yang·
77 浏览

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

Elliot Yang·
336 浏览

本文针对Go并发编程中懒汉式单例模式的重排问题,指出传统双重检查锁的隐患。推荐使用`sync.Once`保证线程安全和防止重排。同时,介绍了通过`atomic`手动实现的安全方案,强调了`atomic.Store/Load`屏障对防止指令重排的关键作用。

Elliot Yang·
95 浏览

本文讲解了并发编程中编译器重排的问题,该问题会导致多线程环境下数据竞争。Go 通过 `atomic` 包提供的 `Store` 和 `Load` 操作实现内存屏障,防止指令重排,保证数据同步。正确使用 `atomic` 操作,遵循“写数据 -> Store 标志 (release)”和“Load 标志 (acquire) -> 读数据”的模式,可避免并发问题。

Elliot Yang·
115 浏览

本文对比Go、Java和Node.js运行时机制,剖析其核心差异与设计哲学。Go静态编译,协程并发,适用于云原生;Java基于JVM,生态成熟,但冷启动慢;Node.js单线程事件循环,适合I/O密集型。选型需权衡性能、生态和团队能力。

Elliot Yang·
166 浏览