我正在描绘一组程序的架构,这些程序共享存储在数据库中的各种相互关联的对象.我希望其中一个程序充当服务,为这些对象的操作提供更高级别的接口,以及通过该服务访问对象的其他程序.
我目前的目标是将Python和Django框架作为实现该服务的技术.我很确定我想知道如何在Linux中守护Python程序.但是,它是系统应支持Windows的可选规范项.我对Windows编程没什么经验,也没有Windows服务的经验.
是否可以将Python程序作为Windows服务运行(即在没有用户登录的情况下自动运行)?我不一定要实现这一部分,但我需要大致了解如何做以决定是否按照这些方式进行设计.
编辑:感谢目前为止的所有答案,它们非常全面.我想知道一件事:Windows如何了解我的服务?我可以使用本机Windows实用程序进行管理吗? 在/etc/init.d中放置一个启动/停止脚本相当于什么?
我似乎无法从枚举中访问周围类的实例成员,因为我可以从内部类中访问.这是否意味着枚举是静态的?是否可以访问周围类的实例的范围,或者我是否必须将实例传递到我需要它的枚举方法中?
public class Universe {
public final int theAnswer;
public enum Planet {
// ...
EARTH(...);
// ...
// ... constructor etc.
public int deepThought() {
// -> "No enclosing instance of type 'Universe' is accessible in this scope"
return Universe.this.theAnswer;
}
}
public Universe(int locallyUniversalAnswer) {
this.theAnswer = locallyUniversalAnswer;
}
}
Run Code Online (Sandbox Code Playgroud) JS中的这段代码给了我一个弹出窗口,说"我认为null是一个数字",我觉得有点令人不安.我错过了什么?
if (isNaN(null)) {
alert("null is not a number");
} else {
alert("i think null is a number");
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Firefox 3.这是一个浏览器错误吗?
其他测试:
console.log(null == NaN); // false
console.log(isNaN("text")); // true
console.log(NaN == "text"); // false
Run Code Online (Sandbox Code Playgroud)
那么,问题似乎不是与NaN的精确比较?
编辑:现在问题已经得到解答,我已经清理了我的帖子,以便为存档提供更好的版本.然而,这使得一些评论甚至一些答案有点难以理解.不要责怪他们的作者.我改变的事情包括:
Mono的库比Java少了多少?
我缺乏两种选择的概述,但我对下一个项目有很大的选择自由.我正在寻找有关技术领域的经验
我特别关注你在自己的工作中经历的事情而不是我可以google的事情.我的应用程序将是一个后端服务处理来自时间序列的大量数据.
我的主要目标平台是Linux.
编辑: 为了更充分地说出我的问题,我对整个包(第三方库等)感兴趣,而不仅仅是语言.对于图书馆来说,这可能归结为"Mono比Java更少的库"这个问题?
仅供参考,我已经为这个项目选择了Java,因为它似乎在可移植性方面更具战斗性,并且它在旧系统上已经存在了一段时间.我有点难过,因为我对C#非常好奇,我很乐意做一些大项目,但也许下次.感谢所有的建议.
我喜欢doxygen来创建C或PHP代码的文档.我有一个即将推出的Python项目,我想我记得Python没有/* .. */
评论,并且还有自己的自我文档工具,这似乎是pythonic的文档方式.
由于我熟悉doxygen,我如何使用它来生成我的Python文档?有什么特别需要注意的吗?
在PHP中,函数参数可以通过在函数声明中的参数前加一个&符号来引用,如下所示:
function foo(&$bar)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在,我知道这不是为了提高性能,而是为了允许函数更改通常超出其范围的变量.
相反,PHP似乎使用Copy On Write来避免复制对象(也可能是数组),直到它们被更改为止.因此,对于不更改其参数的函数,效果应与通过引用传递它们的效果相同.
但是,我想知道Copy On Write逻辑是否可能在传递引用时短路,以及是否会对性能产生任何影响.
ETA:可以肯定的是,我认为它并不快,而且我很清楚这不是引用的内容.所以我认为我自己的猜测非常好,我只是想找一个真正知道发生在幕后的人的回答.在PHP开发的五年中,我总是发现很难通过阅读源来获得PHP内部的高质量信息.
Jamie Zawinski在他的(1997)文章"java sucks"中使用了这个术语,好像你应该知道这意味着什么:
我真的很讨厌缺乏向下的乐趣; 匿名类是一个蹩脚的替代品.(我可以没有长寿的闭包,但我发现缺少功能指针是一个巨大的痛苦.)
它似乎是Lisper的俚语,我可以在这里找到以下简短的定义,但不知何故,我想我仍然没有得到它:
许多闭包只在它们引用的绑定范围内使用; 这些在Lisp的说法中被称为"向下的funargs".
如果不是Steve Yegge,我现在感觉很愚蠢,但似乎可以问:
Jamie Zawinski是一位英雄.一个活生生的传奇 [...] 一个人可以使用"向下的funargs"一词,然后瞪着你,只是敢于要求他解释它,你克里汀.
那么在这里有一个Lisper可以为我这样的C风格程序员编译吗?
它就在那里,在它应该索引的包中.我还是打电话的时候
JAXBContext jc = JAXBContext.newInstance("my.package.name");
Run Code Online (Sandbox Code Playgroud)
我得到一个JAXBException说
"my.package.name"不包含ObjectFactory.class或jaxb.index
虽然它确实包含两者.
什么工作,但不是我想要的,是
JAXBContext jc = JAXBContext.newInstance(my.package.name.SomeClass.class);
Run Code Online (Sandbox Code Playgroud)
来自其他人的这个问题出现在一些邮件列表和论坛上,但似乎没有得到答案.
我在OpenJDK 6上运行它,所以我获得了源包并将调试器放入库中.它首先查找jaxb.properties,然后查找系统属性并且无法找到,它尝试使用com.sun.internal.xml.bind.v2.ContextFactory创建默认上下文.在那里,异常被抛出(内部ContextFactor.createContext(String ClassLoader, Map)
),但我看不到发生了什么,因为源不在这里.
ETA:
从ContentFactory的源代码判断,我在这里发现,这可能是那些无法按预期工作的代码:
/**
* Look for jaxb.index file in the specified package and load it's contents
*
* @param pkg package name to search in
* @param classLoader ClassLoader to search in
* @return a List of Class objects to load, null if there weren't any
* @throws IOException if there is an error reading the index …
Run Code Online (Sandbox Code Playgroud)