请不要说EHCache或OSCache等.为了这个问题的目的,假设我只想使用SDK(从实践中学习)来实现我自己的.鉴于缓存将在多线程环境中使用,您将使用哪些数据结构?我已经使用LinkedHashMap和Collections#synchronizedMap实现了一个,但我很好奇任何新的并发集合是否会更好.
更新:当我发现这个金块时,我只是阅读Yegge的最新消息:
如果您需要持续时间访问并希望维护插入顺序,那么您不能比LinkedHashMap做得更好,这是一个真正精彩的数据结构.它可能更精彩的唯一方法是如果有并发版本.可惜.
在我使用上面提到的LinkedHashMap+ Collections#synchronizedMap实现之前,我的想法几乎完全相同.很高兴知道我不只是忽略了一些东西.
基于到目前为止的答案,对于高度并发的LRU来说,我最好的选择是使用一些相同的逻辑来扩展ConcurrentHashMapLinkedHashMap.
我在几个地方见过这个
function fn() {
return +new Date;
}
Run Code Online (Sandbox Code Playgroud)
我可以看到它返回的是时间戳而不是日期对象,但我找不到有关加号正在做什么的任何文档.
谁能解释一下?
使用logparser,您可以将参数传递给您要运行的查询,例如:
logparser file:query.sql?logs=somewhere\*.log -o:Sql -server:databaseserver
-database:database -createtable:ON -i:IISW3C
-iCheckPoint:somewhere\query.lpc -transactionRowCount:200
Run Code Online (Sandbox Code Playgroud)
现在我想将第二个参数传递给sql查询,但似乎不可能.
logparser file:query.sql?a=1&b=2
Run Code Online (Sandbox Code Playgroud)
被视为:a ="1&b = 2".用重音转义角色也不起作用.这是logparser工具的限制吗?
我正在从数据库创建多个RSS源,以发布诸如职位空缺,志愿者机会和一般链接之类的内容.我的问题是,应该在Feed中返回多少项目,以便最有可能有人在没有任何间隙的情况下获取阅读器中的所有项目?
选择前100名?(显然需要为估计超过X时间的Feed数量设置)
选择最后24,48,72小时?
如果我通过Feedburner运行我的Feed,是否有人知道他们是否检查了一定的时间间隔以便我可以按照他们的标准创建它并确保Feedburner Feed包含所有项目?
SWT中是否有一种方法可以简单地获得等宽字体,适用于各种操作系统?
例如.这适用于Linux,但不适用于Windows:
Font mono = new Font(parent.getDisplay(), "Mono", 10, SWT.NONE);
或者我需要一个尝试加载不同字体(Consolas,Terminal,Monaco,Mono)的方法,直到一个不为空?或者,我可以在启动时在属性文件中指定它.
我尝试从Display获取系统字体,但这不是等宽的.
我希望它们易于捆绑,具有很少的依赖性并且易于使用.
这个问题偶尔出现,但我没有看到一个满意的答案.
典型的模式是(row是DataRow):
if (row["value"] != DBNull.Value)
{
someObject.Member = row["value"];
}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是哪个更有效率(我翻了条件):
row["value"] == DBNull.Value; // Or
row["value"] is DBNull; // Or
row["value"].GetType() == typeof(DBNull) // Or... any suggestions?
Run Code Online (Sandbox Code Playgroud)
这表明.GetType()应该更快,但编译器可能知道一些我不知道的技巧?
第二个问题,是否值得缓存row ["value"]的值,或者编译器是否优化了索引器?
例如:
object valueHolder;
if (DBNull.Value == (valueHolder = row["value"])) {}
Run Code Online (Sandbox Code Playgroud)
笔记:
我对几个场景进行了基准测试(时间以秒为单位,10,000,000次试验):
row["value"] == DBNull.Value: 00:00:01.5478995
row["value"] is DBNull: 00:00:01.6306578
row["value"].GetType() == typeof(DBNull): 00:00:02.0138757
Run Code Online (Sandbox Code Playgroud)
Object.ReferenceEquals与"=="具有相同的性能
最有趣的结果?如果您不匹配逐列的名称(例如,"值"而不是"值",则大约需要十倍的时间(对于字符串):
row["Value"] == DBNull.Value: 00:00:12.2792374
Run Code Online (Sandbox Code Playgroud)
故事的寓意似乎是,如果您无法通过索引查找列,请确保您提供给索引器的列名称与DataColumn的名称完全匹配.
缓存该值似乎也几乎快了两倍:
No Caching: 00:00:03.0996622
With Caching: 00:00:01.5659920
Run Code Online (Sandbox Code Playgroud)
所以最有效的方法 …
我有一些产品属于某个类别.
每个类别可以具有不同的属性.
例如,
类别数量约为10-15.每个类别的属性数量为3-15.产品数量非常大.
这个应用程序的主要要求是非常好的搜索.我们将选择类别,并为此类别中的每个属性输入标准.
必须为此方案设计数据库.(SQL Server 2005)
sql database sql-server database-design entity-attribute-value
有谁知道iPhone是否支持或将很快支持W3C Geolocation规范?
我正在寻找为移动用户构建应用程序,但不是花时间为每个不同的平台(iPhone,Android等等)开发应用程序,我更喜欢创建一个利用W3C标准.