我刚刚向Sublime添加了Python3解释器,以下代码停止工作:
for directory in directoryList:
fileList = os.listdir(directory)
for filename in fileList:
filename = os.path.join(directory, filename)
currentFile = open(filename, 'rt')
for line in currentFile: ##Here comes the exception.
currentLine = line.split(' ')
for word in currentLine:
if word.lower() not in bigBagOfWords:
bigBagOfWords.append(word.lower())
currentFile.close()
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
File "/Users/Kuba/Desktop/DictionaryCreator.py", line 11, in <module>
for line in currentFile:
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 305: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪,因为据我所知,Python3应该支持utf-8无处不在.更重要的是,相同的代码在Python2.7上没有任何问题.我已经阅读了关于添加环境变量的内容PYTHONIOENCODING,但我尝试了它 …
我正在构建一个Android应用程序,并希望在actionBar上始终显示一个按钮.我遵循了这个指南和其他人,但他们似乎都没有解决我的问题(虽然他们非常接近我猜...).
我有包"app"并使用app:showAsAction="always".没有显示错误,但栏上也没有按钮.当我将其更改为android:showAsAction="always"按钮出现在栏上时,但AndroidStudio告诉我应该选择"app:showAsAction with appCompat ...".
我有一个自定义主题parent="@android:style/Theme.Holo.Light.DarkActionBar">和酒吧本身:parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">.
我应该改变一些东西并开始app:showAsAction工作,或者忽略AndroidStudio错误消息并去寻找android:showAsAction?
我开始学习一些C#,我遇到了一个令人不安的问题:虚拟方法.是否有必要使用此关键字?
Java中的简单多态不会要求虚拟关键字起作用,即使覆盖注释是可选的:
package figures;
public class Figures {
public static void main(String[] args) {
Figure figure = new Figure();
Circle circle = new Circle();
Triangle triangle = new Triangle();
Figure []arrayOfFigures = {figure, circle, triangle};
for (int i = 0; i < 3; i++){
arrayOfFigures[i].introduceYourself();
}
}
}
class Figure {
public void introduceYourself(){
System.out.println("I am just a figure.");
}
}
class Circle extends Figure {
@Override
public void introduceYourself() {
System.out.println("I am a circle.");
}
}
class Triangle extends …Run Code Online (Sandbox Code Playgroud) 最近我参加了关于Java效率的讨论.正如我所听到的,反对Java的大量论据是解释"非常耗时",因为它甚至简单的Java程序运行速度比直接编译到机器代码的类似程序慢.
答案就是Java代码经常直接编译为机器代码,如果只有JVM计算它会使程序比以标准方式解释更快.
我的问题是:JVM何时"决定"执行即时编译?使JIT比标准字节码解释更有效的标准是什么?我的意思是,编译本身需要一些时间,据我所知,当程序已经运行时,它应该发生了吗?
关于这个问题有很多问题,但没有答案让我满意; 我正在使用Swing编写一个简单的GUI窗口.目前它只包含4个按钮,其中一个是打开文件选择器.
当我使用VisualVM监视工具查看内存使用情况时,结果如下所示:
内存使用情况http://img17.imageshack.us/img17/3589/8txc.png
当我点击按钮时出现第一个长矛,然后我什么也没做.
这是空闲应用程序消耗10M/min(当它什么都没做的时候)这是正常的吗?
由于我必须使用图像做一个类似quizz的applet,System.gc()每次切换到下一个问题时我是否应该使用它来避免(可能是巨大的?)内存使用?
我有一个由对象支持的 Foundry Form,能够对其进行更改。我需要授予我的同事什么权限才能编辑表单?表单上的编辑器是否足够,或者他们是否还需要成为对象的编辑器?
当我使用PyYAML在Python中编辑YAML文件时,我所有的字符串值都保存回没有引号的原始文件中。
one: valueOne
two: valueTwo
three: valueThree
Run Code Online (Sandbox Code Playgroud)
我希望这些字符串之一用单引号引起来:
one: valueOne
two: valueTwo
three: 'valueThree'
Run Code Online (Sandbox Code Playgroud)
更改中的default_style参数yaml_dump会影响整个文件,这是不希望的。我考虑过在要包围的字符串的开头和结尾添加单引号:
valueThreeVariable = "'" + valueThreeVariable + "'"
Run Code Online (Sandbox Code Playgroud)
但是,最终会得到如下所示的转储YAML:
one: valueOne
two: valueTwo
three: '''valueThree'''
Run Code Online (Sandbox Code Playgroud)
我尝试使用unicode或原始字符串以各种方式转义单引号,但都无济于事。如何仅使我的YAML值之一成为用单引号引起来的字符串?
我最近有机会听取有关JVM的另一个讨论.据说Java虚拟机在并发性方面做得很好.我找不到任何令人满意的答案,我认为这是一个简单的问题:当JVM运行多线程(因此使用多个虚拟核心,对吗?)它是否利用机器CPU的多个真实核心?
我听到"不总是"或"有时"作为答案; 那么有什么方法可以确保当我们设计代码来运行多个线程时,JVM也将使用CPU的多个内核?或者另一方面,是什么决定了JVM是否使用多核CPU核心?
我真的不能举一个例子说明什么时候这是必要的,但我发现它很有意思,因为我知道设计师更喜欢在项目中确定一切.在一些大型应用程序中拥有多个线程的真正重点是,如果实际上它们永远不会被并行计算?
我目前的目标是编写计算N个元素列表的Erlang代码,其中每个元素都是它的"索引"的因子(因此,对于N = 10,我想得到[1!,2!,3!, ......,10!]).更重要的是,我希望每个元素都能在一个单独的过程中计算出来(我知道它只是效率低下,但我希望能够实现它并将其效率与其他方法进行比较).
在我的代码中,我想使用一个函数作为给定N的"循环",对于N,N-1,N-2 ...产生一个计算阶乘(N)并将结果发送到某些"收集"的过程"函数,将收到的结果打包到列表中.我知道我的概念可能过于复杂,所以希望代码可以解释一下:
messageFactorial(N, listPID) ->
listPID ! factorial(N). %% send calculated factorial to "collector".
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nProcessesFactorialList(-1) ->
ok;
nProcessesFactorialList(N) ->
spawn(pFactorial, messageFactorial, [N, listPID]), %%for each N spawn...
nProcessesFactorialList(N-1).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
listPrepare(List) -> %% "collector", for the last factorial returns
receive %% a list of factorials (1! = 1).
1 -> List;
X ->
listPrepare([X | List])
end.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
startProcessesFactorialList(N) ->
register(listPID, spawn(pFactorial, listPrepare, [[]])),
nProcessesFactorialList(N).
Run Code Online (Sandbox Code Playgroud)
我想它会起作用,我的意思是listPrepare最终会返回一个阶乘列表.但问题是,我不知道如何获得该列表,如何获得它返回的内容?至于现在我的代码返回ok,因为这是nProcessesFactorialList在完成时返回的内容.我想到最后将listPrepare的结果列表发送到nProcessesFactorialList,但是它还需要是一个注册过程,我不知道如何恢复该列表.
基本上,如何从注册过程运行listPrepare(这是我的阶乘列表)中得到结果?如果我的代码根本不对,我会问一个如何让它变得更好的建议.提前致谢.
parallel-processing concurrency erlang functional-programming list
我有一个Map<String, ? extends Collection<SomeClass>>.我想确保没有条目集合的大小为0.所以我试过myMap.values().stream().map(Collection::size).allMatch(size -> size > 0).但是,事实证明,myMap包含空条目.
我想检查我的地图是否包含空条目:resourceMap.values().stream().noneMatch(null)但我得到了一个例外java.util.Objects.requireNonNull.
我决定以一种相对老式的方式来做这个for-in循环for (Map.Entry<String, ? extends Collection> entry : myMap)但是,我收到一个编译错误,告诉我foreach不适用于我的Map.
检查地图中的所有条目是否为空且大小> 0的优雅方法是什么?
java ×5
concurrency ×2
jvm ×2
python ×2
android ×1
android-menu ×1
c# ×1
dictionary ×1
encoding ×1
erlang ×1
java-stream ×1
jit ×1
list ×1
multicore ×1
performance ×1
polymorphism ×1
python-3.x ×1
pyyaml ×1
swing ×1
yaml ×1