问题列表 - 第23988页

如何在java中使用枚举的线程安全性?

如何在java中使用枚举的线程安全性?我正在使用枚举实现一个Singleton(根据Bloch的Effective Java),我应该担心我的单例枚举的线程安全性吗?有没有办法证明或证明它是线程安全的?

// Enum singleton - the preferred approach
public enum Elvis { 
    INSTANCE;
    public void leaveTheBuilding() { ... }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

java singleton enums

31
推荐指数
3
解决办法
3万
查看次数

我如何将FindXFile风格的API包装到C++中的STL样式迭代器模式中?

我正在努力将FindFirstFile/ FindNextFileloop中的丑陋内容(尽管我的问题适用于其他类似的API,例如RegEnumKeyExRegEnumValue等)在迭代器内部以类似于标准模板库的方式工作istream_iterator.

我这里有两个问题.第一个是大多数"foreach"风格循环的终止条件.STL样式迭代器通常operator!=在for的退出条件内使用,即

std::vector<int> test;
for(std::vector<int>::iterator it = test.begin(); it != test.end(); it++) {
 //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我不确定如何operator!=使用这样的目录枚举来实现,因为我不知道枚举何时完成,直到我实际完成它.我现在有一个混合解决方案,它现在枚举整个目录,每个迭代器只是跟踪引用计数向量,但这似乎是一个可以做得更好的方法的kludge.

我遇到的第二个问题是FindXFile API返回了多个数据.因此,operator*根据迭代器语义的要求,没有明显的重载方法.当我重载该项时,是否返回文件名?尺寸?修改日期?我怎样才能传达这样一个迭代器必须在后来以一种思维方式引用的多个数据?我试过扯掉C#风格的MoveNext设计,但我担心这里没有遵循标准的习语.

class SomeIterator {
public:
 bool next(); //Advances the iterator and returns true if successful, false if the iterator is at the end.
 std::wstring fileName() const;
 //other kinds of data....
};
Run Code Online (Sandbox Code Playgroud)

编辑:调用者看起来像:

SomeIterator x = ??; //Construct somehow
while(x.next()) {
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

谢谢! …

c++ winapi iterator

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

如何增加vim中行号边距的间距?

我在vim中的colorscheme有问题:

替代文字http://new.tinygrab.com/ca56d2c7a8e13f7077012bece6abd90e.png

行号太靠近代码了.如何增加行数右边距的宽度?

vim margin macvim

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

用于结构化数据的fread和fwrite的替代方案

这本书开始的Linux程序设计(第三版)说:

"请注意,建议不要将fread和fwrite用于结构化数据.部分问题是用fwrite编写的文件可能在不同的机器之间不可移植."

这究竟是什么意思?如果我想编写便携式结构化数据读取器或写入器,我应该使用哪些调用?直接系统调用?

c portability

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

\n不能在我的fwrite()中工作

不确定可能是什么问题.

我将数据从一个数组转储$theArraytheFile.txt一个单独的行中的每个数组项.

$file = fopen("theFile.txt", "w");
foreach ($theArray as $arrayItem){
    fwrite($file, $arrayItem . '\n');
}
fclose($file);
Run Code Online (Sandbox Code Playgroud)

问题是当我打开时theFile.txt,我看到\n字面输出.此外,如果我尝试以编程方式逐行读取文件(只是在有行的情况下),它会将它们显示为1行,这意味着\n它们没有达到预期的效果.

php file-io newline file

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

无法绑定多部分标识符

我有这个非常简单的sql语句:

SELECT     max_dose
FROM         psychotropes
WHERE     (patient_meds.psychotrope = psychotrope_name) AND (patient_meds.patient_id = 12)
Run Code Online (Sandbox Code Playgroud)

当我尝试在Visual Studio 2008中运行它时,它告诉我"多部分'patient_meds.psychotrope'标识符无法绑定"

这很奇怪,因为我确实在图表查看器中设置了两个表之间的关系

sql

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

Java线程示例?

有没有人能给出一个简单解释Java Threads的示例程序?例如,假设我有三个线程t1,t2并且t3.我想要一个代码来演示线程同时执行,而不是顺序执行.

java multithreading

46
推荐指数
2
解决办法
11万
查看次数

如何在Python 3中使用自定义比较函数?

Python 2.x中,我可以将自定义函数传递给sorted和.sort函数

>>> x=['kar','htar','har','ar']
>>>
>>> sorted(x)
['ar', 'har', 'htar', 'kar']
>>> 
>>> sorted(x,cmp=customsort)
['kar', 'htar', 'har', 'ar']
Run Code Online (Sandbox Code Playgroud)

因为,在我的语言中,配偶带有这个命令

"k","kh",....,"ht",..."h",...,"a"
Run Code Online (Sandbox Code Playgroud)

但在Python 3.x中,看起来我无法传递cmp关键字

>>> sorted(x,cmp=customsort)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'cmp' is an invalid keyword argument for this function
Run Code Online (Sandbox Code Playgroud)

有没有其他选择,还是我应该编写自己的排序函数?

注意:我通过使用"k","kh"等进行了简化.实际字符是Unicodes甚至更复杂,有时元组前后有元音,我已经完成了自定义比较功能,所以那部分还可以.唯一的问题是我无法将自定义比较函数传递给sorted或.sort

python sorting python-3.x

85
推荐指数
4
解决办法
5万
查看次数

无法通过PHP代码连接苹果APN服务器进行pusNotification

要将我的服务器与APN服务器连接,请使用以下代码.

// coonecting the apn server
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $errorNo, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
Run Code Online (Sandbox Code Playgroud)

但我无法连接,我打印$ errorNo和$ errorString输出是:错误:连接超时errorNo:110

但我也在errorLog中收到以下警告:

无法连接到第35行/home/riseupla/public_html/applications/apn/apn.php中的ssl://gateway.sandbox.push.apple.com:2195(连接超时)

我该怎么办?

注意:我可以通过我的mac项目发送推送通知(使用push me baby项目).但我的PHP项目无法连接.

iphone apple-push-notifications

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

C++中的中间值

我找不到如何在C++中实现设计.在Delphi的语言中,如果操作员可以编写以下设计:

    case s[j] of
         '0'..'9','A'..'Z','a'..'z','_': doSomeThing();
Run Code Online (Sandbox Code Playgroud)

我怎样才能在c ++中做同样的事情.吸引我的是建筑类型'a'..'z'等...

谢谢

c++

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