在JavaScript中定义枚举的首选语法是什么?就像是:
my.namespace.ColorEnum = {
RED : 0,
GREEN : 1,
BLUE : 2
}
// later on
if(currentColor == my.namespace.ColorEnum.RED) {
// whatever
}
Run Code Online (Sandbox Code Playgroud)
还是有更优选的成语?
是否可以在Java中创建泛型类型的实例?我正在考虑基于我所看到的答案是no(由于类型擦除),但如果有人能看到我缺少的东西,我会感兴趣:
class SomeContainer<E>
{
E createContents()
{
return what???
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:事实证明,超级类型标记可用于解决我的问题,但它需要大量基于反射的代码,如下面的一些答案所示.
我会把这个开放一段时间,看看是否有人提出了与Ian Robertson的Artima文章截然不同的任何东西.
我正在编写一个Web应用程序,需要通过AJAX将JSON数据存储在一个小的,固定大小的服务器端缓存中(想想:Opensocial配额).我无法控制服务器.
我需要减少存储数据的大小以保持服务器端配额,并且希望能够在将其发送到服务器之前在浏览器中对字符串化JSON进行gzip.
但是,我找不到Gzip的JavaScript实现方式.有关如何在发送之前压缩客户端数据的任何建议吗?
使用时是否存在偏好或行为差异:
if(obj.getClass().isArray()) {}
Run Code Online (Sandbox Code Playgroud)
和
if(obj instanceof Object[]) {}
Run Code Online (Sandbox Code Playgroud)
?
确切地说,BSD套接字send()函数何时返回给调用者?
在非阻塞模式下,它应该立即返回,对吗?
至于阻止模式,手册页说:
当消息不适合套接字的发送缓冲区时,send()通常会阻塞,除非套接字已置于非阻塞I/O模式.
问题:
send()如果内核发送缓冲区中有空间,则调用将始终立即返回?send()TCP和UDP 的呼叫行为和性能是否相同?如果没有,为什么不呢?我正在使用一些使用该socket.fromfd()函数的Python套接字代码.
但是,此方法并非在所有平台上都可用,因此在未定义方法的情况下,我正在编写一些回退代码.
确定方法是否在运行时定义的最佳方法是什么?以下是否足够或有更好的成语?
if 'fromfd' in dir(socket):
sock = socket.fromfd(...)
else:
sock = socket.socket(...)
Run Code Online (Sandbox Code Playgroud)
我有点担心文档dir()似乎不鼓励使用它.将getattr()是一个更好的选择,如:
if getattr(socket, 'fromfd', None) is not None:
sock = socket.fromfd(...)
else:
sock = socket.socket(...)
Run Code Online (Sandbox Code Playgroud)
思考?
编辑正如Paolo所指出的,这个问题几乎与确定属性存在的问题重复.但是,由于使用的术语是不相交的(lk的"对象有一个属性" vs我的"模块有一个函数"),保留这个问题以获得可搜索性可能会有所帮助,除非两者可以组合.
是否有可能创建宏来替换operator new包含额外args的所有形式的重载...说__FILE__和__LINE__?
麻烦似乎operator new可以用括号括或不用括号编码,因此:
类似对象的宏:
#define new new(__FILE__, __LINE__)
Run Code Online (Sandbox Code Playgroud)
将取代声明,如:
A* a = new A();
Run Code Online (Sandbox Code Playgroud)和类似函数的宏:
#define new(A) new (A, __FILE__, __LINE__)
Run Code Online (Sandbox Code Playgroud)
将取代声明,如:
A* a = new(std::nothrow) A();
Run Code Online (Sandbox Code Playgroud)不幸的是,尝试使用相同的标识符声明两个宏是错误的,即使它们的类型不同,因此以下操作失败:
#define new new(__FILE__, __LINE__)
#define new(A) new (A, __FILE__, __LINE__) // Error: "new" already defined
Run Code Online (Sandbox Code Playgroud)
由于我正在使用g ++,我希望使用它们的可变参数宏的语法会产生成功,但遗憾的是没有.下列:
#define new(...) new(__FILE__, __LINE__, ## __VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)
只匹配new(xyx) A(),而不是new A().
如果类路径中有两个包含同一类的不同版本的jar,则classpath顺序变得至关重要.
我正在寻找一种工具,可以检测和标记给定类路径或文件夹集中的此类潜在冲突.
当然是一个开始的脚本:
classes=`mktemp`
for i in `find . -name "*.jar"`
do
echo "File: $i" > $classes
jar tf $i > $classes
...
done
Run Code Online (Sandbox Code Playgroud)
有一些聪明的排序/ uniq/diff/grep/awk以后有潜力,但我想知道是否有人知道任何现有的解决方案.
在Oracle中,给出一个简单的数据表:
create table data (
id VARCHAR2(255),
key VARCHAR2(255),
value VARCHAR2(511));
Run Code Online (Sandbox Code Playgroud)
假设我想"插入或更新"一个值.我有类似的东西:
merge into data using dual on
(id='someid' and key='testKey')
when matched then
update set value = 'someValue'
when not matched then
insert (id, key, value) values ('someid', 'testKey', 'someValue');
Run Code Online (Sandbox Code Playgroud)
有比这更好的方法吗?这个命令似乎有以下缺点:
如果这是最好的方法,有没有办法在JDBC中设置两次每个参数?
我最近遇到了一些看起来像的代码:
if(sizeof(var,2) == 4) { ... }
Run Code Online (Sandbox Code Playgroud)
(哪里var是一种类型)
我很惊讶地发现看起来似乎是sizeof运营商的两个论点.快速扫描ISO/ANSI C99标准并没有产生任何秘密.我无法想出任何允许在那里使用逗号的语法.
在搜索Google Code时,我能够在某些PPC代码中找到此语法的示例.
这是一些特定于PPC的语法吗?这是什么意思?
编辑:事实证明,我所看到的 - 以及链接代码 - 都是WindRiver Diab编译器特有的语法:
sizeof(type,int-const):
如果int-const为0,则sizeof返回类型的字节大小.
如果int-const为1 sizeof,则返回类型的对齐方式.
如果int-const为2 sizeof,则返回一个指定类型类型的整数常量.在Diab C/C++用户指南中查找"sizeof operator" 了解值.
哇,他们真的超载了sizeof运营商的意义.
编辑2:完整文档在这里:http://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3001432