美好的一天,
对于工作,我突然需要知道Perl,虽然我几年前曾涉足这些艺术,但我似乎完全迷失了.对于Haskell/Java程序员来说,所有这些非结构化的打字都会让人紧张.
但是,我写了这个sub,它应该采用一行单行字符串并将它们连接成一个单行的多行字符串.我有它喜欢这样:
sub unlines {
my ( @lines ) = @_;
my $str = "";
foreach $line ( @lines ) {
$str = join $str, chomp($line), "\n";
}
return $str;
}
Run Code Online (Sandbox Code Playgroud)
然后我想测试它,当然:
print unlines(("GET / http1.1", "Host: localhost", ""));
Run Code Online (Sandbox Code Playgroud)
事情的结果是
000
Run Code Online (Sandbox Code Playgroud)
还有很多换行.我完全不知道为什么会这样.任何人都可以帮助我,并解释一下,所有这些参数如何传递给Perl中的sub都有效?这似乎是很有趣的事情一样工作@_和shift,但打字......这是一场噩梦.
谢谢收听.
我在javascript文件中遇到了一个对象预期错误.在这种情况下是否意味着jQuery文件没有正确包含?
导致错误的行是......
$(function () {
Run Code Online (Sandbox Code Playgroud)
浏览器中的错误是......
Message: Object expected
Line: 6
Char: 1
Code: 0
Run Code Online (Sandbox Code Playgroud) 有什么区别
int* a = 0;
Run Code Online (Sandbox Code Playgroud)
和
int* a = 10;
Run Code Online (Sandbox Code Playgroud)
?
请参阅以下示例表.我想计算每一行的1.对于第一行,N_1必须是3,对于第二行,然后是1,然后是0.最后,我想将其合并到具有参数Table,Columns,Value的存储过程中.
CREATE TABLE Have
( Col1 INT NOT NULL
, Col2 INT NOT NULL
, Col3 INT NOT NULL
, N_1 INT NULL
)
INSERT Have (Col1, Col2, Col3)
VALUES
(1, 1, 1)
,(1, 1, 2)
,(1, 2, 2)
,(2, 2, 2)
Run Code Online (Sandbox Code Playgroud) 我有两个使用计时器或使用睡眠的替代方案,我需要在这个方法完成后每隔3秒调用一个方法,我写了一个基本的例子来证明我的意思:
public static void Main()
{
new Thread(new ThreadStart(fooUsingSleep)).Start();
callToMethodAfterInterval(new Action<object, ElapsedEventArgs>(fooUsingTimer), 3000);
}
public static void fooUsingSleep()
{
Console.WriteLine("Doing some consuming time work using sleep");
Thread.Sleep(3000);
fooUsingSleep();
}
public static void fooUsingTimer(object dummy, ElapsedEventArgs dummyElapsed)
{
Console.WriteLine("Doing some consuming time work usning timer");
callToMethodAfterInterval(new Action<object, ElapsedEventArgs>(fooUsingTimer), 3000);
}
public static void callToMethodAfterInterval(Action<object,ElapsedEventArgs> inMethod, int inInterval)
{
System.Timers.Timer myTimer = new System.Timers.Timer();
myTimer.Elapsed += new ElapsedEventHandler(inMethod);
myTimer.Interval = inInterval;
myTimer.AutoReset = false;
myTimer.Start();
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是
1)我可以用更优雅的定时器编写代码吗?意味着从fooUsingTimer中删除对callToMethodAfterInterval方法的调用,使计时器为一行或两行,并从fooUsingTimer的声明中删除虚拟变量?
2)我理解睡眠不忙等待(http://www.codeproject.com/KB/threads/ThreadingDotNet.aspx)所以我没有找到在这里使用计时器选项的理由,因为睡眠更简单,什么是更好的使用,计时器版本或睡眠?
3)我知道Timers.timer是线程安全的,它能帮助我实现我想要实现的行为吗?
谢谢.
我有一个像xml:
<?xml version="1.0" encoding="UTF-8"?>
<entry>
<entry_id></entry_id>
<entry_status></entry_status>
</entry>
Run Code Online (Sandbox Code Playgroud)
我正在写数据,如:
XmlNode xnode = xdoc.SelectSingleNode("entry/entry_status");
xnode.InnerText = "<![CDATA[ " + Convert.ToString(sqlReader["story_status"]) + " ]]>" ;
Run Code Online (Sandbox Code Playgroud)
但它改变了"<"到CDATA的"<".请告诉我如何将上面的xml中的值填充为CData格式.
我知道我们可以像以下一样创建CDATA:
XmlNode itemDescription = doc.CreateElement("description");
XmlCDataSection cdata = doc.CreateCDataSection("<P>hello world</P>");
itemDescription.AppendChild(cdata);
item.AppendChild(itemDescription);
Run Code Online (Sandbox Code Playgroud)
但我的过程是读取xml的节点并更改其值而不是附加在其中.谢谢
当我System.Diagnostics.Process.Start从我的控制台应用程序运行它可以工作,但当我从我在IIS中托管的Web服务运行时相同的代码不起作用.
是否与ASP.Net特权有关?如果是,我如何从我的C#代码配置它.
在保留尽可能多的精度的同时转换两个C#BigIntegers的商的最佳方法是什么?我目前的解决方案是:
Math.Exp(BigInteger.Log(dividend) - BigInteger.Log(divisor));
Run Code Online (Sandbox Code Playgroud)
我猜这不是最理想的.
因为我需要空标记来读取空字符串或null,我决定使用apache commons lang StrTokenizer
但是我仍然无法获得空字符串.我知道我需要setEmptyTokenAsNull在标记之前设置方法.但是我该怎么做呢?请帮忙.
tok = new StrTokenizer(line,",");
tok.setEmptyTokenAsNull(true);
Run Code Online (Sandbox Code Playgroud) >>> class A(object):
... def some(self):
... pass
...
>>> a=A()
>>> a.some
<bound method A.some of <__main__.A object at 0x7f0d6fb9c090>>
Run Code Online (Sandbox Code Playgroud)
IOW,我需要在仅仅移交"a.some"后才能访问"a".