问题列表 - 第25321页

在.Net中触发垃圾收集的标准

我在.Net中遇到了一些关于垃圾收集的奇怪行为.

以下程序将非常快速地抛出OutOfMemoryException(在32位,2GB机器上不到一秒钟之后).永远不会调用Foo终结器.

class Foo
{
    Guid guid = Guid.NewGuid();
    byte[] buffer = new byte[1000000];

    static Random rand = new Random();
    public Foo()
    {
        // Uncomment the following line and the program will run forever.
        // rand.NextBytes(buffer);
    }

    ~Foo()
    {
        // This finalizer is never called unless the rand.NextBytes
        // line in the constructor is uncommented.
    }

    static public void Main(string args[])
    {
        for (; ; )
        {
            new Foo();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果取消注释rand.nextBytes行,它将无限运行,并定期调用Foo终结器.这是为什么?

我最好的猜测是,在前一种情况下,CLR或Windows VMM都懒得分配物理内存.永远不会写入缓冲区,因此永远不会使用物理内存.当地址空间用完时,系统崩溃.在后一种情况下,系统在用完地址空间之前耗尽物理内存,触发GC并收集对象.

但是,这是我没有得到的部分.假设我的理论是正确的,为什么地址空间不足时GC不会触发?如果我的理论不正确,那么真正的解释是什么呢?

.net clr garbage-collection

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

Codeigniter/mySQL问题.在实际插入之前检查是否可以进行多次插入

所以我试图一次执行一些相互依赖的插入.假设我正在做一个狗评级网站.任何人都可以添加狗到我的数据库,但这样做他们还需要添加狗的初步评级.然后其他人可以对狗进行评级.收视率的狗是多对一的关系:狗有很多评级.

这意味着我的初步添加,因为我有人同时评价和添加狗,我需要取得评级,并设置一个外键给狗的主键.据我所知,这意味着我必须实际添加狗,然后检查新添加的主键是什么,然后在插入之前将其放入我的评级中.

现在假设评级的插入有问题,不管它是一个太长的字符串,还是我以某种方式忽略的东西.如果评级失败,则已经插入了狗,但评级没有.在这种情况下,我想首先没有添加狗.

这是否意味着我必须编写代码,说"如果评级失败,为狗做一个删除",或者是否有办法预测如果一切按计划进行,狗的关键是什么.有没有办法说"保持那个位置",然后如果一切正常,加上它?

任何帮助将不胜感激.谢谢!!

mysql codeigniter insert

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

如何使用system()避免在Perl中意外逃逸?

我想使用system()命令运行一些命令,我这样做:

execute_command_error("trash-put '/home/$filename'");
Run Code Online (Sandbox Code Playgroud)

如果运行的execute_command_error任何system命令出现错误,将在何处报告.我知道我可以使用Perl命令取消链接文件,但我想删除使用的东西,trash-put因为它是一种回收程序.

我的问题是,$filename有时会出现撇号,引号和其他奇怪的字符,这些字符会破坏system命令或Perl本身.

perl system

0
推荐指数
1
解决办法
1660
查看次数

Visual Studio缺少警告

任何人都可以在您打开某个解决方案(包含多个项目)时查找并编译您在同一状态下编译完全相同的解决方案时,您的同事看不到某些警告?代码是一样的.

我非常依赖警告作为查找未使用的方法等的快捷方式.但是在编译期间我什么也得不到...只有一些基于对用户控件的引用等.

c# warnings visual-studio-2010 visual-studio

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

在python中创建一个由列表索引的字典

我想创建一个由列表索引的字典.例如,我的字典应该如下所示:

D = {[1,2,3]:1, [2,3]:3}
Run Code Online (Sandbox Code Playgroud)

有人知道怎么做吗?如果我只是输入D([1,2,3]) = 1它会返回错误.

python dictionary

12
推荐指数
1
解决办法
7460
查看次数

检测字符串是否在C#中包含多个连续重复字符的最有效方法是什么?

例如,用户输入"我喜欢这篇文章!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"

连续的重复感叹号"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" 应该被发现.

c# string

8
推荐指数
1
解决办法
2200
查看次数

Python:如何使用Twisted作为SUDS的传输?

我有一个基于Twisted的项目,用于与网络设备通信,我正在添加对API为SOAP 的新供应商(Citrix NetScaler)的支持.不幸的是,Twisted中对SOAP的支持依然存在SOAPpy,这已经过时了.事实上,就这个问题(我刚检查过)而言,twisted.web.soap 本身在21个月内甚至没有更新!

我想问一下,如果有人有任何经验,他们愿意与SUDS使用Twisted的超级异步传输功能.看起来插入一个自定义的Twisted传输将是一个自然的SUDS' Client.options.transport,我只是很难缠绕我的头.

我确实想出了一种方法,通过利用异步方式使用SUDS调用SOAP方法twisted.internet.threads.deferToThread(),但这对我来说就像是一个黑客.

这是我做过的一个例子,给你一个想法:

# netscaler is a module I wrote using suds to interface with NetScaler SOAP
# Source: http://bitbucket.org/jathanism/netscaler-api/src
import netscaler
import os
import sys
from twisted.internet import reactor, defer, threads

# netscaler.API is the class that sets up the suds.client.Client object
host = 'netscaler.local'
username = password = 'nsroot'
wsdl_url = 'file://' + os.path.join(os.getcwd(), 'NSUserAdmin.wsdl')
api = netscaler.API(host, username=username, password=password, wsdl_url=wsdl_url)

results = []
errors …
Run Code Online (Sandbox Code Playgroud)

python soap twisted suds transport

12
推荐指数
1
解决办法
3287
查看次数

iPad:显示帮助弹出窗口?

如何在iPad上显示帮助弹出窗口?我想显示一个模式弹出窗口,它会使背景灰色类似于电子邮件应用程序"撰写新邮件"应用程序.

objective-c ipad

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

如何在Hibernate中编写本机SQL查询而不对表名和字段进行硬编码?

有时,您必须使用本机SQL编写一些查询,而不是休眠HQL。有什么好方法可以避免对表名和字段进行硬编码,并从现有映射中获取此数据?

例如,代替:

String sql = "select user_name from tbl_user where user_id = :id";
Run Code Online (Sandbox Code Playgroud)

就像是:

String sql = "select " + Hibernate.getFieldName("user.name") + " from " + Hibernate.getTableName(User.class) + " where " + Hibernate.getFieldName("user.id") + " = :id";
Run Code Online (Sandbox Code Playgroud)

java hibernate

4
推荐指数
1
解决办法
2343
查看次数

按值排序字典

我有一个字典:

{ "honda" : 4, "toyota": 7, "ford" : 3, "chevy": 10 }
Run Code Online (Sandbox Code Playgroud)

我想通过第二列aka(值)降序对其进行排序.

期望的输出:

"雪佛兰",10

"丰田",7

"本田",4

"福特",3

vb.net sorting dictionary

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