问题列表 - 第11068页

缓存功能结果

为了好玩,我正在玩一个类来轻松缓存功能结果.基本的想法是你可以使用你想要的任何功能 - 虽然你只想将它用于相对昂贵的功能 - 并且可以轻松地将它包装起来使用相对便宜的字典查找,以便以后使用相同的参数运行.真的没什么可说的:

public class AutoCache<TKey, TValue> 
{  
    public AutoCache(Func<TKey, TValue> FunctionToCache)
    {
        _StoredFunction = FunctionToCache;
        _CachedData = new Dictionary<TKey, TValue>();
    }

    public TValue GetResult(TKey Key)
    {
        if (!_CachedData.ContainsKey(Key)) 
            _CachedData.Add(Key, _StoredFunction(Key));
        return _CachedData[Key];
    }

    public void InvalidateKey(TKey Key)
    {
        _CachedData.Remove(Key);
    }

    public void InvalidateAll()
    {
        _CachedData.Clear();
    }

    private Dictionary<TKey, TValue> _CachedData;
    private Func<TKey, TValue> _StoredFunction; 
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,还有一些额外的限制使得它没有那么有用.我们还可以添加一些功能以及实现的其他注意事项.我正在寻找有关如何改善以下任何一点的想法:

  • 这需要一个函数为给定的参数集返回相同的结果(它必须是无状态的).可能没办法改变这个.
  • 它仅限于非常狭窄的代表范围.我们可以扩展它以轻松地工作任何接受至少一个参数并返回值的函数,可能通过在匿名类型中包装参数?或者我们是否需要为我们想要支持的每个Func委托提供额外的实施?如果是这样,我们可以构建一个抽象类来使这更容易吗?
  • 它不是线程安全的.
  • 没有自动失效.这使垃圾收集变得危险.你需要保持它一段时间以使它有用,这意味着你不会真的丢弃旧的和可能不需要的缓存项.
  • 我们可以继承这个,以便在函数只有一个参数的情况下使缓存成为双向的吗?

作为参考,如果我在实际代码中使用它,我认为最可能的地方是作为业务逻辑层的一部分,我使用此代码将数据访问层中的方法包装起来,只从中提取数据查找表.在这种情况下,相对于字典,数据库行程将是昂贵的,并且几乎总是只有一个"键"值用于查找,因此它是一个很好的匹配.

.net c# caching

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

如何在ColdFusion 7中对查询对象进行排序?

我有一个查询对象,比如返回十五行.出于所有意图和目的,我无法修改生成查询对象的SQL,但我需要按列对此查询对象进行排序.有没有办法在ColdFusion 7中执行此操作而无需借助外部库?

编辑:我应该添加:我对此查询对象运行查询,并ORDER BY在此查询查询中完成了一个子句.还有另一种方法吗?

sorting coldfusion coldfusion-7

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

用于Lua Web开发的Web服务器

我应该使用什么Web服务器(以及为什么)进行Lua Web开发?

apache lua webserver lighttpd nginx

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

在Google App Engine中安装常用库

我应该如何在Google App Engine中安装(或者我应该在哪里放置和组织)常用的python库.

某些库需要使用setuptools进行安装.我该如何安装这些库.

python google-app-engine

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

免费的sqlite工具

寻找免费的sqlite工具,有什么建议吗?我需要一个导出,导入功能.

谢谢你的推荐.

sqlite iphone

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

目标C线程问题

这是代码:

for(int i = 0; i < personListViewController.peopleCount; i++) {
    [NSThread detachNewThreadSelector:@selector(getPerson:) toTarget:self withObject:i];
}
Run Code Online (Sandbox Code Playgroud)

getPerson看起来像这样:

 - (void)getPerson:(int)whichPerson { }
Run Code Online (Sandbox Code Playgroud)

当我构建它时,我得到以下结果:警告:传递'detachNewThreadSelector:toTarget:withObject:'的参数3使得整数指针没有强制转换

我想要做的就是通过detachNewThreadSelector将一个int传递给getPerson,我无法弄清楚如何让它除了一个对象指针之外的其他东西.我在这里错过了什么?

iphone cocoa-touch objective-c

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

如何裁剪和填充Paperclip(或RMagick)?

我上传了一张照片,它是一个矩形.我如何才能将其调整大小并填充到正方形?

我的意思是当照片水平放置时,它应该在其上方和下方,两个白色区域(用于保持正方形的形状),当它是垂直时,它应该在照片的两侧有两个白色区域.

当我使用PHP时,a使用了这个http://www.verot.net/php_class_upload_samples.htm

看看吧

100x150,保持比例,填充顶部和底部

我正在使用Paperclip和RoR.最好的方法是怎样做的?

resize ruby-on-rails image paperclip

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

fillMode到底做了什么?

文档并没有真正谈论这在技术上的作用.

fadeInAnimation.fillMode = kCAFillModeForwards;
Run Code Online (Sandbox Code Playgroud)

我真的没有看到这个的影响.我有一个alpha设置为0.0的视图.然后我淡入它.但是当我取消注释时,没有任何变化.相同的行为.我想了解这个fillMode真正做了什么.

iphone cocoa-touch core-animation

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

在声明结构时使用 typdef 有什么区别?

可能的重复:
为什么我们要在 C 中如此频繁地对结构进行 typedef?
C++ 中“struct”和“typedef struct”的区别?

以下类型声明有什么区别?

struct Person
{
    int age;
};


typedef struct 
{
    int age;
}Person;
Run Code Online (Sandbox Code Playgroud)

我明白那个

struct 
{
    int age;
}Person;
Run Code Online (Sandbox Code Playgroud)

创建一个名为 person 的未命名结构的实例,其中

struct Person
{
    int age;
};
Run Code Online (Sandbox Code Playgroud)

声明了一个名为 person 的类型,但不是一个实例。但我仍然不明白 typedef 的作用。

c++ struct typedef

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

什么是Java的ClassName.class的Scala等价物?

如何Class在Scala中获取实例?在Java中,我可以这样做:

Class<String> stringClass = String.class;
Run Code Online (Sandbox Code Playgroud)

什么是Scala中的等价物?

scala

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