小编Rya*_*arn的帖子

Java synchronized块与Collections.synchronizedMap

以下代码是否设置为正确同步呼叫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() …

java synchronization

81
推荐指数
4
解决办法
11万
查看次数

C中的String.indexOf函数

是否有一个C库函数将返回字符串中字符的索引?

到目前为止,我发现的所有功能都像strstr一样会返回找到的char*,而不是它在原始字符串中的位置.

c string

44
推荐指数
3
解决办法
8万
查看次数

Shell脚本输入重定向奇怪

谁能解释这种行为?运行:

#!/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尝试了相同的代码,并从两者中获得了相同的行为.

linux bash shell ksh dash-shell

18
推荐指数
8
解决办法
5361
查看次数

是否可以在oracle中杀死单个查询而不会终止会话?

我希望能够在Oracle 10.2.0.4中终止用户的查询而不会终止整个会话.这将允许查询结束,但不会将该用户记录在其会话之外,因此他们可以继续进行其他查询.这有可能吗?或者是杀死会话的直言不讳是结束查询执行的唯一方法?

oracle oracle10g

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

Ant无法找到外部定义的taskdef所需的类

我试图使用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中无法定义这些库的错误,我仍然非常感激

java ant axis classpath

15
推荐指数
2
解决办法
9万
查看次数

Rails多态has_many:通过

我从外部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

提前感谢您提供给我的任何见解!

activerecord ruby-on-rails polymorphic-associations

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

Java JPanel重绘问题

我有一个Java swing应用程序,其中包含三个JComboBoxe不能正确绘制的面板.
combox框只显示为右侧的向下箭头,但没有当前所选值的标签.
如果窗口的大小调整大小甚至一个像素,则框将正确重绘.

我所有的谷歌搜索指出调用revalidate()JPanel解决这一问题,但是这并没有为我工作.
呼吁updateUI()JPanel从一直错误地显示到显示的时间不正确的一半改变了它.

有没有其他人看过这个并找到一种不同的方法来强制重绘组合框?

java swing jpanel

7
推荐指数
1
解决办法
3365
查看次数

是否可以从也在该模块中的类内部调用Module函数

在这个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")直接从另一个班级调用工作正常.类可以不调用在它们定义的同一模块中定义的模块函数吗?除了将课程移到模块之外之外,还有其他方法吗?

ruby

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

你怎么用Mongoid写"(A或B)和(A或C)"查询?

我需要写一个"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并获取它们的并集?

ruby mongoid

5
推荐指数
1
解决办法
662
查看次数

是否可以指定查询在Mongoid中应使用的索引?

当一个索引是另一个索引的子集时,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,只是对查询时statustitle分选上rating,即使使用explain()连同hint()在JavaScript控制台指出使用第二索引是快4倍.

我如何告诉Mongoid告诉MongoDB使用第二个索引?

ruby mongodb mongoid

5
推荐指数
1
解决办法
2040
查看次数

我可以修改Ruby on Rails应用程序的DNS设置吗?

我试图通过我的Ruby on Rails应用程序与第三方服务集成,该应用程序的地址只能由某些DNS服务器解析.

有没有办法告诉我的应用程序哪个DNS服务器进行查找?一般的Ruby解决方案或Heroku特定的解决方案都可以.

ruby dns heroku ruby-on-rails-3.2

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