这是一个由社区驱动的uBlock Origin黑名单,旨在阻止主要使用人工智能生成内容的网站,这些网站通常质量低下,充斥着广告的“内容农场”。创建者手动添加在浏览过程中遇到的,除了搜索引擎优化和潜在的错误信息之外几乎没有价值的网站。 该列表侧重于阻止人工智能生成垃圾信息的*来源*,无论是整个域名还是像Medium这样的平台上的特定博客。欢迎通过pull requests或issue报告进行贡献,特别是为了扩大覆盖范围,超越创建者自己的发现(目前偏向意大利网站)。 该项目避免使用自动检测,因为可靠地识别人工智能生成的内容具有困难。相反,它依赖于识别诸如过于冗长的介绍、通用标题(“终极指南”)、缺乏来源、过多的推荐链接以及快速发布大量文章等模式。目标不是阻止人工智能工具本身,而是过滤掉这些农场生产的低质量、潜在有害的内容。 该列表可在[https://raw.githubusercontent.com/alvi-se/ai-ublock-blacklist/master/list.txt](https://raw.githubusercontent.com/alvi-se/ai-ublock-blacklist/master/list.txt)处获取,以便导入到uBlock Origin中。
## std::shared_mutex: C++ 中的读写锁
本文探讨了 `std::shared_mutex`,这是 C++17 的一项特性,为主要读取的数据提供了改进的并发性。与提供独占访问的 `std::mutex` 不同,`std::shared_mutex` 允许多个读取者同时访问资源,同时确保写入者拥有独占访问权。
其核心优势在于,在频繁读取和不频繁写入的场景中(例如缓存、配置数据或统计信息),可以提高吞吐量。基准测试表明,在读取密集型工作负载中使用 `std::shared_mutex` 代替 `std::mutex` 可以显著提高性能(在某个示例中,运行时从 285 毫秒减少到 102 毫秒)。
关键注意事项包括避免递归锁定以及无法在潜在死锁的情况下将共享锁升级为独占锁。虽然 `std::shared_mutex` 会引入一些开销,但它仍然是一个有价值的工具,尤其是在优先考虑简单性时。
尽管 C++20 及更高版本引入了新的并发特性(例如 `std::jthread` 和信号量),但 `std::shared_mutex` 仍然是有效地管理主要进行读取操作的共享状态的实用解决方案。
## 24 Hour Fitness 无法使用的退订链接
24 Hour Fitness 因其营销邮件中持续无法使用的退订链接面临潜在法律问题,这个问题早在2019年就被报告。点击该链接会显示西班牙语错误信息,源于与OneTrust同意管理平台通信时,JavaScript代码中关于内容类型标头的一行错误——讽刺的是,OneTrust是一家专注于法规遵从的公司。
尽管该问题于2025年11月被报告,并提供了简单的修复方案,但至今仍未解决,导致作者收到了超过40封不想要的营销邮件。这违反了CAN-SPAM法案,该法案要求提供可用的退出机制,类似违规行为的近期罚款已达数百万美元。
作者对持续不断的无关营销“精神攻击”感到沮丧,因此自行构建了一个可用的退订页面作为替代方案。他们呼吁24 Hour Fitness的工程团队中的某人实施这一行修复代码,并为所有用户解决该问题。