小编ren*_*ren的帖子

与NVARCHAR一起使用的尺寸是否重要?

每当我创建一个表时,我想知道是否有任何性能差异我是否说nvarchar (100)nvarchar (1000)假设实际字符串大小将小于100.那有吗?

sql-server-2008

40
推荐指数
4
解决办法
5万
查看次数

在Python和Linux中如何获得给定用户的id

有os.getuid(),它"返回当前进程的用户ID.".但是如何找出任何给定用户的ID?

python linux

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

Why IEnumerable slow and List is fast?

Came across this code.

var dic = new Dictionary<int, string>();
for(int i=0; i<20000; i++)
{
    dic.Add(i, i.ToString());
}

var list = dic.Where(f => f.Value.StartsWith("1")).Select(f => f.Key);//.ToList(); //uncomment for fast results 
Console.WriteLine(list.GetType());
var list2 = dic.Where(f => list.Contains(f.Key)).ToList();
Console.WriteLine(list2.Count())
Run Code Online (Sandbox Code Playgroud)

所以当.ToList()被评论时它很慢,当没有时 - 它很快.可再现在这里如何解释?我是否应该始终制作所有ToList()以确保速度(即在哪种情况下IEnumerable会更优选)?注意我只是谈论linq对象,我知道linq对sql laziness和东西.

c# linq

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

javascript setInterval:调用重叠吗?

假设我有setInterval(PostToServer, 1000);.PostToServer函数使ajax发布,可能需要超过一秒钟.那么接下来会发生什么:在第一次呼叫未完成或等待呼叫结束之前进行第二次呼叫,然后再制作新呼叫?

javascript setinterval

14
推荐指数
2
解决办法
4677
查看次数

windows身份验证:negotiate,ntlm和kerberos

首先是negotiate,ntlmkerberos三种不同的Windows身份验证实现?

IE发送此信息: Authorization: Negotiate YIIFswYGKwYB ...

Firefox发送此信息: Authorization: NTLM TlRMTVNTUAADAA ...

他们使用不同的协议吗?如果是这样,如何配置iis 7.0以便只ntlm使用?

ps iis配置为使用Windows身份验证,但两个浏览器都会抛出登录表单,登录只能成功使用firefox.

iis windows-authentication

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

Mono profiler"主要可执行文件中找不到'日志'分析器,也不能从'mono-profiler-log'加载."

我在Windows上有一个应用程序,单声道很好.但是,当我尝试对其进行分析时:

mono --profile = log program.exe

我明白了:

在主可执行文件中找不到'log'分析器,也无法从'mono-profiler-log'加载它.

并且没有创建数据文件(但应用运行正常).单声道3.0.10

有任何想法吗?

mono profiler profiling

11
推荐指数
2
解决办法
2127
查看次数

setTimeout和V8

我已经安装了V8独立版并执行这样的javascript代码:./d8 source.js.当我使用setTimeout时,我会收到ReferenceError: setTimeout is not defined.这是怎么回事?有可能以某种方式包含此功能吗?

javascript v8

10
推荐指数
1
解决办法
2473
查看次数

c#在线编译和执行安全问题

所以我在考虑编写在线c#编译器和执行环境.问题#1当然是安全问题.我最终为用户代码创建了一个特权小的appdomain,并在一个新的进程中启动它,该进程受到严密的cpu和内存消耗监控.标准控制台应用程序命名空间可用.所以我的问题是:你能想出以某种方式打破某些事情的方法吗?您可以在现场rundotnet上尝试您的想法.

Edit2如果有人关心代码,现在有这个项目的开源代码:github上的rextester

Edit1作为对其中一条评论的回复,这里有一些代码示例.

基本上你创建一个控制台应用程序.我只会发布一大块:

class Sandboxer : MarshalByRefObject
{
    private static object[] parameters = { new string[] { "parameter for the curious" } };

    static void Main(string[] args)
    {
        Console.OutputEncoding = Encoding.UTF8;
        string pathToUntrusted = args[0].Replace("|_|", " ");
        string untrustedAssembly = args[1];
        string entryPointString = args[2];
        string[] parts = entryPointString.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
        string name_space = parts[0];
        string class_name =  parts[1];
        string method_name = parts[2];

        //Setting the AppDomainSetup. It is very important to set …
Run Code Online (Sandbox Code Playgroud)

c# compiler-construction security

9
推荐指数
1
解决办法
1704
查看次数

修改语法树,然后获取更新的语义模型

我正在尝试修改语法树,然后更新语义模型.这是我到目前为止:

var tree = Roslyn.Compilers.CSharp.SyntaxTree.ParseCompilationUnit(code);
var compilation = Roslyn.Compilers.CSharp.Compilation.Create(
                        "MyCompilation",
                        syntaxTrees: new[] { tree },
                        references: new[] { mscorlib });
var semanticModel = compilation.GetSemanticModel(tree);
...
var oldStatementNode = (parent as ExpressionStatementSyntax); //some SyntaxNode in the tree
var oldExpressionNode = oldStatementNode.Expression;
var newExpressionNode = Syntax.ParenthesizedExpression(oldExpressionNode);
var newRootNode = tree.GetRoot().ReplaceNode(oldExpressionNode, newExpressionNode);

var semanticInfo = semanticModel.GetTypeInfo(newExpressionNode); //throws exception "Syntax node is not within syntax tree"
Run Code Online (Sandbox Code Playgroud)

如果我在调用之前尝试调用semanticModel = compilation.GetSemanticModel(tree);甚至进行新的编译- 同样的异常.treeGetTypeInfo()

那么我该如何更新SemanticModel?(当然,我可以获得修改后的源代码并从头开始做所有事情,但我想有更有效的方法).

我在这里遗漏了一些明显的东西我敢肯定,或许在某处创建了一个新的语法树?

c# roslyn

9
推荐指数
1
解决办法
2282
查看次数

列出<object>内存开销

我有这样的事情:

List<object> res = new List<object>();
...
while (...)
{
   byte[] val = //get new byte[4]
   res.Add(val); //if this is commented memory usage goes from 2Gb to 180Mb
}

return res;
Run Code Online (Sandbox Code Playgroud)

现在val总是byte [4]并且有大约37000000个元素.所以我认为res应该是37*10 ^ 6*4字节= 148 MB,但实际内存使用量约为2GB.如果我评论,res.Add(val);那么内存使用量是100 MB.

那么记忆在哪里?

在此输入图像描述 在此输入图像描述

编辑

我试过使用uint而不是byte [4],但结果是一样的: 在此输入图像描述

EDIT2

好吧,使用uint而不是byte [4] , List<uint>()而不是List<object>将内存大约300 MB.

c# memory-management

8
推荐指数
1
解决办法
1518
查看次数