我正在开发一个JavaEE应用程序并在Glassfish 3中部署它.我正在使用Ubuntu 12.04,Eclipse用于EE开发人员,以及OpenJDK 6 JDK(包openjdk-6-jdk).到目前为止没问题.
问题是,无论我在哪里查找有关使用OpenJDK进行Java EE开发的信息,我都发现OpenJDK只是Java SE,例如这里或者这里.然而,在我的应用程序中,我使用javax.*了很多,并且正在工作.
我已经下载了OpenJDK 6的源代码,我找到/jdk/src/share/classes/javax/了包含很多类的文件夹,但是有些重要内容缺失了javax.servlet,javax.ejb或者javax.faces.
同样,除了OpenJDK,我没有任何其他JDK,也没有GCJ或Oracle.
我的问题是:这怎么可能?OpenJDK是否支持JavaEE API?可以用它,还是我需要下载并安装Oracle JDK?我不明白这里的意思吗?
请注意,除了SDK for EE之外,Oracle列表SDK for SE,所以我认为它们不同,对吧?
亲切的问候
我在Python的类型中有很多函数:
def foobar(one, two):
"""
My function.
:param int one: My one argument.
:param int two: My two argument.
:rtype: Something nice.
"""
return 100 + one + two
Run Code Online (Sandbox Code Playgroud)
我需要解析docstring以获得类似的字典:
{
'sdesc' : 'My function.',
'params' : [('one', 'My one argument.'), ('two', 'My two argument.')],
'rtype' : 'Something nice.'
}
Run Code Online (Sandbox Code Playgroud)
我可以使用sphinx.util.docstrings.prepare_docstring如下:
>>> prepare_docstring(foobar.__doc__)
['My function.', ':param int one: My one argument.', ':param int two: My two argument.', ':rtype: Something nice.', '']
Run Code Online (Sandbox Code Playgroud)
我可以创建我自己的解析器,可能使用正则表达式用于params和rtype,以及东西.
但有没有更好的方法来做到这一点或更好的方法?怎么样sphinx.ext.autodoc?关于如何解析这种文档字符串的任何其他建议?
我正在尝试使用在PyGObject中具有GtkSourceView小部件的Glade文件.我已经写了一篇关于如何在Glade中使用新的GtkSourceView 3.0的小指南:http://cjenkins.wordpress.com/2012/05/08/use-gtksourceview-widget-in-glade/
问题是当我想从PyGObject加载Glade时:
from gi.repository import Gtk, GtkSource
from os.path import abspath, dirname, join
WHERE_AM_I = abspath(dirname(__file__))
class MyApp(object):
def __init__(self):
self.builder = Gtk.Builder()
self.glade_file = join(WHERE_AM_I, 'test.glade')
self.builder.add_from_file(self.glade_file)
if __name__ == '__main__':
try:
gui = MyApp()
Gtk.main()
except KeyboardInterrupt:
pass
Run Code Online (Sandbox Code Playgroud)
当我运行该文件时,我收到此错误:
Traceback (most recent call last):
File "test.py", line 15, in <module>
gui = MyApp()
File "test.py", line 11, in __init__
self.builder.add_from_file(self.glade_file)
File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in function
return info.invoke(*args, **kwargs)
gi._glib.GError: Invalid object type `GtkSourceView'
Run Code Online (Sandbox Code Playgroud)
Glade文件(test.glade)只是一个带有GtkSourceView小部件的窗口: …
当我想要在Bash中使用参数的变量中的可变默认值时,有人可以指出我的问题是什么吗?以下代码不起作用:
#!/bin/bash
VARIABLE1="defaultvalue1"
VARIABLE2="defaultvalue2"
# Check for first argument, if found, overrides VARIABLE1
if [ -n $1 ]; then
VARIABLE1=$1
fi
# Check for second argument, if found, overrides VARIABLE2
if [ -n $2 ]; then
VARIABLE2=$2
fi
echo "Var1: $VARIABLE1 ; Var2: $VARIABLE2"
Run Code Online (Sandbox Code Playgroud)
我希望能够做到:
#./script.sh
Var1: defaultvalue1 ; Var2: defaultvalue2
#./script.sh override1
Var1: override1 ; Var2: defaultvalue2
#./script.sh override1 override2
Var1: override1 ; Var2: override2
Run Code Online (Sandbox Code Playgroud)
提前致谢 :)
短篇故事:
Python 3 Unicode字符串查找是O(1)还是O(n)?
很长的故事:
C字符数组中字符的索引查找是恒定时间O(1),因为我们可以确定地跳转到连续的内存位置:
const char* mystring = "abcdef";
char its_d = mystring[3];
Run Code Online (Sandbox Code Playgroud)
就像说:
char its_d = *(mystring + 3);
Run Code Online (Sandbox Code Playgroud)
因为我们知道sizeof(char)C99是1,并且由于ASCII而一个字符适合一个字节。
现在,在Python 3中,字符串文字是unicode字符串,我们具有以下内容:
>>> mystring = 'ab€cd'
>>> len(mystring)
5
>>> mybytes = mystring.encode('utf-8')
>>> len(mybytes)
7
>>> mybytes
b'ab\xe2\x82\xaccd'
>>> mystring[2]
'€'
>>> mybytes[2]
226
>> ord(mystring[2])
8364
Run Code Online (Sandbox Code Playgroud)
由于采用UTF-8编码,字节2> 127,因此对字符3使用多字节表示形式。
我只能得出结论,因为字符的多字节表示形式,所以Python字符串中的索引查找不能为O(1)吗?这就是说mystring[2]是O(n),并且为了找到索引处的字符,正在以某种方式对存储阵列进行即时解释?如果是这样,我是否错过了一些相关文档说明这一点?
我做了一些非常基本的基准测试,但我无法推断出O(n)行为:https : //gist.github.com/carlos-jenkins/e3084a07402ccc25dfd0038c9fe284b5
$ python3 lookups.py
Allocating memory...
Go!
String lookup: 0.513942 ms
Bytes lookup : 0.486462 ms
Run Code Online (Sandbox Code Playgroud)
编辑:更新了更好的例子。