我有一个C应用程序,它产生大量的输出,速度是至关重要的.该程序基本上是一个大型(8-12GB)二进制输入文件的循环,必须按顺序读取.在每次迭代中,处理读取的字节并生成输出并将其写入多个文件,但不会同时写入多个文件.因此,如果您处于生成输出的位置,并且有4个输出文件,则写入文件0或1或2,或3.在迭代结束时,我现在使用写入输出fwrite(),从而等待写入操作完成.输出操作总数很大,每个文件最多400万,文件输出大小从100mb到3.5GB不等.该程序在基本的多核处理器上运行.
我想在一个单独的线程中写输出,我知道这可以完成
我有两类问题,即概念和特定代码.
什么是最好的方法.请注意,应用程序应该可以移植到Linux,但是,我不知道这对于我选择的1-3是多么重要,因为我会编写一个关于任何内核/ API特定的包装器.对我来说,最重要的标准是速度.我已经读过,选项1不太可能提高程序的性能,并且内核在任何情况下都会为i/o操作创建新的线程,那么为什么不立即使用选项(2)并具有看似它的优势更容易编程(因为我没有使用选项(1)成功,请参阅下面的代码问题).
请注意,我阅读/sf/ask/258283161/,但我没有看到使用什么的动机基于应用程序的性质.所以我希望有人能给我一些建议,在我的情况下最好.同样来自Johnson M. Hart的书"Windows系统编程",我知道推荐使用线程,主要是因为简单.但是,它也会最快吗?
这个问题涉及我迄今为止进行异步I/O工作的尝试.我知道它是一大段代码,所以它不容易调查.无论如何,我真的很感激任何尝试.
为了减少执行时间我试着通过编写使用WINAPI一个新的线程的方式输出CreateFile()与FILE_FLAGGED_OVERLAP具有重叠结构.我已经创建了一个示例程序,我试图让它工作.但是,我遇到了两个问题:
该文件只在重叠模式打开,当我删除一个已经存在的文件(我已经尝试使用CreateFile不同的模式(CREATE_ALWAYS,CREATE_NEW,OPEN_EXISTING),但这并不能帮助).
只有第一个WriteFile是异步执行的.其余WriteFile命令是同步的.对于这个问题,我已经咨询过http://support.microsoft.com/kb/156932.似乎我遇到的问题与"对扩展其长度的文件的任何写操作将是同步的"这一事实有关.我已经尝试通过增加文件大小/有效数据大小(代码中的注释区域)来解决这个问题.但是,我仍然没有让它工作.我知道的事实,它可能是得到最有效地利用异步IO的我应该的情况下CreateFile用FILE_FLAG_NO_BUFFERING,但是我不能让这个为很好地工作.
请注意,程序在执行路径中创建一个大约120mb的文件.另外请注意,打印报表"不正常"不desireable,我想看看"可以做后台工作"出现在我的屏幕上......错在这里?
#include <windows.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ASYNC // remove this definition to run synchronously (i.e. using fwrite)
#ifdef ASYNC
struct _OVERLAPPED *pOverlapped;
HANDLE *pEventH;
HANDLE *pFile;
#else
FILE *pFile;
#endif
#define …Run Code Online (Sandbox Code Playgroud) 嘿,我只是想知道每个人在winForms中用来设置单选按钮的方法.我发现它们非常简单,并且想为控件添加一些颜色或不同的图像.我能想到的唯一方法是实际使用看起来像radiobutton的按钮,并将其设置为true或false.
只是想知道我是否有办法做到这一点,但仍然使用无线电控制.
我们有一个Eclipse安装,它没有像所有其他安装一样显示搜索结果发生的各个行,如下所示:

我们如何启用此功能以显示每行中的单个结果?
假设一个项目使用Spring并在XML中定义它的bean?它有一些bean在构造函数中接受Map.
通常,此映射被定义为bean下的属性,并在其下具有条目.
但如果参赛名单很大呢?它将使XML大量繁荣......
是否(地图)可以在XML文件中以某种方式定义,然后由需要它的bean进行重新引用?怎么样 ?
有人可以比我更简洁地向SO社区描述NFA到DFA的转换算法吗?(最好是500字以内.)我见过的图表和讲座只会让我以为我曾经认识的东西感到困惑.我最有信心从状态图生成初始NFA转换表,但之后,我丢失了epsilons和子集中的DFA.
1)在转换(delta)表中,哪一列代表新的DFA状态?它是生成状态的第一列吗?
2)在下面我的例子的第{2,3}行中,{2,3}在状态图方面对NFA的意义是什么?(对不起,我必须在图片中思考.)我认为这将是DFA中的"输入0回环"?
3)从表格到DFA或识别所得到的DFA的接受状态的任何简单的"经验法则"?
有限自治
delta | 0 | 1 |
=======+=======+========+
{1} |{1} |{2} |
{2} |{3} |{2,3} |
{3} |{2} |{2,4} |
{2,3} |{2,3} |{2,3,4} |
{2,4} |{3,4} |{2,3,4} |
{2,3,4}|{2,3,4}|{2,3,4} |
{3,4} |{2,4} |{2,4} |
Run Code Online (Sandbox Code Playgroud)
编辑:这是上面的点格式表,欢呼Regexident.
digraph dfa {
rankdir = LR;
size = "8,5"
/* node [shape = doublecircle]; "1";*/
node [shape = circle];
"1" -> "1" [ label = "0" ];
"1" -> "2" [ label = "1" ];
"2" -> "3" [ …Run Code Online (Sandbox Code Playgroud) 我想为一些插件创建phing任务,所以目录结构是这样的
root
- plugin1
- index.php
- plugin2
- index.php
Run Code Online (Sandbox Code Playgroud)
等等..
我想在每个子目录上运行相同的任务 - 例如
这可能吗?我需要类似的东西
<foreach param="filename" absparam="absfilename" target="subtask">
<fileset dir=".">
<include name="*.php"/>
</fileset>
</foreach>
Run Code Online (Sandbox Code Playgroud)
但对于目录.
或者我是否必须为每个插件独立编写build.xml?
非常感谢.
试图调整存储在我的SD卡上的图像的大小,我注意到原始颜色在哪里被改变了.它接缝BitmapFactory.decodeFile对此负责.这是一个演示代码:
private void testImage() throws Exception{
BitmapFactory.Options o = new BitmapFactory.Options();
o.inDither = false;
o.inPreferredConfig = Bitmap.Config.ARGB_8888;
o.inScaled = false;
Bitmap b = BitmapFactory.decodeFile("/sdcard/test/original.jpg", o);
b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream("/sdcard/test/result.jpg"));
b.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream("/sdcard/test/result.png"));
}
Run Code Online (Sandbox Code Playgroud)
结果图像(original.jpg,result.jpg,result.png):



你有没有看到,男孩的皮肤在2张图片上有点绿.解决这个问题的任何提示?
我目前正在升级一个旧的rails应用程序以使用Rails 3和Ruby 1.9.2,而RMagick是我需要安装的最后一个gem.但是,Windows似乎没有任何1.9.2下载,标准的gem安装RMagick也不起作用.
有人能指出我如何安装这个宝石的正确方向吗?
我想创建一个Windows服务,验证数据并从另一个Windows应用程序访问它,但我是新的服务,我不知道如何开始.
因此,在服务运行时,Windows应用程序应以某种方式连接到服务,发送一些数据并获得响应,无论是真还是假.
我之前从未使用过WebClient,我不确定是否应该检查来自服务器的响应,以了解上传是否成功,或者如果没有异常我是否可以将文件设置为已上传.
如果我应该检查响应我该怎么做?解析resposeHeaders属性?
提前致谢.