
值类别是 C++11 为适配移动语义而引入的重要概念,要理解这个概念我们得了解:左值、右值、将亡值、纯右值的概念,以及引入这些概念的原因。 1. 左值右值 在 ...
函数模板特化是 C++ 中一项非常重要的编程技巧。这篇文章,我们讲解下函数模板特化相关知识,主要讲解以下三个知识点: 1. 函数模板特化概念 2. 函数模板特...
并发编程里,为了避免多个线程同时读写同一块数据而产生数据竞争,我们通常会加锁。传统的 std::mutex 做法比较简单粗暴。无论读还是写,都只能让一个线程进去...

AdaBoost(Adaptive Boosting,自适应提升)算法由 Yoav Freund 和 Robert Schapire 于 1995 年提出,是一...

在多线程编程中,锁是保证数据同步与线程安全的核心机制。但当一个线程多次获取同一把锁时,普通互斥锁会导致死锁。递归锁(Recursive Mutex)允许同一个线...
在多线程编程中,多个线程同时访问同一资源可能会引发竞态条件(Race Condition),导致数据不一致或程序崩溃。为了解决这个问题,需要一种机制来确保同一时...

XGBoost(Extreme Gradient Boosting)2014 年由陈天奇开发,旨在对传统梯度提升算法(GBDT)进行高效实现和优化。2015 年...

在 C++ 的发展历程中,有一个极为重要的核心理念:RAII(Resource Acquisition Is Initialization,资源获取即初始化)。...

梯度提升树(Gradient Boosting Decision Tree,简称 GBDT)由 Friedman 提出,是集成学习领域的经典算法。 因此,GBD...

在数据分析中,K-means 聚类是一种非常常用的聚类方法。它的核心思想是:将相似的数据点归为同一簇,并为每个簇计算一个质心,然后把每个点分配到距离最近的质心所...

GBDT(Gradient Boosting Decision Tree,梯度提升树)本质上是一个二分类模型。它通过不断迭代地拟合前一轮模型的负梯度,逐步提升模...

在多线程编程中,如果共享的数据结构很复杂(比如链表、map、数据库缓存等),不同线程可能同时对它进行插入、删除等操作。 总结1:复杂共享数据 → std::mu...
负采样(Negative Sampling)是一种优化策略,广泛用于词向量训练中,以降低计算复杂度并提高训练效率。本文将重点从词向量训练的角度,讲解负采样的背景...
Lambda 无法捕获循环中的临时变量,如 test01 函数的例子。如果想要捕获循环中的临时变量,可以使用 test02 闭包函数、test03 类封装、te...