小编noc*_*ura的帖子

在C#中处理调用Dispose(IsDisposing)模式的目的?

这是来自MSDN的代码.我不明白为什么这里的工作不只是在常规的Dispose()方法中完成.使用Dispose(bool)方法的目的是什么?谁会在这里打电话给Dispose(false)?

public void Dispose() 
{
    Dispose(true);

    // Use SupressFinalize in case a subclass
    // of this type implements a finalizer.
    GC.SuppressFinalize(this);      
}

protected virtual void Dispose(bool disposing)
{
    // If you need thread safety, use a lock around these 
    // operations, as well as in your methods that use the resource.
    if (!_disposed)
    {
        if (disposing) {
            if (_resource != null)
                _resource.Dispose();
                Console.WriteLine("Object disposed.");
        }

        // Indicate that the instance has been disposed.
        _resource = null;
        _disposed = …
Run Code Online (Sandbox Code Playgroud)

.net c# dispose design-patterns

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

我应该新建一个新代表还是只是将方法添加到事件中?

我不明白这两种变化之间的区别是什么.每种方法的优缺点是什么?

1.  a.MyEvent += new MyClass.MyEventDelegate(FireEvent);

2.  a.MyEvent += FireEvent;
Run Code Online (Sandbox Code Playgroud)

c#

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

当用户"Server"垃圾收集时,为什么我看起来有内存泄漏?

这是我的情况.我想要解释为什么会这样.我在这里读GC ,但我仍然没有得到它.

工作站案例:当我使用工作站垃圾收集运行时,我的应用程序使用大约180MB的专用字节和大约70MB的".NET CLR Memory #bytes in all sheaps".记忆继续稳定几个小时.生活很好.

服务器案例:当我运行服务器垃圾收集时,我的应用程序使用大约500MB的专用字节,但在".NET CLR Memory #bytes in all sheaps"中仍然只有大约70MB.对.DumpHeap -stat输出和!GCRoot的分析显示了很多没有根的对象.此外,我的私有字节在几个小时内显着增加,但.NET字节保持不变.我的应用程序使用了很多非托管代码,所以我认为这是相关的,因为私有和.NET字节的差异.但是为什么我的生活在服务器机箱中如此糟糕?

任何GC智慧或进一步调查的指导?

谢谢!

.net c# memory garbage-collection

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

为什么lxml没有找到Chrome检查员给出的xpath?

这是我的代码:

from lxml import html
import requests

page = requests.get('https://en.wikipedia.org/wiki/Nabucco')
tree = html.fromstring(page.content)
title = tree.xpath('//*[@id="mw-content-text"]/table[1]/tbody/tr[1]/th/i')
print(title)
Run Code Online (Sandbox Code Playgroud)

问题:print(title)打印"[]",空列表.我希望这会打印出"Nabucco".XPath表达式来自Chrome检查器"复制XPath"功能.

为什么这不起作用?lxml和Chrome的xpath引擎之间是否存在分歧?或者我错过了什么?我对python,lxml和xpath有些新意.

python xpath lxml google-chrome

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

我应该使用字符串表来提高数据库效率吗?

假设您有一个包含单个表的数据库,例如...

---------------------------------------------
| Name    |  FavoriteFood                   |
---------------------------------------------
| Alice   | Pizza                           |
| Mark    | Sushi                           |
| Jack    | Pizza                           |
---------------------------------------------
Run Code Online (Sandbox Code Playgroud)

有一个名为“Strings”的附加表来存储字符串,并将FavoriteFood 列更改为字符串表中的索引是否会更节省空间。在上面的示例中,“Pizza”看起来像是存储了两次,但是对于附加表,它似乎只存储了一次。当然,请假设有 1,000,000 行和 1,000 个唯一字符串,而不是只有 3 行和 2 个唯一字符串。

编辑:我们事先不知道最喜欢的食物是什么:它们是用户提供的。字符串表的编程接口类似于......

String GetString(int ID) { return String at with Row-ID == ID }

int GetID(String s) {
  if s exists, return row-id;
  else {
    Create new row;
    return new row id;
  }
}
Run Code Online (Sandbox Code Playgroud)

所以字符串表似乎更有效,但是现代数据库是否已经在后台这样做了,所以我可以只做简单的单表方法并且高效?

database string performance

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

Interlocked.Xxx方法是否保证在所有数据缓存中更新值?

例:

Thread a:  Interlocked.Increment(ref x);

Thread b:  int currentValue = x;
Run Code Online (Sandbox Code Playgroud)

假设线程b在线程a之后执行,则线程b中的"currentValue"是否保证是递增值?或者,线程b是否需要执行Thread.VolatileRead(ref x)?

.net multithreading

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

"throw(e)"和"throw e"之间的区别?

我遇到了这个重新抛出的异常,我很惊讶它甚至可以编译.

} catch(SomeException e) {
    ...
    throw(e);
}
Run Code Online (Sandbox Code Playgroud)

这个throw()和通常使用的是什么区别?...

} catch(SomeException e) {
    ...
    throw e;
}
Run Code Online (Sandbox Code Playgroud)

是否记录了这些内容的任何链接或选择其中一个的指导?

java exception throw

4
推荐指数
2
解决办法
576
查看次数

如何处理源代码中更改功能和产品名称?

在源代码中处理更改产品和功能名称的好策略是什么.这是我一次又一次地发现自己的情况(你们大多数人都可以联系起来?)......

  1. 产品名称以"DaBomb"开头
  2. 主要特征是"爆炸","灯笼"和"旗帜".
  3. 时间过去了,功能名称变为"Boom","Lighthouse"和"MarkMan"
  4. 时间过去了,产品名称变为"DaChronic"
  5. ...
  6. ...
  7. Blah,等等,等等......一遍又一遍

现在我们有一个庞大的代码库,在目录树和源文件周围散布着50个不同的名称,其中大部分已经过时了.只有退伍军人才会记住每个名字的含义,完整的历史记录等.

这个混乱的解决方案是什么?

澄清:我并不是指客户看到的名称,我指的是开发人员看到更改的产品和功能名称编入其中的目录,源文件,类,变量等的名称.

version-control naming coding-style naming-conventions

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

在将来的某个时间调用单个操作的最佳方法?

我希望在未来的某个时刻启动计时器以执行一次.我想使用lambda表达式来简化代码.所以我想做点什么......

(new System.Threading.Timer(() => { DoSomething(); },
                    null,  // no state required
                    TimeSpan.FromSeconds(x), // Do it in x seconds
                    TimeSpan.FromMilliseconds(-1)); // don't repeat
Run Code Online (Sandbox Code Playgroud)

我觉得它很整洁.但在这种情况下,不会丢弃Timer对象.解决这个问题的最佳方法是什么?或者,我应该在这里做一个完全不同的方法吗?

.net c# lambda

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

如果覆盖Dispose(bool),资源是否还会被处理?

参考:http://msdn.microsoft.com/en-us/library/b1yfkh5e(v = vs.110).aspx

在这个MSDN示例中,如果在子类中重写Dispose(bool),是否会执行此基类中的Dispose(bool)代码?IE会资源.Dispose()会被调用吗?子类需要调用base.Dispose(true)吗?

public class DisposableResourceHolder : IDisposable {

    private SafeHandle resource; // handle to a resource

    public DisposableResourceHolder(){
        this.resource = ... // allocates the resource
    }

    public void Dispose(){
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing){
        if (disposing){
            if (resource!= null) resource.Dispose();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# idisposable

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