这不是一个功课问题.我只是觉得有人可能知道这个问题的真正解决方案.
2004年我参加了编程竞赛,出现了这个问题:
给定n,找到n!的数字之和.n可以是0到10000.时间限制:1秒.我认为每个测试集最多有100个数字.
我的解决方案非常快,但速度不够快,所以我让它运行一段时间.它构建了一组预先计算的值,我可以在我的代码中使用它.这是一个黑客攻击,但它确实有效.
但有一个人用大约10行代码解决了这个问题,它会立即给出答案.我相信它是某种动态编程,或者来自数论的东西.当时我们16岁,所以它不应该是"火箭科学".
有谁知道他可以使用什么样的算法?
编辑:如果我没有明确提出问题,我很抱歉.正如mquander所说,应该有一个聪明的解决方案,没有bugnum,只有简单的Pascal代码,几个循环,O(n 2)或类似的东西.1秒不再是约束.
我在这里发现,如果n> 5,则9除以阶乘的数字之和.我们还可以找到数字末尾有多少个零.我们可以用吗?
好的,来自俄罗斯的编程竞赛的另一个问题.给定1 <= N <= 2 000 000 000,输出N!mod(N + 1).这有点关系吗?
这可能是在某个地方被问到但我找不到它.有人可以澄清为什么这个代码编译和打印出来1?
long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud) 我遇到了一个非常好的库来解析CUE文件.但是当我开始阅读它的源代码时,我意识到它几乎是不可读的:
public void setParent(final CueSheet parent) {
FileData.logger.entering(FileData.class.getCanonicalName(), "setParent(CueSheet)", parent);
this.parent = parent;
FileData.logger.exiting(FileData.class.getCanonicalName(), "setParent(CueSheet)");
}
Run Code Online (Sandbox Code Playgroud)
每个方法都有logger.entering()和logger.exiting()消息.那不是太多了吗?
还有另一个用于解析音频标签的java库.对于它读取的每个文件,它也有15条日志消息.这很烦人,所以我注释掉了对logger的每一次调用.并且库的速度提高了两倍,因为它们使用了很多字符串连接来记录日志消息.
所以问题是:我是否应该记录所有内容,即使它不是大型企业应用程序?因为这些库显然不需要任何日志记录,除了错误消息.我的经验表明,记录器是调试的糟糕工具.我为什么要用它?
我正在尝试使用@EJB注释注入EJB:
EJB在调用方法"sayHello"期间抛出了一个意外的(未声明的)异常.异常数据:javax.ejb.EJBException:注入失败; 嵌套异常是:com.ibm.ejs.container.EJBNotFoundException:应用程序myapp1中不存在带有com.mycompany.myapp.ejb.test2接口的EJB
我正在使用WebSphere 7和EJB 3.0.当我自己进行jndi查找时,它运行正常.如何让容器知道从哪里注入我的远程bean?
myapp1.ear包含以下内容:myapp1.jar(EJB所在的位置)
myapp1 EJB:
package com.mycompany.myapp1.ejb.test1;
@Remote
public interface HelloEjb1 {
public String sayHello();
}
Run Code Online (Sandbox Code Playgroud)
EJB Impl:
package com.mycompany.myapp.ejb.test1;
@Stateless
public class HelloEjbImpl1 implements HelloEjb1 {
@EJB
HelloEjb2 helloEjb2;
@Override
public String sayHello() {
return HelloEjb2.sayHello();
}
}
Run Code Online (Sandbox Code Playgroud)
myapp2.ear包含以下内容:myapp2.jar(EJB所在的位置)
myapp2 EJB:
package com.mycompany.myapp2.ejb.test2;
@Remote
public interface HelloEjb2 {
public String sayHello();
}
Run Code Online (Sandbox Code Playgroud)
EJB Impl:
package com.mycompany.myapp2.ejb.test2;
@Stateless
public class HelloEjbImpl2 implements HelloEjb2 {
@Override
public String sayHello() {
return "Hello";
}
}
Run Code Online (Sandbox Code Playgroud) 我遇到过这样的代码:
switch(i) {
case 2: {
std::cout << "2";
break;
case 3:
std::cout << "3";
break;
}
case 4: {
std::cout << "4";
break;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,case 2打开一个带花括号的块,只有在后才会关闭case 3.起初,这似乎是一个错字导致编译器错误,或者更糟糕的是,忽略case 3.但它在c ++中运行得很好,如果我是3则输出3.我来自java背景,所以我对c ++中逻辑块的理解可能缺乏.所以我的问题是:这是故意的行为吗?
我们在工作中讨论了在java中使用监听器的最佳实践:监听器逻辑是应该保留在匿名类中,还是应该在单独的方法中,例如:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// code here
}
});
Run Code Online (Sandbox Code Playgroud)
要么
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
buttonPressed();
}
});
private void buttonPressed() {
// code here
}
Run Code Online (Sandbox Code Playgroud)
这是可读性和可维护性方面的推荐方法?我更喜欢将代码保留在侦听器中,并且只有当它变得太大时才使其成为内部类.在这里,我假设代码不会在其他任何地方重复.
谢谢.
我们正在设计一个项目,该项目将听取机场管制员和飞行员之间的对话以防止跑道入侵(例如,一架飞机正在起飞而其他飞机正在越过跑道).我们的教授希望我们使用Jena作为知识库(或其他任何东西,但它应该是某种基于规则的引擎).推理不是耶拿的主要内容,并没有太多的文档和示例.因此,我们需要一个引擎,它可以从飞行员那里得到消息作为输入和输出可能的入侵风险或消息协议中的任何其他错误.编写规则应该很容易,并且应该很容易为引擎提供实时数据.
我想像这样:
那么Jena,或prolog或任何其他适合此规则的引擎?我的意思是它是合适的,但我们真的需要使用它吗?我问教授.如果我们可以保持跑道的状态并根据我们收到的消息使用一些简单的检查,他说它不可扩展,我们需要知识库.有人可以给我任何关于该系统使用方法的建议吗?如果你推荐kb,那我们应该使用哪一个?该项目是用java编写的.
谢谢.
我注意到在java中播放音频时,gc中的MarkSweepCompact阶段太长并导致短暂的静音,这是不可接受的.所以我需要使用低暂停gc.我尝试过Parallel和CMS,它们似乎工作得更好,因为我认为暂停时间更短,并且它们不会像默认那样经常完全收集.
到目前为止,我已经使用ParallelGC的以下选项测试了我的程序:
-XX:+UseParallelGC
-XX:MaxGCPauseMillis=70
Run Code Online (Sandbox Code Playgroud)
对于ConcurrentMarkSweep:
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
Run Code Online (Sandbox Code Playgroud)
我也尝试过G1GC,但它仍然在java 6中实验性.两种模式的选项:
-Xms15m
-Xmx40m
-XX:+UnlockExperimentalVMOptions
-XX:+CMSClassUnloadingEnabled
-XX:+TieredCompilation
-XX:+AggressiveOpts
-XX:+UseAdaptiveSizePolicy
-Dsun.java2d.noddraw=false
-Dswing.aatext=true
-XX:MaxPermSize=25m
-XX:MaxHeapFreeRatio=10
-XX:MinHeapFreeRatio=10
Run Code Online (Sandbox Code Playgroud)
哪种GC在这种情况下更好?是否可以针对最佳CPU性能和最小内存使用量对这些设置进行优化?
编辑为了识别暂停,我记录了将音频数据写入输出线的时间,通常在92到120毫秒之间(我写的是16384字节= ~92毫秒),广告在运行全GC时,它是200+毫秒:
65.424: [Full GC (System) [PSYoungGen: 872K->0K(2432K)] [PSOldGen: 12475K->12905K(16960K)] 13348K->12905K(19392K) [PSPermGen: 15051K->15051K(22272K)], 0.2145081 secs] [Times: user=0.20 sys=0.00, real=0.21 secs]
Was writing 16384 bytes, time to write 263 ms
Run Code Online (Sandbox Code Playgroud)
EDIT2我的应用程序的分配模式如下:它在启动时加载一堆对象,然后它开始播放,我猜之后的大多数对象都由gui分配,因为凝视/暂停音频不会改变GC图形许多.这是visualgc与并行gc一起显示的内容:

图表在启动时开始,我开始播放.标记是
1)声音延迟和完整的gc,我认为它增加了旧尺寸:
101.646: [Full GC [PSYoungGen: 64K->0K(6848K)] [PSOldGen: 15792K->12773K(19328K)] 15856K->12773K(26176K) [PSPermGen: 15042K->14898K(23808K)], 0.2411479 secs] [Times: user=0.19 sys=0.00, real=0.24 secs]
Run Code Online (Sandbox Code Playgroud)
2)我打开应用程序窗口并暂停播放.什么都没有改变,稍后它增加了伊甸园的大小.
3)我打开窗口再次开始播放.
所以我需要增加分配的旧Gen大小?我怎么做?我正在使用-XX:NewRatio = 10和-XX:NewSize = …
我刚下载了Intellij 12.01(build#IC-123.94),一旦我尝试构建Scala项目,我得到以下stacktrace:
Internal error: (java.lang.ClassNotFoundException) org.jetbrains.jps.incremental.BinaryContent
java.lang.ClassNotFoundException: org.jetbrains.jps.incremental.BinaryContent
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.jetbrains.jps.incremental.scala.LazyCompiledClass.<init>(ScalaBuilder.scala:239)
at org.jetbrains.jps.incremental.scala.IdeClient.generated(ScalaBuilder.scala:230)
at org.jetbrains.jps.incremental.scala.remote.ClientEventProcessor.process(ClientEventProcessor.scala:17)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer$.liftedTree1$1(RemoteServer.scala:76)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer$.org$jetbrains$jps$incremental$scala$remote$RemoteServer$$handle(RemoteServer.scala:74)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1$$anonfun$apply$1$$anonfun$apply$3.apply(RemoteServer.scala:44)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1$$anonfun$apply$1$$anonfun$apply$3.apply(RemoteServer.scala:43)
at org.jetbrains.jps.incremental.scala.package$.using(package.scala:15)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1$$anonfun$apply$1.apply(RemoteServer.scala:43)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1$$anonfun$apply$1.apply(RemoteServer.scala:40)
at org.jetbrains.jps.incremental.scala.package$.using(package.scala:15)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1.apply(RemoteServer.scala:40)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer$$anonfun$send$1.apply(RemoteServer.scala:39)
at org.jetbrains.jps.incremental.scala.package$.using(package.scala:15)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer.send(RemoteServer.scala:39)
at org.jetbrains.jps.incremental.scala.remote.RemoteServer.compile(RemoteServer.scala:24)
at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5$$anonfun$apply$3$$anonfun$apply$4.apply(ScalaBuilder.scala:110)
at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5$$anonfun$apply$3$$anonfun$apply$4.apply(ScalaBuilder.scala:100)
at scala.util.Either$RightProjection.map(Either.scala:536)
at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5$$anonfun$apply$3.apply(ScalaBuilder.scala:100)
at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5$$anonfun$apply$3.apply(ScalaBuilder.scala:99)
at scala.util.Either$RightProjection.flatMap(Either.scala:523)
at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5.apply(ScalaBuilder.scala:99)
at org.jetbrains.jps.incremental.scala.ScalaBuilder$$anonfun$5.apply(ScalaBuilder.scala:98)
at scala.util.Either$RightProjection.flatMap(Either.scala:523)
at org.jetbrains.jps.incremental.scala.ScalaBuilder.doBuild(ScalaBuilder.scala:98)
at org.jetbrains.jps.incremental.scala.ScalaBuilder.build(ScalaBuilder.scala:67)
at org.jetbrains.jps.incremental.scala.ScalaBuilderService$ScalaBuilderDecorator.build(ScalaBuilderService.java:42)
at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:963)
at …Run Code Online (Sandbox Code Playgroud) 我如何只选择第一级.block而不选择任何一个孩子?
$('.block:not("Children of this here")') < -
<div class="block"> <!-- this -->
<div class="block"> <!-- not this -->
<div class="block"> <!-- not this -->
</div>
</div>
</div>
<div class="block"> <!-- and this -->
<div class="block"> <!-- not this -->
<div class="block"> <!-- not this -->
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)