当用户在Java中键入时,是否有一种从控制台读取单个字符的简单方法?可能吗?我尝试过这些方法但他们都在等待用户按下回车键:
char tmp = (char) System.in.read();
char tmp = (char) new InputStreamReader(System.in).read ();
char tmp = (char) System.console().reader().read(); // Java 6
Run Code Online (Sandbox Code Playgroud)
我开始认为System.in在按下enter之前不知道用户输入.
我正在为我公司的数据设计一个公共API.我们希望应用程序开发人员注册API密钥,以便我们可以监控使用和过度使用.
由于API是REST,我最初的想法是将此密钥放在自定义标头中.这就是我见过谷歌,亚马逊和雅虎的方式.另一方面,我的老板认为,如果密钥只是URL的一部分,那么API更容易使用,等等" http://api.domain.tld/longapikey1234/resource ".我想有一些事情可以说,但它违反了URL的原则作为你想要的简单地址,而不是你想要它的方式或原因.
您是否认为将密钥放在URL中是合乎逻辑的?或者,如果将简单的javascript前端写入某些数据,您是否还不必手动设置HTTP标头?
在Javascript中我怎么能找到0到100之间的素数?我已经考虑过了,我不知道如何找到它们.我想做x%x,但我发现了明显的问题.这是我到目前为止所做的:但不幸的是,这是有史以来最糟糕的代码.
var prime = function (){
var num;
for (num = 0; num < 101; num++){
if (num % 2 === 0){
break;
}
else if (num % 3 === 0){
break;
}
else if (num % 4=== 0){
break;
}
else if (num % 5 === 0){
break;
}
else if (num % 6 === 0){
break;
}
else if (num % 7 === 0){
break;
}
else if (num % 8 === 0){
break;
}
else if (num …Run Code Online (Sandbox Code Playgroud) 在我的工作中,我得到了很好的结果,使用了近似字符串匹配算法,如Damerau-Levenshtein距离,使我的代码不易受到拼写错误的影响.
现在我需要将字符串与简单的正则表达式匹配TV Schedule for \d\d (Jan|Feb|Mar|...).这意味着字符串TV Schedule for 10 Jan应返回0,同时T Schedule for 10. Jan应返回2.
这可以通过在正则表达式中生成所有字符串(在这种情况下为100x12)并找到最佳匹配来完成,但这并不实用.
您有任何想法如何有效地做到这一点?
我正在尝试使我的水平布局充分利用可用的空间.
在显示活动的信息中,我有一个"事实框",后面跟着一大盒文字.我希望信息框可以向右浮动,类似于下图.
这可能使用android TextView api吗?

是否有可能集overflow: visible上<svg>的元素?
这个关于jsfiddle的简单示例在我可以访问的每个浏览器中(某些版本的Chrome和Firefox)就像它们一样overflow: hidden.
任何人都可以告诉我svg支持是否仍然太不成熟,不能做这么简单的事情,或者我的代码中是否做错了什么?
我的实际用途overflow: visible是图表上的范围轴,其中-0勾选的下半部分被截断.
我正在Haskell中设计一个自平衡树.作为一项练习,因为你的后背很好.
之前在C和Python中,由于其简单的平衡规则,我更喜欢Treaps和Splay Trees.我总是不喜欢R/B树,因为它们似乎比它们的价值更多的工作.
现在,由于Haskell的功能性,事情似乎发生了变化.我可以用10行代码编写一个R/B插入函数.另一方面,Treaps需要包装以存储随机数生成器,并且Splay Trees是自上而下的痛苦.
所以我问你是否有其他类型树木的经验?哪些更好地利用函数式语言的模式匹配和自上而下的性质?
我有一个程序产生并与CPU重,不稳定的进程通信,而不是由我创建.如果我的应用程序崩溃或被杀死SIGKILL,我希望子进程也被杀死,因此用户不必跟踪它们并手动终止它们.
我知道之前已经讨论过这个主题,但是我已经尝试了所描述的所有方法,并且它们似乎都没有在测试中幸存下来.
我知道它一定是可能的,因为终端一直都在做.如果我在终端中运行某些东西并杀死终端,这些东西总会死掉.
我试过atexit,双叉和ptys.atexit不起作用sigkill; 双叉根本不起作用; 和ptys我没有发现任何方式使用Python来工作.
今天,我发现了这一点prctl(PR_SET_PDEATHSIG, SIGKILL),这应该是儿童进程在父母去世时命令自杀的一种方式.我尝试使用它popen,但它接缝完全没有效果:
import ctypes, subprocess
libc = ctypes.CDLL('/lib/libc.so.6')
PR_SET_PDEATHSIG = 1; TERM = 15
implant_bomb = lambda: libc.prctl(PR_SET_PDEATHSIG, TERM)
subprocess.Popen(['gnuchess'], preexec_fn=implant_bomb)
Run Code Online (Sandbox Code Playgroud)
在上面,创建了子节点并且父节点退出.现在你会期望gnuchess得到一个SIGKILL和死,但它没有.我仍然可以在我的流程管理器中使用100%CPU找到它.
任何人都可以告诉我,我的使用是否有问题prctl?或者您是否知道终端如何设法杀死他们的孩子?
我最近发现了关于Kleene代数的操作和简化正则表达式.
我想知道这是否已经构建到像Mathematica这样的计算软件程序中?拥有一个用于进行大型表达式的联合和连接的计算工具并让计算机简化它们将会很棒.
如果您不了解内置此代数的任何程序,您是否知道任何允许使用新代数扩展其引擎的程序?
我试图理解为什么下面的 Java 程序给出了OutOfMemoryError,而没有的相应程序没有.parallel()。
System.out.println(Stream
.iterate(1, i -> i+1)
.parallel()
.flatMap(n -> Stream.iterate(n, i -> i+n))
.mapToInt(Integer::intValue)
.limit(100_000_000)
.sum()
);
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
这个程序的预期输出是什么?
没有.parallel()它似乎只是输出sum(1+2+3+...),这意味着它只是“卡在” flatMap 中的第一个流,这是有道理的。
使用并行我不知道是否有预期的行为,但我的猜测是它以某种方式交错了第一个n左右的流,n并行工作人员的数量在哪里。根据分块/缓冲行为,它也可能略有不同。
是什么导致它耗尽内存?我特别想了解这些流是如何在幕后实现的。
我猜有什么东西阻塞了流,所以它永远不会完成并且能够摆脱生成的值,但我不太清楚事物的评估顺序以及缓冲发生的位置。
编辑:如果相关,我使用的是 Java 11。
编辑 2:显然即使对于简单的程序也会发生同样的事情IntStream.iterate(1,i->i+1).limit(1000_000_000).parallel().sum(),所以它可能与limit而不是的懒惰有关flatMap。
java ×2
regex ×2
algebra ×1
algorithm ×1
alignment ×1
android ×1
api-key ×1
console ×1
css ×1
fuzzy-search ×1
haskell ×1
http ×1
input ×1
java-stream ×1
javascript ×1
math ×1
overflow ×1
primes ×1
python ×1
rest ×1
sigkill ×1
string ×1
subprocess ×1
svg ×1
textbox ×1
textview ×1
tre-library ×1
tree ×1
url ×1
webkit ×1