我有一个获取n字节输入缓冲区的函数,需要一个n字节的辅助缓冲区来处理给定的输入缓冲区.
(我知道vector在运行时分配内存,假设我正在使用一个使用静态预分配内存的向量.想象一下这不是一个STL向量.)
通常的做法是
void processData(vector<T> &vec) {
vector<T> &aux = new vector<T>(vec.size()); //dynamically allocate memory
// process data
}
//usage:
processData(v)
Run Code Online (Sandbox Code Playgroud)
由于我在一个实时环境中工作,我希望提前预先分配我需要的所有内存.
缓冲区在启动时仅分配一次.我希望每当我分配一个向量时,我都会自动为我的processData函数分配辅助缓冲区.
我可以用模板功能做类似的事情
static void _processData(vector<T> &vec,vector<T> &aux) {
// process data
}
template<size_t sz>
void processData(vector<T> &vec) {
static aux_buffer[sz];
vector aux(vec.size(),aux_buffer); // use aux_buffer for the vector
_processData(vec,aux);
}
// usage:
processData<V_MAX_SIZE>(v);
Run Code Online (Sandbox Code Playgroud)
然而,使用模板工作并不是很有趣(现在让我们重新编译所有内容,因为我更改了注释!),并且它强制我在使用此功能时进行一些簿记.
这个问题有没有更好的设计?
我想在点击链接时执行一些操作,我使用以下代码来实现这一点,但它很少有效.如果我点击链接它通常刷新页面,并且1/10次它实际上会弹出"嗨".怎么了?
$(document).ready(function()
{
$('#slconfiglink').click(function()
{
alert("hi");
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
HTML:
<ul>
<li><a href="#" id="slconfiglink">Config 1</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
请注意,ID不会在HTML中的其他位置复制
给定一个类的实例,我们显然可以返回它的名字:
trait MixedInClassDiscovery {
val className = this.getClass.getName
}
class AClass extends MixedInClassDiscovery {
...
this.className // returns "AClass"
...
}
Run Code Online (Sandbox Code Playgroud)
但这种方式使用反射,一次用于每个实例AClass.相反,每个班级都可以做一次吗?
我想到的一个解决方案是将它混合到伴随对象而不是类本身.
我有一个Web应用程序,在后面的代码中有一个长时间运行(资源密集型)进程,最终输出是一个pdf文件(图像到pdf转换工具)
它运行良好..因为我在一个专用服务器上,它现在完全不是资源问题.
但是,我想知道如果一次处理超过20个用户,系统将达到其资源限制.
我已经看到用户输入他们的电子邮件的在线服务,我想这些流程在后台排队,结果通过1st-1st out方法通过电子邮件发送.
有人可以请教我如何使用C#在asp.net应用程序中实现这种逻辑?
我有以下查询:
SELECT COUNT(*)
FROM Address adr INNER JOIN
Audit a on adr.UniqueId = a.UniqueId
Run Code Online (Sandbox Code Playgroud)
查询需要很长时间才能完成.我觉得愚蠢,但有没有办法优化它?我想计算所有具有基础可审计的地址条目.
编辑:非常感谢您的所有输入,这里有一些更多的细节:
我必须使用WCF通过不可靠的连接在计算机之间传输大文件.
因为我希望能够恢复该文件,并且我不希望受到WCF的文件大小限制,我将这些文件分块为1MB.这些"块"以流的形式传输.到目前为止哪个效果很好.
我的步骤是:
我的问题在第2步.我假设当我从字节数组创建一个内存流时,它将最终在LOH上并最终导致outofmemory异常.我实际上无法创建此错误,也许我的假设是错误的.
现在,我不想在消息中发送byte [],因为WCF会告诉我数组大小太大.我可以更改允许的最大数组大小和/或我的块的大小,但我希望有另一种解决方案.
我的实际问题:
顺便说一句:在接收端,我简单地从到达流中读取较小的块并将它们直接写入文件,因此不涉及大字节数组.
编辑:
当前解决方案
for (int i = resumeChunk; i < chunks; i++)
{
byte[] buffer = new byte[chunkSize];
fileStream.Position = i * chunkSize;
int actualLength = fileStream.Read(buffer, 0, (int)chunkSize);
Array.Resize(ref buffer, actualLength);
using (MemoryStream stream = new MemoryStream(buffer))
{
UploadFile(stream);
}
}
Run Code Online (Sandbox Code Playgroud) 出于某种原因,我在页面顶部有一个空白.html:
<body>
<div id="main">
<div id="topcontainer">
<div id="topmenu">
asdasdsa
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
css:
body
{
background-color:#FFF;
font-family:Arial, Helvetica, sans-serif;
}
#main
{
width: 1024px;
margin: 0 auto 0 auto;
}
#topcontainer
{
height: 80px;
}
#topmenu
{
height:40px;
background-image:url('../siteimages/topmenu.jpg');
}
#secondmenu
{
height:40px;
}
Run Code Online (Sandbox Code Playgroud)
顶部只有少量的空白区域,任何想法?
更新:我已向Microsoft Connect 提交了错误报告,请投票支持!
更新2: Microsoft已将错误报告标记为已修复
微软于18/08/2010 17:25发表
此错误将在运行时的未来版本中修复.我担心现在判断它是在服务包还是下一个主要版本中还为时过早.
自从升级到VS2010后,我的'is'关键字出现了一些非常奇怪的行为.
下面的程序(test.cs)在调试模式下编译时(对于x86)输出True,在编译时使用优化(对于x86)时输出False.编译x64或AnyCPU中的所有组合可得到预期结果True.
.NET 3.5下的所有编译组合都给出了预期的结果True.
我正在使用下面的批处理文件(runtest.bat)来编译和测试代码,使用编译器.NET框架的各种组合.
using System;
public class Program
{
public static bool IsGuid(object item)
{
return item is Guid;
}
public static void Main()
{
Console.Write(IsGuid(Guid.NewGuid()));
}
}
Run Code Online (Sandbox Code Playgroud)
@echo off
rem Usage:
rem runtest -- runs with csc.exe x86 .NET 4.0
rem runtest 64 -- runs with csc.exe x64 .NET 4.0
rem runtest v3.5 -- runs with csc.exe …Run Code Online (Sandbox Code Playgroud) 我有Entity一个enum属性和一对夫妇NamedQueries.其中一个NamedQueries具有enum属性作为参数即
SELECT m FROM Message m WHERE m.status = :status
当我尝试查询查询时,我得到以下错误;
Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class my.package.Status for parameter status with expected type of class my.package.Status from query string SELECT m FROM Message m WHERE m.status = :status.
我正在使用Toplink
这怎么样?我如何让JPA开心?
在表格中,比较
BeginInvoke (new Action (() => {
MessageBox.Show ());
}));
Run Code Online (Sandbox Code Playgroud)
同
Invoke (new Action (() => {
MessageBox.Show ());
}));
Run Code Online (Sandbox Code Playgroud)
有什么区别,什么时候应该使用一个而不是另一个?如何通过MessageBox的消息泵来影响行为?
我做了一些测试,发现两种方法都阻止了UI.
唯一的区别是Invoke实际上是立即调用的,而BeginInvoke需要(非常短的)时间直到代码运行.这是可以预料的.