小编Den*_*kiy的帖子

阶乘的数字之和

链接到原始问题

这不是一个功课问题.我只是觉得有人可能知道这个问题的真正解决方案.

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).这有点关系吗?

algorithm dynamic-programming sum-of-digits

49
推荐指数
4
解决办法
3万
查看次数

转换为基本类型的奇怪java行为

这可能是在某个地方被问到但我找不到它.有人可以澄清为什么这个代码编译和打印出来1

long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

java

29
推荐指数
3
解决办法
2162
查看次数

如何知道什么时候有太多的日志消息?

我遇到了一个非常好的库来解析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的每一次调用.并且库的速度提高了两倍,因为它们使用了很多字符串连接来记录日志消息.

所以问题是:我是否应该记录所有内容,即使它不是大型企业应用程序?因为这些库显然不需要任何日志记录,除了错误消息.我的经验表明,记录器是调试的糟糕工具.我为什么要用它?

java logging

10
推荐指数
1
解决办法
3927
查看次数

WebSphere 7.从另一个应用程序注入EJB

我正在尝试使用@EJB注释注入EJB:

  • 当我将EJB注入同一个耳中的另一个EJB时,它可以正常工作.
  • 当我将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)

java websphere ejb-3.0

10
推荐指数
1
解决办法
9414
查看次数

为什么案件陈述允许在另一个案件的内部?

我遇到过这样的代码:

  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 ++中逻辑块的理解可能缺乏.所以我的问题是:这是故意的行为吗?

c++ switch-statement

9
推荐指数
2
解决办法
550
查看次数

Java:我应该在哪里放置匿名监听器逻辑代码?

我们在工作中讨论了在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)

这是可读性和可维护性方面的推荐方法?我更喜欢将代码保留在侦听器中,并且只有当它变得太大时才使其成为内部类.在这里,我假设代码不会在其他任何地方重复.

谢谢.

java swing listener anonymous-class

8
推荐指数
1
解决办法
1364
查看次数

哪个知识库/基于规则的推理引擎可以选择实时的跑道侵入预防系统

我们正在设计一个项目,该项目将听取机场管制员和飞行员之间的对话以防止跑道入侵(例如,一架飞机正在起飞而其他飞机正在越过跑道).我们的教授希望我们使用Jena作为知识库(或其他任何东西,但它应该是某种基于规则的引擎).推理不是耶拿的主要内容,并没有太多的文档和示例.因此,我们需要一个引擎,它可以从飞行员那里得到消息作为输入和输出可能的入侵风险或消息协议中的任何其他错误.编写规则应该很容易,并且应该很容易为引擎提供实时数据.

我想像这样:

  1. 一名飞行员发出一条消息,他登陆某条跑道,系统记得跑道很忙,没有人应该越过它
  2. 如果有人给出了穿越这条跑道的指令,那么引擎应该发出错误的规则
  3. 当飞行员发出一条他离开跑道并进入大门的消息时,系统将清除跑道并让其他飞机使用它.

那么Jena,或prolog或任何其他适合此规则的引擎?我的意思是它是合适的,但我们真的需要使用它吗?我问教授.如果我们可以保持跑道的状态并根据我们收到的消息使用一些简单的检查,他说它不可扩展,我们需要知识库.有人可以给我任何关于该系统使用方法的建议吗?如果你推荐kb,那我们应该使用哪一个?该项目是用java编写的.

谢谢.

java rule-engine jena

7
推荐指数
1
解决办法
5527
查看次数

调整GC用于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 = …

java audio performance garbage-collection

7
推荐指数
1
解决办法
1944
查看次数

构建scala项目时Intellij 12和内部编译错误

我刚下载了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)

scala intellij-idea

7
推荐指数
1
解决办法
7032
查看次数

仅选择第一级元素,而不选择具有相同元素名称的子元素

我如何选择第一级.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)

css jquery

6
推荐指数
1
解决办法
6056
查看次数