>>> class Abcd:
... a = ''
... menu = ['a', 'b', 'c']
...
>>> a = Abcd()
>>> b = Abcd()
>>> a.a = 'a'
>>> b.a = 'b'
>>> a.a
'a'
>>> b.a
'b'
Run Code Online (Sandbox Code Playgroud)
这一切都是正确的,每个对象都有自己的'a',但......
>>> a.menu.pop()
'c'
>>> a.menu
['a', 'b']
>>> b.menu
['a', 'b']
Run Code Online (Sandbox Code Playgroud)
怎么会发生这种情况?以及如何使用list作为类属性?
我希望让用户在我的应用中输入关键字,然后在谷歌搜索此关键字,对结果执行一些逻辑并向用户显示最终结论.
这可能吗?如何从我的应用程序在谷歌上执行搜索?回复的格式是什么?如果有人为此提供了一些代码示例,我们将不胜感激.
谢谢,
在我正在研究的一些代码中,我应该处理十个独立的参数,这些参数可以采用两个值中的一个(0或1).这会产生2 ^ 10个不同的条件.有些条件永远不会发生,可以省略,但那些确实发生的情况仍然很多,并且switch处理所有案件都是疯了.
我想使用10个if语句而不是巨大的语句switch.为此,我知道我应该使用标志位,或者更确切地说标记字节,因为语言是javascript,并且更容易使用10字节字符串来表示10位二进制.
现在,我的问题是,我不知道如何实现这一点.我已经看到这在APIs中使用,其中多个可选择的选项用数字1,2,4,8,...,n ^(n-1)公开,它们是1,10,100,1000等的十进制等值.在二进制.因此,如果我们进行调用bar = foo(7),bar将是一个具有三个最右边标志启用的任何选项的对象.
我可以将十进制数转换为二进制数,并在每个if语句中检查是否设置了相应的数字.但我想知道,有没有办法确定n-th十进制数字的数字是零或一二进制形式,而不实际进行转换?
我想知道以下哪一项会为一个加载大量javascript(jQuery + jQuery UI +各种其他javascript文件)的页面带来更好的性能.我已经浏览了大部分YSlow和Google Page Speed的内容,但我对某个特定细节感到疑惑.
对我来说,一个关键的问题是,我正在研究的网站不在公共网络上; 它是一个企业对企业平台,几乎所有用户都是重复访问者(因此有数据缓存,这是YSlow假设的,对于大量访问者来说不是这种情况).
首先,YSlow等工具推荐的标准方法是连接它,压缩它,并在页面末尾加载的单个文件中提供它.这种方法听起来相当有效,但我认为这里推理的一个关键部分是提高没有缓存数据的用户的性能.
我目前拥有的系统是这样的
现在,我的理解是,如果尚未达到javascript文件的缓存过期日期,则立即使用缓存版本; 根本没有向服务器发送HTTP请求.如果这是正确的,我会假设有多个标签不会导致任何性能损失,因为我仍然没有在大多数页面上有任何额外的请求(从上面回忆几乎所有用户都有填充的缓存).
除此之外,不加载JS意味着浏览器不必解释或执行它不需要的所有额外代码; 作为一个B2B应用程序,我们的大多数用户不幸遇到了IE6及其痛苦的JS引擎.
另一个好处是,当代码更改时,只需要再次获取受影响的文件,而不是整个集(被授予,只需要获取一次,因此这不是一个好处).
我也在考虑使用LabJS来允许在没有缓存的情况下并行加载JS.
具体问题
我正在实施一项JavaEE任务,我在接受采访时给出了这项任务.
我有一些关于EJB的经验,但没有任何与JMS和MDB相关的经验.所以这是我通过众多例子找到的:
topic/ queue,jmsactivationConfigJBoss需要该属性,而在Sun教程中则不然.这可能只是JBoss,但由于它经过认证可以实现规范,因此规范似乎并未指定这些内容.所有涉嫌携带的东西都消失了.
所以我想知道 - 为什么声称JavaEE是可移植的,你可以把它放在另一个应用程序服务器上然后神奇地运行,如果这些非常基本的东西看起来根本不可移植的话.
PS对不起咆哮,但我想我可能会做错/做错,所以陈述你的意见.
好吧,我从许多地方和消息来源得知,每当我覆盖equals()方法时,我都需要覆盖hashCode()方法.但请考虑以下代码
package test;
public class MyCustomObject {
int intVal1;
int intVal2;
public MyCustomObject(int val1, int val2){
intVal1 = val1;
intVal2 = val2;
}
public boolean equals(Object obj){
return (((MyCustomObject)obj).intVal1 == this.intVal1) &&
(((MyCustomObject)obj).intVal2 == this.intVal2);
}
public static void main(String a[]){
MyCustomObject m1 = new MyCustomObject(3,5);
MyCustomObject m2 = new MyCustomObject(3,5);
MyCustomObject m3 = new MyCustomObject(4,5);
System.out.println(m1.equals(m2));
System.out.println(m1.equals(m3));
}
}
Run Code Online (Sandbox Code Playgroud)
这里输出是真的,完全按照我想要的方式错误,我根本不关心覆盖hashCode()方法.这意味着hashCode()覆盖是一个选项而不是每个人都说的强制选项.
我想要第二次确认.
我有几个带代码测试代码的文件(使用"unittest"类).
后来我发现测试数据库完整性也很好.我把它放到一个单独的目录树中.(像键的格式正确,父节点和子节点指向正确等等.编辑:这是一个nosql项目,我不能依赖数据库级别检查谎言参照完整性等.)
我使用相同的unittest类进行完整性测试.
现在我想知道保持这种分离是否真的有意义.为了测试数据的完整性,我经常复制用于测试处理数据的代码的代码部分.
但它不一样.代码测试使用测试数据库(在每次测试后删除),完整性测试连接到实时数据并进行分析.我想从cron调用的完整性测试,如果实时数据库中发生了某些事情,则发送警报.
你会怎么处理?这样的设置有标准吗?你有什么经历?
我倾向于将所有内容放在同一个文件中,这将导致代码测试也由生产环境中的cron执行.
编辑:推动我的是,尝试保持项目简单,不要让单个任务或工作流程触及太多文件.没有所有的测试,我已经有了一个类文件,一个子类,一个相关的类,一些库(帮助器)文件和主代码.测试添加一个文件.它有助于我在编码时保持注意力集中,压力更小,我相信我减少了错误,我可以更快地记住并找到一个受影响的文件较少的特定代码部分.每个工作流程只有一个测试文件可以帮到这里 如果我保持它是单独的,有2个文件(数据完整性测试和代码测试),也许3个(两者的公共库).抽象会增加复杂性.
Edit2:我现在正在重构一点,只是将数据测试文件移动到代码测试所在的同一目录树中,但保留名称为"完整性"或"测试"的不同文件.我不会(还)合并这些文件,因为2个人建议反对它,我相信他们现在的经验和建议.我现在将使用代码重复.
编辑3:我忘了提到每次运行的测试选择不是由这种情况下的树结构决定的.测试在主文件中枚举,因此我目前有2个主文件"完整性"和"代码测试",并且测试可以存在于相同的直接结构中.
也许会有更多人回答.到目前为止,感谢您提供宝贵的意见,这已经帮助我开发了最终的结构!
编辑4:我现在做了更多的重构.我似乎应该保留2个文件,但目的略有修改.一个针对生产服务器上的计划监视.另一个用于开发.但在这两个文件中都可以进行完整性测试或代码测试.在两个文件中,可以在测试数据库(在测试之后擦除)和永久数据库(每个都有永久数据库,生产服务器和开发服务器)上执行操作.还有一件重要的事情:我发现自己将大量常用代码从测试文件移到了类文件中.所以这些课程也获得了仅用于测试的能力.到目前为止我喜欢这个,感觉很干净.我还没有(还)创建一个在两个测试前端之间共享的测试库,这段代码已经转到了现在正在考虑的obejct的类文件中.
请注意,我在下面的评论是用"user89021"签名的,但是我是karlthorwald.我无能为力.
这是一个很大的问题.
我有一个结构良好但单片的代码库,它具有原始的模块化架构(所有模块实现接口但共享相同的类路径).我意识到这种方法的愚蠢以及当我在可能具有不同冲突版本的库的应用程序服务器上进行部署时它所代表的问题.
我现在依赖于大约30个罐子而且在中途将它们收起来.现在,我的一些模块很容易声明版本化的依赖关系,例如我的网络组件.它们静态引用JRE和其他BNDded库中的类,但我的JDBC相关组件通过Class.forName(...)实例化,并且可以使用任意数量的驱动程序之一.
我按服务区域将所有内容分解为OSGi包.
我希望我的代码能够在没有OSGi的情况下通过单个jar文件使用我的所有依赖项并且根本没有OSGi(通过JARJAR),也可以通过OSGi元数据和带有依赖性信息的粒度包进行模块化.
如何配置我的包和我的代码,以便它可以动态利用类路径和/或OSGi容器环境中的任何驱动程序(Felix/Equinox/etc.)?
是否有运行时方法来检测我是否在容器中兼容的OSGi容器中运行(Felix/Equinox/etc.)?
如果我在OSGi容器中,是否需要使用不同的类加载机制?
我是否需要将OSGi类导入到我的项目中,以便能够通过我的数据库模块加载at-bundle-time-unknown JDBC驱动程序?
我还有第二种获取驱动程序的方法(通过JNDI,它只在app服务器上运行时才真正适用),我是否需要更改支持OSGi的应用服务器的JNDI访问代码?
我的问题不是fork()的最佳方案.但是,这是我能得到的最好的功能.
我正在使用Mac OSX上的Firefox插件.为了使其健壮,我需要创建一个新进程来运行我的插件.问题是,当我分叉一个新进程时,就像这样:
if (fork() == 0) exit(other_main());
但是,由于状态未清除,我无法正确初始化我的新进程(调用NSApplicationLoad等).有任何想法吗?顺便说一下,我当然不想创建一个新的二进制文件并执行它.
#include<stdio.h>
#define a(x) (x * x)
int main()
{
int i = 3, j;
j = a(i + 1);
printf("%d", j);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么程序没有提供输出16.(我得到了输出7.)
我非常理解这一点,但如果程序是这样的:
#include<stdio.h>
#define a(x) (x * x)
int main()
{
int i = 3, j, k;
j = a(i++);
k = a(++i);
printf("%d\n%d", j, k);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
那么为什么上面的程序给出了以下输出:
9
49
Run Code Online (Sandbox Code Playgroud)