我是一名具有基本Java经验的新手程序员,目前正在学习Python.我在另一个问题主题中偶然发现了这篇博文:
http://dirtsimple.org/2004/12/python-is-not-java.html
我对发布的主题有几个问题:
1)"哦,所有那些Foo.Bar.Baz属性链都不是免费的......,所以每个点都很重要."
这个特殊问题的解决方案是事先导入模块及其方法吗?如:
from Foo.Bar import Baz
...
#now Baz() can be called directly without using Foo.Bar.Baz() everytime
Run Code Online (Sandbox Code Playgroud)
2)有转换声明吗?Python转换是一个哈希表,而不是一堆if-then语句.
关于这个主题有几个相关的答案,但它们也提出了几个问题:
3)吸气剂和制定者是邪恶的.邪恶,邪恶...不写getter和setter ......这就是内置的'属性'......在Python中,这个(getter和setter)是愚蠢的,因为你可以从正常开始属性并随时改变主意,不会影响班级的任何客户.
我真的不太了解这一部分.
此外,似乎在Python中可以轻松访问公共和私有方法或变量,与C++和Java相比.这种行为有任何设计原因吗?
最后,是否有任何关于Python与其他编程语言的推荐进一步阅读?
在mongodb中,我有一个map功能如下:
var map = function() {
emit( this.username, {count: 1, otherdata:otherdata} );
}
Run Code Online (Sandbox Code Playgroud)
并减少功能如下:
var reduce = function(key, values) {
values.forEach(function(value){
total += value.count; //note this line
}
return {count: total, otherdata: values[0].otherdata}; //please ignore otherdata
}
Run Code Online (Sandbox Code Playgroud)
问题在于注意到:
total += value.count;
Run Code Online (Sandbox Code Playgroud)
在我的数据集中,reduce函数被调用9次,并且假设的map减少的结果计数应该是8908.
使用上面的行,返回的结果将正确返回为8908.
但是,如果我将线路更改为:
total += 1;
Run Code Online (Sandbox Code Playgroud)
返回的结果只有909,约为假定结果的1/9.
另外,我尝试了print(value.count),打印结果为1.
什么解释了这种行为?
我已经编译并构建了openssl到我的iOS项目,
但是在objective-c中为与此命令行编写等效代码而苦苦挣扎:
openssl rsautl -encrypt -inkey publicKey.pem -pubin -in textfile.txt -out encrypted.bin
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在尝试在c#中实现多线程.
基本思路是:
将会有很多线程进程调用一个函数,并且每个线程都不会按顺序调用它们.
我想限制最大线程数运行.
线程完成后,我想调用另一个线程,直到完成所有操作.
所以为了实现这一点,我使用了一个线程列表.对于每一秒,我检查列表是否已满,以及是否有任何线程完成其工作.
这是我的代码:
List<Thread> threadCompany = new List<Thread>();
List<Thread> fireThisGuy = new List<Thread>();
while (i < _finish) {
if (threadCompany.Count < _MAX_THREAD) {
Thread worker = new Thread(delegate() {
CallFunction(i);
});
threadCompany.Add(worker);
i++;
worker.Start();
}
Thread.Sleep(1000); //Wait for a while instead of keep calling if
foreach (Thread worker in threadCompany) {
if (!worker.IsAlive) {
fireThisGuy.Add(worker); //because threadCompany may not be
//modified in iteration.
}
}
foreach (Thread worker in fireThisGuy) {
threadCompany.Remove(worker);
}
fireThisGuy.Clear();
}
Run Code Online (Sandbox Code Playgroud)
这有效,但我不认为我在这里优雅高效,如何改进我的代码呢?