以下代码是否设置为正确同步呼叫synchronizedMap?
public class MyClass {
private static Map<String, List<String>> synchronizedMap = Collections.synchronizedMap(new HashMap<String, List<String>>());
public void doWork(String key) {
List<String> values = null;
while ((values = synchronizedMap.remove(key)) != null) {
//do something with values
}
}
public static void addToMap(String key, String value) {
synchronized (synchronizedMap) {
if (synchronizedMap.containsKey(key)) {
synchronizedMap.get(key).add(value);
}
else {
List<String> valuesList = new ArrayList<String>();
valuesList.add(value);
synchronizedMap.put(key, valuesList);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,我需要同步块addToMap()来防止另一个线程调用remove()或containsKey()在我通过调用之前put()但我不需要同步块doWork()因为另一个线程无法addToMap() …
是否有一个C库函数将返回字符串中字符的索引?
到目前为止,我发现的所有功能都像strstr一样会返回找到的char*,而不是它在原始字符串中的位置.
谁能解释这种行为?运行:
#!/bin/sh
echo "hello world" | read var1 var2
echo $var1
echo $var2
Run Code Online (Sandbox Code Playgroud)
导致没有任何输出,而:
#!/bin/sh
echo "hello world" > test.file
read var1 var2 < test.file
echo $var1
echo $var2
Run Code Online (Sandbox Code Playgroud)
产生预期的输出:
hello
world
Run Code Online (Sandbox Code Playgroud)
管道不应该在一步中完成第二个例子中test.file的重定向吗?我用破折号和bash shell尝试了相同的代码,并从两者中获得了相同的行为.
我希望能够在Oracle 10.2.0.4中终止用户的查询而不会终止整个会话.这将允许查询结束,但不会将该用户记录在其会话之外,因此他们可以继续进行其他查询.这有可能吗?或者是杀死会话的直言不讳是结束查询执行的唯一方法?
我试图使用axis-java2wsdl ant任务从我的一个java类创建一个wsdl,但是我无法使类路径正确.
我使用的是Ubuntu的libaxis-java软件包,它在$ ANT_HOME/lib中安装了axis-ant.jar,在/ usr/share/java中安装了axis.jar.我的build.xml的有趣部分如下所示:
<property name="library.dir" value="lib"/>
<property name="system.library.dir" value="/usr/share/java"/>
<path id="libraries">
<fileset dir="${library.dir}">
<include name="*.jar"/>
</fileset>
<fileset dir="${system.library.dir}">
<include name="*.jar"/>
</fileset>
</path>
<target name="genwsdl" depends="compile">
<taskdef resource="axis-tasks.properties" classpathref="libraries"/>
<axis-java2wsdl>
details omitted
</axis-java2wsdl>
</target>
Run Code Online (Sandbox Code Playgroud)
运行ant genwsdl结果:
/build.xml:50: taskdef A class needed by class
org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask
cannot be found: org/apache/axis/utils/DefaultAuthenticator
Run Code Online (Sandbox Code Playgroud)
Ant能够找到axis-java2wsdl任务的定义,因为axis-ant.jar在$ ANT_HOME/lib中,但它无法在axis.jar中找到类,即使该jar位于"libraries"定义的路径上
我知道这是一个类路径问题,因为我能够通过符号链接axis.jar到$ ANT_HOME/lib中找不到其他类的DefaultAuthenticator.如何让taskdef识别/ usr/share/lib或我项目的本地lib目录中的jar文件,而无需将所有内容符号链接到$ ANT_HOME/lib中?
编辑:
我终于能够用这一行成功生成wsdl:
ant -lib /usr/share/java/axis.jar -lib /usr/share/java/jaxrpc.jar -lib /usr/share/java/wsdl4j.jar -lib /usr/share/java/commons-logging.jar -lib /usr/share/java/commons-discovery.jar -lib build genwsdl
Run Code Online (Sandbox Code Playgroud)
如果有人能够告诉我在build.xml中无法定义这些库的错误,我仍然非常感激
我从外部API中提取一些数据,并希望在本地缓存结果.我有一个class SearchTerm,我希望通过表格与几个不同的ActiveRecord类型相关联searchable_items.我很确定我的表格设置正确,但我的关联中的某些内容一定是错的.
class Foo < ActiveRecord::Base
has_many :search_terms, :as => :searchable, :through => :searchable_items
end
class Bar < ActiveRecord::Base
has_many :search_terms, :as => :searchable, :through => :searchable_items
end
class SearchTerm < ActiveRecord::Base
has_many :searchables, :through => :searchable_items
end
class SearchableItem < ActiveRecord::Base
belongs_to :search_term
belongs_to :searchable, :polymorphic => true
end
Run Code Online (Sandbox Code Playgroud)
我希望能够做类似的事情SearchTerm.find_by_term('SearchTerm').searchables(它会返回一个Foo和Bar对象的数组)然而,我得到了错误
Could not find the association :searchable_items in model SearchTerm
提前感谢您提供给我的任何见解!
我有一个Java swing应用程序,其中包含三个JComboBoxe不能正确绘制的面板.
combox框只显示为右侧的向下箭头,但没有当前所选值的标签.
如果窗口的大小调整大小甚至一个像素,则框将正确重绘.
我所有的谷歌搜索指出调用revalidate()上JPanel解决这一问题,但是这并没有为我工作.
呼吁updateUI()对JPanel从一直错误地显示到显示的时间不正确的一半改变了它.
有没有其他人看过这个并找到一种不同的方法来强制重绘组合框?
在这个Ruby代码中:
Module M
Class C < Struct.new(:param)
def work
M::helper(param)
end
end
def helper(param)
puts "hello #{param}"
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试运行时,我得到一个"未定义的方法'帮助'''M:模块'"错误
c = M::C.new("world")
c.work
Run Code Online (Sandbox Code Playgroud)
但M::helper("world")直接从另一个班级调用工作正常.类可以不调用在它们定义的同一模块中定义的模块函数吗?除了将课程移到模块之外之外,还有其他方法吗?
我需要写一个"A OR B OR(C AND D)"形式的MongoDB查询来返回一些记录.我们使用Mongoid对我们的模型进行数据访问.
我将该查询扩展为"(或或B或C)和(或或B或D)"并且希望使用类似的Mongoid的Criteria方法any_of:Model.any_of(A, B, C).any_of(A, B, D)将实现我想要的,但是扩展为"A OR B OR C"在发送到数据库之前,或"或或B或D".
有没有办法构建这个查询,或者我是否必须构建一个查询来执行A或B而另一个查询来执行C和D并获取它们的并集?
当一个索引是另一个索引的子集时,MongoDB似乎使用了低效的查询模式.
class Model
field :status, :type => Integer
field :title, :type => String
field :subtitle, :type => String
field :rating, :type => Float
index([
[:status, Mongo::ASCENDING],
[:title, Mongo::ASCENDING],
[:subtitle, Mongo::ASCENDING],
[:rating, Mongo::DESCENDING]
])
index([
[:status, Mongo::ASCENDING],
[:title, Mongo::ASCENDING],
[:rating, Mongo::DESCENDING]
])
end
Run Code Online (Sandbox Code Playgroud)
查询时在第一索引正在使用两者status,title以及subtitle和排序上rating,只是对查询时status和title分选上rating,即使使用explain()连同hint()在JavaScript控制台指出使用第二索引是快4倍.
我如何告诉Mongoid告诉MongoDB使用第二个索引?
我试图通过我的Ruby on Rails应用程序与第三方服务集成,该应用程序的地址只能由某些DNS服务器解析.
有没有办法告诉我的应用程序哪个DNS服务器进行查找?一般的Ruby解决方案或Heroku特定的解决方案都可以.