小编bkj*_*vbx的帖子

相当于C#中Java的匿名类?

我试图将用java编写的SDK移植到C#.

在这个软件中有许多"处理程序"接口,有几种方法(例如:attemptSomethingHandlersuccess()几种不同的故障方法).然后在调用类中匿名实现和实例化该接口,并将其传递给类的attemptSomething方法SomethingModel.这是一个异步方法,有几个地方可能会失败或调用另一个方法(传递处理程序).这样,匿名实现attemptSomethingHandler可以在调用的类中引用私有方法attemptSomething.

在C#中,不可能匿名实现接口.我可以显式地实现一个新类,但是这个实现对于这个调用类来说是唯一的,而不是用于其他任何东西.更重要的是,我无法访问调用类中的私有方法,这是我需要的,也不想公开.

基本上,我需要根据SomethingModel类方法中发生的事情从调用类中运行不同的代码.

我一直在阅读代理,但这需要传递尽可能多的委托,因为处理程序界面中有方法(据我所知).在C#中执行此操作的适当方法是什么?我觉得我错过了一个非常常见的编程策略.必须有一种简单,干净的方式来构建和解决这个问题.

c# java

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

在C中实现定时,缓存攻击抵抗排序

免责声明:我很清楚实现自己的加密是一个非常糟糕的主意.这是硕士论文的一部分,代码不会在实践中使用.

作为更大的加密算法的一部分,我需要对一个恒定长度的数组(小的,精确的24)进行排序,而不会泄漏有关该数组内容的任何信息.据我所知(如果这些不足以防止时间和缓存攻击,请纠正我),这意味着:

  1. 无论数组的特定值如何,排序都应在数组长度方面以相同的周期数运行
  2. 排序不应该分支或访问内存,具体取决于数组的特定值

是否存在任何此类实现?如果没有,这种类型的编程是否有任何好的资源?

说实话,我甚至在更简单的子问题上苦苦挣扎,即找到数组的最小值.

double arr[24]; // some input
double min = DBL_MAX;

int i;
for (i = 0; i < 24; ++i) {
    if (arr[i] < min) {
        min = arr[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

添加else带有虚拟分配的功能是否足以使其具有时序安全性?如果是这样,我如何确保编译器(在我的情况下是GCC)不会撤消我的辛勤工作?这会容易受到缓存攻击吗?

c

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

什么是Spring的弃用NoSuchRequestHandlingMethodException的替代品?

NoSuchRequestHandlingMethodException被废弃在春季4.3,支持的注解驱动的处理方法.这是什么意思?该例外仍列在文档中,未提及其已弃用的状态.如果我理解正确,当没有给定请求的请求映射器时,抛出此异常.它似乎受到处理DefaultExceptionHandlerResolver,在这里,和相关的方法已经被废弃为好.

如果不推荐使用此方法,我可以假设Spring不再抛出此异常吗?我怎么能用注释驱动的异常处理替换这个功能?我应该处理哪个例外,如果这个例子被弃用了?

旁注:我也注意到了一个更新的NoHandlerFoundException,在这里.这是替代品吗?如果是这样,为什么?它似乎做了同样的事情.为什么与其他HTTP状态代码相关的异常不被弃用?这一切都没有多大意义.

spring spring-mvc

7
推荐指数
1
解决办法
2660
查看次数

用Json.NET读取大整数

我有一些带有巨大整数的json,大约有几百个数字.我想将它们解析为BouncyCastle BigInteger(https://github.com/onovotny/BouncyCastle-PCL/blob/pcl/crypto/src/math/BigInteger.cs).

{
    "bigNumber":12093812947635091350945141034598534526723049126743245...
}
Run Code Online (Sandbox Code Playgroud)

所以我在默认设置中使用合约解析器实现了转换器.

internal class BigIntegerConverter : JsonConverter
{
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        writer.WriteRawValue(value.ToString());
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        JToken jToken = JToken.Load(reader);
        return new BigInteger(jToken.ToString());
    }

    public override bool CanConvert(Type objectType)
    {
        return (objectType == typeof(BigInteger));
    }
}

public class BigIntegerContractResolver : DefaultContractResolver
{
    private static readonly JsonConverter bigIntegerConverter = new BigIntegerConverter();
    private static Type type = typeof(BigInteger);

    protected …
Run Code Online (Sandbox Code Playgroud)

c# json.net

6
推荐指数
2
解决办法
2011
查看次数

标签 统计

c# ×2

c ×1

java ×1

json.net ×1

spring ×1

spring-mvc ×1