问题列表 - 第5462页

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
查看次数

你如何克服html表单嵌套限制?

我知道xhtml不支持嵌套的表单标签,我已经
在stackoverflow中读到了关于这个主题的其他答案,但我仍然没有想出一个优雅的问题解决方案.

有人说你不需要它,他们想不到这种情况是需要的.好吧,我个人无法想到一个我不需要它的场景.

让我们看一个非常简单的例子:

您正在创建一个博客应用程序,并且您有一个表单,其中包含一些字段,用于创建新帖子和工具栏,其中包含"保存","删除","取消"等"操作".

<form
 action="/post/dispatch/too_bad_the_action_url_is_in_the_form_tag_even_though_conceptually_every_submit_button_inside_it_may_need_to_post_to_a_diffent_distinct_url"
method="post">

    <input type="text" name="foo" /> <!-- several of those here -->
    <div id="toolbar">
        <input type="submit" name="save" value="Save" />
        <input type="submit" name="delete" value="Delete" />
        <a href="/home/index">Cancel</a>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

我们的目标是以不需要javascript的方式编写表单,只需要简单的旧HTML表单和提交按钮.

由于动作URL是在Form标签中定义的,而不是在每个单独的提交按钮中定义,我们唯一的选择是发布到通用URL,然后启动"if ... then ... else"来确定按钮的名称提交.不是很优雅,但我们唯一的选择,因为我们不想依赖javascript.

唯一的问题是,按"删除",将提交服务器上的所有表单字段,即使此操作所需的唯一内容是带有post-id的隐藏输入.在这个小例子中并没有什么大不了的,但我的表格中有数百个(可以这么说)我的LOB应用程序中的字段和标签(由于要求)必须一次性提交所有内容,无论如何这看起来效率很低而浪费.如果支持表单嵌套,我至少可以在其自己的表单中包含"删除"提交按钮,只包含post-id字段.

您可以说"只需实施"删除"作为链接而不是提交".这在许多层面都是错误的,但最重要的是因为像这里的"删除"这样的副作用动作永远不应该是GET请求.

所以我的问题(特别是那些说他们不需要形成嵌套的人)是你做什么的?是否有任何优雅的解决方案,我缺少或底线真的"要么需要javascript或提交一切"?

html forms nested

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

理解JavaScript - 资源

使用这里描述的StackOverflow的微小Diggit/Blog功能:

我想发布以下我刚看到的Google技术谈话视频,我发现它非常有趣.

我一直有理解javascript"自然"的问题.

在这里,Douglas Crockford描述了JavaScript好的部分

我希望你觉得这个链接很有用.

现在问题部分:

你对javascript的抱怨是什么?你是否使用IDE进行javascript编辑?你认为这个视频有助于理解"好的部分"吗?

javascript video

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

注册时验证电子邮件地址有什么好处?

用户注册后,我发送带有guid链接的电子邮件,点击以验证注册.

它确认电子邮件存在,但它如何帮助打击垃圾邮件发送者?

无法机器人'点击'相同的链接回到网站并验证注册相同?

validation registration web

5
推荐指数
3
解决办法
1808
查看次数

备份cvs存储库的最佳实践?

我们的一些项目仍然在cvs上.我们目前使用tar来每晚备份一次存储库.

这是一个问题:备份cvs存储库的最佳实践?

背景:我们正在将全国的几台服务器组合到一台中央服务器上.合并的代表大小为14gb.(是的,这很高,很可能是由于许多二进制文件,许多分支和存储库的年龄).

cvs存储库的"直接tar"产生~5gb .tar.gz文件.从5gb tar文件恢复文件将是笨重的.另外,我们会快速填满磁带.

完全和增量备份方法(即每周完整备份,夜间增量备份)的效果如何?什么开源工具很好地解决了这个问题?(例如阿曼达,巴库拉).

谢谢,

法案

cvs version-control backup

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

何时应该劝阻弱势群体?

何时应该劝阻弱势群体?在大型项目中,弱势类型是否会受到阻碍?如果左侧是强类型,如下所示,那将是规则的例外吗?

   int i = 5
   string sz = i
   sz = sz + "1"
   i  = sz
Run Code Online (Sandbox Code Playgroud)

是否有任何语言支持与上述类似的语法?告诉我更多关于弱相关类型和情况的利弊.

weak-typing

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

在Vim中更改变量名称

我试图通过Vim读取很多C/Perl代码,其中包含许多单字母变量名.

在我阅读代码的过程中,有一些命令可以帮助我将变量的名称更改为更有意义的内容,这样我就可以更快地阅读其余内容.

在Vim中是否有一些命令可以让我快速执行此操作?

我不认为正则表达式会起作用,因为:

  1. 相同的单个字母名称在不同的作用域块中可能具有不同的用途

  2. 相同的字母组合可以是另一个较大的var名称的一部分,或者在字符串或注释中......不想修改它们

任何已知的方案?

variables vim refactoring

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

将Linq封装到SQL数据访问的最佳方法是什么?

我一直在尝试将对象映射封装在项目数据存储库中.也许EF将提供所需的抽象级别,但由于一系列原因我目前正在使用Linq to SQL.以下代码旨在将数据库中的用户作为ModUser对象列表返回,其中ModUser是存储库公开的POCO:

public List<ModUser> GetUsers() {
    Users.Select(MapUser).ToList();
}

public Expression<Func<User, ModUser>> MapUser {
    get {
        return u => new ModUser() {
            UserId = u.User_Id,
            UserResources = u.Resources(MapResource)
        }
    }
}

public Expression<Func<Resource, ModResource>> MapResource { ...
Run Code Online (Sandbox Code Playgroud)

代码将失败,因为我无法调用MapResource表达式,因为我试图从另一个表达式中调用它.我设法通过用'=> new ModResource()替换'MapResource'来解决这个问题,然后使用ExpressionVisitor找到这个占位符节点并用MapResource表达式替换它.

当我尝试使用涉及单个属性的表达式(即UserResource = MapResource)分配ModUser的属性时,我也遇到了类似的问题.我已经设法通过使用Expression类上的方法手动组合所需的表达式来解决第二个问题.

我意识到我可以将上面的代码更改为

UserResources = u.Resources(r => MapResource.Compile().Invoke(r));
Run Code Online (Sandbox Code Playgroud)

但是生成的最终SQL查询需要获取r的所有属性,而不仅仅是MapResouce所需的属性,因为我们现在处理的是一个函数.此外,如果MapResouce需要访问r上的其他表,则不可能,因为它被用作函数而不是表达式.我可以将DeferredLoadingEnabled设置为true,但这会产生大量单个查询,而不是修改主查询以与所需的任何表连接.

有谁知道在将来的.NET版本中这些操作是否会变得更容易,或者我是否会以错误的方式解决这个问题?我非常喜欢Linq和Expression功能,我希望我可以使用更易读的代码来使用它们.

更新

以为我可能会添加一些示例,说明我如何使表达式更具组合性.他们并不简洁,但他们完成了工作.

public Expression<Func<User, ModUser>> MapUser {
    get {
        Expression<Func<User, ModUser>> mapUser = u => new ModUser() {
            UserId = u.User_Id,
            UserResources = u.Resources(r => new ModResource())
        };
        return …
Run Code Online (Sandbox Code Playgroud)

.net lambda design-patterns expression-trees linq-to-sql

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

进行持续集成时的最佳分支策略?

当您想要进行持续集成时,最佳分支策略是什么?

  1. Release Branching:在trunk上开发,为每个版本保留一个分支.
  2. 特征分支:在单独的分支中开发每个特征,仅合并一次稳定.

将这两种策略结合使用是否有意义?在,你为每个版本分支,但你也分支大型功能?这些策略中的一个是否与持续集成更好地结合?使用不稳定的行李箱时,使用持续集成是否有意义?

svn version-control continuous-integration branch

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

Vim复制和粘贴

我之前的问题似乎有点含糊不清,我会改写它:

我有这样一个文件:

copythis abc
replacethis1 xyz
qwerty replacethis2
hasfshd replacethis3 fslfs
And so on...
Run Code Online (Sandbox Code Playgroud)

注意: replacethis1,replacethis2,replacethis3,...可以是任何单词

如何使用最小vim命令将"replacethis1","replacethis2","replacethis3",... word替换为"copythis"字样.

我能做的一种方法是通过以下步骤:

  1. 删除"replacethis1","replacethis2","replacethis3",...使用'dw'
  2. 使用'yw'复制"copythis"
  3. 将光标移动到"replacethis1"所在的位置并执行'p'; 将光标移动到"replacethis2"所在的位置并执行"p"等等...

有没有更好的方法在VIM中执行此操作(使用较少数量的vim命令)?

vim replace copy-paste

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