我正在尝试根据数据库服务器的时钟生成唯一的 ID/时间戳。这不是表的主 ID,但我感兴趣的是该值对于每一行都是唯一的。该代码位于一个存储过程中,该存储过程将由同时运行的各个进程同时执行。
我已经想出了这段代码,但找不到让它更优雅的方法。据我测试,确保其他进程不会在其他线程上生成相同值的唯一方法是在检查是否存在时锁定表。
DECLARE @CurrentRRN varchar(30)
SET @CurrentRRN = FORMAT(SYSDATETIME(), 'yyyyMMddHHmmssffffff')
IF(EXISTS(SELECT RRN FROM dbo.Numbering WITH (xlock, tablockx, holdlock)
WHERE RRN = @CurrentRRN)) BEGIN
WHILE( EXISTS(SELECT RRN FROM dbo.Numbering WHERE RRN = @CurrentRRN) )
BEGIN
SET @CurrentRRN = FORMAT(SYSDATETIME(), 'yyyyMMddHHmmssffffff')
END
END
INSERT INTO dbo.Numbering
(RRN)
Values
(@CurrentRRN)
print @CurrentRRN
Run Code Online (Sandbox Code Playgroud) 如何正确验证子域格式?
这是我所拥有的:
validates :subdomain, uniqueness: true, case_sensitive: false
validates :subdomain, format: { with: /\A[A-Za-z0-9-]+\z/, message: "not a valid subdomain" }
validates :subdomain, exclusion: { in: %w(support blog billing help api www host admin en ru pl ua us), message: "%{value} is reserved." }
validates :subdomain, length: { maximum: 20 }
before_validation :downcase_subdomain
protected
def downcase_subdomain
self.subdomain.downcase! if attribute_present?("subdomain")
end
Run Code Online (Sandbox Code Playgroud)
题:
是否有像电子邮件一样的标准 REGEX 子域验证?子域使用的最佳正则表达式是什么?
validates :email, format: { with: URI::MailTo::EMAIL_REGEXP }, allow_blank: true
我正在尝试这段代码,但每次都得到 nil (这是 Black Jack 游戏的简单版本):是因为我在 case 语句中比较两个变量吗?
def end_game_message(player_score, bank_score)
message = ""
case player_score
when player_score == 21
message = "Black Jack!"
when player_score > bank_score
message = "You win!"
when player_score > 21
message = "You lose!"
when player_score < bank_score
message = "You lose"
when player_score == bank_score
message = "Push"
end
message
end
puts end_game_message(21, 15)
Run Code Online (Sandbox Code Playgroud)
预先感谢您的任何帮助!
我正在寻找一种方法来限定文件名是否以数组内的后缀结尾。
\n\nfiletypes = %w(.flac .wv)\nDir.open(Dir.pwd).each do |filename|\n q = "." + filename.split(\'.\').last.to_s\n pp filename if filetypes.include?(q)\nend\nRun Code Online (Sandbox Code Playgroud)\n\n我认为必须有某种内置迭代器来遍历限定符数组。我在这里错过了什么吗?
\n\nfiletypes = %w(.flac .wv)\nDir.open(Dir.pwd).each do |filename|\n pp filename if filename.end_with?(filetypes)\nend\nRun Code Online (Sandbox Code Playgroud)\n\n这是行不通的。文档是这样说的:
\n\nend_with?([suffixes]+) \xe2\x86\x92 true or false
所以它表明可以遍历数组,但它对我不起作用。我怎样才能将数组传递给end_with??