问题列表 - 第26724页

在实时环境中使用C++预分配内存

我有一个获取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)

然而,使用模板工作并不是很有趣(现在让我们重新编译所有内容,因为我更改了注释!),并且它强制我在使用此功能时进行一些簿记.

这个问题有没有更好的设计?

c++ memory-management real-time

7
推荐指数
1
解决办法
1947
查看次数

jQuery .click()没有正确绑定

我想在点击链接时执行一些操作,我使用以下代码来实现这一点,但它很少有效.如果我点击链接它通常刷新页面,并且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中的其他位置复制

jquery

5
推荐指数
1
解决办法
4685
查看次数

Scala:得到特质混合的类的名称

给定一个类的实例,我们显然可以返回它的名字:

trait MixedInClassDiscovery {
  val className = this.getClass.getName
}

class AClass extends MixedInClassDiscovery {
  ...
  this.className // returns "AClass"
  ...
}
Run Code Online (Sandbox Code Playgroud)

但这种方式使用反射,一次用于每个实例AClass.相反,每个班级都可以做一次吗?

我想到的一个解决方案是将它混合到伴随对象而不是类本身.

scala traits

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

asp.net中长时间运行的进程#

我有一个Web应用程序,在后面的代码中有一个长时间运行(资源密集型)进程,最终输出是一个pdf文件(图像到pdf转换工具)

它运行良好..因为我在一个专用服务器上,它现在完全不是资源问题.

但是,我想知道如果一次处理超过20个用户,系统将达到其资源限制.

我已经看到用户输入他们的电子邮件的在线服务,我想这些流程在后台排队,结果通过1st-1st out方法通过电子邮件发送.

有人可以请教我如何使用C#在asp.net应用程序中实现这种逻辑?

c# asp.net process long-integer

3
推荐指数
1
解决办法
1636
查看次数

这个简单的SQL查询可以优化吗?

我有以下查询:

SELECT COUNT(*) 
FROM Address adr INNER JOIN 
     Audit a on adr.UniqueId = a.UniqueId
Run Code Online (Sandbox Code Playgroud)
  • 在数据库上(130万个地址,超过400万次审计)
  • 两个UniqueId列都是群集主键

查询需要很长时间才能完成.我觉得愚蠢,但有没有办法优化它?我想计算所有具有基础可审计的地址条目.

编辑:非常感谢您的所有输入,这里有一些更多的细节:

  • 查询将不会经常运行(它仅用于验证),但是感谢索引的视图提示,我将肯定地添加到我的知识中.
  • 所有地址都有一对一的审核.并非所有审核都是地址.
  • 查询需要1分钟以上才能完成.我发现这个太长了,不需要简单计算.

sql sql-server

7
推荐指数
2
解决办法
380
查看次数

内存流和大对象堆

我必须使用WCF通过不可靠的连接在计算机之间传输大文件.

因为我希望能够恢复该文件,并且我不希望受到WCF的文件大小限制,我将这些文件分块为1MB.这些"块"以流的形式传输.到目前为止哪个效果很好.

我的步骤是:

  1. 打开文件流
  2. 从文件中读取块到byte []并创建内存流
  3. 转移块
  4. 返回2.直到整个文件发送

我的问题在第2步.我假设当我从字节数组创建一个内存流时,它将最终在LOH上并最终导致outofmemory异常.我实际上无法创建此错误,也许我的假设是错误的.

现在,我不想在消息中发送byte [],因为WCF会告诉我数组大小太大.我可以更改允许的最大数组大小和/或我的块的大小,但我希望有另一种解决方案.

我的实际问题:

  • 我当前的解决方案是否会在LOH上创建对象并且会导致我的问题吗?
  • 有没有更好的方法来解决这个问题?

顺便说一句:在接收端,我简单地从到达流中读取较小的块并将它们直接写入文件,因此不涉及大字节数组.

编辑:

当前解决方案

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)

c# memory wcf out-of-memory large-object-heap

14
推荐指数
2
解决办法
8783
查看次数

在我不想要的顶部边缘

出于某种原因,我在页面顶部有一个空白.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)

顶部只有少量的空白区域,任何想法?

html css

2
推荐指数
1
解决办法
124
查看次数

C#'是'类型检查struct - 奇怪的.NET 4.0 x86优化行为

更新:我已向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框架的各种组合.

  • 有谁在.NET 4.0下看到过这类问题?
  • 运行runtests.bat时,其他人是否在计算机上看到与我相同的行为?
  • @ $ @#$?

  • 有没有解决这个问题?

test.cs中

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)

runtest.bat

@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)

c# compiler-construction optimization struct casting

38
推荐指数
3
解决办法
1490
查看次数

如何在JPA中使用Enum作为NamedQuery参数

我有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开心?

java jpa toplink java-ee

5
推荐指数
1
解决办法
9066
查看次数

调用和BeginInvoking MessageBox有什么区别?

在表格中,比较

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需要(非常短的)时间直到代码运行.这是可以预料的.

.net c# messagebox winforms

12
推荐指数
2
解决办法
4736
查看次数