某些语言提供的volatile
修饰符被描述为在读取支持变量的内存之前执行"读取内存屏障".
读取存储器屏障通常被描述为一种方法,用于确保CPU在屏障之后执行读取之前执行读取之前所请求的读取.但是,使用此定义,似乎仍然可以读取过时值.换句话说,以特定顺序执行读取似乎并不意味着必须查询主存储器或其他CPU以确保读取的后续值实际上反映了读取屏障时系统中的最新值或随后写入阅读障碍.
因此,volatile是否真的保证读取最新值或者只是(喘气!)读取的值至少与屏障之前的读取一样是最新的?还是其他一些解释?这个答案有什么实际意义?
此问题涉及URL的查询字符串部分中的?
字符,这些字符出现在标记字符之后.
根据维基百科,某些字符保持原样,其他字符编码(通常带有%
转义序列).
我一直试图将其跟踪到实际规格,以便我理解维基百科页面中每个要点背后的理由.
矛盾例1:
在HTML规范说来编码空间,+
并按照其余RFC1738.但是,这个RFC说这~
是不安全的,而且"[a] ll不安全的字符必须始终在URL中编码".这似乎与维基百科相矛盾.
实际上,IE8 ~
在它生成的查询字符串中进行编码,而FF3则按原样进行编码.
矛盾示例2:
维基百科指出,它未提及的所有字符都必须进行编码.!
在维基百科中没有提到.但是RFC1738声明这!
是一个"特殊"字符并且"可以使用未编码的".这似乎与维基百科相矛盾,维基百科说它必须编码.
实际上,IE8 !
在它生成的查询字符串中进行编码,而FF3则按原样进行编码.
据我所知,这可能是为了对那些在维基百科和规范之间存在疑问的字符进行编码.甚至可能编码所有不是[A-Za-z0-9]的东西.我想知道这方面的实际标准.
结论
维基百科上描述的算法精确编码那些不是RFC3986非保留字符的字符.也就是说,它编码除字母数字和字母之外的所有字符-._~
.作为一种特殊情况,空间被编码为+
而不是%20
RFC3986.
某些应用程序使用较旧的RFC.为了比较,RFC2396无保留字符是字母数字和!'()*-._~
.
为了比较,HTML5工作草案算法编码除字母数字和字母以外的所有字符*-._
.空间的特殊情况编码仍然存在+
.值得注意的差异*
是未编码和~
编码.(从技术上讲,这种处理*
与RFC3986是兼容的,即使它*
是在reserved
因为它sub-delims
在query
生产中允许的范围内.)
如何重写包含SQL实现中的标准IS DISTINCT FROM
和IS NOT DISTINCT FROM
运算符的表达式,例如不支持它们的Microsoft SQL Server 2008R2?
.NET DateTime/TimeSpan打勾多长时间?
我正在寻找一种算法来确定实时数据捕获的百分位数.
例如,考虑开发服务器应用程序.
服务器的响应时间可能如下:17 ms 33 ms 52 ms 60 ms 55 ms等.
报告第90百分位响应时间,第80百分位响应时间等是有用的.
朴素算法是将每个响应时间插入列表中.请求统计信息时,对列表进行排序并将值放在适当的位置.
内存使用量与请求数量呈线性关系.
是否有一种算法可以在内存使用量有限的情况下产生"近似"百分位数统计量?例如,假设我想以一种处理数百万个请求的方式来解决这个问题,但只想使用一千字节的内存进行百分位跟踪(丢弃旧请求的跟踪不是一个选项,因为百分位数应该是满足所有要求).
还要求不存在分布的先验知识.例如,我不希望提前指定任何范围的存储桶.
在SQL Server数据工具中,我想抑制SQL71502的一些但不是全部的出现("---有一个未解析的对象引用---").我知道我可以通过Project Properties,Build,Suppress Transact-SQL警告来抑制,但这会全局抑制.可以这样做吗?
假设我们有一个System.Decimal数字.
为了说明,我们来看一个ToString()表示如下:
d.ToString() = "123.4500"
Run Code Online (Sandbox Code Playgroud)
关于这个十进制,可以说以下内容.对于我们这里的目的,比例定义为小数点右边的位数.有效比例相似但忽略了小数部分中出现的任何尾随零.(换句话说,这些参数定义为SQL小数加上一些额外的参数,以说明小数部分中尾随零的System.Decimal概念.)
给定一个任意的System.Decimal,如何有效地计算所有这四个参数而不转换为String并检查String?该解决方案可能需要Decimal.GetBits.
更多例子:
Examples Precision Scale EffectivePrecision EffectiveScale
0 1 (?) 0 1 (?) 0
0.0 2 (?) 1 1 (?) 0
12.45 4 2 4 2
12.4500 6 4 4 2
770 3 0 3 0
Run Code Online (Sandbox Code Playgroud)
(?)或者将这些精度解释为零也没关系.
我正在努力提高对记忆障碍的理解.假设我们有一个弱内存模型,我们适应Dekker的算法.是否可以通过添加内存屏障使其在弱内存模型下正常工作?
我认为答案是令人惊讶的.原因(如果我是正确的)是虽然可以使用内存屏障来确保读取不会移动到另一个上,但它无法确保读取不会看到过时的数据(例如缓存中的数据).因此,当关键部分被解锁时(根据CPU的缓存),它可能会在过去看到一些时间,但在当前时间,其他处理器可能会将其视为已锁定.如果我的理解是正确的,那么必须使用互锁操作,例如通常称为测试和设置或比较和交换的操作,以确保多个处理器之间的存储器位置的值的同步协议.
因此,我们能否正确地期望没有弱内存模型系统只能提供内存屏障?系统必须提供测试和设置或比较和交换等操作才有用.
我意识到包括x86在内的流行处理器提供的内存模型比弱内存模型强得多.请集中讨论弱内存模型.
(如果Dekker的算法选择不当,请选择另一种互斥算法,如果可能,内存障碍可以成功实现正确的同步.)
有时,用户将使用Windows资源管理器复制文件,并在应该执行svn存储库级复制或合并时提交它们.因此,SVN没有正确跟踪这些变化.一旦我发现了这一点,损坏显然已经完成,并且可能已经对相关文件进行了大量后续编辑.重要的是不要失去这部分历史.当我发现这些情况发生时,我能做些什么来追溯改进存储库中的东西吗?
具体来说,我有两种情况,具体取决于目标文件是否已存在.在第一个场景中,(1)用户执行了不作为副本记录的添加.在第二种情况中,(2)用户执行了未记录为合并的更新.
此外,源文件和目标文件都经历了已提交的后续更新.有时,这些后续编辑也是手动进行的,因此没有适当的mergeinfo.
可能性:可能手动将mergeinfo revprop添加到过去的修订帮助中吗?如果是这样,我该怎么做?请考虑两种情况.
按理说,Visual Studio(.NET编译和IDE)在5000美元的服务器上比在500美元的桌面上运行得更好.
有没有人有经验在这个价格范围内的服务器上托管的虚拟机中运行Visual Studio,并通过RDP访问?(假设现有硬件可用于所述价格.)
显然,该服务器上还有其他虚拟机,但不是每个人都会进行密集型任务,例如同时编译等.作为一个起点,您可以假设4GB内存和4个虚拟CPU分配给VM,但随时提供其他配置建议.
任何见解?它是如何运作的?我正在寻找实用的方法来最大化编译/运行周期和一般IDE性能的速度.
(我对这是否属于堆栈溢出或服务器故障感到困惑.由于它与Visual Studio有关,并且可能对尝试改善开发体验的程序员有一般兴趣,我决定在此发布.请如果不行,请移动它.)
.net ×2
sql-server ×2
algorithm ×1
ansi-sql ×1
concurrency ×1
datetime ×1
decimal ×1
html ×1
http ×1
lock-free ×1
merge ×1
mutex ×1
percentile ×1
performance ×1
query-string ×1
resampling ×1
sql ×1
svn ×1
t-sql ×1
time ×1
timespan ×1
url ×1
volatile ×1