我有一个链表samples:
protected LinkedList<RawDataset> samples = new LinkedList<RawDataset>();
Run Code Online (Sandbox Code Playgroud)
我将元素添加到线程1中的列表中,如下所示:
this.samples.offer(data);
Run Code Online (Sandbox Code Playgroud)
我正在第二个线程中从中检索元素,如下所示:
public RawDataset retrieveSample() {
return this.samples.poll();
}
Run Code Online (Sandbox Code Playgroud)
这会被认为是线程安全的吗?即使线程1和2都在修改列表,它们只在列表的头部或尾部专门执行,对吧?
如果不是,任何人都可以指向我的Java API中的类poll/ offer并且肯定是线程安全的吗?
先感谢您.
BTW:Collections.synchronizedList(new LinkedList())不会让我访问offer/ poll.
注意:我对Objective-C比较新,我来自Java和PHP.
有人可以向我解释为什么我总是要先分配然后初始化一个实例?
不能在这样的init方法中完成:
+ (MyClass*)init {
MyClass *instance = [MyClass alloc];
[instance setFoo:@"bla"];
return instance;
}
+ (MyClass*)initWithString:(NSString*)text {
MyClass *instance = [MyClass init];
[instance setFoo:text];
return instance;
}
...
Run Code Online (Sandbox Code Playgroud)
这只是旧C日的残骸还是有些东西我没有看到?
我知道这不是问题,因为我总是可以调用alloc和init,但由于它有点乏味,我想至少知道我为什么要这样做.
到目前为止,我喜欢语言的表达能力,但这是我想要完全理解的,以便考虑Objective-C的方式.
谢谢!
出于数据安全和隐私的原因,我想知道为什么Magento在一个前端会话中使用两个cookie.
我所知道的是,其中一个正在进入Mage_Core_Model_Cookie::set(..),而另一个正在进入Zend_Session::expireSessionCookie(),但我似乎无法弄清楚它们的用途.
我想不出有什么理由为什么人们需要为同一个域提供第二个cookie.
我正在尝试使用writeToFile写入plist文件,在我写之前检查文件是否存在.
这是代码:
#import "WindowController.h"
@implementation WindowController
@synthesize contacts;
NSString *filePath;
NSFileManager *fileManager;
- (IBAction)addContactAction:(id)sender {
NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:
[txtFirstName stringValue], @"firstName",
[txtLastName stringValue], @"lastName",
[txtPhoneNumber stringValue], @"phoneNumber",
nil];
[arrayContacts addObject:dict];
[self updateFile];
}
- (void)awakeFromNib {
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
filePath = [rootPath stringByAppendingPathComponent:@"Contacts.plist"];
fileManager = [NSFileManager defaultManager];
contacts = [[NSMutableArray alloc] init];
if ([fileManager fileExistsAtPath:filePath]) {
NSMutableArray *contactsFile = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
for (id contact in contactsFile) {
[arrayContacts addObject:contact];
}
}
}
- (void) …Run Code Online (Sandbox Code Playgroud) 我正在拼命尝试连接NSViews的控件,这些控件将驻留在使用outlet的NSCollectionView中.使用NSArrayController提供集合视图.
我在一个单独的NIB文件中创建了NSView,在NSCollectionViewItem的实现中,我覆盖了copyWithZone来加载它:
-(id)copyWithZone:(NSZone *)zone
{
id result = [super copyWithZone:zone];
[NSBundle loadNibNamed:@"InputView" owner:result];
return result;
}
Run Code Online (Sandbox Code Playgroud)
我根据这个说明使用了这种方法.
不幸的是,这是发生的事情:

NSView看起来像这样:

NSCollectionView驻留在NSScrollView中,滚动条设置为自动启用.但正如你所看到的那样,没有滚动条.
我真的不明白我需要做什么,所以NSCollectionView知道它的NSViews的尺寸.
它之前我没有单独的NIB文件,但后来我无法从视图到项目的出口连接:-(
cocoa objective-c interface-builder cocoa-bindings nscollectionview
我有下表:
mysql> SELECT * FROM `bright_promotion_earnings`;
+----+----------+------------+----------+-------+
| id | promoter | generation | turnover | payed |
+----+----------+------------+----------+-------+
| 1 | 4 | 1 | 10 | 0 |
| 3 | 4 | 5 | 100 | 0 |
| 4 | 4 | 3 | 10000 | 1 |
| 5 | 4 | 3 | 200 | 0 |
+----+----------+------------+----------+-------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
有一个独特的密钥(发起人,代,付费):
+---------------------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index …Run Code Online (Sandbox Code Playgroud) 我刚刚在SO上找到了这个非常有用的shell脚本,但遗憾的是它不适用于Mac OS X 10.5.
这是有问题的脚本(为方便起见,将其复制):
#!/bin/bash
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
P=$P/..
done
cd $P
Run Code Online (Sandbox Code Playgroud)
我试图echo $P在最后,它正在返回正确的道路,但cd $P似乎仍然没有工作.
所以我尝试手动输入P="some/path"并cd $P在终端中工作.
我不明白为什么相同的命令在脚本中不起作用.这可能是安全的事吗?
有什么建议?