为什么我写的这个测试在jodatime 1.6.2中失败了?这是一个错误吗?
@Test
public void testIfJodaTimePeriodsHandlesPeriodTypesOtherThanMinutesAndHours() {
long twentyDaysInMillis = TimeUnit.MILLISECONDS.convert(20, TimeUnit.DAYS);
Period twoWeeks = new Period(twentyDaysInMillis, PeriodType.weeks());
Assert.assertEquals(2, twoWeeks.getWeeks());
// twoWeeks.getWeeks() actually returns 0!!
}
Run Code Online (Sandbox Code Playgroud)
仅供参考,具有所有PeriodTypes的期间仅填写分钟和小时的字段,即使传递给构造函数的millis超过25小时.这是违反直觉的.
我有一个非常简单的c程序:
int main()
{
return(1);
}
Run Code Online (Sandbox Code Playgroud)
和一个简单的Makefile:
all:
gcc -ansi -pedantic -o tmp tmp.c
./tmp
Run Code Online (Sandbox Code Playgroud)
但是,当我键入时,make我收到以下错误消息:
$ make
gcc -ansi -pedantic -o tmp tmp.c
./tmp
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)
我错过了什么明显的事情?
可能重复:
静态类的用途是什么
声明静态类有什么好处?
public static class MyStaticClass
{
}
Run Code Online (Sandbox Code Playgroud)
除了"它无法实例化"之外还有其他吗?
为什么你想要一个静态类,为什么一个类应该是静态的呢?
是"任何类都应该被声明为静态,除非它意味着被实例化"这是一个很好的经验法则吗?
我担心的是我正确添加对象并释放它们.
如何正确保留和释放?
NSMutableArray *listData = [[NSMutableArray alloc] init];
int i = 0;
for (i = 0; i < 3; i++)
{
MyData *obj = [[MyData alloc] init];
NSString *name = nil;
switch (i)
{
case 0:
name = @"Semen";
break;
case 1:
name = @"Ivan";
break;
case 2:
name = @"Stepan";
break;
default:
break;
}
obj.name = name;
[listData addObject: obj];
[obj release];
}
[listData release] //in dealloc method
Run Code Online (Sandbox Code Playgroud)或者我需要首先释放所有包含的对象,而不是在NSMutableArray对象上释放?
谢谢!
我有以下代码我想了解:
>>> class DistanceFrom(object):
def __init__(self, origin):
self.origin = origin
def __call__(self, x):
return abs(x - self.origin)
>>> nums = [1, 37, 42, 101, 13, 9, -20]
>>> nums.sort(key=DistanceFrom(10))
>>> nums
[9, 13, 1, 37, -20, 42, 101]
Run Code Online (Sandbox Code Playgroud)
谁能解释一下这是如何工作的?据我所知,__call__调用时object()调用的是 - 将对象作为函数调用.
我不明白的是如何nums.sort(key=DistanceFrom(10)).这是如何运作的?有人可以解释一下这行吗?
谢谢!
从p4v调用p4merge时,它会将库路径显示为文件上的标签.我想使用p4merge作为SVN的差异查看器,为此我有这个批处理文件:
@echo off
pause
p4merge %6 %7
Run Code Online (Sandbox Code Playgroud)
这样可行,但左侧和右侧面板上显示的标签是SVN为p4merge提供的临时文件的名称.SVN传递给批处理文件的参数%3和%5分别包含左侧和右侧面板的相应标签.我确信我记得有命令行参数来设置你想要在每个面板上显示的标签,但它们没有列出p4merge -h.这些是什么?
我必须使用javax.print api打印文件(纯文本).我能够查找打印机并提交打印作业.但我只能打印一份文件.以下是我一直在使用的代码.
打印机无法识别使用PrintRequestAttributeSet指定的选项/属性.虽然我指定要打印2份,但打印机只打印一份.我在这做错什么吗?
使用的打印机:佳能iR5050 PCL6
包com.print;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.Finishings;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.NumberUp;
import javax.print.attribute.standard.OrientationRequested;
import javax.print.attribute.standard.Sides;
import javax.print.event.PrintJobAdapter;
import javax.print.event.PrintJobEvent;
public class TestPrint {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String fileName = "D:/test.log";
// Open the file
InputStream in = null;
try { …Run Code Online (Sandbox Code Playgroud) 在下面的代码中:
interface I1 { }
class CI1: I1 { }
List<CI1> listOfCI1 = new List<CI1>();
IEnumerable<I1> enumerableOfI1 = listOfCI1; //this works
IList<I1> listofI1 = listOfCI1; //this does not
Run Code Online (Sandbox Code Playgroud)
我可以将"listOfCI1"分配给IEnumerable<I1>(由于协方差)
但为什么我无法将其分配给IList<I1>?就此而言,我甚至无法做到以下几点:
List<I1> listOfI12 = listOfCI1;
Run Code Online (Sandbox Code Playgroud)
协方差不应该允许我将派生类型分配给基类型吗?
我最近尝试使用OProfile分析我的应用程序.收集的数据对我来说已经非常有价值,但我对它的精确解释有困难.运行我的应用程序并设置并运行oprofile之后,我生成了报告并得到了:
root @ se7xeon:src#opreport image:test -l -t 1
溢出统计信息不可用
CPU:P4/Xeon,带有2个超线程,速度3191.66 MHz(估计)
计数GLOBAL_POWER_EVENTS事件(处理器未停止的时间)单位掩码0x01(强制)计数750000个
样本%符号名称
215522 84.9954 cci :: Image :: interpolate(unsigned char*,cci :: Matrix const&)const
17998 7.0979 cci :: Calc :: diff(unsigned char const*,unsigned char const*)
13171 5.1942 cci :: Image :: getIRect(unsigned char*,int,int)const
5519 2.1765 cci :: Image :: getFRect(unsigned char*,double,double)const
好的,所以我的插值函数负责84%的应用程序(太长)执行时间.看起来似乎是一个好主意:
root @ se7xeon:src#opannotate image:test --source
[...]
/* cci::Image::interpolate(unsigned char*, cci::Matrix<cci::Point2DF> const&) const total: 215522 84.9954 */
1392 0.5529 :void Image::interpolate(CCIPixel *output, const Matrix<Point2DF> &inputPoints) const throw()
4 0.0016 …Run Code Online (Sandbox Code Playgroud)