此时,每个人都知道ShellIconOverlayIdentifiers(来自MSDN)的数量有限制:
系统可以支持的不同图标叠加处理程序的数量受系统图像列表中可用于图标叠加的空间量的限制.目前有15个插槽用于图标覆盖,其中一些是由系统保留的.因此,只有在没有令人满意的替代方案时才应实施图标叠加处理程序
我可以理解Windows 95中的15个覆盖限制.但是在一个有Gigs of RAM,众多内核和GPU的环境中,现代操作系统中有这么低数量的技术原因吗?
为什么这个值不可配置?
在给出"性能"答案之前,请考虑: Windows允许配置,以便您可以杀死性能......为什么要特别选择这个问题?
对非描述性问题表示道歉; 如果你能想到一个更好的,我会全神贯注.
我正在编写一些Perl来实现一个算法,而我的代码却有些腥味.由于我没有CS背景,所以我的后袋里没有很多关于标准算法的知识,但这似乎是它可能的东西.
让我用隐喻来描述我在做什么:
因此,我们有一个处理列表中项目的算法,如果它们符合某些标准,则应将它们添加到一个结构中,当它满足某些其他标准时,应该"关闭".此外,一旦处理完列表,如果存在"开放"结构,它也应该"关闭".
天真地,我假设算法由一个循环作用于列表,一个条件用于查看列表元素是否属于结构,还有一个条件用于查看结构是否需要"关闭".在循环之外,还有一个条件来关闭任何未完成的结构.
所以,这是我的问题:
我将此标记为"Perl",因为Perlish方法很有意思,但我很想知道任何其他语言都有这方面的解决方案.
代码说了一百万字:
php > echo strtotime("2010-12-07T23:00:00.000Z");
1291762800
echo date('c', 1291762800);
2010-12-08T00:00:00+01:00
php > var_dump(DateTime::createFromFormat('c', "2010-12-07T23:00:00.000Z"));
bool(false)
php > var_dump(DateTime::createFromFormat(DateTime::ISO8601, "2010-12-07T23:00:00.000Z"));
bool(false)
Run Code Online (Sandbox Code Playgroud)
知道发生了什么事吗?
顺便说一下,是的,新的DateTime("2010-12-07T23:00:00.000Z")运行正常.但我更愿意知道我得到了什么输入.
是否有getline使用fread(块I/O)而不是fgetc(字符I/O)的函数?
通过字符读取文件字符会有性能损失fgetc.我们认为为了提高性能,我们可以fread在内循环中使用块读取getline.然而,这引入了读取超过行尾的潜在不期望的效果.至少,这需要实现getline跟踪文件的"未读"部分,这需要超出ANSI C FILE语义的抽象.这不是我们想要自己实现的东西!
我们已经分析了我们的应用程序,并且由于我们逐个字符地消耗大型文件,因此性能缓慢fgetc.通过比较,其余的开销实际上具有微不足道的成本.我们总是按顺序读取文件的每一行,从头到尾,我们可以在读取期间锁定整个文件.这可能使fread基于getline更容易实现.
那么,是否存在getline使用fread(块I/O)而不是fgetc(字符I/O)的函数?我们非常肯定它确实如此,但如果没有,我们应该如何实施呢?
更新发现了一篇有用的文章,在C中处理用户输入,由Paul Hsieh撰写.这是一种fgetc基于方法的方法,但它对替代方案进行了有趣的讨论(从有多糟糕开始gets,然后讨论fgets):
另一方面,C程序员(甚至那些经验丰富的人)的常见反驳是说fgets()应该用作替代方案.当然,fgets()本身并不能真正处理用户输入.除了具有奇怪的字符串终止条件(在遇到\n或EOF,但不是\ 0时),当缓冲区达到容量时选择终止的机制是简单地突然停止fgets()操作并且\ 0终止它.因此,如果用户输入超过预分配缓冲区的长度,则fgets()返回部分结果.处理这个程序员有几个选择; 1)简单地处理截断的用户输入(没有办法向用户反馈输入已被截断,而他们提供输入)2)模拟可增长的字符数组并通过连续调用fgets()填充它.对于可变长度的用户输入,第一种解决方案几乎总是一个非常糟糕的解决方案,因为缓冲区在大多数情况下不可避免地会过大,因为它试图捕获太多普通情况,而对于异常情况则太小.第二种解决方案很好,只是正确实施可能很复杂.两者都不涉及fgets在'\ 0'方面的奇怪行为.
练习留给读者:为了确定通过调用fgets()确实读取了多少字节,可以尝试通过扫描(就像它一样)来搜索'\n'并跳过任何'\ 0'而不超过传递给fgets()的大小.解释为什么这对于流的最后一行是不够的.ftell()的弱点是什么阻止它完全解决这个问题?
练习留给读者:通过在每次调用fgets()之间用非零值覆盖整个缓冲区来解决确定fgets()消耗的数据长度的问题.
因此,使用fgets(),我们可以选择编写大量代码并使用与C库的其余部分不一致或具有任意截止的行终止条件.如果这还不够好,那么我们还剩下什么?scanf()以无法分离的方式将解析与读取混合,并且 …
如果我构建一个共享库(共享对象),我可以通过以下两种方式使用它:
第一种方法是使用共享库,就像我使用静态库一样.
#include "myLib.h"
//...
//afterwards I can use functions defined in mylib.h
myFunction();
Run Code Online (Sandbox Code Playgroud)
使用共享库的第二种方法是通过调用动态加载器API函数:dlopen,dlsym,和dlclose从dlfcn.h.例如,当我想实现插件模式时,我会以这种方式使用共享库.清单看起来像这样:
#include <dlfcn.h>
void *myLib; /* Handle to shared lib file */
void (*myFunction)(); /* Pointer to loaded function */
//...
//load shared object
myLib = dlopen("/home/dlTest/myLib.so",RTLD_LAZY);
dlerror();
//get handle to function
myFunction = dlsym( myLib, "myFunction");
dlerror();
//execute function
(*myFunction)();
//close lib
dlclose(myLib);
dlerror();
Run Code Online (Sandbox Code Playgroud)
现在我的第一个问题是:在加载时间方面,共享对象的这两种用法有什么区别?通过第一种方式使用共享库,我们在加载时将链接/加载到主应用程序,在第二种方式我们在运行时做同样的事情?
第二个问题.这两种用法的名称是什么?第一个是静态链接共享库,第二个是动态链接/加载共享库?
第三个问题如果我构建了一个没有-fPIC标志(独立于代码的代码)的共享库,我能以第二种方式使用它吗?
干杯
我们是iOS(和其他移动平台)开发人员,我们的销售人员通常需要为客户提供我们的应用演示.我们要做的是自动化流程,以便销售人员可以访问自助服务网站并将应用程序提供给他们的模拟器.
使用xcodebuild,我们可以启动构建过程,然后将其作为安全下载链接(通过我们的Intranet)呈现,但所有让他们做的就是将其安装到他们的iOS设备上.这是可以的,除了路上的每个人都没有iOS设备(或者有些旧的iPod触摸,而且速度超慢).所以,我认为必须有一种方法将它安装在他们的模拟器中.
我看到其他人通过压缩模拟器目录并将其放在另一个目录上来破解它:http: //discussions.apple.com/thread.jspa?messageID = 7680994
将目标设置为模拟器,释放.部署.停止iPhone模拟器.从〜/ Library/Application Support/iPhone模拟器/用户/应用程序中拉出您的应用程序/将其发送给其他人,并让该人知道将其解压缩到该文件夹中,而不是启动iPhone模拟器 - 您就完成了.
我想我们可以做到这一点,但它似乎没有确定性(或者至少,脚本更难).我更喜欢使用.app,但如果唯一的方法就是使用这种hacky复制和粘贴操作,这就是我们必须要做的.
有什么想法吗?
我有关于线程和控件的问题.我做了一个同步模态对话框.有三个进度条和几个标题.如果第一次打开应用程序,它将打开同步对话框并执行更新.在对话框Show()方法中,我创建了三个不同的线程.每个线程控制数据下载,xml解析和数据库插入.然后显示进度条的进度.所有描述,工作正常.
现在问题 - 我想在下载,解析并插入数据库时自动关闭此对话框.我试图检查progressbar.position是否等于progressbar.max并且我尝试检查线程是否被终止.如果我使用进度条方式,对话框太早关闭并且一个进度条没有完全结束.如果我使用线程检查方式,那么progressbars会在进程中间停止,这就是全部.
也许你已经完成并告诉Delphi n00b,最好的方法是怎样做.
提前致谢...
我想实现同一种依赖树/链的几个版本,它们对该树/链中的某些接口使用不同的实现.在这种情况下使用的最佳Guice练习/模式是什么?
这是我的问题的具体例子.
我有一个Writer可能是文件编写器或std-out编写器的接口,它将位于我的依赖层次结构的叶子中.像这样的东西:
interface Writer { ... }
class FileWriter implements Writer { ... }
class StdOutWriter implements Writer { ... }
Run Code Online (Sandbox Code Playgroud)
另一个记录器接口用于在writer上添加一个间接层.例如:
interface Logger { ... }
class LoggerImpl{
@Inject
public Logger(Writer out){ ... }
public void log(String message){ out.println(message); }
}
Run Code Online (Sandbox Code Playgroud)
然后有一个使用记录器的客户端.
class Client{
@Inject
public Client(Logger logger){ ... }
public void do(){ logger.log("my message"); }
}
Run Code Online (Sandbox Code Playgroud)
现在,我想在我的程序中使用两种类型的层次结构:
有没有一种很好的方法来连接它而不使用单独的Guice模块1和2?
理想情况下,我希望有这样一个ClientFactory类: …