在Java中,按位运算会导致类型转换为整数,并且还会导致符号扩展.例如,预期如下:
byte b = -1;
System.out.println(b >> 1);//-1
Run Code Online (Sandbox Code Playgroud)
在Java中,字符以UTF-16编码,每个单元用2个字节表示.
char c = 0xFFFF; //I assume now the sign bit is 1.
System.out.println(c >> 1);//32767 ???? WHY
Run Code Online (Sandbox Code Playgroud)
我期待-1而不是32767.为什么在应用按位操作之前,在类型转换期间标志没有延长?有任何想法吗?
我试图在Windows上使用Safari进行跨域请求.我的Safari版本是5.1.2.
这是一个经典问题.我在许多地方读过,只要服务器在响应中使用followin标头进行响应,Chrome和Safari就会允许跨域请求
Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)
我看过这篇文章. 如何在Safari中允许跨域请求? 还有很多其他的在stackoverflow网站上.
但是,他们都没有回答我的问题.
我在使用Chrome和Safari执行跨域AJAX请求时遇到问题,即使我从服务器发回必要的标头.
我终于使用"--disable-web-security"运行了Chrome.然后它奏效了.
我的问题:
1)我如何处理Safari?我是否使用类似的命令行参数?
2)更重要的是,我可以告诉我默认情况下Chrome和Safari是否允许跨域功能,只要服务器响应标头或者我必须确保
a)服务器以标头响应
和
b)使用适当的参数启动浏览器.
.contains 和 -contains 有什么区别?一个似乎区分大小写,而另一个不区分大小写。
PS C:\WINDOWS\system32> ("jack", "john", "jill").contains("Jill")
False
PS C:\WINDOWS\system32> "jack", "john", "jill" -contains "Jill"
True
Run Code Online (Sandbox Code Playgroud)
为什么会有这样的差异?
假设您有一个sha-1算法,它接受文本作为输入而不是字节数组.(例如,有一些像这样的Javascript库).
如果要将sha-1应用于文本(假设文本是密码),则首先执行utf-8编码,因为文本可以包含多字节字符.换句话说,文本中字符的相应整数值可以大于8位字节可以容纳的值.由于sha-1算法适用于8位单元,因此有助于首先在utf-8中对文本进行编码.
我的问题是这样的:当你有一个非文本的二进制数据,其中每个字节的值是0和255之间,你仍然应该做的二进制数据UTF-8编码,你把它传递给了SHA-1算法之前?我知道当值介于0和127之间时,utf-8根本不会修改数据.
但是,如果值介于128和255之间,则UTF-8会修改此类数据.
总之,这是我的问题:包含值255(全1)的字节的SHA-1是什么?
With UTF-8 encoding: 730cf30d408ecf51aad876f5c491f837f7ddea4c
Without UTF-8 encoding: 85e53271e14006f0265921d02d4d736cdc580b0b
Run Code Online (Sandbox Code Playgroud)
哪一个是正确的?
当我对空字符串应用 split,然后应用相等比较时,我没有得到 $True 或 $False(见下文)。
更奇怪的是,当我将分割结果与空字符串进行比较时,我看到一些不可见的输出,而当我将分割结果与非空字符串进行比较时,我没有看到任何输出(见下文)。
PS > ''.split(',') -eq ''
PS > ''.split(',') -eq 'a'
PS > ''.split(',') -ne ''
PS > ''.split(',') -ne 'a'
PS >
Run Code Online (Sandbox Code Playgroud)
这种奇怪行为的原因是什么?
powershell ×2
ajax ×1
cross-domain ×1
java ×1
operators ×1
ruby ×1
safari ×1
sha1 ×1
upcasting ×1
utf-8 ×1