我最近开始学习Clojure,而且我在使用命名空间时遇到了一些困难.正如Clojure的创造者所说,新人往往很难将这个概念弄清楚.我不清楚它(use ...)和之间的区别(require ...).例如,如果我说(use 'clojure.contrib.str-utils2)在clojure.core命名空间中的函数被clojure.contrib.str-utils2中的函数替换,那么在REPL中玩游戏,但是当我使用时,这不会发生(require 'clojure.contrib.str-utils2).我不确定我是否总是想要替换clojure.core中的内容,那么有人可以指出一些最佳实践来导入外部内容并在Clojure中管理名称空间吗?
哦,还有,我什么时候应该使用:use和:require?只在里面(ns ....)?
提前致谢.
我正在尝试选择一个基于Java的Web框架来启动一个新项目,到目前为止,我在决定时遇到了一些麻烦.我一直在使用普通的GWT,我不得不说这是非常好的,架构,API和文档都非常好,但我缺乏应用CSS和美化我的小部件的知识,所以我需要一些附带的东西包括在内,Gwt Ext被排除在外,因为它并非完全基于GWT,Ext Gwt很好,但它们完全偏离GWT并再次实现所有内容(数据存储,事件等),还有许可证.我发现了Vaadin并且看起来相当不错,除了它改善了GWT的弱点(在我看来),即一切都是客户端,预渲染(整个网站都在客户端,即使,让我们说,您的客户尚未通过身份验证).关于Vaadin的唯一问题是我没有看到很多广泛使用,也许是最近的,所以我不能得到很多意见.
所提出的任何解决方案都不一定要基于GWT,只是它以一种很好的方式集成了JS和JAVA,从我的Java开发人员那里抽象出来,为了开发Web,我需要学习的所有JS优点应用程序.
所以,基本上:Java开发人员需要对不同的基于Java的Web框架提出意见.要求:对使用它不需要CSS或JS的深入了解(当然,基本知识总是需要的,但我不想过多地修改内部结构),包含的好看,可接受的外观小部件,使用能力Java开发工具/技术(Eclipse,Netbeans等).
正如您所看到的,GWT几乎符合我的所有要求,这是我的第一选择,但现在我想获得更多有关其他选项的反馈.提前谢谢,teto.
我是一名C++新手,当我在一个需要它的项目上工作时,试图并行学习这门语言.我使用一个相当受欢迎和稳定的开源库来做很多繁重的工作.通过阅读库的源代码,教程和代码示例,我注意到它们在声明类型时总是使用完全限定的名称,这通常会产生非常长且冗长的行,并且有很多::'s.这被认为是C++中的最佳实践吗?有没有不同的方法来处理这个?
阅读这篇关于Java并发的DZone文章我想知道是否有以下代码:
private volatile List list;
private final Lock lock = new ReentrantLock();
public void update(List newList) {
ImmutableList l = new ImmutableList().addAll(newList);
lock.lock();
list = l;
lock.unlock();
}
public List get() {
return list;
}
Run Code Online (Sandbox Code Playgroud)
相当于:
private volatile List list;
public void update(List newList) {
ImmutableList l = new ImmutableList().addAll(newList);
list = l;
}
public List get() {
return list;
}
Run Code Online (Sandbox Code Playgroud)
为简洁起见,省略了try {} finally {}块.我假设ImmutableList类是一个真正不可变的数据结构,它拥有自己的数据,例如google-collections库中提供的数据.由于列表变量是易变的,基本上正在进行的是即时复制,只是跳过使用锁是不安全的?
我是一名初级开发人员,最近开始在一个非常小的办公室工作,他们在那里进行大量的内部开发.我从未参与过涉及多个开发人员的项目,或者与这些开发人员一样大而复杂.
问题是他们没有充分利用所有可用的工具(版本控制,自动构建,持续集成等):主要是项目是eclipse/netbeans中的一个大项目,使用cvs进行版本控制,所有内容都已检入(包括库jar),当我开始为小任务分支并将它们合并回来时,他们第一次开始使用分支.随着项目变得越来越大,越来越复杂,问题开始出现依赖关系,项目结构与IDE相关联,建设有时可能是PITA等等.最好是忙碌.
我想要的是建立一个开发环境,其中大部分问题都将消失,我将节省时间和精力.我想以独立于使用版本控制的IDE的方式设置项目(我现在倾向于SVN),避免依赖混乱并尽可能地自动构建.
我知道有多种方法和工具,并且不希望看到圣战开始,我真的很感激基于经验的实用建议以及在面对类似问题时你发现有用的东西.所有项目都是Java项目,范围从Web应用程序到"通用"项目,我大部分时间都使用Eclipse,但如果需要也可以使用Netbeans.提前致谢.
我有多个线程,每个线程都有自己的专用并发队列,他们所做的就是运行无限循环从中检索消息.可能会发生其中一个队列在一段时间内(可能是几秒钟)没有收到消息,而且它们也可能会突然发生并且需要快速处理.
我想知道在第一种情况下最适合做什么:使用阻塞队列并阻塞线程,直到我有更多输入或执行Thread.yield()?
我希望在给定时间尽可能多的CPU资源可用,因为并发线程的数量可能会随着时间的推移而增加,但我也不希望消息处理落后,因为无法保证线程何时在执行yield()时将被重新安排执行.我知道硬件,操作系统和其他因素在这里发挥了重要作用,但是将它放在一边,从Java(JVM?)的角度来看它,最优化的是什么?