我一直在努力寻找编写文件复制例程的最快方法,将大文件复制到RAID 5硬件上.
平均文件大小约为2 GB.
有2个窗口框(都运行win2k3).第一个框是源,大文件位于何处.第二个盒子有一个RAID 5存储.
http://blogs.technet.com/askperf/archive/2007/05/08/slow-large-file-copy-issues.aspx
以上链接清楚地解释了为什么Windows复制,robocopy和其他常见的复制实用程序在写入性能方面受到影响.因此,我编写了一个C/C++程序,它使用带有NO_BUFFERING&WRITE_THROUGHflags的CreateFile,ReadFile和WriteFile API .该程序模拟ESEUTIL.exe,从某种意义上说,它使用2个线程,一个用于读取,一个用于写入.读取器线程从源读取256 KB并填充缓冲区.一旦填充了16个这样的256 KB块,写入器线程就会将缓冲区中的内容写入目标文件.如您所见,编写器线程在一次写入中写入8MB的数据.该程序分配32个这样的8MB块...因此,写入和读取可以并行发生.可以在上面的链接中找到ESEUtil.exe的详细信息.注意:我在使用时负责数据对齐问题NO_BUFFERING.
我使用像ATTO这样的台式标记实用程序,发现我们的RAID 5硬件在写入8MB数据块时的写入速度为每秒44MB.每分钟大约2.57 GB.
但我的程序每分钟只能达到1.4 GB.
任何人都可以帮我确定问题是什么?是否有更快的API的其他说CreateFile,ReadFile,WriteFile可用?
我想编写我的第一个真正的MultiThreaded C#应用程序.虽然之前我使用过BackgroundWorker并且知道关于lock(对象)的一两件事,但我从未使用Thread对象,Monitor.Enter等等,而我完全迷失了从哪里开始设计架构.
基本上我的程序在后台运行.每隔5分钟,它会检查一个Web服务.如果Web服务返回数据,它将从此数据中创建作业并将其传递给JobQueue.JobQueue然后按顺序处理这些作业 - 如果添加新作业但仍在处理作业时,它将对作业进行排队.此外,还有一个Web服务器允许远程访问该程序.
我看到它的方式,我需要4个线程:
程序启动时应创建线程2-4,程序结束时应该结束,因此它们只运行一次.
如上所述,我真的不知道架构将如何工作.线程1会做什么?当MyProgram类被实例化时,它是否应该具有Queue<Job>属性?我该如何开始我的线程?据我所知,我需要将一个函数传递给线程 - 该函数应该放在哪里?如果我有一个类"MyJobQueueThreadClass"具有线程3的所有函数,那么如何访问MyProgram类上的Object?如果一个线程只是一个函数,我该如何阻止它提前结束?如上所述,线程2等待5分钟,然后执行一系列功能,并一遍又一遍地重启5分钟计时器(Thread.Sleep(300)?),直到我的程序结束(调用Thread.Abort(Thread2)in MyProgram的关闭/退出/解析器?)
我试图通过Flex应用程序调用我的WCF服务.我收到了System.ServiceModel.ServiceActivationException.我已将集成Windows Auth切换为开启,匿名访问,并且我在web.config中将模拟设置为false.项目和虚拟目录的名称也相同.
可能是什么问题?
我想知道使用actionscript,是否有可能发送电子邮件并在flashbuilder 4(flex)中创建前端,到处都看到php用于邮件,是否可能?
是否可以从LINQ查询中提取sql语句?
说,我有这个LINQ表达式.
string[] names =
new string[] { "Jon Skeet", "Marc Gravell", "tvanfosson",
"cletus", "Greg Hewgill", "JaredPar" };
var results = from name in names
where name.StartsWith("J")
select name;
Run Code Online (Sandbox Code Playgroud)
alt text http://ruchitsurati.net/files/linq-debugging.png
在此语句之后,'results'仅保留LINQ表达式而不是由于延迟执行LINQ查询而导致的结果.
我可以从'结果'中提取或生成LINQ查询,并从存储在'LINQ'中的查询中准备一个有效的SQL语句吗?
这是我的目标:
我们已经编写了自己的ORM.我们每次需要进行数据库操作时都必须编写查询.现在我们需要在DAL摆脱它.我们希望在代码中编写LINQ表达式,它将针对我的ORM生成SQL语句,我们将在数据库上执行此SQL.
我是否愿意编写我的定制Linq提供商来做我需要的事情?
我有一组网址:
/产品
/类别
/顾客
现在说客户名为约翰,我想帮助约翰用更短的网址到达他自己的帐户页面:
before : /customers/john
after : /john
Run Code Online (Sandbox Code Playgroud)
(假设客户名称是唯一的)
我正在试图找出一个合适的正则表达式调度程序,以便所有客户都可以拥有此功能:
/marry
/james
/tony-the-red-beard
Run Code Online (Sandbox Code Playgroud)
这是我现在得到的(在PHP中):
'/^\/([^(products|categories|admin)].+)$/' => /customers/$1
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.有人可以帮帮我吗?
即使我们有类似的语言C++, Java, Python,为什么COBOL仍然是商业世界的首选语言?
编辑:
它为何如此受欢迎?
很抱歉没有为此问题创建单独的帖子.
我正在听小组讨论,其中一个人提到他们的"引擎"不是1.3,但现在是170万行代码.这吓到我了.我无法想象行数,模块数量等等.我一直认为C++不像其他语言那样处理模块.我觉得大型项目难以管理,并且更愿意合理地保持代码行.当我达到10k线时,我感到不舒服.我无法想象20k,50k,500k或100万的感觉如何.
在开发和维护这种规模的项目时,您有哪些实践经验?
在谈论返回值优化(RVO)时,各种文本都提到了与命名对象的返回相关的异常情况.简而言之:
旁注:我试图添加以下标签:RVO和NRVO,但由于缺乏声誉点,我无法正确使用此帖子
我在编译项目时创建了一个.app应用程序.并且默认情况下它与项目名称相同.
如何获得programmaticaly的名称?