今天我正在玩我的一个项目并找到一个有趣的小片段,给定以下模式,你可以安全地清理一个线程,即使它被迫提前关闭.我的项目是一个网络服务器,它为每个客户端生成一个新线程.我发现这对于从远程端提前终止是有用的,但也可以从本地端(我可以.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) 我知道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或提交一切"?
使用这里描述的StackOverflow的微小Diggit/Blog功能:
我想发布以下我刚看到的Google技术谈话视频,我发现它非常有趣.
我一直有理解javascript"自然"的问题.
在这里,Douglas Crockford描述了JavaScript好的部分
我希望你觉得这个链接很有用.
现在问题部分:
你对javascript的抱怨是什么?你是否使用IDE进行javascript编辑?你认为这个视频有助于理解"好的部分"吗?
用户注册后,我发送带有guid链接的电子邮件,点击以验证注册.
它确认电子邮件存在,但它如何帮助打击垃圾邮件发送者?
无法机器人'点击'相同的链接回到网站并验证注册相同?
我们的一些项目仍然在cvs上.我们目前使用tar来每晚备份一次存储库.
这是一个问题:备份cvs存储库的最佳实践?
背景:我们正在将全国的几台服务器组合到一台中央服务器上.合并的代表大小为14gb.(是的,这很高,很可能是由于许多二进制文件,许多分支和存储库的年龄).
cvs存储库的"直接tar"产生~5gb .tar.gz文件.从5gb tar文件恢复文件将是笨重的.另外,我们会快速填满磁带.
完全和增量备份方法(即每周完整备份,夜间增量备份)的效果如何?什么开源工具很好地解决了这个问题?(例如阿曼达,巴库拉).
谢谢,
法案
何时应该劝阻弱势群体?在大型项目中,弱势类型是否会受到阻碍?如果左侧是强类型,如下所示,那将是规则的例外吗?
int i = 5
string sz = i
sz = sz + "1"
i = sz
Run Code Online (Sandbox Code Playgroud)
是否有任何语言支持与上述类似的语法?告诉我更多关于弱相关类型和情况的利弊.
我试图通过Vim读取很多C/Perl代码,其中包含许多单字母变量名.
在我阅读代码的过程中,有一些命令可以帮助我将变量的名称更改为更有意义的内容,这样我就可以更快地阅读其余内容.
在Vim中是否有一些命令可以让我快速执行此操作?
我不认为正则表达式会起作用,因为:
相同的单个字母名称在不同的作用域块中可能具有不同的用途
相同的字母组合可以是另一个较大的var名称的一部分,或者在字符串或注释中......不想修改它们
任何已知的方案?
我一直在尝试将对象映射封装在项目数据存储库中.也许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) 当您想要进行持续集成时,最佳分支策略是什么?
将这两种策略结合使用是否有意义?在,你为每个版本分支,但你也分支大型功能?这些策略中的一个是否与持续集成更好地结合?使用不稳定的行李箱时,使用持续集成是否有意义?
我之前的问题似乎有点含糊不清,我会改写它:
我有这样一个文件:
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"字样.
我能做的一种方法是通过以下步骤:
有没有更好的方法在VIM中执行此操作(使用较少数量的vim命令)?
.net ×2
vim ×2
backup ×1
branch ×1
c# ×1
copy-paste ×1
cvs ×1
forms ×1
html ×1
javascript ×1
lambda ×1
linq-to-sql ×1
nested ×1
refactoring ×1
registration ×1
replace ×1
svn ×1
validation ×1
variables ×1
video ×1
weak-typing ×1
web ×1