我正在尝试用,新行替换当前文件中的每个:
:%s/,/\n/g
Run Code Online (Sandbox Code Playgroud)
但它插入的内容看起来像是一个^@而不是实际的换行符.该文件不是DOS模式或任何东西.
我该怎么办?
如果你像我一样好奇,请检查问题为什么\ raim的换行?同样.
问题如何在Vim中替换换行符?.替换新行的文本时必须使用\ r,如下所示
:%s/%/\r/g
Run Code Online (Sandbox Code Playgroud)
但是当替换字符的行尾和换行符时,您可以这样做:
:%s/\n/%/g
Run Code Online (Sandbox Code Playgroud)
手册的哪一部分记录了这些行为,以及它们背后的原因是什么?
在SQL Server中设置外键时,在什么情况下应该在删除或更新时级联它,背后的原因是什么?
这可能也适用于其他数据库.
我最关注每个场景的具体例子,最好是那些成功使用它们的人.
我用来跑
$s =~ s/[^[:print:]]//g;
Run Code Online (Sandbox Code Playgroud)
在Perl上摆脱不可打印的字符.
在Python中没有POSIX正则表达式类,我不能写[:print:]让它意味着我想要的东西.我知道在Python中无法检测字符是否可打印.
你会怎么做?
编辑:它也必须支持Unicode字符.string.printable方式很乐意将它们从输出中剥离出来.对于任何unicode字符,curses.ascii.isprint都将返回false.
种子随机数生成器最安全的熵源是什么?此问题与语言和平台无关,适用于网络上的任何计算机.理想情况下,我正在寻找托管公司提供的云环境或服务器中的计算机可用的源.
我以前从未在Windows上做过IPC.目前我正在开发一对程序,一个标准的GUI/CLI应用程序和一个Windows服务.该应用程序必须告诉服务该做什么.因此,假设通信只是本地通信,那么这两个进程的最佳通信方法是什么?
最好的地方被定义为更健壮,更不容易出错,不是最高性能也不是最容易编码.
代码示例将非常受欢迎,但不是必需的:-)
注意我只是询问使用什么,标准TCP套接字,命名管道或其他一些通信方式.
谢谢!
C#2.0的匿名方法和C#3.0的lambda表达式有什么区别?
我正在尝试使用ElementTree,它看起来很好,它可以逃脱HTML实体等等.我错过了一些我没听说过的真正精彩的东西吗?
这与我实际做的类似:
import xml.etree.ElementTree as ET
root = ET.Element('html')
head = ET.SubElement(root,'head')
script = ET.SubElement(head,'script')
script.set('type','text/javascript')
script.text = "var a = 'I love á letters'"
body = ET.SubElement(root,'body')
h1 = ET.SubElement(body,'h1')
h1.text = "And I like the fact that 3 > 1"
tree = ET.ElementTree(root)
tree.write('foo.xhtml')
# more foo.xhtml
<html><head><script type="text/javascript">var a = 'I love &aacute;
letters'</script></head><body><h1>And I like the fact that 3 > 1</h1>
</body></html>
Run Code Online (Sandbox Code Playgroud) 我必须检查一组文件路径是否代表现有文件.
它工作正常,除非路径包含不在当前网络上的计算机上的网络共享.在这种情况下,超时需要很长时间(30或60秒).
问题
有没有办法缩短非现有网络共享的超时?(我确信当他们确实存在时他们会很快回答,所以超时1秒就可以了)
有没有其他方法可以解决这个问题,而无需开始缓存并使算法更复杂?(即,我已经知道这些X网络共享不存在,跳过其余的匹配路径)
更新:使用线程工作,但不是特别优雅
public bool pathExists(string path)
{
bool exists = true;
Thread t = new Thread
(
new ThreadStart(delegate ()
{
exists = System.IO.File.Exists(path);
})
);
t.Start();
bool completed = t.Join(500); //half a sec of timeout
if (!completed) { exists = false; t.Abort(); }
return exists;
}
Run Code Online (Sandbox Code Playgroud)
此解决方案避免了每次尝试需要一个线程,首先检查哪些驱动器可以访问并将其存储在某处.
首先,您可以在IsDriveReady函数中设置"超时"值.我把它设置为5秒,但设置它适合任何适合你的.
下面使用3种方法:
- 第一个是WNetGetConnection API函数,它获取驱动器的UNC(\ servername\share)
- 第二个是我们的主要方法:Button1_Click事件
- 第三个是ping服务器的IsDriveReady功能.
这对我很有用!干得好:
Run Code Online (Sandbox Code Playgroud)'This API Function will be used to get the UNC of the drive Private Declare Function WNetGetConnection Lib …
鉴于这是一个非常自然的用例(如果你不知道as实际上是什么),
if (x is Bar) {
Bar y = x as Bar;
something();
}
Run Code Online (Sandbox Code Playgroud)
实际上是等效的(也就是说,编译器生成的CIL来自上面的代码将是等价的):
Bar y = x as Bar;
if (y != null) {
y = x as Bar; //The conversion is done twice!
something();
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我想我没有说清楚我的问题.我不会写第二个片段,因为它当然是多余的.我声称在编译第一个片段时编译器生成的CIL等同于第二个片段,这是多余的.问题:a)这是正确的吗?b)如果是这样,为什么这样is实施?
这是因为我发现第一个片段比实际写得更好更清晰,更漂亮
Bar y = x as Bar;
if (y != null) {
something();
}
Run Code Online (Sandbox Code Playgroud)
结论:
优化is/ ascase不是编译器的责任,而是JIT的责任.
此外,与空检查它具有比这两个方案(较少(更便宜)的说明is和as和is和cast).
附录:
与nullcheck一样的CIL(.NET 3.5):
L_0001: ldarg.1 …Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×2
python ×2
vim ×2
as-keyword ×1
c#-2.0 ×1
cascade ×1
cryptography ×1
escaping ×1
expression ×1
foreign-keys ×1
ipc ×1
methods ×1
networking ×1
newline ×1
random ×1
rdbms ×1
replace ×1
security ×1
sql-server ×1
string ×1
timeout ×1
vi ×1
xhtml ×1
xml ×1