缓存由缓存硬件透明地控制到处理器,因此如果我们在C程序中使用volatile变量,我的程序如何保证每次从指定的实际内存地址而不是缓存中读取数据.
我的理解是,
Volatile关键字告诉编译器不应优化变量引用,并应按代码中的编程读取.
缓存由缓存硬件透明地控制,因此当处理器发出地址时,它不知道数据是来自缓存还是来自内存.
因此,如果我需要每次都需要读取一个内存地址,我怎样才能确保它不是从缓存引用而是从所需的地址引用?
有些怎么样,这两个概念并不合适.请说明它是如何完成的.
(想象一下我们在缓存中有回写策略(如果需要分析问题))
谢谢你,Microkernel :)
c computer-science volatile computer-architecture memorycache
对于我的课程项目之一,我开始在C中实现"朴素贝叶斯分类器".我的项目是使用大量的训练数据实现文档分类器应用程序(尤其是垃圾邮件).
由于C数据类型的限制,现在我在实现算法时遇到了问题.
(我在这里使用的算法,http://en.wikipedia.org/wiki/Bayesian_spam_filtering)
问题陈述:该算法涉及获取文档中的每个单词并计算它是垃圾词的概率.如果p1,p2 p3 .... pn是字-1,2,3 ... n的概率.使用以下方法计算doc是否为垃圾邮件的概率

这里,概率值可以非常容易地在0.01左右.因此,即使我使用数据类型"double",我的计算也会进行折腾.为了证实这一点,我写了一个给出的示例代码.
#define PROBABILITY_OF_UNLIKELY_SPAM_WORD (0.01)
#define PROBABILITY_OF_MOSTLY_SPAM_WORD (0.99)
int main()
{
int index;
long double numerator = 1.0;
long double denom1 = 1.0, denom2 = 1.0;
long double doc_spam_prob;
/* Simulating FEW unlikely spam words */
for(index = 0; index < 162; index++)
{
numerator = numerator*(long double)PROBABILITY_OF_UNLIKELY_SPAM_WORD;
denom2 = denom2*(long double)PROBABILITY_OF_UNLIKELY_SPAM_WORD;
denom1 = denom1*(long double)(1 - PROBABILITY_OF_UNLIKELY_SPAM_WORD);
}
/* Simulating lot of mostly definite spam words */
for (index …Run Code Online (Sandbox Code Playgroud) 我是NLP和NLTK的初学者.我对NLP非常感兴趣,因此在一些当地机构参加了一个关于人工智能的周末课程,这需要我做一个完成课程的项目,我决定在NLP中完成.问题是,导师对这门课程并不擅长(据我说她只是一个骗子)(或者可能对教学不是很感兴趣,因为这是她最后一批,之后学院将把她送出去).所以我陷入了一个月到一个半月的时间里完成这个项目的情况,但作为一个天真的人,我觉得很难理解决定项目所需要的东西.(另外,由于我全职工作,我没有足够的时间专注于此).
由于以下原因,我考虑在python中使用NLTK工具包.(1)Python以易用性,快速原型设计和非常活跃的社区而闻名(考虑到我的时间非常短,而且由于我是专业的C程序员,我需要一种能够快速学习且易于学习的语言使用).
(2)NLTk有很好的评论,广泛的文档和非常活跃的社区.
所以问题是我应该采取什么样的项目,这样我才能学到一些东西,并能够及时完成项目.(我对NLP几乎一无所知,甚至不知道什么是语料库...... :()
所以,请为我提出一些我应该考虑的项目主题.
问候,
MicroKernel :)
我正在编写一个应用程序,需要自动拍摄屏幕截图(就像按PrintScreen按钮一样).所以请建议我如何完成这项工作.原始的24位BMP图像就足够了.
请注意:我的应用程序是在C中,因此可以从我的代码中调用的任何win32 API都是我正在寻找的.
(有时回来我得到了codeproject的示例代码,用于获取屏幕截图但鼠标指针用户在拍摄屏幕时闪烁.由于多次拍摄,这对用户来说很烦人,所以我不想要鼠标指针闪烁!)
我打算使用朴素贝叶斯分类模型来实现垃圾邮件过滤器。
在网上,我看到了很多有关朴素贝叶斯分类的信息,但是问题在于它涉及很多数学知识,而不是清楚地说明其完成方式。问题是我更像是一个程序员而不是数学家(是的,我在学校学习过概率论和贝叶斯定理,但是很长一段时间没有联系,而且我现在还没有足够的学习能力(几乎3周内准备好工作原型))。
因此,如果有人可以向我解释或指向我为程序员而不是数学家解释的位置,那将是很大的帮助。
PS:如果您想知道的话,我必须在C中实现它。:(
问候,微内核
介绍:
我目前正在开发一个C/C++文档分类器软件,我将使用朴素贝叶斯模型进行分类.但是我希望用户使用他们想要的任何算法(或者我将来想要的),因此我将体系结构中的算法部分分离为一个插件,该插件将附加到主应用程序@ app启动.因此,任何用户都可以将自己的算法编写为插件,并将其与我的应用程序一起使用.
问题陈述:
我打算开发这种方法的方法是让用户想要使用的每个算法都被制作成DLL文件并放入特定的目录中.一开始,我的应用程序将搜索该目录中的所有DLL并加载它们.
我的问题:
(1)如果将恶意代码作为DLL(并且具有插件框架规定的相同功能)并将其放入我的插件目录中该怎么办?在这种情况下,我的应用程序会认为它是一个插件并选择它并调用其功能,因此恶意代码可以轻松地降低我的整个应用程序(在最坏的情况下可能使我的应用程序作为恶意代码启动器!!!) .
(2)使用DLL是实现插件设计模式的唯一方法吗?(不仅因为害怕恶意插件,而且出于好奇心这是一个普遍的问题:))
(3)我认为很多软件都是用插件模型编写的,可扩展性如果是这样,他们如何防御这种攻击呢?
(4)一般来说,您如何看待我决定使用插件模型进行扩展(您认为我应该考虑其他任何替代方案吗?)
谢谢
-MicroKernel :)
您认为线程设计模式是多核未来的发展方向吗?
例如,线程池库(如果广泛使用)会强制/强制应用程序编写者
(1)将问题分解为单独的并行作业,从而促进(强制执行:)并行性
(2)从所有低级OS调用中抽象,同步等使程序员的生活更轻松.(特别是对于C程序员:))
我坚信它是多核未来的最佳方式(或者是"最好的方式之一:)"...
所以,我的问题是,我是在写这么想,还是我在妄想:)
问候,
微内核
我正在用C编写一些程序.它有一个部分用于进行一些概率计算,我使用的是log函数.普通库函数log()...
代码是这样的
double somevalue = 0.29558101472995091;
temp = log(somevalue)
Run Code Online (Sandbox Code Playgroud)
你猜怎么着?温度值-1856.0000000000000 !!!
由于log给出的值在某个结构中,我也编写了这个测试代码,得到了相同的结果......
int main()
{
double somevalue;
double temp;
somevalue = 0.29558101472995091;
temp = log(somevalue);
return 0;
}
Results:
Somevalue = 0.29558101472995091
temp = -1856.0000000000000
Run Code Online (Sandbox Code Playgroud)
不是很疯狂.任何人都有一些关于这里发生什么的线索.
我正在使用Visual Studio 2005.现在无法掌握其他编译器.
谢谢,
微内核:)
我是一名C程序员,但很久以来就学习过C++ @school.现在我试图用C++编写代码,但是编译错误.请检查并告诉我我的代码有什么问题.
typedef class _filter_session
{
private:
static int session_count; /* Number of sessions count -- Static */
public:
_filter_session(); /* Constructor */
~_filter_session(); /* Destructor */
}FILTER_SESSION;
_filter_session::_filter_session(void)
{
(this->session_count)++;
return;
}
_filter_session::~_filter_session(void)
{
(this->session_count)--;
return;
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
"错误LNK2001:未解析的外部符号"private:static int _filter_session :: session_count"(?session_count @ _filter_session @@ 0HA)"
我顺便使用Visual Studio 2005.
Plz plz帮帮我.
问候,
微内核
我有很多可执行文件,我已编译(很长一段时间),其中许多我现在没有源代码.但是当我编译它们时,我没有为它们添加任何图标,所以它们看起来都像是一个沉闷,光头的默认图标.所以我的问题是,
(1)我是否可以编写一个可以更改exe资源部分并更改其外观的软件?如果是这样,任何人都可以指向我解释的位置吗?(我是一个初学者,我不知道exe格式和所有)还有它的乐趣,继续更改图标,而不必重新编译一切只为图标更改...
(2)这引发了一个自然的反向问题,是否同样可以将某些文件使用的图标删除并将其用于其他文件?(如果是这样,请将我指向我可以获得一些细节的位置.
我是一名C/C++开发人员,我正在寻找Windows平台上的解决方案......
此致,MicroKernel
c ×5
c++ ×3
visual-c++ ×2
winapi ×2
algorithm ×1
architecture ×1
dll ×1
file-format ×1
math ×1
memorycache ×1
multicore ×1
naivebayes ×1
nlp ×1
nltk ×1
plugins ×1
python ×1
screenshot ×1
statistics ×1
threadpool ×1
volatile ×1
windows ×1