小编eao*_*son的帖子

处理非重叠范围的建议方法(例如,调度)

我已经看过几次这样的问题,并且我正在尝试以非重叠的方式决定存储范围的最佳方式.例如,在安排某种资源时,一次只能有一个人使用.我看到的大多数是这样的:

PERSON          ROOM        START_TIME      END_TIME
Col. Mustard    Library     08:00           10:00
Prof. Plum      Library     10:00           12:00
Run Code Online (Sandbox Code Playgroud)
  1. 防止新条目与现有时间表重叠的最佳方法是什么,例如,如果Scarlet小姐想要从11:00到11:30预订图书馆?内联约束不起作用,我不认为这可以在触发器中轻松完成.处理最初在表中查找现有冲突的所有插入的过程?

  2. 其次,处理并发问题的最佳方法是什么?说,Scarlet小姐在13:00到15:00之间想要图书馆,White夫人想要从14:00到16:00.(1)的程序会发现这些时间表都可以接受,但是明确地将它们放在一起,它们不是.我唯一能想到的是手动锁定表格或某种互斥锁.

  3. 上面的表((room,start_time)的主键是什么?

database oracle concurrency constraints

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

Oracle存储过程是否是线程安全的?

伪代码:

  1. 开始存储过程

  2. 承诺

  3. 检查第a行//第1步的值列1

  4. 更新第a行第2行的第1列

  5. 承诺

  6. 结束存储过程

这个sp线程安全吗?

编辑:

Declare
  tag_rec prep_tag%ROWTYPE;
begin

  COMMIT; 

  SELECT * INTO tag_rec 
  FROM PREP_TAG 
  WHERE project = 'a' and categoryId = 'b'; 

  if tag_rec.locked = 'No' then

    UPDATE prep_tag 
    SET locked = 'Yes' 
    WHERE TAG_NUMBER = tag_rec.TAG_NUMBER;

  end if;

  COMMIT; 

end;
Run Code Online (Sandbox Code Playgroud)

这个sp线程安全吗?是否有可能线程A检查了tag_rec.locked ='否',那么它即将更新它.但在它之前,线程B偷偷进入并且还看到tag_rec.locked ='不'?

oracle concurrency thread-safety

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

我如何声明Perl分裂的正则表达式?

我今天遇到了这个Perl构造:

@foo = split("\n", $bar);
Run Code Online (Sandbox Code Playgroud)

这适用于将大型字符串拆分为UNIX类型行结尾的行数组,但为Windows留下了尾随\ r \n.所以我改成了:

@foo = split("\r?\n", $bar);
Run Code Online (Sandbox Code Playgroud)

其中逐行拆分字符串并且不留下尾随\ r \n(在ActivePerl 5.8下测试).然后有人向我指出,这应该是:

@foo = split(/\r?\n/, $bar);
Run Code Online (Sandbox Code Playgroud)

那么为什么第二种变体会起作用呢?双引号意味着评估内容,这就是为什么\ r和\n实际上被视为CR和LF,但是?被视为正则表达式元字符而不是文字问号.

正则表达式周围的斜杠是split()的可选项吗?是否假设函数的第一个参数是正则表达式?

regex perl split

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

检测用户是否已在html网站上输入竞赛

我有一个足球网站,它有6个小按钮,当点击它时,它将通过一个随机数组并告诉用户赢了一些东西.什么是阻止用户多次点击直到用户赢了的最佳方法.例如某种javascript来检测用户ip并检查它是否已经粘贴在x小时内的网站中.

谢谢,

html javascript

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

EXCLUSIVE锁是阻止多个会话同时插入的唯一方法吗?

我正在考虑在Oracle数据库中实现队列,基本上使用表作为队列,并且我正在尝试决定如何防止多个会话同时插入表中并弄乱排序.

是否是LOCK TABLE mytable IN EXCLUSIVE MODE阻止多个会话插入表的唯一方法?

编辑:

"队列"可能不是正确的术语.更多的列表,其中元素之间的相对顺序是重要的.我正在考虑Java的ArrayList的顺序.

sql oracle concurrency insert

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