小编Han*_*etz的帖子

如何在普通C中启动线程?

我在C中使用了fork()来启动另一个进程.如何开始新线程?

c multithreading

49
推荐指数
5
解决办法
7万
查看次数

我可以在Java代码中做些什么来优化CPU缓存?

编写Java程序时,是否会影响CPU如何利用其缓存来存储数据?例如,如果我有一个被大量访问的数组,如果它足够小以适应一个缓存行(通常是64位机器上的128个字节),它会有帮助吗?如果我将一个使用频繁的对象保持在该限制内,我可以期待它的成员使用的内存靠近并保持缓存吗?

背景:我正在构建一个压缩的数字树,它受到了C中的Judy数组的启发.虽然我主要使用节点压缩技术,但Judy将CPU缓存优化作为中心设计目标,节点类型为以及在它们之间切换的启发式方法受到很大影响.我想知道我是否有机会获得这些好处?

编辑:到目前为止答案的一般建议是,当你离开机器时,不要试图微观优化机器级细节,就像你在Java中一样.我完全同意,所以觉得我必须添加一些(希望)澄清的评论,以更好地解释为什么我认为这个问题仍然有意义.这些如下:

有些东西通常更容易被计算机处理,因为它们的构建方式.我已经看到Java代码在压缩数据(来自内存)上的运行速度明显更快,即使解压缩必须使用额外的CPU周期.如果数据存储在磁盘上,很明显为什么会这样,但当然在RAM中它的原理是相同的.

现在,计算机科学有很多东西可以说这些东西是什么,例如,C语言中的引用位置很好,我想它在Java中仍然很好,甚至可能更好,如果它有助于优化运行时做更聪明的事情.但是你如何实现它可能会有很大的不同.在C中,我可能编写代码来管理更大的内存块本身,并使用相邻的指针来获取相关数据.

在Java中,我不能(并且不想)了解特定运行时将如何管理内存.因此,我必须对更高级别的抽象进行优化.我的问题基本上是,我该怎么做?对于引用的局部性,"在一起"是什么意思在我在Java中工作的抽象层次?相同的对象?相同的类型?相同的阵列?

总的来说,我不认为抽象层会改变"物理定律",比喻说.即使你不再调用malloc(),每次空间不足时,你的数组大小加倍也是一个很好的策略.

java optimization caching

47
推荐指数
4
解决办法
1万
查看次数

我应该如何在hashCode()中将long映射到int?

我有一系列具有long字段的对象,其值唯一地标识整个系统中的特定对象,非常类似于GUID.我已经覆盖Object.equals()了使用这个id进行比较,因为我希望它能够处理对象的副本.现在我想要覆盖Object.hashCode(),这基本上意味着将我映射long到一些int返回值.

如果我理解hashCode正确的目的 ,它主要用在哈希表中,因此需要均匀分布.这意味着,只需返回id % 2^32就足够了.这就是全部,还是我应该注意别的什么?

java algorithm hash

47
推荐指数
3
解决办法
4万
查看次数

更快的方法(键盘快捷键?)在Eclipse中使用快速修复?

我经常使用建议的错误更正的Eclipse功能(Galileo)来自动创建代码存根或重构事物.例如,我会编写一个方法来调用其他尚不存在的方法,然后将鼠标移到错误消息上并单击"create method".或者,更改this为类名,然后static从快速修复中选择"添加修饰符".

我认为这非常方便,因为它让我可以在我的代码中停留在一个位置,然后"远程"连接我屏幕上当前不可见的内容.我觉得很烦人的是,我必须离开键盘,将鼠标悬停在错误符号上,等待工具提示弹出,然后单击选项(这样做,我有时会将鼠标移动一下边缘和工具提示再次消失 - 非常烦人).

我错过了一个更快的方法吗?我似乎无法找到键盘快捷键,但之后我忽略了之前巨大的偏好对话框中的内容.

eclipse

45
推荐指数
1
解决办法
2万
查看次数

在Java中扩展Serializable类时,我选择serialVersionUID是否重要?

我正在扩展一个实现Serializable接口的类(ArrayBlockingQueue).Sun的文档(和我的IDE)告诉我,我应该设置这个值以防止恶作剧:

但是,强烈建议所有可序列化类显式声明serialVersionUID值,因为默认的serialVersionUID计算对类细节高度敏感,这些细节可能因编译器实现而异,因此在反序列化期间可能导致意外的InvalidClassExceptions.

现在,我不在乎放在那里的价值.有关系吗?

java serialization

42
推荐指数
2
解决办法
8719
查看次数

我可以使用Eclipse轻松地将JavaDoc添加到包中吗?

我使用javadoc来记录我的类和方法.我也想在我的软件包中添加一些概述信息.我喜欢Eclipse在键入后为每个类或方法创建匹配的Doc Comment的存根/**<Enter>.Eclipse也有一种生成package.html文件的简单方法吗?

eclipse javadoc

40
推荐指数
3
解决办法
2万
查看次数

休息只会留下try/catch或周围的循环吗?

如果我有try ... catch一个内部的块while循环,并有#SA breakcatch,不执行程序退出循环?

如:

while (!finished) {
    try {
        doStuff();
    } catch (Exception e) {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

doStuff()中抛出的异常会退出循环吗?

java

40
推荐指数
2
解决办法
4万
查看次数

只使用Django的某些部分?

我喜欢Django,但是对于特定的应用程序我只想使用它的一部分,但是我对Django在内部的工作方式不太熟悉,所以也许有人可以指出我正确的方向,我有什么查看.

具体来说,我想使用:

  • 模型和数据库抽象
  • 缓存API,但我想避免通过缓存数据库查询,而不是HTML生成,并且由于在Django的缓存框架适用于后者,我不知道是否还没有这真的合适.

不会用:

  • 模板
  • urlconfigs

或者,更确切地说,我既不使用HTTP也不使用HTML.所以基本上,我有一个不同于通常的输入/输出链.

这可以吗?

我在Django中的个人杀手功能是我可以对模型进行的对象/数据库映射,所以如果有另一种技术(不必是Python,我正处于设计阶段,我对语言非常不可知)平台)给了我相同的能力,这也很棒.

python django

37
推荐指数
3
解决办法
1万
查看次数

Python/Django中的Unicode与UTF-8混淆?

我在Django教程中偶然发现了这段话:

Django模型有一个默认的str()方法,它调用unicode()并将结果转换为UTF-8字节串.这意味着unicode(p)将返回一个Unicode字符串,str(p)将返回一个普通字符串,其字符编码为UTF-8.

现在,我很困惑,因为afaik Unicode不是任何特定的表示,那么Python中的"Unicode字符串"是什么?这是否意味着UCS-2?谷歌搜索出现了这个"Python Unicode教程",大胆地说明了这一点

Unicode是一种双字节编码,涵盖了世界上所有常见的书写系统.

这是完全错误的,还是它?我已经多次被字符集和编码问题搞糊涂了,但在这里我很确定我正在阅读的文档很混乱.当有人给我一个"Unicode字符串"时,是否有人知道Python中发生了什么?

python django unicode

30
推荐指数
2
解决办法
1万
查看次数

模拟IMAP或POP服务器进行单元测试的最简单方法是什么?

我想对从电子邮件收件箱中提取邮件的Java应用程序进行单元测试,就像这个人一样.目前,我对我们公司的真实邮件服务器上的真实邮箱运行单元测试,这很容易设置,但是有以下缺点:

  • 您必须在运行测试之前发送实际的电子邮件
  • 添加更多测试用例可能很困难,例如,因为您可能希望针对不同的安全策略进行测试
  • 测试取决于与邮件服务器的工作网络连接以及以对我没有意义的方式耦合开发和系统管理的现有邮件帐户.

我想火起来的IMAP服务器的本地端口,假货基于存储在测试类文件一起测试数据的收件箱上.我可以想到以下方法:

  • 运行套接字服务器并实现基本的IMAP子集
  • 使用更高级别的库来构建电子邮件服务器
  • 使用我可以嵌入到我的测试中的现有电子邮件服务器实现

我想避免的第一个选项,它看起来有点简单,但我是从类似的经历,有工作的一个长尾巴进一步等待的道路猜测.试想想,以测试安全连接等.同样,第二个选择似乎想太多的工作,但我还没有找到一个邮件服务器,但将允许第三个.

如果重要,我在构建过程中使用Maven和TestNG.

java email testing

25
推荐指数
1
解决办法
1万
查看次数