我即将开始一个项目,我将成为唯一一个做实际代码的人和两个经验不足的程序员(可怕的想象自己经验丰富!)将会一直在观看并对程序提出建议.
是否有一个好的(免费)系统,我可以根据我编写的代码提供类和函数的文档?它可能会帮助他们掌握数据结构.
Judy数组是快速数据结构,可以表示稀疏数组或一组值.是否有针对C#等托管语言的实现?谢谢
我担心这是一个非常愚蠢的问题,但这里有:
为什么Java的默认LinkedList实现中的clear方法无法遍历列表并取消挂钩所有节点?为什么不解开标题并将列表的其余部分保持连接 - GC无论如何都会得到它,不是吗?
这是方法:
/**
* Removes all of the elements from this list.
*/
public void clear() {
Entry<E> e = header.next;
while (e != header) {
Entry<E> next = e.next;
e.next = e.previous = null;
e.element = null;
e = next;
}
header.next = header.previous = header;
size = 0;
modCount++;
}
Run Code Online (Sandbox Code Playgroud)
为什么走吧?为什么不跳过header.next = header.previous = header;?
我能想到的最好的是它有助于GC ...?这个链接http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#997442有点暗示.
TIA ...
基础是我有一个习惯NSURLProtocol.在startLoading,[self client]类型:
<_NSCFURLProtocolBridge> {NSURLProtocol, CFURLProtocol}
Run Code Online (Sandbox Code Playgroud)
问题是在垃圾收集环境中运行.因为我正在写一个屏幕保护程序,所以我不得不把它垃圾收集起来.但是,_NSCFURLProtocolBridge协议似乎总是抛出:
malloc: reference count underflow for (memory_id_here), break on auto_refcount_underflow_error to debug
调试控制台的示例转储是:
ScreenSaverEngine[1678:6807] client is <_NSCFURLProtocolBridge 0x20025ab00> {NSURLProtocol 0x200258ec0, CFURLProtocol 0x20029c400}ScreenSaverEngine(1678,0x102eda000) malloc: reference count underflow for 0x20025ab00, break on auto_refcount_underflow_error to debug.
您可以看到发生了下溢<_NSCFURLProtocolBridge 0x20025ab00>.
当我突破时auto_refcount_underflow_error,它似乎堆栈追溯到URLProtocolDidFinishLoading::
id client = [self client];
...
[client URLProtocolDidFinishLoading:self];
Run Code Online (Sandbox Code Playgroud)
这个问题似乎已经存在了一段时间,但在网上似乎没有任何答案:
http://lists.apple.com/archives/cocoa-dev/2008/May/msg01272.html http://www.cocoabuilder.com/archive/message/cocoa/2007/12/17/195056
该错误仅在垃圾收集环境中显示这些列出的错误.有关如何在不引起内存问题的情况下解决此问题的任何想法?我假设这可能与NSURLProtocol下面的CF类型不正确地发布有关?
我正在编写一个Cocoa应用程序,它在NSOutlineView中显示存档文件的内容.我在大纲列中为NSBrowserCell提供了一个自定义图标,它工作得很好,但我遇到了一个小麻烦 - 使用[NSImage imageNamed:@"NSFolder"]10.6返回正确的图像(通用文件夹图标),但在10.5它返回nil,所以所有的文件夹图标消失.(我找不到有关NSFolder图标名称的任何文档,看看它什么时候被引入 - 我通过反复试验得到它.)
是否有一种不推荐使用的方法来获取适用于10.5和10.6的通用文件夹图标?
我一直在关注 DropBox Mac客户端,我正在研究为不同的服务实现类似的界面.
他们究竟如何与finder这样接口?我非常怀疑文件夹中表示的这些对象是每次加载时下载的实际文档吗?他们必须根据需要动态下载.那么如何在没有实际文件系统对象的情况下在finder中显示这些项?
有谁知道在Mac OS X中如何实现这一目标?
或任何指向Apple API或其他与finder类似集成的开源项目的指针?
我正在启动一个项目,我认为这将受益于绑定(我有一个源列表表,几个浏览器视图等),但我认为它也是非常可行的,也许更容易理解,没有它们.根据我有限的经验,我发现绑定很难排除故障并且非常"神奇"(例如,很难在任何地方插入日志以确定哪些内容正在破坏,一切都可行或不起作用).
这只是我缺乏经验的谈话(在这种情况下,我可以坐下来花一些时间来完成我对绑定的理解并期望事情开始变得更清晰/更容易)或者我会更好地自己编写所有胶水代码我确信我能理解并排除故障的方式.
我正在尝试更新循环中的哈希表,但收到错误:System.InvalidOperationException:Collection已被修改; 枚举操作可能无法执行.
private Hashtable htSettings_m = new Hashtable();
htSettings_m.Add("SizeWidth", "728");
htSettings_m.Add("SizeHeight", "450");
string sKey = "";
string sValue = "";
foreach (DictionaryEntry deEntry in htSettings_m)
{
// Get value from Registry and assign to sValue.
// ...
// Change value in hashtable.
sKey = deEntry.Key.ToString();
htSettings_m[sKey] = sValue;
}
Run Code Online (Sandbox Code Playgroud)
有没有方法或者为此目的有更好的数据结构?
注意:虽然我的特定上下文是Objective-C,但我的问题实际上超越了编程语言的选择.此外,我将其标记为"主观",因为否则有人会抱怨,但我个人认为这几乎完全是客观的.此外,我知道这个相关的SO问题,但由于这是一个更大的问题,我认为最好将这个问题作为一个单独的问题.如果没有完全阅读和理解,请不要批评这个问题.谢谢!
我们大多数人都熟悉存储键值关联的字典抽象数据类型,无论我们将其称为地图,字典,关联数组,哈希等,这取决于我们选择的语言.字典的简单定义可以通过三个属性来概括:
任何其他属性可以说是特定用途的便利或专业化.例如,某些语言(尤其是脚本语言,如PHP和Python)模糊了字典和数组之间的界限,并确实为字典提供了排序.尽管这可能是有用的,但这种添加不是字典的基本特征.纯粹来说,字典的实际实现细节是无关紧要的.
对于我的问题,最重要的观察是枚举键的顺序没有定义 - 字典可以按照它最方便的顺序提供键,并且由客户端根据需要组织它们.
我创建了自定义词典,它们强加了特定的键排序,包括自然排序顺序(基于对象比较)和插入顺序.很明显,在SortedDictionary(我实际上已经实现过)中给前者命名了一些变体,但后者更成问题.我见过LinkedHashMap和LinkedMap(Java),OrderedDictionary(.NET),OrderedDictionary(Flash),OrderedDict(Python)和OrderedDictionary(Objective-C).其中一些更成熟,一些更符合概念.
LinkedHashMap是根据Java集合传统中的实现命名的 - "链接"因为它使用双向链表来跟踪插入顺序,而"哈希"因为它是HashMap的子类.除了用户不需要担心的事实之外,类名甚至不能指出它的作用.使用有序似乎是现有代码之间的共识,但是关于这个主题的网络搜索也揭示了"有序"和"有序"之间可理解的混淆,我感觉是一样的..NET实现甚至有一个关于明显误称的评论,并建议它应该是"IndexedDictionary",因为您可以在排序中的特定点检索和插入对象.
我正在设计一个框架和API,我希望尽可能智能地命名该类.从我的观点来看,索引可能会起作用(取决于人们如何解释它,并基于字典的广告功能),有序是不精确的,并且有太多混淆的可能性,并且链接 "是正确的"(对Monty Python道歉) ).;-)
作为用户,您最有意义的名称是什么?是否有一个特定的名称,确切地说明了该课程的作用?(如果合适的话,我不反对使用稍长的名字,比如InsertionOrderDictionary.)
编辑:另一个强大的可能性(在我的答案中讨论)是IndexedDictionary.我真的不喜欢"插入顺序",因为如果允许用户在特定索引处插入键,重新排序键等,则没有意义.
api-design objective-c naming-conventions chdatastructures data-structures
objective-c ×4
c# ×2
cocoa ×2
api-design ×1
arrays ×1
clear ×1
directory ×1
filesystems ×1
finder ×1
fsevents ×1
hashtable ×1
icons ×1
integration ×1
java ×1
linked-list ×1
loops ×1
macos ×1
managed ×1
nsimage ×1
ocunit ×1
python ×1
underflow ×1
unit-testing ×1