计算两个日期之间总秒数的最佳方法是什么?到目前为止,我已尝试过以下方面:
$delta = $date->diff(new DateTime('now'));
$seconds = $delta->days * 60 * 60 * 24;
Run Code Online (Sandbox Code Playgroud)
但是,daysDateInterval对象的属性似乎在当前的PHP5.3版本中被破坏(至少在Windows上,它总是返回相同的6015值).我还试图以一种不能保存每个月(轮数到30天),闰年等天数的方式来做到这一点:
$seconds = ($delta->s)
+ ($delta->i * 60)
+ ($delta->h * 60 * 60)
+ ($delta->d * 60 * 60 * 24)
+ ($delta->m * 60 * 60 * 24 * 30)
+ ($delta->y * 60 * 60 * 24 * 365);
Run Code Online (Sandbox Code Playgroud)
但是我真的不满意使用这种半成品解决方案.
我正在使用Java开发我的第一个真正的项目.尽管我对动态语言有更多的经验,但我开始对这门语言感到满意.
我有一个类似于以下的类:
class Single
{
public void doActionA() {}
public void doActionB() {}
public void doActionC() {}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个SingleList类充当这些类的集合(具体来说,它是用于2D Sprite库,而"actions"是各种变换:旋转,剪切,缩放等).我希望能够做到以下几点:
class SingleList
{
public void doActionA() {
for (Single s : _innerList) {
s.doActionA();
}
}
... etc ...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法简单地将方法(或已知的方法列表)推迟到内部列表的每个成员?无需专门列出每个方法的任何方式,然后遍历每个内部成员并手动应用它?
为了使事情变得更难,方法是不同的arity,但都是返回类型"void".
我知道Java对象构造函数隐式初始化它们的实例的非静态字段.但是,我不确定在类层次结构中发生这种情况的顺序.例如:
abstract public class AbstractPieceSequence implements PieceSequence
{
private Tetromino current;
private Tetromino preview;
public AbstractPieceSequence()
{
advance();
}
@Override
public final void advance()
{
if (preview == null) {
current = getNextPiece();
preview = getNextPiece();
} else {
current = preview;
preview = getNextPiece();
}
}
abstract protected Tetromino getNextPiece();
}
Run Code Online (Sandbox Code Playgroud)
public class ShufflePieceSequence extends AbstractPieceSequence
{
private List<Shape> bag = new LinkedList<Shape>();
@Override
protected Tetromino getNextPiece()
{
if (bag.size() == 0) {
Collections.addAll(bag, Shape.I, Shape.J, Shape.L, Shape.O, Shape.S, …Run Code Online (Sandbox Code Playgroud) 我的任务是为大量度量数据结构(即四叉树和kd树变体)创建实现.我有大约四个这样的实现,但我目前测试的方式不是,因为我缺乏一个更好的词,好.
我需要一种干净的方法来测试从这些树/特里结构中插入和删除数据的方式,我可以测试节点的内部结构(检查父节点,子节点,排序等).这些实现以下独立的正确性证明和运行分析,所以我需要确保不仅是一个节点正确插入(意味着,从树上以后检索),而且在树上的一个很"正确"的位置.
然而,"单元测试"似乎是错误的方法,因为如果我没有弄错的话,它的目的是测试结构或系统的外部API.我见过很多的单元测试相关的问题问"我如何才能进入私人领域的单元测试"或"我怎么测试一个非公开的方法的返回值",得到的回答一般是"不要" t" - 我同意这个答案.
因此,我不会让任何愿意帮助的人只是模糊的ramblings,我的树实现的接口如下(基于java集合的Map接口):
public interface SpatialMap<K, V> extends Iterable<SpatialMap.Entry<K, V>>
{
// Query Operations
/**
* Returns the number of key-value mappings in this map. If the map contains more than
* <tt>Integer.MAX_VALUE</tt> elements, returns <tt>Integer.MAX_VALUE</tt>.
*
* @return The number of key-value mappings in this map.
*/
int size();
/**
* Returns <tt>true</tt> if this map contains no key-value mappings.
*
* @return <tt>true</tt> if this map contains no key-value mappings. …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个简单的 Http Response 类,该类实现 Http Streaming (或 Chunked-Encoding)。为了实现这一点,我需要output_buffering = Off在 php.ini 中进行设置,并以一定的时间间隔刷新输出。
PHP 自动很好地完成了这项工作——除了实际的刷新机制。我已经让它工作了,但我不确定它是否太过分了。我想知道如何立即刷新每个级别的输出缓冲,而不调用十亿个函数(我不确定哪些函数在哪些环境/哪些场景中是多余的)。
while (ob_get_level())
{
ob_end_flush();
}
// print the buffer
flush();
ob_flush();
Run Code Online (Sandbox Code Playgroud)
这是否太过分了?
我有一个WatchService监视目录树的ENTRY_CREATE, ENTRY_DELETEANDENTRY-MODIFY事件。问题是 a 的上下文WatchEvent<?>只给出了一个 Path 对象。在删除事件中,我不确定路径是否引用了常规文件的目录。
WatchKey key = null;
try {
key = watcher.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
for (WatchEvent<?> event : key.pollEvents()) {
if (event.kind() == StandardWatchEventKinds.OVERFLOW) {
continue;
}
Path parent = (Path) key.watchable();
Path p = parent.resolve((Path) event.context());
for (DirectoryModifiedListener listener : listeners) {
if (event.kind() == StandardWatchEventKinds.ENTRY_DELETE) {
// only do this if p referred to a file, not a directory
listener.onFileCreated(p);
} …Run Code Online (Sandbox Code Playgroud) 我将稀疏多项式表示为(系数,对)的列表.例如:
'((1 2) (3 6) (-20 48)) => x^2 + 3x^6 - 20x^48
Run Code Online (Sandbox Code Playgroud)
我是Lisp格式的新手,但是遇到了一些非常漂亮的工具,例如(format nil "~:[+~;-~]" (> 0 coefficient))将系数的符号作为文本(我知道,这可能不是惯用的).
但是,格式化单个术语时存在某些显示问题.例如,以下内容应该都是真的:
(1 0) => 1x^0 => 1 (reducible)
(1 1) => 1x^1 => x (reducible)
(1 2) => 1x^2 => x^2 (reducible)
(2 0) => 2x^0 => 2 (reducible)
(2 1) => 2x^1 => 2x (reducable)
(2 2) => 2x^2 => 2x^2 (this one is okay)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以在没有大量系列if或cond宏的情况下做到这一点 - 这种方式只需用一个format模式来实现.一切都有效但是"美化"这些术语(最后一行FormatPolynomialHelper3应该这样做).
(defun FormatPolynomial …Run Code Online (Sandbox Code Playgroud) java ×4
php ×2
common-lisp ×1
date ×1
datetime ×1
dynamic ×1
inheritance ×1
io ×1
lisp ×1
nio ×1
unit-testing ×1
watchservice ×1