有没有人知道如何使用Java来创建基于n级深度字母表(az)的子目录?
/a
/a
/a
/b
/c
..
/b
/a
/b
..
..
/a
/b
/c
..
/b
/a
/a
/b
..
/b
/a
/b
..
..
/a
/b
..
..
/a
/a
/b
..
/b
/a
/b
..
..
/a
/b
..
Run Code Online (Sandbox Code Playgroud) 如何在sbt,Eclipse和github中初始化一个新的Scala项目,以便它们一起播放...
如果我想在Scala中为类添加方法,我需要执行以下操作:
class RichFoo(f: Foo) {
def newMethod = f.bar()
}
object RichFoo {
implicit def foo2Rich(f: Foo) = new RichFoo(f)
}
Run Code Online (Sandbox Code Playgroud)
然后f.newMethod将导致RichFoo实例的创建并调用其方法.
我试图理解为什么它没有像Ruby那样定义:
override class Foo {
def newMethod = bar
}
Run Code Online (Sandbox Code Playgroud)
编译器可以查看此定义,并使用静态方法newMethod创建一个FooOverride类,该方法获取类型为Foo的参数并调用其bar方法.这就是Scala实现特征的方式.我仍然需要导入包含Foo覆盖的包来使用它.
它似乎涉及较少的输入,不需要我创建名称,并具有更好的性能(不调用方法和创建对象).隐式转换方法所做的任何事情都可以在附加方法中完成.
我确定我错过了一些东西,并想深入了解一下.
在我的Scala应用程序中,我有一个函数调用一个返回Future [T]类型结果的函数.我需要在递归函数调用中传递映射结果.我希望这是尾递归,但地图(或flatMap)打破了这样做的能力.我收到错误"递归调用不在尾部位置."
以下是此方案的一个简单示例.如何修改它以便调用尾部递归(不用Await.result()来破坏Futures的好处)?
import scala.annotation.tailrec
import scala.concurrent.{Await, Future}
import scala.concurrent.duration._
implicit val ec = scala.concurrent.ExecutionContext.global
object FactorialCalc {
def factorial(n: Int): Future[Int] = {
@tailrec
def factorialAcc(acc: Int, n: Int): Future[Int] = {
if (n <= 1) {
Future.successful(acc)
} else {
val fNum = getFutureNumber(n)
fNum.flatMap(num => factorialAcc(num * acc, num - 1))
}
}
factorialAcc(1, n)
}
protected def getFutureNumber(n: Int) : Future[Int] = Future.successful(n)
}
Await.result(FactorialCalc.factorial(4), 5.seconds)
Run Code Online (Sandbox Code Playgroud) 似乎nio .list返回一个流,当流消耗时,每个文件迭代一个文件描述符,直到.close在整个流上调用.这意味着包含超过1,000个文件的数据目录可以轻松刷新常用ulimit值.此文件描述符累积的整体效果在处理嵌套遍历时进一步加剧.
什么可能是迭代大型目录文件的替代方法,而不是生成对OS文件列表命令的调用?如果迭代大目录的文件将是很酷的,只有当前迭代的文件才能维护文件描述符,正如适当的流语义所暗示的那样.
编辑:
list返回一个java流,java.nio.file.Path其中api调用将用于在流处理后关闭流上的每个项目,而不是仅在整个流被关闭时,以进行更精简的迭代?在Scala中,这可以很容易地利用好文件API的包装,从领先拨弄这里.
我有两张表,联系人和邮件程序
需要将Google电子表格上的过滤/过滤视图后面的联系人:B列中的可见单元格复制到Mailer的A列.
由于行的可见性还没有开放功能,我该怎么做?我不想编写许多FILTER()代码,因为过滤器可以不断更改,它们将由用户定义...结果将始终在B列中.
请让我知道解决方案/解决方法.
最坏情况场景:在打开行可见性功能之前,我们必须手动将单元格从一个工作表复制到另一个工作表,但我希望避免这样做:)
谢谢
是否有任何的标准库的方法,可以筛选出的路径,其中包括特殊遍历序列,如../和向上目录遍历所有其他回旋形式,从遍历维护文件路径API输入向上给定的"根"的路径?
我有一个包含根文件夹值成员的类,以及一个接受递归删除路径的成员函数.我的目标是使这个API安全,过滤掉提供给它的任何输入路径 - 这将转换为根文件夹值以上的路径.目的是这个类将被广泛用于删除根路径下的文件,但它永远不会触及根路径上的任何东西.
这类似于更广泛的路径遍历攻击.
方法太多的限制(即可能导致假阴性)可能是罚款,我的具体使用情况,如果此简化了的事情,而且,我目前的需求是文件系统路径不是网络的人(虽然,对于相当于一个Web模块在理论上可以在这里工作).
在我的应用程序中,我想以特定的方式记录来自我自己的代码的一些消息,与记录的所有其他消息相比.但是我不确定如何避免它们也自动登录到logack根记录器.
使用下面的配置,我想使用如下代码(scala),以便我只能将某些消息记录到该记录器.
val logger: Logger = LoggerFactory.getLogger("data-logger")
Run Code Online (Sandbox Code Playgroud)
但是在下面的配置中,这些消息会被记录两次,即根记录器也会记录它们.我怎么能避免这种情况?我是否必须人为地使用不同的日志记录级别来完成具有logback的事情?
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/activity.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>activity.%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>10</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!-- use discarding threshold of zero to avoid ignoring INFO level messages see docs -->
<discardingThreshold>0</discardingThreshold>
<appender-ref ref="FILE" />
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="ASYNC" />
</root>
<logger name="data-logger" level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="ASYNC" />
</logger>
</configuration>
Run Code Online (Sandbox Code Playgroud) System.out.println的输出在gradle测试中的位置是什么?
我的样本测试定义如下:
import org.junit.Test;
import static org.junit.Assert.*;
public class LibraryTest {
@Test public void NaiveScenarioTest() {
System.out.println("java sample scenario started");
SampleScenario s = new SampleScenario("sample");
}
}
Run Code Online (Sandbox Code Playgroud)
运行gradle test,我得到所有成功指标,但println的stdout输出不会显示在终端或gradle的html报告中.而这是只在需要进行快速调试的情况下,我还是会更开心拥有标准输出重定向显眼的地方,最好是显示终端为我gradle test.
什么是最简单或最好的建议?
随着scala使用sbt的构建和git版本控制,这将是组织你的团队的代码时,它会跨出是单个项目的好方法?在某些时候,您开始考虑将代码分离到单独的库或项目中,并根据需要在它们之间进行导入.你会如何为此组织事情?或者你会避免诱惑,只管理同一个sbt和git单一"项目"下的所有包裹?
兴趣点是:(随意改变)
CI server.SbtNativePackager包装您的产品,而不会产生太多的痛苦.此外,您是否会使用某种"本地sbt/maven团队存储库"以及可能需要做些什么才能实现这一目标?希望这不是必要的.
谢谢!