基本上,我有一个URL,可以在发布新消息时从聊天室传输xml更新.我想将该URL转换为InputStream并继续读取它,只要保持连接并且只要我没有发送Thread.interrupt().我遇到的问题是,当从流中读取内容时,BufferedReader.ready()似乎不会成为现实.
我正在使用以下代码:
BufferedReader buf = new BufferedReader(new InputStreamReader(ins));
String str = "";
while(Thread.interrupted() != true)
{
connected = true;
debug("Listening...");
if(buf.ready())
{
debug("Something to be read.");
if ((str = buf.readLine()) != null) {
// str is one line of text; readLine() strips the newline character(s)
urlContents += String.format("%s%n", str);
urlContents = filter(urlContents);
}
}
// Give the system a chance to buffer or interrupt.
try{Thread.sleep(1000);} catch(Exception ee) {debug("Caught thread exception.");}
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码并将某些内容发布到聊天室时,buf.ready()永远不会成为现实,从而导致行不会被读取.但是,如果我跳过"buf.ready()"部分并直接读取行,它会阻止进一步操作直到读取行.
我如何a)让buf.ready()返回true,或者b)以防止阻塞的方式执行此操作?
詹姆斯,先谢谢你
目前,在我的自动构建中,我使用devenv.exe来构建我的解决方案文件:
devenv /build myproject1.sln
Run Code Online (Sandbox Code Playgroud)
现在,我想创建我的应用程序的两个版本,正常版本和轻量版本.这两个版本的源代码是相同的,只是在轻型版本中,某些功能被禁用,为此我使用#define lite预处理器指令(在csproject文件中,这些常量在DefineConstantsProperty Group 下定义).
在MsBuild中 - 或者只是正常的devenv构建 - 是否可以指定我想要的符号是否应该存在于构建中?我问这个的原因是因为我想sln用lite预处理器指令(对于lite版本)第一次构建我的文件,第二次是没有lite预处理器指令(对于完整版本).
我刚开始使用codeigniter,我发现它很容易使用.我最近遇到了ExpressionEngine,看起来像codeigniter的一个很好的附加组件.我的问题是,在我安装了ExpressionEngine之后,它将改变我使用codeigniter的方式,其中代码进入控制器并在视图文件夹中查看.
我试图用逗号分隔符对字符串进行拆分
my $string='ab,12,20100401,xyz(A,B)';
my @array=split(',',$string);
Run Code Online (Sandbox Code Playgroud)
如果我如上所述进行拆分,则数组将具有值
ab
12
20100401
xyz(A,
B)
Run Code Online (Sandbox Code Playgroud)
我需要如下的价值观.
ab
12
20100401
xyz(A,B)
Run Code Online (Sandbox Code Playgroud)
(不应该将xyz(A,B)分成2个值)我该怎么做?
在OOP设计模式中,存储库模式和服务层之间有什么区别?
我正在开发一个ASP.NET MVC 3应用程序,我正在尝试理解这些设计模式,但我的大脑却没有得到它......
以下是我必须运行的一系列查询的基准.如您所见,UPDATE明显慢于其他查询.我该怎么做才能加快它们的速度?
0.0002 LOCK TABLE category WRITE;
0.0004
SELECT
@myLeft := left_id
FROM
category
WHERE
`amazon_browse_node_id` = 2675;
0.0184 UPDATE category SET right_id = right_id + 2 WHERE right_id > @myLeft;
0.0161 UPDATE category SET left_id = left_id + 2 WHERE left_id > @myLeft;
0.0007 INSERT INTO category(`name`, `amazon_browse_node_id`, `category_seo_friendly_url`, `left_id`, `right_id`) VALUES('Training', 2697, 'training-2697/', @myLeft + 1, @myLeft + 2);
0.0004 UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)
这个问题与以下问题(以及我尝试解决方案)有关,我也在这里发布了SO:
更新:
CREATE TABLE IF NOT EXISTS `category`
(
`category_id` INT(11) NOT NULL AUTO_INCREMENT, …Run Code Online (Sandbox Code Playgroud) 嘿伙计们,我正在尝试使用函数式编程(特别是使用F#),并且在构建尾递归函数时我遇到了问题.我很好地将基本递归(函数基本上每次调用一次调用自身)转换为尾递归,但我现在有一个稍微复杂的情况.
在我的例子中,该函数必须接受一个列表作为参数.调用该函数时,我必须从列表中删除第一个元素,然后使用列表的其余部分重复.然后我需要将我以某种方式删除的第一个元素应用于递归的结果.接下来,我删除第二个元素并执行相同的操作(注意:当我说"删除seond元素"时,即来自原始列表,因此在递归时传递的列表也包括第一个元素).我对列表的第三,第四等元素也这样做.
有没有办法将上述情况转换为尾递归函数?也许嵌套的尾递归函数??? 谢谢你的任何答案.
好的,这是我的基本代码.这个特定的一个是置换生成器(我不太关心置换部分,但是 - 这是我想关注的递归):
let permutationsOther str =
match str with
| value :: [] ->
[[value]]
| _ ->
let list = (List.map (fun a -> // This applies the remove part for every element a
let lst = (List.filter (fun b -> b <> a) str) // This part removes element a from the list
let permutedLst = permutations lst // recursive call
consToAll a permutedLst // constToAll this is my own function which performs …Run Code Online (Sandbox Code Playgroud) 使用Leaks时如何查看NSLog消息?它没有显示控制台输出?
c# ×2
.net ×1
asp.net-mvc ×1
cocoa-touch ×1
codeigniter ×1
database ×1
datetime ×1
f# ×1
inputstream ×1
iphone ×1
java ×1
memory-leaks ×1
msbuild ×1
mysql ×1
nonblocking ×1
objective-c ×1
oop ×1
perl ×1
postgresql ×1
split ×1
xcode ×1