我开始读到Trie.我在这里也得到了朋友们的推荐:关于Trie的教程
我不清楚以下内容:
似乎继续使用Trie,假设所有将成为搜索空间并用于构建Trie的输入字符串在不同的字边界中分开.
例如,我见过的所有示例教程都使用输入,例如:
S={ball, bid, byte, car, cat, mac, map etc...}
Run Code Online (Sandbox Code Playgroud)
然后我们构建trie S并进行搜索(非常快)
我的问题是:我们最终是如何S开始的?
我的意思是在开始阅读我想象的尝试之前,这S将是一个任意长的文本,例如Shakespeare一段.
然后使用Trie我们可以很快找到东西.
但似乎事实并非如此.
这里假设输入通道(Shakespeare例如)是预先处理的,首先提取所有要获得的单词S吗?
因此,如果想要搜索模式(与Google时相同,并且在搜索查询中看到所有页面也有空格),那么Trie是不合适的?
我们何时才能知道Trie是否是我们实际可以使用的数据结构?
假设如下:
HEAD/master
|
A<--B<--C<--D<--E<--F<--G<--J
^
official
Run Code Online (Sandbox Code Playgroud)
哪里official有分店。
我想挑选 2 个提交到official分支,例如E,J
这两个提交都是影响相同 3 个文件的修复。
当我这样做时git cherry-pick E一切顺利,但当我这样做时,git cherry-pick J我遇到了一些冲突。
查看差异,我意识到我还需要挑选提交 F,它在这 3 个文件中的两个文件中进行了更改,这些更改基本上是方法定义更改,并且J是在此基础上完成的。
因此,只需执行git cherry-pick F && git cherry-pick J
问题即可轻松解决:
如果我不知道在这些文件中所做的更改并且提交 F 是更改许多文件的大提交:是否有另一种方法可以确定我们尝试选择的提交取决于哪个提交而无需手动执行 git 日志在文件上并通过提交提交?
我有以下字符串:
A:B:1111;domain:80;a;b
该A是可选的,所以B:1111;domain:80;a;b也是有效的输入.
这:80也是可选的,B:1111;domain;a;b或者:1111;domain;a;b也是有效的输入
我想要的最终结果String[]是:
s[0] = "A";
s[1] = "B";
s[2] = "1111";
s[3] = "domain:80"
s[4] = "a"
s[5] = "b"
Run Code Online (Sandbox Code Playgroud)
我这样做如下:
List<String> tokens = new ArrayList<String>();
String[] values = s.split(";");
String[] actions = values[0].split(":");
for(String a:actions){
tokens.add(a);
}
//Start from 1 to skip A:B:1111
for(int i = 1; i < values.length; i++){
tokens.add(values[i]);
}
String[] finalResult = tokens.toArray();
Run Code Online (Sandbox Code Playgroud)
我想知道有更好的方法吗?我怎么能更有效地做到这一点?
关于Tomcat,我有以下问题acceptCount.
它说:
当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度.队列已满时收到的任何请求都将被拒绝.默认值为10.
我不确定这是如何工作的.我的意思是我知道有一个单独的TCP队列可以确定连接的数量,所以如果我放入acceptCount应用程序级别,例如30000,它有什么区别吗?
我的意思是这个配置似乎没用.
我对吗?
如何finally在嵌套中工作try/catch?
例如:
try{
//code
}
catch(SomeException e){
//code
try{
//code
}
catch(OtherException e){
//code
}
}
catch(SomeOtherException e){
//code
}
Run Code Online (Sandbox Code Playgroud)
放置的最佳位置在哪里finally?或者我应该把它放在嵌套和外部try?
我用a ProcessBuilder来运行进程.我通过提交在线程池(Executors.newCachedThreadPool())中处理它们的相应runnable来处理输入/输出流.
我得到了结果但是偶尔我什么也得不到.
例如,如果我这样做:cmd \C dir对于流程构建器,我得到了dir返回的结果,但有时我没有得到任何东西(尽管结果似乎从处理它的runnable中恢复process.getInputStream).
我该怎么调试呢?它间歇地出现了.使用相同的代码,我没有遇到任何问题new Thread(runnable).start().它在我切换到线程池后开始发生.
更新:
我想我找到了一些东西:
我在以下方面做了以下事情Runnable:
try {
while ( (line = br.readLine()) != null) {
pw.println(line);
sb.append(line);
}
System.out.println("Finished reading "+sb.length());
} catch (IOException e) {
e.printStackTrace();
}
finally{
pw.flush();
try{
isr.close();
}catch(Exception e){}
}
Run Code Online (Sandbox Code Playgroud)
在不起作用的情况下,它打印Finished reading 521.但我试图通过pw而不是得到结果sb.
pw是PrintWriter pw = PrintWriter(outputStream);`我传递给runnable
更新2:
似乎:在处理输入流的runnable完成之前status = process.waitFor();返回.怎么会发生这种情况?
我在javadoc中读到:.那么这是否意味着我可以在消耗I/O流 …
java multithreading outputstream executorservice processbuilder
我读关于Log4Perl从perl.com
在它说的教程: use Log::Log4perl qw(:easy);
什么是:前面easy?它是某种特殊的语法吗?
有没有办法为Android应用程序定义类似"会话"的东西?
我有一个启动多个活动的应用程序和应用程序从活动到活动等的用户
.当然可以切换到另一个应用程序,接听电话,停止使用该应用程序,因为他很忙,所以应用程序在后台等.
是否有一种简单而有意义的方法可以在所有这些不同情况下定义类似单个会话的内容?这样我们可以判断新会话何时开始并可能为每个会话存储一些数据?
如何在Android Studio编辑器中更改所选文本的颜色?
我想只更改Android Studio中所选行的颜色突出显示,而不是整体背景.
我怎样才能做到这一点?
似乎有一个包含字符的字符串{或}在正则表达式处理期间被拒绝.我可以理解这些是保留字符,我需要逃避它们,所以如果我这样做:
string.replaceAll("\\" + pattern);
Run Code Online (Sandbox Code Playgroud)
这是有效的,其中pattern任何字符串都以{.
问题:有没有办法避免已经包含此类元组的字符串出现此类问题,以便自动处理?在我看来它应该与在字符串文字中添加双引号相比,接受字符串作为已经具有双引号的输入
java ×5
regex ×3
android ×2
optimization ×2
string ×2
algorithm ×1
coding-style ×1
editor ×1
exception ×1
git ×1
git-branch ×1
git-diff ×1
git-log ×1
networking ×1
outputstream ×1
perl ×1
tcp ×1
tomcat ×1
trie ×1
try-catch ×1