小编Mat*_*ley的帖子

控制流程的例外情况

关于跨应用程序的控制流程,这里一个有趣的帖子.

好吧,最近,我遇到了一个有趣的问题.在潜在(实际上)无限递归序列中生成第n个值.这个特定的算法将在其成功的深度处至少10-15个堆栈引用.我的第一个想法是抛出看起来像这样的(C#)的SuccessException:

class SuccessException : Exception
{
    public string Value
    { get; set; }

    public SuccessException(string value)
        : base()
    {
        Value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后做这样的事情:

try
{
    Walk_r(tree);
}
catch (SuccessException ex)
{
    result = ex.Value;
}
Run Code Online (Sandbox Code Playgroud)

然后我的思绪在这里徘徊,在那里我一遍又一遍地听到从未使用Exceptions进行流量控制.有没有借口?如果你要实现它,你将如何构建这样的东西呢?

algorithm exception control-flow data-structures

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

C#线程模式 - 这是一个好主意吗?

今天我正在玩我的一个项目并找到一个有趣的小片段,给定以下模式,你可以安全地清理一个线程,即使它被迫提前关闭.我的项目是一个网络服务器,它为每个客户端生成一个新线程.我发现这对于从远程端提前终止是有用的,但也可以从本地端(我可以.Abort()从我的处理代码中调用).

你有什么问题可以看到,或者你对任何看过类似方法的人提出的建议是什么?

测试用例如下:


using System;
using System.Threading;

class Program
{
    static Thread t1 = new Thread(thread1);
    static Thread t2 = new Thread(thread2);

    public static void Main(string[] args)
    {
        t1.Start();
        t2.Start();
        t1.Join();
    }

    public static void thread1() {
        try {
            // Do our work here, for this test just look busy.
            while(true) {
                Thread.Sleep(100);
            }
        } finally {
            Console.WriteLine("We're exiting thread1 cleanly.\n");
            // Do any cleanup that might be needed here.
        }
    }

    public static void thread2() {
        Thread.Sleep(500); …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading

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

与C#析构函数相关的成本(又名:终结者)?

析构函数应该只释放对象所持有的非托管资源,并且不应该引用其他对象.如果您只有托管引用,则不需要(也不应该)实现析构函数.您希望这仅用于处理非托管资源.因为拥有析构函数需要一些成本,所以你应该只在消耗有价值的非托管资源的方法上实现它.

- C#程序员的C#十大陷阱

文章没有深入讨论这个问题,但在C#中使用析构函数会涉及哪些成本?

注意:我知道GC以及在可靠的时候没有调用析构函数的事实,除此之外,还有什么吗?

c# destructor idisposable finalizer

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

XML序列化(.NET)的自定义节点名称

我有以下代码:

public class Foo {}

static class Program {
    [XmlElement("foo")] // Ignored :(
    static public List<Foo> MyFoos { get; private set; }

    public static void Main() {
        MyFoos.Add(new Foo());
        MyFoos.Add(new Foo());

        XmlSerializer configSerializer = 
            new XmlSerializer(typeof(List<Foo>), new XmlRootAttribute("foos"));
        using (TextWriter w = new StreamWriter("test.xml"))
        {
            s.Serialize(w, MyFoos);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其中生成以下XML文件:

<?xml version="1.0" encoding="utf-8"?>
<foos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Foo />
  <Foo />
</foos>
Run Code Online (Sandbox Code Playgroud)

我真正想要的是Foo标记为的元素foo,而不是......我意识到这主要是装饰性的,但它符合XML中通常被认为是正常的.

.net xml xml-serialization

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

如何从代码隐藏中确定ASP.NET生成的ID?

在ASP.NET中,当您为标记提供ID时,它会根据控件层次结构为元素生成唯一的HTML ID,即.

<asp:Panel ID="test" runat="server">
    ...
</asp:Panel>
<!-- Becomes... -->
<div id="plc_lt_zoneContent_PagePlaceholder_PagePlaceholder_lt_test_test">
    ...
</div>
Run Code Online (Sandbox Code Playgroud)

有没有办法确定代码隐藏文件中生成的id?我需要生成一些使用id的Javascript.

html javascript asp.net

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

禁用在fckeditor中添加<p> </ p>标记

如何<p></p>在Fckeditor中禁用自动添加标签.

当我试图从fckeditor获取任何帖子数据时,它会给我包含的数据

我该如何删除/禁用它们 <p></p>

提前感谢任何建议和回复

fckeditor

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

为什么bittorrent不是更广泛?

我想这个问题是一个主题变体,但不同.

Torrent永远不会取代HTTP,甚至FTP下载选项.这就是说,为什么在更多网站上这些选项旁边没有torrent链接?

我正在想象一个网络系统,下载的文件可以通过HTTP下载,比如说http://example.com/downloads/files/myFile.tar.bz2,种子可以廉价自动生成并存储/downloads/torrents/myFile.tar.bz2.torrent,跟踪器可能是/downloads/tracker/.

跟踪器是一个明确定义的问题,并且实现起来并不难以置信,并且已经存在许多替代方案.我想在这里定制一个可以做到这一点并不困难.

自动生成的torrent文件可以包含普通的HTTP服务器作为永久种子,大多数(如果不是全部)主要的torrent客户端都很好地支持这样做的扩展,并且不需要在服务器端重新配置或使用特殊的东西(它使用库存标准HTTP范围标题).

就个人而言,如果我设置这样一个系统,我会将/downloads/files/目录速度限制在合理的范围内,比如说40-50kb/s,具体取决于你究竟要服务的内容.

这样的文件传送系统是否存在?你是否会使用它:对你的个人,公司或其他网站?

bittorrent http

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

专有系统文档'泄漏'以及如何阻止它们?

免费使用BitKeeper的能力已被版权所有者Larry McVoy撤回,因为他声称Andrew Tridgell违反BitKeeper许可证反向设计了BitKeeper协议.在Linux.Conf.Au 2005上,Tridgell在他的主题演讲中证明了他使用的逆向工程过程只是telnet到BitKeeper服务器的相应端口并输入"help".

- [维基百科上的Git](http://en.wikipedia.org/wiki/Git_ ( software)#Early_history)

有时并不总是某人泄露您的文档或源代码,而是因为有人不记得删除一两个实用程序功能.您有什么样的流程和程序来阻止这些"泄漏"通过?

language-agnostic

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

如何获取父进程标准输出?

我正在编写一个实用程序(http://reg2run.sf.net),如果没有参数的执行作为Windows应用程序(显示OpenFileDialog等),否则 - 作为控制台应用程序.

因此,在第一种情况下,我不想显示控制台窗口,这就是为什么项目是Windows应用程序.但在第二个 - 我需要展示它,它是用它创建的

if (ptrNew == IntPtr.Zero)
{
    ptrNew = GetStdHandle(-11);
}
if (!AllocConsole())
{
    throw new ExternalCallException("AllocConsole");
}
ptrNew = CreateFile("CONOUT$", 0x40000000, 2, IntPtr.Zero, 3, 0, IntPtr.Zero);
if (!SetStdHandle(-11, ptrNew))
{
    throw new ExternalCallException("SetStdHandle");
}
StreamWriter newOut = new StreamWriter(Console.OpenStandardOutput());
newOut.AutoFlush = true;
Console.SetOut(newOut);
Console.SetError(newOut);
Run Code Online (Sandbox Code Playgroud)

我想要的是 - 获取父进程标准输出并使用它,如果它存在(如果通过cmd.exe或远程管理器执行).我该怎么做?

我试过了

static Process GetParentProc()
{
int pidParent = 0;
int pidCurrent = Process.GetCurrentProcess().Id;

IntPtr hSnapshot = CreateToolhelp32Snapshot(2, 0);
if (hSnapshot == IntPtr.Zero)
{
    return null;
} …
Run Code Online (Sandbox Code Playgroud)

c# console winapi

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

如何检查对象是否属于泛型类型?

为了争论,我有一个object.我无法修改我的函数的签名,因为我正在扩展其他人的类.

举一个具体的例子,我有以下内容:

class Foo<T> : SomeBaseClass
{
    public override MyFunction(object value)
    {
        // TODO: Figure out if value is an instance of Foo, though I don't care
        // what type was associated with it.
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法确保这value是某种Foo类型的实例?

c#

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