小编And*_*ann的帖子

当我使用offer和poll进行访问时,LinkedList是否是线程安全的?

我有一个链表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.

java multithreading linked-list list thread-safety

23
推荐指数
2
解决办法
5万
查看次数

为什么在Objective-C中单独调用alloc和init?

注意:我对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的方式.

谢谢!

oop cocoa objective-c init alloc

15
推荐指数
5
解决办法
6402
查看次数

为什么Magento每次会话使用2个cookie?

出于数据安全和隐私的原因,我想知道为什么Magento在一个前端会话中使用两个cookie.

我所知道的是,其中一个正在进入Mage_Core_Model_Cookie::set(..),而另一个正在进入Zend_Session::expireSessionCookie(),但我似乎无法弄清楚它们的用途.

我想不出有什么理由为什么人们需要为同一个域提供第二个cookie.

security cookies zend-framework privacy magento

15
推荐指数
2
解决办法
5264
查看次数

检查文件是否存在时出错

我正在尝试使用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)

cocoa objective-c plist nsfilemanager

5
推荐指数
2
解决办法
9327
查看次数

如何正确使用NSCollectionView和Outlets?

我正在拼命尝试连接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

3
推荐指数
1
解决办法
2560
查看次数

INSERT INTO..SELECT..ON DUPLICATE KEYS模糊ID

我有下表:

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)

mysql sql insert-update mysql-error-1052

2
推荐指数
1
解决办法
3050
查看次数

Shell脚本在文件系统中上升N个文件夹

我刚刚在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在终端中工作.

我不明白为什么相同的命令在脚本中不起作用.这可能是安全的事吗?

有什么建议?

macos bash shell

1
推荐指数
1
解决办法
645
查看次数