我正在寻找一个命令,它将接受多行文本作为输入,每行包含一个整数,并输出这些整数的总和.
作为一个背景,我有一个日志文件,其中包括时序测量,所以通过grepping相关的行,并稍微sed重新格式化,我可以列出该文件中的所有时间.然而,我想计算出总数,而且我的思绪已经变得空白,因为任何命令我都可以将这个中间输出传递到最终总和.我过去总是使用expr它,但除非它运行在sed我认为它不会应付这个(即使那样它也会很棘手).
我错过了什么?鉴于可能有多种方法可以实现这一点,我将很乐意阅读(和expr)任何有效的方法,即使其他人已经发布了一个不同的解决方案来完成这项工作.
相关问题:在Unix上计算一列输出总和的最短命令?(来自@Andrew)
更新:哇,正如所料,这里有一些不错的答案.看起来我一定要进行sed更深入的检查expr!
好的,因此@Ignore注释适用于标记不应运行测试用例.
但是,有时我想忽略基于运行时信息的测试.一个例子可能是我需要在具有一定数量内核的机器上运行并发测试.如果这个测试是在单处理器机器上运行的,我认为只是通过测试是不正确的(因为它还没有运行),并且当然不适合测试失败并打破构建.
所以我希望能够在运行时忽略测试,因为这似乎是正确的结果(因为测试框架将允许构建通过但记录测试未运行).我很确定注释不会给我这种灵活性,并且怀疑我需要手动为相关类创建测试套件.但是,文档没有提及任何关于这一点并且通过API查看它也不清楚如何以编程方式完成(即,我如何以编程方式创建Test与@Ignore注释创建的实例相似或相似的实例?).
如果有人在过去做过类似的事情,或者对如何做到这一点有一个明确的想法,我会很高兴听到它.
我现在在我的代码中使用ReentrantReadWriteLock来同步对树状结构的访问.这个结构很大,并且很多线程一次读取,偶尔会对它的一小部分进行修改 - 所以它似乎很适合读写习惯用法.我理解,对于这个特定的类,不能将读锁提升到写锁,因此根据Javadoc,必须在获得写锁之前释放读锁.我以前在非重入上下文中成功使用了这种模式.
然而,我发现我无法永久地阻止写入锁定.由于读锁是可重入的,我实际上正在使用它,简单的代码
lock.getReadLock().unlock();
lock.getWriteLock().lock()Run Code Online (Sandbox Code Playgroud)
如果我已经重新获得了重新锁定,则可以阻止.每次解锁调用只会减少保持计数,并且仅在保持计数达到零时才实际释放锁定.
编辑澄清这一点,因为我认为我最初没有解释得太清楚 - 我知道这个类中没有内置的锁升级,我必须简单地释放读锁并获得写锁.我的问题是,无论其他线程正在做什么,如果它重新获取它,调用getReadLock().unlock()可能实际上不会释放此线程对锁定的保持,在这种情况下,调用getWriteLock().lock()将永远阻塞,因为此线程仍然保持读取锁定,从而阻止自己.
例如,即使在没有其他线程访问锁的情况下运行单线程时,此代码段也永远不会到达println语句:
final ReadWriteLock lock = new ReentrantReadWriteLock();
lock.getReadLock().lock();
// In real code we would go call other methods that end up calling back and
// thus locking again
lock.getReadLock().lock();
// Now we do some stuff and realise we need to write so try to escalate the
// lock as per the Javadocs and the above description
lock.getReadLock().unlock(); // Does not actually …Run Code Online (Sandbox Code Playgroud) 我有几个IP地址,如:
115.42.150.37115.42.150.38115.42.150.50如果我想搜索所有3个ip地址,我应该写什么类型的正则表达式?例如,如果我这样做115.42.150.*(我将能够搜索所有3个IP地址)
我现在能做的就是:/[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}/但似乎效果不好.
谢谢.
我正在寻找改进一个我相信当它的输入在多个工作线程之间共享时不是线程安全的包.根据TDD原则,我应该首先编写一些失败的测试,这些测试在评估问题时肯定会有用.
我意识到这并不是一件简单的事情,而且天真的多线程测试将是不确定的,因为操作系统将确定调度以及各种操作交错的确切顺序.我过去看过并使用过MultithreadedTC,这很有用.但是,在这种情况下,我事先知道现有实现的确切位置,从而能够完成一系列覆盖它的测试.
但是,如果你还没有确切知道问题是什么,那么是否有一种很好的方法来编写一个很有可能抛出任何潜在问题的测试?是否有其他人发现有用的图书馆?我是否正确地认为,从纯粹的角度来看,多线程测试用例应该与通常的单线程测试一样是相同的调用和断言,只适用于多个工作线程?
我们欢迎任何有关工具/最佳实践/理念的提议.
我使用jQuery向我的服务器发出一个AJAX POST请求,该请求可以返回状态为302的HTTP响应.然后,JavaScript只是向此URL发送GET请求,而我想在此响应中将用户重定向到URL.这可能吗?
我正在设计一个类层次结构,它由一个基类和几个特征组成.基类提供了几种方法的默认实现,并且traits选择性地覆盖某些方法abstract override,以便充当可堆叠的traits/mixins.
从设计的角度来看,这很有效,并映射到域,以便我可以从这里添加过滤函数(一个特征),带有来自此处的谓词(另一个特征)等.
但是,现在我想要一些我的特征来采用隐式参数.我很高兴从设计的角度来看这仍然有意义,并且在实践中不会让人感到困惑.但是,我不能说服编译器运行它.
问题的核心似乎是我无法为特征提供构造函数参数,因此可以将它们标记为隐式.在方法实现中引用隐式参数无法使用预期的"无法找到隐式值"消息进行编译; 我试图通过构建阶段(在实践中,它总是在范围内)"隐藏"隐含的方法,以便在方法中可用
implicit val e = implicitly[ClassName]
Run Code Online (Sandbox Code Playgroud)
但是(毫无疑问,你们很多人都希望)这个定义失败了同样的信息.
似乎这里的问题是我无法说服编译器用implicit ClassName标志标记特征本身的签名,并强制调用者(即将特征混合到一个对象中的那些)来提供隐式.目前我的调用者正在这样做,但编译器没有在此级别进行检查.
是否有任何方法可以将特征标记为在施工时需要某些隐含物?
(如果不是,这还没有实现,还是有更深层次的原因,为什么这是不切实际的?)
简而言之我的问题:我如何检测给定用户类/对象是否存在(并且在正确的位置)java注释.
详细的"问题"
可以说我有两个java类:
public class Line {
private List<Cell> cells;
public Line(Object... annotatedObjects) {
// check if annotations @Line and @Cell are present in annotatedObjects.
}
// getter/setter for cells.
}
public class Cell {
// some members
// some methods
}
Run Code Online (Sandbox Code Playgroud)
Line对象包含Cells.
我还有两个注释,如:
public @interface Line {
// some stuff here
}
public @interface Cell {
// some stuff here
}
Run Code Online (Sandbox Code Playgroud)
我还有一堆用户类(本例中有两个用户类),它们包含我指定的@Line和@Cell注释,如:
@Line(name="pqr", schema="three")
public class AUserClass {
@Cell
private String aString;
}
@Line(name="xyz", schema="four")
public class AnotherUserClass { …Run Code Online (Sandbox Code Playgroud) 我非常喜欢函数式编程概念,但是当我在一个集合中进行映射时Set(即自动删除重复项),我现在被同一个问题所困在两个不同的场合.问题是在转换这样一个集合的元素之后,输出容器也是一个集合,因此删除了转换输出的任何重复.
一个非常简短的REPL会议来说明这个问题:
scala> case class Person(name: String, age: Int)
defined class Person
scala> val students = Set(Person("Alice", 18), Person("Bob", 18), Person("Charles", 19))
students: scala.collection.immutable.Set[Person] = Set(Person(Alice,18), Person(Bob,18), Person(Charles,19))
scala> val totalAge = (students map (_.age)).sum
totalAge: Int = 37
Run Code Online (Sandbox Code Playgroud)
我当然希望总年龄为18 + 18 + 19 = 55,但因为学生 们存放在a中Set,所以他们的年龄也是如此,因此其中一个18在年龄之前消失了.
在实际代码中,这通常更加隐蔽,更难以发现,特别是如果您编写实用程序代码,它只需要Traversable和/或使用声明返回的方法的输出Traversable(其实现恰好是Set).在我看来,这些情况几乎不可能被发现,直到/除非它们表现为一个错误.
那么,是否有任何最佳实践可以减少我对这个问题的影响?我是否错误地考虑map将一般的Traversable概念化地转换为每个元素,而不是将转换后的元素依次添加到一些新的集合中?.toStream如果我想保留这个心理模型,我应该在映射之前调用所有内容吗?
任何提示/建议将不胜感激.
更新:到目前为止,大多数答案都集中在将总和中包含重复项的机制上.在一般情况下编写代码时,我对所涉及的实践更感兴趣 - 你是否自己在调用之前总是调用toList每个集合map …
java ×5
javascript ×2
scala ×2
ajax ×1
annotations ×1
collections ×1
concurrency ×1
constructor ×1
ignore ×1
implicit ×1
jquery ×1
junit ×1
reflection ×1
regex ×1
runtime ×1
shell ×1
string ×1
traits ×1
unit-testing ×1