"无限"IEnumerable的一个简单例子
IEnumerable<int> Numbers() {
int i=0;
while(true) {
yield return unchecked(i++);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道
foreach(int i in Numbers().Take(10)) {
Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)
和
var q = Numbers();
foreach(int i in q.Take(10)) {
Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)
两者都工作正常(并打印数字0-9).
但复制或处理表达式时是否有任何陷阱q?我可以依赖这样一个事实,即它们总是被评估为"懒惰"吗?产生无限循环有危险吗?
我正在使用Django进行项目,并且已经投入生产.
在生产环境中,每当发生服务器错误时都会呈现500.html.
如何在开发环境中测试500.html的渲染?或者我如何在开发中渲染500.html,如果我关闭调试我仍然得到错误而不是500.html
背景:我包含一些基于页面的页面元素,有些在调用500.html时丢失,并且想要在开发环境中调试它.
有传言说:
SELECT * FROM lineage_string where lineage like '%179%' and lineage regexp '(^|/)179(/|$)'
Run Code Online (Sandbox Code Playgroud)
会比这更快:
SELECT * FROM lineage_string where lineage regexp '(^|/)179(/|$)'
Run Code Online (Sandbox Code Playgroud)
谁能确认一下?或者知道一种测试这种查询速度的好方法.谢谢
我正在建立一个翻译,因为这次我的目标是原始速度,所以在这个(原始)情况下,每个时钟周期对我都很重要.
您是否有任何经验或信息两者更快:Vector或Array?重要的是我可以访问元素的速度(操作码接收),我不关心插入,分配,排序等.
我现在要把自己从窗户里拉出来说:
这对我来说似乎很合乎逻辑.使用向量,您可以获得阵列不存在的所有安全性和控制开销.
(为什么)我错了?
不,我不能忽视性能差异 - 即使它是如此之小 - 我已经优化并最小化执行操作码的VM的每个其他部分:)
"像exercise_1.py这样的文件名比execise-1.py更好.我们可以从命令行同样运行这两个程序,但带连字符的名称限制了我们编写更大更复杂程序的能力."
为什么?
即使我知道密钥IS实际上在字典中,我也会因为字典密钥而出现KeyError.关于可能导致这种情况的任何想法?
print G.keys()
Run Code Online (Sandbox Code Playgroud)
返回以下内容:
['24', '25', '20', '21', '22', '23', '1', '3', '2', '5', '4', '7', '6', '9', '8', '11', '10', '13', '12', '15', '14', '17', '16', '19', '18']
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在下一行代码中访问字典中的值时......
for w in G[v]: #note that in this example, v = 17
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
KeyError: 17
Run Code Online (Sandbox Code Playgroud)
任何帮助,提示或建议都表示赞赏.谢谢.
我有一个启动的控制台应用程序,托管一堆服务(长时间运行的启动),然后等待客户端调用它.我有集成测试,启动此控制台应用程序并进行"客户端"调用.在进行客户端调用之前,如何等待控制台应用程序完成其启动?
我想避免这样做,Thread.Sleep(int)因为这取决于启动时间(可能会改变),如果启动速度更快,我会浪费时间.
Process.WaitForInputIdle 仅适用于具有UI的应用程序(我确认它在这种情况下会引发异常).
我对尴尬的解决方案持开放态度,让控制台应用程序在准备就绪时写入临时文件.
我正在尝试创建一个sscanf字符串文字,以帮助在C99中防止缓冲区溢出.目标是这样的:
#define MAX_ARG_LEN 16
char arg[MAX_ARG_LEN] = "";
if (sscanf(arg, "%"(MAX_ARG_LEN-1)"X", &input) > 0)
Run Code Online (Sandbox Code Playgroud)
显而易见的"手动"解决方案如下:
#define MAX_ARG_LEN 16
#define MAX_ARG_CHARS "15"
char arg[MAX_ARG_LEN] = "";
if (sscanf(arg, "%"MAX_ARG_CHARS"X", &input) > 0)
Run Code Online (Sandbox Code Playgroud)
但是,我希望在缓冲区大小为16的情况下自动生成"%15X".这个链接几乎适用于我的应用程序:将预处理程序标记转换为字符串,但它不处理-1.
建议?
当我在iPhone上使用NSXMLParser解析XML时,我有一个奇怪的问题.启动应用程序时,我想预先加载4个表视图,这些视图在后台由RSS-Feeds填充.
当我逐个启动表视图时,而不是加载,解析和显示所有的工作,如魅力.但是当我尝试一次(同时)初始化所有视图时,看起来XML-parser-instances互相干扰.不知何故,来自一个XML-Feed的数据被"广播"到其他不属于的xml-parser实例中.示例:有一个"团队成员"项目,"这是我的名字".当这个错误发生时,添加了另一个xml-feed的字符串,即导致:"这是我的名字58",其中58是来自另一个视图的图表位置.在另一个例子中,"58"似乎错过了.
在我看来,由于NSXMLParser委托方法,这个错误发生了:
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if (!currentStringValue) {
currentStringValue = [[NSMutableString alloc] initWithCapacity:50];
}
[currentStringValue appendString:string];
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"通过巧合"字节被附加到不属于它们的字符串.
奇怪的是,NSXMLParser的每个实例都是唯一的,有自己独特的委托,附加到自己的ViewController.每个解析请求产生它自己的后台任务,它有自己的(也是唯一命名的)自动释放池.
我在ViewController中调用NSXMLParser:
// prepare XML saving and parsing
currentStringValue = [[[NSMutableString alloc] initWithCapacity:50] retain];
charts = [[NSMutableArray alloc] init];
NSURL *url = [[NSURL alloc] initWithString:@"http://(SOME XML URL)"];
xmlParser = [[[NSXMLParser alloc] initWithContentsOfURL:url] retain];
//Set delegate
[xmlParser setDelegate:self];
//loading indicator
progressWheel = [[[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(150.0,170.0,20.0,20.0)] autorelease];
progressWheel.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[self.view addSubview:progressWheel];
[progressWheel startAnimating];
// start loading and …Run Code Online (Sandbox Code Playgroud) 如果我有一张我知道高度和宽度的图像,我怎样才能将它放在一个尺寸最大的矩形中,而不会拉伸图像.
伪代码就足够了(但我将在Java中使用它).
谢谢.
所以,基于答案,我写了这个:但它不起作用.我做错了什么?
double imageRatio = bi.getHeight() / bi.getWidth();
double rectRatio = getHeight() / getWidth();
if (imageRatio < rectRatio)
{
// based on the widths
double scale = getWidth() / bi.getWidth();
g.drawImage(bi, 0, 0, (int) (bi.getWidth() * scale), (int) (bi.getHeight() * scale), this);
}
if (rectRatio < imageRatio)
{
// based on the height
double scale = getHeight() / bi.getHeight();
g.drawImage(bi, 0, 0 , (int) (bi.getWidth() * scale), (int) (bi.getHeight() * scale), this);
}
Run Code Online (Sandbox Code Playgroud) c# ×2
python ×2
arrays ×1
background ×1
c ×1
c++ ×1
dictionary ×1
django ×1
enumeration ×1
exception ×1
image ×1
iphone ×1
java ×1
key ×1
max ×1
mysql ×1
naming ×1
nsxmlparser ×1
scanf ×1
stl ×1
string ×1
timeout ×1
vector ×1
yield-return ×1