小编Jam*_*mes的帖子

javascript正则表达式 - 看看替代方案?

这是一个在大多数正则表达式实现中都能正常工作的正则表达式:

(?<!filename)\.js$
Run Code Online (Sandbox Code Playgroud)

这匹配.js为一个以.js结尾的字符串,除了filename.js

Javascript没有正则表达式.是否有人能够组合一个替代正则表达式,实现相同的结果,并在JavaScript中工作?

这里有一些想法,但需要辅助功能.我希望用正则表达式实现它:http: //blog.stevenlevithan.com/archives/mimic-lookbehind-javascript

javascript regex

133
推荐指数
4
解决办法
10万
查看次数

SQL Server - 将日期字段转换为UTC

我最近更新了我的系统,将日期/时间记录为UTC,因为它们以前存储为本地时间.

我现在需要将所有本地存储的日期/时间转换为UTC.我想知道是否有任何内置函数,类似于.NET的ConvertTime方法?

我试图避免编写实用程序的应用程序为我这样做.

有什么建议?

sql-server datetime utc

50
推荐指数
6
解决办法
12万
查看次数

WaitHandle.WaitAll 64句柄限制的解决方法?

我的应用程序产生了大量不同的小工作线程,通过ThreadPool.QueueUserWorkItem它我可以通过多个ManualResetEvent实例跟踪.我使用该WaitHandle.WaitAll方法阻止我的应用程序关闭,直到这些线程完成.

但是,之前我从未遇到过任何问题,因为我的应用程序正在承受更多负载,即创建更多线程,我现在开始得到这个异常:

WaitHandles must be less than or equal to 64 - missing documentation

什么是最好的替代解决方案?

代码片段

List<AutoResetEvent> events = new List<AutoResetEvent>();

// multiple instances of...
var evt = new AutoResetEvent(false);
events.Add(evt);
ThreadPool.QueueUserWorkItem(delegate
{
    // do work
    evt.Set();
});

...
WaitHandle.WaitAll(events.ToArray());
Run Code Online (Sandbox Code Playgroud)

解决方法

int threadCount = 0;
ManualResetEvent finished = new ManualResetEvent(false);

...
Interlocked.Increment(ref threadCount);
ThreadPool.QueueUserWorkItem(delegate
{
    try
    {
         // do work
    }
    finally
    {
        if (Interlocked.Decrement(ref threadCount) == 0)
        {
             finished.Set();
        }
    }
});

... …
Run Code Online (Sandbox Code Playgroud)

c# multithreading waithandle

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

ASP.NET MVC - 从URL中删除控制器名称

我想从我的URL中删除控制器名称(对于一个特定的控制器).例如:

http://mydomain.com/MyController/MyAction

我希望将此URL更改为:

http://mydomain.com/MyAction

我将如何在MVC中执行此操作?我正在使用MVC2,无论如何这对我有帮助.

asp.net-mvc

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

将任何货币字符串转换为double

我需要在SQL服务器中存储多种货币.我知道SQL不支持所有不同类型的货币(除非我将其存储为字符串,但我不想这样做).

我的想法是将所有值从他们的货币格式转换为标准的双倍并存储它.然后在显示时根据文化信息重新格式化.但是,我尝试过做类似的事情

var cultureInfo = new System.Globalization.CultureInfo("en-US");
double plain = return Double.Parse("$20,000.00", cultureInfo);
Run Code Online (Sandbox Code Playgroud)

这似乎永远不会工作它总是抛出一个FormatException.即使删除货币符号,只是尝试根据数字单独执行此操作也会做同样的事情.这只是一个例子,我想支持几乎任何类型的货币.

是否有一种标准的方式来剥离货币并将价值变为双倍?

c# currency cultureinfo

40
推荐指数
2
解决办法
7万
查看次数

配置grunt复制任务以排除文件/文件夹

我已经安装了grunt任务grunt-contrib-copy.我把它嵌入我的Gruntfile.js并通过加载任务grunt.loadNpmTasks('grunt-contrib-copy');.

目前,我使用以下配置来创建包含我的js文件/文件夹子集的文件夹.

copy: {
            options: {
                processContent: [],
                processContentExclude: ['build/**', 'bin/**', '.*', '*.orig', '*.bak', '.*/**', '*.log', 'dist/**', 'test/**', 'dev/**', 'pyserver/**', 'node_modules/**', 'doc/**']
            },
            du: {
                files: [ 
                    {src: ['.conf1', '.conf2', './config.js'], dest: 'output/toolkit/', filter: 'isFile'},
                    {src: ['./css/**/*', './img/**/*', './js/**/*', './release/**/*', './lib/**/*', './locale/**/*'], dest: 'output/toolkit/'},
                    {expand: true, cwd: './', src: ['**'], dest: 'output/'}
                ]
            }
        }
Run Code Online (Sandbox Code Playgroud)

这工作正常,但每次我运行grunt副本它退出时出现以下错误消息:

Copying Gruntfile.js -> output/Gruntfile.js
Warning: Error while processing "Gruntfile.js" file. Use --force to continue.
Run Code Online (Sandbox Code Playgroud)

我想排除Gruntfile.js和所有*.less …

javascript copy gruntjs

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

2种通过设置属性值来创建新对象的方法

可能重复:
为什么C#3.0对象初始化器构造函数括号是可选的?

大家好,
我有Question一个有财产的班级Text

public class Question
{
    public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我想通过赋予属性值来创建这种类型的对象.
我可以通过以下两种方式做到这一点:

Question q = new Question { Text = "Some question" };

Question q = new Question() { Text = "Some question" };

这两种情况有什么区别,如果它们是相同的,为什么我们需要两者?
谢谢.

.net c#

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

带参数的Apache重写规则?

我有以下网址:

http://domain.com/index.php?m=feedback&cSubject=My Subject
Run Code Online (Sandbox Code Playgroud)

我想要一个重写规则,以便以下内容:

http://domain.com/feedback?Subject=My Subject
Run Code Online (Sandbox Code Playgroud)

映射到上一个URL.这是我目前的统治:

RewriteRule ^feedback?Subject=(.*)$ index.php?m=feedback&cSubject=$1
Run Code Online (Sandbox Code Playgroud)

似乎没有工作!有任何想法吗?

apache mod-rewrite url-rewriting

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

使用带有Threading.Timer的锁

我有一个Windows服务应用程序,它使用a Threading.Timer和a TimerCallback以特定间隔进行一些处理.我需要一次将此处理代码锁定为仅1个线程.

因此,例如,启动服务并触发第一个回调并启动线程并开始处理.只要在下一次回调之前完成处理,这就可以正常工作.所以说比如说处理比平常花费的时间稍长,并且在另一个线程正在处理时再次触发TimerCallback,我需要让该线程等到另一个线程完成.

这是我的代码示例:

static Timer timer;
static object locker = new object();

public void Start()
{
    var callback = new TimerCallback(DoSomething);
    timer = new Timer(callback, null, 0, 10000);
}

public void DoSomething()
{
      lock(locker)
      {
           // my processing code
      }
}
Run Code Online (Sandbox Code Playgroud)

这是一种安全的方法吗?如果队列变得相当大,会发生什么?有更好的选择吗?

c# multithreading locking

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

RandomNumberGenerator与RNGCryptoServiceProvider

根据RandomNumberGenerator的 MSDN文档:

应用程序代码不直接使用此类.此抽象类作为所有加密随机数生成器的基类提供.

对于加密随机数生成器的实现,请使用派生类RNGCryptoServiceProvider.

但是,我看到以下代码在不同代码库中的几个场景中使用:

byte[] bytes = new byte[...];
RandomNumberGenerator rng = RandomNumberGenerator.Create();
rng.GetBytes(bytes);
Run Code Online (Sandbox Code Playgroud)

最值得注意的是StackExchange(我假设包含SO)以及BCrypt.Net.

因此,我有点困惑 - RandomNumberGenerator上面代码返回的是什么类型的?还有一些代码库正在使用RandomNumberGenerator而不是RNGCryptoServiceProvider

我认为RandomNumberGenerator.Create()这是我在这里完全缺失的引擎盖,但从技术上讲(因为它是一个抽象类)不应该上面的代码抛出错误?

c# random cryptography

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