我最近发现我们可以使用?? 运算符检查空值.请检查以下代码示例:
var res = data ?? new data();
Run Code Online (Sandbox Code Playgroud)
这与之完全相似
var res = (data==null) ? new data() : data ;
Run Code Online (Sandbox Code Playgroud)
我检查了我的整个项目源代码库和一些其他开源项目.这个??操作员从未使用过.
我只是想知道这背后有什么理由,比如性能问题还是什么?
编辑:
我刚刚根据recursive和Anton的评论更新了我的示例代码.粗心大意是一个错误.:(
我不能让我的Perl脚本在服务器上运行稳定.这是问题所在.
当脚本每秒访问超过5次时,服务器会冻结.一段时间后,服务器永远挂起.SSH没有响应,我必须重新启动服务器.
我正在使用Apache mod_perl.
该脚本托管在Ubuntu下的Virtual Dedicated Server上.我是通过SSH操作的.这些是服务器参数CPU:400 MHz RAM:256 MB
脚本的最大执行时间是200毫秒.
我用"顶部"实用程序监视了服务器负载.它不会显示任何问题,这是每秒加载5个脚本时的CPU统计信息:
Cpu(s): 12.1%us, 0.6%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 87.2%st
我有什么选择让脚本无问题地工作?
这是ps aux | fgrep perl加载时的结果:
ps aux | fgrep perl www-data 2925 0.3 6.5 45520 17064 ? R 17:00 0:01 /var/www/perl/loa -k start www-data 2926 0.2 6.5 45520 17068 ? R 17:00 0:01 /var/www/perl/loa -k start www-data 2927 0.4 6.5 45676 17060 ? R 17:00 0:01 /var/www/perl/loa -k start www-data 2928 0.3 6.5 45676 17060 …
我希望有一个数据库表,用于保存包含修订历史记录的数据(如维基百科上的页面).我认为一个好主意是有两列标识行:(name, version).所以样本表看起来像这样:
TABLE PERSONS:
id: int,
name: varchar(30),
version: int,
... // some data assigned to that person.
Run Code Online (Sandbox Code Playgroud)
因此,如果用户想要更新人员的数据,他们不会进行更新 - 相反,他们会创建具有相同name但不同version值的新PERSONS行.向用户显示的数据(给定的name)是最高的数据version.
我有第二张表,比如说DOGS,它引用了PERSONS表中的人物:
TABLE DOGS:
id: int,
name: varchar(30),
owner_name: varchar(30),
...
Run Code Online (Sandbox Code Playgroud)
显然,owner_name是一个引用PERSONS.name,但我不能将它声明为外键(在MS SQL Server中),因为PERSONS.name它不是唯一的!
问题:那么,在MS SQL Server 2008中,我应该如何确保数据库完整性(即,对于每个DOG,PERSONS中至少存在一行,使得其PERSON.name == DOG.owner_name)?
我正在寻找最优雅的解决方案 - 我知道我可以在PERSONS表上使用触发器,但这不像我想要的那样具有声明性和优雅性.有任何想法吗?
附加信息
上面的设计具有以下优点:如果我需要,我可以"记住"一个人的当前id(或(name, version)对),并且我确信该行中的数据永远不会被更改.这很重要,例如,如果我把这个人的数据作为随后打印的文档的一部分,并且在5年内有人可能想要打印完全未更改的副本(例如,使用与今天相同的数据),那么这将非常容易为他们做.
也许您可以想到一个完全不同的设计,它可以实现相同的目的,并且可以更容易地实现其完整性(最好使用外键或其他约束)?
编辑:感谢Michael Gattuso的回答,我发现了另一种可以描述这种关系的方式.有两种解决方案,我将其作为答案发布.请投票选择你更喜欢哪一个.
我有一个庞大的excel工作簿,我一直在开发它来对工程项目进行一些成本分析.现在,我有一个单元格,我输入一个储存罐的大小,更新另一个包含总储蓄的单元格.
计算节省的过程非常复杂.我的工作簿中有20张,每年一张,每张都参考了坦克的大小.通常情况下,我会尝试制作两列并拖动公式以节省下来以获得我的x和y值,但我认为我不能这样做,因为储蓄单元依赖于其他20张纸.
我想知道的是:绘制坦克大小与储蓄之间关系的最佳方法是什么.理想情况下,我想说"好的,将这个单元格中的值在0到200万之间以1000为增量进行改变,然后记录每个增量的节省单元的值,然后绘制,"但我似乎无法看到弄清楚如何实现这一目标.
alt text http://img14.imageshack.us/img14/5020/whatbox.png
我不知道这叫什么,但你有2个列表,中间有一个按钮来来回切换选项.
问题[a]这是什么叫做.
问题[b]你如何制作一个.
在我的Eclipse Preferences -> Java -> Editor -> Content Assist -> Advanced设置中,我看到以下内容:
我尝试使用谷歌搜索(单独)"Java非类型提案"和"Java提案(以任务为中心)",但没有找到任何描述它们.
匹配的条目/Java ((Non-)?Type)? Proposals/对我有意义,但其他条目没有.
那么,其他人做了什么?
以下是我的查询
select
@monNameStr as [MName],
IsNull(count(c.AssignmentID),0),
IsNull(sum(s.ACV),0),
IsNull(sum(s.GrossReturn),0),
IsNull(sum(s.NetReturn),0),
IsNull(avg(a.Total),0)
FROM
dbo.Assignment_ClaimInfo c,
dbo.Assignment_SettlementInfo s,
dbo.Assignment_AdvCharges a
Where
c.Assignmentid=s.Assignmentid and
s.Assignmentid=a.Assignmentid and
a.Assignmentid in
(select AssignmentID from dbo.Assignment_ClaimInfo
where (upper(InsuranceComp)=upper(@CompName) or upper(@CompName)='ALL COMPANIES')
and (DateName(month,DATEADD(month, 0, DOFileClosed))+' '
+cast(year(DATEADD(month, 0, DOFileClosed)) as varchar)=@monNameStr))
Group By c.InsuranceComp
Order By c.InsuranceComp
where @monNameStr is calculated date field like 'October 2009'
Run Code Online (Sandbox Code Playgroud)
我需要知道的是什么.受此选择查询影响的记录数.
我不需要用COUNT()功能来查询这个查询到另一个查询.
非常感谢您的宝贵帮助.
unicode标准中有足够的代码点,你需要4个字节来存储它们.这就是UTF-32编码所做的.然而,UTF-8编码通过使用称为"可变宽度编码"的东西以某种方式将这些压缩到更小的空间.
实际上,它设法在一个字节中代表US-ASCII的前127个字符,它看起来与真正的ASCII完全相同,因此您可以将许多ascii文本解释为UTF-8而不对其执行任何操作.干净的把戏.那么它是怎样工作的?
我将在这里提出并回答我自己的问题,因为我只是做了一些阅读以弄清楚它并且我认为它可能会节省其他人一些时间.如果我有一些错误,也许有人可以纠正我.
Ruby的实现方式是什么?
a = [1,2]
b = [3,4]
Run Code Online (Sandbox Code Playgroud)
我想要一个数组:
=> [f(1,3) ,f(1,4) , f(2,3) ,f(2,4)]
Run Code Online (Sandbox Code Playgroud) GWT引入了1.6版处理程序而不是监听程序.现在我习惯于添加和删除那些侦听器以实现某些行为.
但随着我使用处理程序,我想念删除方法.像clickClickHandler一样用于click事件.
有办法做到这一点,还是我错过了什么?
sql-server ×2
apache ×1
c# ×1
combinations ×1
eclipse ×1
excel ×1
foreign-keys ×1
gwt ×1
html ×1
java ×1
javascript ×1
linux ×1
mod-perl ×1
multibyte ×1
perl ×1
ruby ×1
select ×1
sql ×1
unicode ×1
unique ×1
utf-8 ×1
virtualhost ×1