小编a1e*_*x07的帖子

如何获取缓存项目的到期日期?

我在MemoryCache中存储一个对象:

void foo()
{
  ObjectCache cache = MemoryCache.Default;
  SomeClass obj = cache["CACHE_KEY"] as SomeClass;
  if (null == obj )
  {
     obj = new SomeClass(); ....
     CacheItemPolicy policy = new CacheItemPolicy();
     //update
     policy.AbsoluteExpiration = DateTime.Now+TimeSpan.FromMinutes(1);
     cache.Set("CACHE_KEY", obj, policy);
  }
  else
  {
     //get expiry date 
  }
  .....
}
Run Code Online (Sandbox Code Playgroud)

如果缓存包含对象,是否有可能以某种方式获得到期日期?

c# asp.net

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

外连接(+)的旧Oracle语法是否始终等同于新语法?

我想知道是否总是可以LEFT JOIN使用旧的Oracle语法重写(+).特别是,我尝试使用表达以下查询(+)

SELECT *
FROM table_1 a
LEFT JOIN table_2 b ON (b.table1_id = a.id AND b.other_field = 'value1')
Run Code Online (Sandbox Code Playgroud)

没有成功.有可能吗?
谢谢.

oracle left-join

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

在Java中同步访问只读映射的正确方法

我正在写一个DatabaseConfiguration类的类比,它从数据库中读取配置,我需要一些关于同步的建议.例如,

public class MyDBConfiguration{
   private Connection cn;
   private String table_name;
   private Map<String, String> key_values = new HashMap<String,String>();
   public MyDBConfiguration (Connection cn, String table_name) {
      this.cn = cn;
      this.table_name = table_name;
      reloadConfig();
   }
   public String getProperty(String key){
       return this.key_values.get(key);
   }
   public void reloadConfig() {
      Map<String, String> tmp_map = new HashMap<String,String> ();
      // read  data from database
      synchronized(this.key_values)
      {
          this.key_values = tmp_map;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

所以我有几个问题.
1.假设属性是只读的,我必须使用synchronizegetProperty
2.是否有意义做this.key_values = Collections.synchronizedMap(tmp_map)reloadConfig

谢谢.

java multithreading synchronization

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

Oracle中的物联网与堆表

在使用SQLServer很长一段时间后,我常常认为与堆表相比,聚簇表(具有聚簇索引的表)通常是更好的选择.现在我也在使用Oracle,我真的不明白为什么他们的表默认是堆.根据我的经验,我可以说表中应该堆的数量有限(再次,我主要处理SQLServer).

Oracle是否有充分的理由"强迫"(通过强制我的意思是,CREATE TABLE没有指定organization index创建堆,而SQLServer,默认情况下创建聚簇表)用户使用堆表?

[更新]
关于SQLServer的澄清 - 我可能误用"default"来描述SQL Server行为; 我知道如果指定了主键,它会创建一个聚簇索引CREATE TABLE.我的观点是,我没有指定PK是集群的.
[/更新]

此外,在SQLServer中有很多关于集群表和堆的好文章,我想知道它可以在多大程度上应用于Oracle.

非常感谢任何信息.

谢谢.

sql sql-server oracle

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

SQL Server:是否可以在没有表变量的情况下获取最近插入的标识列值

假设我有一张桌子

my_table(id int identity(1,1) not null primary key, data varchar(100))
Run Code Online (Sandbox Code Playgroud)

我想编写一个过程,在该表中插入一个新行并返回id.我试过了

DECLARE @new_id INT;    
SELECT @new_id = id FROM
(
INSERT INTO my_table(data) OUTPUT inserted.id VALUES ('test') 
) as NewVal(id)
Run Code Online (Sandbox Code Playgroud)

该代码不起作用(我得到"在INSERT语句的行的直接来源的SELECT语句中不允许嵌套的INSERT,UPDATE,DELETE或MERGE语句.").但是,如果我使用表变量,我可以这样做

DECLARE @new_id INT;    
DECLARE @tmp_table TABLE(int id);
INSERT INTO @tmp_table
SELECT id FROM
(
INSERT INTO my_table(data) OUTPUT inserted.id VALUES ('test')  
) as NewVal(id);
// OR 
INSERT INTO my_table(data) OUTPUT inserted.id INTO @tmp_table VALUES ('test') ;
SELECT @new_id = id FROM @tmp_table;
Run Code Online (Sandbox Code Playgroud)

是否可以在不使用表变量的情况下实现相同的功能?

更新
感谢您的快速回复,为每个人提供+1 SCOPE_IDENTITY解决方案.这可能是我的错,我应该清楚地问过这个问题 - 我确实使用过MERGE …

sql-server

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