小编Kob*_*obi的帖子

当没有抛出异常时,try/catch块是否会损害性能?

在与Microsoft员工进行代码审查期间,我们在try{}块中遇到了大量代码.她和IT代表建议这可能会影响代码的性能.事实上,他们建议大多数代码应该在try/catch块之外,并且只应该检查重要的部分.微软员工补充说,即将发布的白皮书警告不要使用不正确的try/catch块.

我环顾四周,发现它可以影响优化,但它似乎只适用于范围之间共享变量.

我不是在询问代码的可维护性,甚至不是在处理正确的异常(有问题的代码需要重新分解,毫无疑问).我也没有提到使用流量控制的异常,这在大多数情况下显然是错误的.这些都是重要的问题(有些更重要),但不是重点.

如果抛出异常,try/catch块如何影响性能?

c# performance try-catch

261
推荐指数
12
解决办法
7万
查看次数

计划的"私有保护"C#访问修饰符的含义是什么?

作为GitHub上Roslyn文档的一部分,有一个名为语言功能实现状态的页面,具有C#和VB的计划语言功能.

我无法理解的一个功能是private protected访问修饰符:

private protected string GetId() { … } 
Run Code Online (Sandbox Code Playgroud)

还有一个C#语言设计笔记页面,它解释了许多新功能,但不是这个.

Eric Lippert在评论中说:

您的错误在于将修饰符视为增加限制.实际上,修饰符总是减少限制.请记住,默认情况下,事物是"私人的"; 只有通过添加修饰符才能减少限制.

是什么意思private protected?我什么时候可以使用它?

c# access-modifiers c#-6.0 c#-7.2

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

流行的应用程序如何验证从移动应用程序到其服务器的用户请求?

假设我有一个连接到.Net API的Android应用程序,用于接收/设置数据.我所遇到的困惑是关于如何在每次向API发出请求时第一次注册/登录用户并对其进行身份验证.

  • 如果我只使用基于用户名/密码的身份验证,他们将不够安全?
  • 当然,出于安全原因,我无法在设备中保存该用户名/密码?
  • 我是否应该在注册时为每个用户发出GUID,将其保存在他们的设备中并在API请求期间每次检索?

还有哪些其他模式可用,哪些模式最有效和最安全,我只需要一个流程.有人能告诉我Facebook,FourSquare或Twitter等着名的Android应用程序使用什么方法来验证从他们的移动应用程序到他们的服务器的每个请求?

如果这不是一些公开信息,请提前抱歉.

authentication android facebook foursquare

109
推荐指数
4
解决办法
7万
查看次数

使用此复合形式时,为什么使用XOR交换值失败?

我发现这个代码使用XOR ^运算符交换两个数字而不使用第三个变量.

码:

int i = 25;
int j = 36;
j ^= i;       
i ^= j;
j ^= i;

Console.WriteLine("i:" + i + " j:" + j);

//numbers Swapped correctly
//Output: i:36 j:25
Run Code Online (Sandbox Code Playgroud)

现在我将上面的代码更改为此等效代码.

我的代码:

int i = 25;
int j = 36;

j ^= i ^= j ^= i;   // I have changed to this equivalent (???).

Console.WriteLine("i:" + i + " j:" + j);

//Not Swapped correctly            
//Output: i:36 j:0
Run Code Online (Sandbox Code Playgroud)

现在,我想知道,为什么我的代码输出不正确?

c# swap xor

76
推荐指数
3
解决办法
4716
查看次数

为什么具有可空值的结构的HashSets非常慢?

我研究了性能下降并将其跟踪以减缓HashSets的速度.
我有可用值作为主键的结构.例如:

public struct NullableLongWrapper
{
    private readonly long? _value;

    public NullableLongWrapper(long? value)
    {
        _value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我注意到创建一个HashSet<NullableLongWrapper>异常缓慢.

以下是使用BenchmarkDotNet的示例:( Install-Package BenchmarkDotNet)

using System.Collections.Generic;
using System.Linq;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Running;

public class Program
{
    static void Main()
    {
        BenchmarkRunner.Run<HashSets>();
    }
}

public class Config : ManualConfig
{
    public Config()
    {
        Add(Job.Dry.WithWarmupCount(1).WithLaunchCount(3).WithTargetCount(20));
    }
}

public struct NullableLongWrapper
{
    private readonly long? _value;

    public NullableLongWrapper(long? value)
    {
        _value = value;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

.net c# performance struct

69
推荐指数
2
解决办法
2792
查看次数

源映射生产中的文件 - 安全吗?

我正在使用UglifyJS来缩小和整理我的资源,而Sentry则报告我的生产环境中的错误.

为了以可读的方式从Sentry获取错误,我需要添加source-map

在生产服务器中执行它是否安全,或者源映射文件是否应仅存在于暂存环境中?
有没有办法在生产环境中保护它们?

javascript sentry uglifyjs raven source-maps

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

将对象传递给Web worker

我正在尝试通过postMessage函数将对象传递给Web worker.
这个对象是一个正方形,有一些功能可以在画布上绘制自己和其他一些东西.Web worker必须返回此对象的数组.
问题是当我用这个对象调用postMessage函数时,我收到一个错误:

Uncaught Error: DATA_CLONE_ERR: DOM Exception 25
Run Code Online (Sandbox Code Playgroud)

我得到这个将对象发送给工人,反之亦然.
我认为错误是因为javascript必须序列化对象,但不能这样做因为对象具有内置函数.

有没有人遇到过类似的问题?你知道这方面的一些工作吗?
提前致谢.

javascript web-worker

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

在C中str == NULL和str [0] =='\ 0'之间有什么区别?

我想知道的区别str == NULLstr[0] == '\0':

int convert_to_float(char *str, double *num)
{
    if ((str == NULL) || (str[0] == '\0'))
        return(-1);

    *num = strtod(str, (char **)NULL);
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

我在Linux上使用gcc.

c gcc pointers cstring

52
推荐指数
6
解决办法
9731
查看次数

Typescript从元组/数组值派生联合类型

说我有清单 const list = ['a', 'b', 'c']

是不是可以从这个值的联合类型派生出来的'a' | 'b' | 'c'

我想要这个,因为我想定义只允许来自静态数组的值的类型.而且我还需要在运行时枚举这些值,所以我使用数组.

示例如何使用索引对象实现:

const list = ['a', 'b', 'c']

'a' | 'b' | 'c'

const list = ['a', 'b', 'c']

但我想知道没有这个索引地图是否可行.

typescript

46
推荐指数
3
解决办法
7956
查看次数

两个C#扩展泛型方法之间的模糊调用,其中T:class和其他T:struct

考虑两种扩展方法:

public static T MyExtension<T>(this T o) where T:class
public static T MyExtension<T>(this T o) where T:struct
Run Code Online (Sandbox Code Playgroud)

一节课:

class MyClass() { ... }
Run Code Online (Sandbox Code Playgroud)

现在在上面的类的实例上调用extension方法:

var o = new MyClass(...);
o.MyExtension(); //compiler error here..
o.MyExtension<MyClass>(); //tried this as well - still compiler error..
Run Code Online (Sandbox Code Playgroud)

编译器说当我在类上调用它时调用该方法是一个模糊的调用.我原以为它可以确定调用哪个扩展方法,因为MyClass是一个类,而不是一个结构体?

.net c# generics extension-methods

45
推荐指数
3
解决办法
4971
查看次数