问题列表 - 第20604页

如何避免C++中的连续解除分配/分配?

请考虑以下代码:

class A
{
    B* b; // an A object owns a B object

    A() : b(NULL) { } // we don't know what b will be when constructing A

    void calledVeryOften(…)
    {
        if (b)
            delete b;

        b = new B(param1, param2, param3, param4);
    }
};
Run Code Online (Sandbox Code Playgroud)

我的目标:我需要最大限度地提高性能,在这种情况下,这意味着最大限度地减少内存分配量.

这里显而易见的事情是B* b;改为B b;.我看到这种方法存在两个问题:

  • 我需要b在构造函数中初始化.由于我不知道b将会是什么,这意味着我需要将虚拟值传递给B的构造函数.哪个,IMO,很难看.
  • calledVeryOften(),我将不得不做这样的事情:b = B(…),这有两个原因:
    • 析构函数b不会被调用.
    • 将构造B的临时实例,然后将其复制到b,然后将调用临时实例的析构函数.可以避免复制和析构函数调用.更糟糕的是,调用析构函数很可能导致不良行为.

那么我必须避免使用哪些解决方案new?请记住:

  • 我只能控制A.我无法控制B,而且我无法控制A的用户.
  • 我希望尽可能保持代码的清晰和可读性.

c++ oop optimization memory-management

13
推荐指数
3
解决办法
648
查看次数

WriteFile vs TransmitFile用于传输后需要从服务器删除的大文件

我必须触发用户下载大文件到webbrowser,我在那里创建要在服务器上传输的文件,然后立即删除它.我已经找到足够的例子来看我应该使用Response.TransmitFile或Response.WriteFile ......但是听说两者都有问题:

WriteFile是同步的,但它会在将文件发送给用户之前将文件缓冲在内存中.由于我正在处理非常大的文件,这可能会导致问题.

TransmitFile不在本地缓冲,因此它适用于大文件,但它是异步的,所以我无法在调用TransmitFile后删除该文件.显然刷新文件并不保证我也可以删除它?

处理这个问题的最佳方法是什么?

还有BinaryWrite ......我可以遍历文件流,将其复制到段中吗?

c# asp.net writefile transmitfile

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

JS:最优化的方法是从字符串中的路径中删除文件名?

我的字符串格式如下:
path/to/a/filename.txt

现在我想做一些字符串操作,这使我能够非常有效地从这段代码中删除"filename.txt"部分.换句话说,我希望我的字符串成为这样:
path/to/a/

最有效的方法是什么?目前我正在分割字符串并重新连接除最后一个元素之外的单独元素,但我感觉这是一种真正的,非常低效的方法.这是我目前效率低下的代码:

res.getPath = function(file)
{
  var elem = file.split("/");
  var str = "";
  for (var i = 0; i < elem.length-1; i++)
    str += elem[i] + "/";
  return str;
}
Run Code Online (Sandbox Code Playgroud)

javascript optimization

54
推荐指数
4
解决办法
3万
查看次数

传递类和索引时在C++中创建线程的最佳技术是什么?

我正在使用pthreads和C++创建一个数据并行程序.从一个类的pthread函数,我发现了如何提供pthread_create一个指向静态C++函数的函数指针(并为它提供一个this参数).

但是,我还需要为线程提供索引,因此它知道它正在处理什么数据.我可以malloc为每个线程提供一个结构(包含指向C++类和索引的指针),但这似乎会添加一些簿记代码,如果没有释放结构,可能会导致泄漏.有一个更好的方法吗?

c++ pthreads

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

仅打印警告消息

我在验证器中发出了很多警告,我想抑制stdout中的所有内容,除了提供的消息warnings.warn().

即,现在我看到了这个:

./file.py:123: UserWarning: My looong warning message
some Python code
Run Code Online (Sandbox Code Playgroud)

我想看到这个:

My looong warning message
Run Code Online (Sandbox Code Playgroud)

编辑2:覆盖warnings.showwarning()结果工作:

def _warning(
    message,
    category = UserWarning,
    filename = '',
    lineno = -1):
    print(message)
...
warnings.showwarning = _warning
warnings.warn('foo')
Run Code Online (Sandbox Code Playgroud)

python warnings

34
推荐指数
4
解决办法
8247
查看次数

ASP.NET MVC:Response.Redirect(url,TRUE)不会停止请求处理

我有一个用两个自定义ActionFilterAttribute修饰的方法.

[RequiresAuthentication(Order = 1)]
[ToonAction(Order = 2)]
public ActionResult Browse(...
Run Code Online (Sandbox Code Playgroud)

RequiresAuthentication属性来自这篇文章

在RequiresAuthentication内部,OnActionExecuting我做:

 filterContext.HttpContext.Response.Redirect(loginUrl, true);
Run Code Online (Sandbox Code Playgroud)

该行执行,参数全部按预期执行.问题是在执行上面的行后,我得到了下一个属性(ActionFilterAttribute),好像重定向不起作用,它只是继续执行请求,而不是简单地重定向浏览器.

问题:我还需要做什么来制作请求处理程序

这是一个完整的方法:

    public override void OnActionExecuting(ActionExecutingContext filterContext) {
        //redirect if not authenticated
        var identity = filterContext.HttpContext.User.Identity;
        if (!identity.IsAuthenticated) {
            //use the current url for the redirect
            string redirectOnSuccess = filterContext.HttpContext.Request.Url.PathAndQuery;

            //send them off to the login page
            string redirectUrl = string.Format("?ReturnUrl={0}", redirectOnSuccess);
            string loginUrl = FormsAuthentication.LoginUrl + redirectUrl;
            filterContext.HttpContext.Response.Redirect(loginUrl, true);
            // filterContext.Result = new HttpUnauthorizedResult();
            // filterContext.HttpContext.Response.StatusCode = 0x191;
        } …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

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

在给定任意长度的数组的情况下创建固定长度的数组

我正在寻找一种方法,通过按顺序重复对象,从任何数组中创建一个固定长度的数组(在我的情况下为12),它提供任意长度(尽管长度总是12或更小).

所以例如给定数组a:

a = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我想要回来:

a = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

另一个例子:

b = ["peach", "plumb", "pear", "apple", "banana", "orange"]
Run Code Online (Sandbox Code Playgroud)

会回来:

b = ["peach", "plumb", "pear", "apple", "banana", "orange", "peach", "plumb", "pear", "apple", "banana", "orange"]
Run Code Online (Sandbox Code Playgroud)

等等.如果给定一个包含12个对象的数组,它将返回相同的数组.

到目前为止,我为实现这一目标而编写的方法非常难看,并且不是非常Rubyish; 对别人如何处理这个问题感兴趣.

提前致谢.

ruby arrays

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

何时使用关联扩展名与命名范围?

从粗略的一瞥看,它们似乎只是针对同一组问题的两种不同方法,除了命名范围是可链接的,而关联扩展不是.

任何人都可以进一步解释,或提供一个更适合关联扩展而不是命名范围的示例吗?

ruby activerecord ruby-on-rails

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

是否有内置的Ruby 1.8.7将数组拆分为相同大小的子数组?

我已经开始了:

def split_array(array,size)
    index = 0
    results = []
    if size > 0
        while index <= array.size
            res = array[index,size]
            results << res if res.size != 0
            index += size
        end
    end
    return results
end
Run Code Online (Sandbox Code Playgroud)

如果我上运行它,[1,2,3,4,5,6]喜欢split_array([1,2,3,4,5,6],3)它会产生此阵:

[[1,2,3],[4,5,6]].在Ruby 1.8.7中是否有可以做到这一点的东西?

ruby arrays

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

嵌入式应用程序的浮点库

我正在为Cortex-M3开发程序.它没有浮点协处理器.标准C库可以模拟浮点运算,但由于它的大小,我不使用它.

有没有好的和免费的c库,可以模拟浮点运算,针对ARM处理器?目前,当我使用浮点运算符时,我有这样的链接错误:

undefined reference to `__adddf3'
undefined reference to `__subdf3'
undefined reference to `__divdf3'
undefined reference to `__extendsfdf2'
undefined reference to `__muldf3'
Run Code Online (Sandbox Code Playgroud)

所以可能这样的库应该实现它们.

c embedded floating-point

3
推荐指数
2
解决办法
7636
查看次数