小编Gia*_*uca的帖子

用于在线异常检测的通用时间序列的简单算法

我正在处理大量的时间序列.这些时间序列基本上是每10分钟一次的网络测量,其中一些是周期性的(即带宽),而另一些则不是(即路由流量).

我想要一个简单的算法来进行在线"异常值检测".基本上,我想在内存(或在磁盘上)保存每个时间序列的整个历史数据,并且我想要检测实时场景中的任何异常值(每次捕获新样本时).实现这些结果的最佳方法是什么?

我目前正在使用移动平均线来消除一些噪音,但接下来是什么?简单的事情,如标准偏差,疯狂,...对整个数据集不能很好地工作(我不能假设时间序列是静止的),我想要一些更"准确"的东西,理想情况下是一个黑盒子,如:

double outlier_detection(double* vector, double value);
Run Code Online (Sandbox Code Playgroud)

其中vector是包含历史数据的double数组,返回值是新样本"value"的异常分数.

math statistics real-time time-series

11
推荐指数
1
解决办法
8181
查看次数

破坏Thread本地存储中的静态类成员

我正在编写一个快速的多线程程序,我想避免同步(需要同步的函数必须被称为每秒5,000,000次,所以即使互斥量太大也是如此).

场景是:我有一个类的全局实例,每个线程都可以访问它.为了避免同步,类中的所有数据都是只读的,除了一堆类成员,然后在TLS中声明(使用__thread或__declspec(thread)).

不幸的是,为了使用编译器提供的__thread接口,类成员必须是静态的,没有构造函数/解构函数.我使用的类当然有自定义构造函数,所以我作为类成员声明指向这些类的指针(类似于静态__thread MyClass*_object).

然后,第一次线程从全局实例调用方法时,我会执行类似"(如果_object == NULL)object = new MyClass(...)"的操作.

我最大的问题是:是否有一种智能的方式来释放这个分配的内存?这个全局类来自一个库,并且它被程序中的许多线程使用,并且每个线程以不同的方式创建(即每个线程执行不同的函数),并且每次我都不能放置代码的snipplet线程将要终止.感谢你们.

c++ multithreading synchronization

6
推荐指数
1
解决办法
5852
查看次数