jjzjj

Memoizer

全部标签

java - 在 Brian Goetz 的 Java Concurrency In Practice 中,为什么 Memoizer 类没有使用 @ThreadSafe 注释?

BrianGoetz的JavaConcurrencyInPractice提供了一个用于并发使用的高效可伸缩缓存示例。该示例的最终版本显示了Memoizer类(第108页)的实现,显示了这样一个缓存。我想知道为什么这个类没有用@ThreadSafe注释?缓存的客户端类Factorizer已使用@ThreadSafe正确注释。附录指出,如果一个类未使用@ThreadSafe或@Immutable进行注释,则应假定它不是线程安全的。不过,Memoizer似乎是线程安全的。这是Memoizer的代码:publicclassMemoizerimplementsComputable{private

python - 为什么这个 memoizer 在递归函数上工作?

我不明白为什么下面的代码使fib以线性而不是指数时间运行。defmemoize(obj):"""MemoizationdecoratorfromPythonDecoratorLibrary.Ignores**kwargs"""cache=obj.cache={}@functools.wraps(obj)defmemoizer(*args,**kwargs):ifargsnotincache:cache[args]=obj(*args,**kwargs)returncache[args]returnmemoizer@memoizedeffib(n):returnnifnin(0,1)el