小编And*_*Mao的帖子

从多个Java线程调用不可重入的本机共享库

我有一些Java代码调用一些本机代码,最初是用Fortran编写的,使用JNA.(这是一个数值库,很多数学人在Fortran中编写代码.)它被编译成一个.so库,见下文:

在我的代码中测试了所有单元,我得到了很好的结果,但后来我尝试使用来自多个线程的代码,一切都开始失败,出现了奇怪的错误.然后我研究了一些关于重入Fortran代码的东西,并意识到我使用的库有一些全局变量(SAVEFortran中的关键字,当再次调用函数时,它记住变量的值:fortran SAVE语句)

现在我正在用synchronized块包装调用库,但这显着地阻碍了性能.在我看来,重新设计库可能需要付出很大的努力才能重入(它有几千行数字代码,并且不清楚当子程序运行时值如何延续.)有谁知道解决问题的最佳方法是什么?我的想象力表明......

  • 有没有办法让每个Java线程在内存中加载共享库的单独副本,以便全局变量有效地是线程本地的?这甚至可能吗?我不确定JNA的直接绑定或库绑定是如何工作的,如果有办法以这种方式使用它.
  • 即使从不同的VM调用它,它仍然会被搞砸吗?我该如何检查以确定?
  • 有没有办法让get gfortran(gcc)以可重入的方式编译Fortran代码?
  • 是否有一些快速而肮脏的方法使Fortran代码可以重入?我搜索了RECURSIVE关键字,它显然将变量保存在堆栈中,但这似乎与现有代码不兼容.
  • 还有其他可能的解决方

我确认多个虚拟机可以正常运行; 这是有道理的,因为他们不共享记忆.仍然是一个PITA,虽然比线程更不方便.

java fortran shared-libraries jna reentrancy

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

在两个不同的数据文件上运行相同的 IPython 笔记本代码,并进行比较

当对两组不同的数据进行相同的分析时,有没有一种好的方法可以在 IPython Notebook (Jupyter) 中模块化和重用代码?

例如,我有一个笔记本,其中有很多单元格对数据文件进行分析。我有另一个相同格式的数据文件,我想运行相同的分析并比较输出。这些选项看起来都没有特别有吸引力:

  • 将单元格复制并粘贴到第二个笔记本。分析代码现在是重复的并且更难更新。
  • 将分析代码移至模块中并为两个文件运行它。这将丢失当前生成的数字的逐个单元格格式,并将它们简单地混杂在一个巨大的单元格中。
  • 将这两个文件加载到一个笔记本中并并行运行分析。这还涉及大量复制和粘贴,并且不能很好地推广到 3 或 4 个不同的数据文件。

有一个更好的方法吗?

matplotlib ipython jupyter jupyter-notebook

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

使用带渐变的圆角矩形的CSS3聚光灯效果

我正在为一个Web应用程序编写一个交互式教程,旨在突出显示用户界面的各个部分.本教程旨在一次突出显示一个部分,并告诉用户如何与其进行交互.您可能已经在智能手机应用上看到了类似的东西.

对于可用于突出现有界面的特定CSS,我发现的最佳解决方案是使用类似这样的东西,它只是div现有界面的顶部,允许突出显示部分:

https://web.archive.org/web/20120414095101/http://svay.com/experiences/css3-spotlight

但是,CSS radial-gradient只允许使用圆形和椭圆形,这对于通常为矩形的用户界面元素来说很奇怪.有没有办法达到相同的效果,但圆角矩形(变暗区域是矩形外的一切)?

html css gradient highlight css3

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

熊猫:value_counts函数的反函数

产生value_counts函数的逆输出的快速方法是什么?

例如,如果我有以下系列:

1      24
2       2
3       1
4       2
5       3
6      12
7      21
8     204
9     400
10     71
11    160
Name: foo, dtype: float64
Run Code Online (Sandbox Code Playgroud)

我如何简洁地产生以下数组?

numpy.array([1, 1, 1, ... , 2, 2, 3, 4, 4, 5, 5, 5, 6, ... ])
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

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

Vuetify:路由器视图中的 v-container 有什么作用?

在 Vuetify 的预定义布局中,有两段非常相似的示例代码:

<v-app>
  <v-navigation-drawer app></v-navigation-drawer>
  <v-toolbar app></v-toolbar>
  <v-content>
    <v-container fluid>
      <router-view></router-view>
    </v-container>
  </v-content>
  <v-footer app></v-footer>
</v-app>
Run Code Online (Sandbox Code Playgroud)

<v-app>
  <v-navigation-drawer app></v-navigation-drawer>
  <v-toolbar app></v-toolbar>
  <v-content>
    <router-view>
      <v-container fluid></v-container>
    </router-view>
  </v-content>
  <v-footer app></v-footer>
</v-app>
Run Code Online (Sandbox Code Playgroud)

第二个在我的应用程序中看起来更好,但它真的让我感到困惑它是如何工作的。被路由内容替换时怎么会有<v-container>里面?这应该达到什么目的?<router-view><router-view>

layout vue.js vue-router vuetify.js

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

项目有不同的Java编译器版本时是否有任何问题?

我有一个带有几个Java项目的Eclipse工作区(在Maven中); 这些彼此依赖.最近我开始改变一些项目以Java 1.7为目标,除了解决一些新警告之外,编译时没有什么不同.

但是,当我尝试运行一切时,感觉会出现问题.在以下情况下,如何加载类文件,是否存在任何问题?

  • Java 1.6项目依赖于Java 1.7项目时是否存在问题?1.6 VM会拒绝运行任何1.7生成的字节码,还是会发生一些奇怪的事情以使其运行?
  • 反向发生时有问题吗?

java eclipse maven java-6 java-7

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

奇怪的Guice注射错误

尝试使用Guice注入构造函数时,我有一个非常奇怪的错误.构造函数中有一个特定的行如下:

@Inject
public RoundRobinAssigner(
        ... arguments
        ) {
            ...stuff

    assignments = Sets.synchronizedNavigableSet(Sets.<CountingEntry<String>>newTreeSet());
}
Run Code Online (Sandbox Code Playgroud)

注射时,这会失败.

1) Error injecting constructor, java.lang.NoSuchMethodError: com.google.common.collect.Sets.synchronizedNavigableSet(Ljava/util/NavigableSet;)Ljava/util/NavigableSet;
  at edu.harvard.econcs.turkserver.util.RoundRobinAssigner.<init>(RoundRobinAssigner.java:46)
  at edu.harvard.econcs.turkserver.util.RoundRobinAssigner.class(RoundRobinAssigner.java:40)
  while locating edu.harvard.econcs.turkserver.util.RoundRobinAssigner
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除Sets.synchronizedNavigableSet()包装,事情注入就好了.

@Inject
public RoundRobinAssigner(
        ... arguments
        ) {     
            ...stuff

    assignments = Sets.<CountingEntry<String>>newTreeSet();

}
Run Code Online (Sandbox Code Playgroud)

显然,这是次优的,因为我想使用同步集.有没有理由为什么Guice所谓的教练会表现得与正常教练不同?这些代码都没有任何编译问题,而且Setsguava中的类也已经被加载了,所以我不知道是什么导致了这个.

java constructor dependency-injection guice guava

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

奶牛和公牛比赛

我正在研究一个有两个不同类的奶牛和公牛游戏:第一个类看起来像这样:import java.util.*; import java.util.Scanner;

public class CowsAndBulls  {

    int UserNumber=0; 
    int CompNumber=0;
    int bulls=0; 
    int cows=0;
    Scanner input = new Scanner(System.in); 

    public void getUserNumber() { 
    System.out.println("Please enter your guess!");
    int UserValue=input.nextInt();
    UserNumber=UserNumber+ UserValue;
    System.out.println("Your guess is  : " + UserNumber);
    } 



    public void getCompNumber() { 
        Random generator= new Random();
        int pickedNumber=generator.nextInt(10000) + 1000;
        CompNumber =CompNumber+ pickedNumber;
        System.out.println("The computer has guessed : " + CompNumber );
    }   
}
Run Code Online (Sandbox Code Playgroud)

它只是为计算机生成一个随机数,并要求用户输入他们的猜测.我的游戏课遇到了很多麻烦,特别是我无法让我的while循环运行,

public class CowsAndBullsPlay {

    public void play() {

    int GuessCount=0; 
    int UserNumber …
Run Code Online (Sandbox Code Playgroud)

java boolean while-loop

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

两种在Meteor中定义助手的方法

编辑:这在Meteor 1.0中已不再适用.第一种语法已被弃用,仅支持第二种语法.

似乎有两种方法来定义Meteor中显然称为帮助者的东西:

Template.foo.helper1 = function() { ... }
Run Code Online (Sandbox Code Playgroud)

另一种方式:

Template.foo.helpers({
  helper2: function() { ... }
});
Run Code Online (Sandbox Code Playgroud)

两者之间是否存在语义或用法差异?我能看到的唯一限制是第一次使用不能使用保留关键字.我想知道这种区别是出于历史原因还是其他原因而产生的.

handlebars.js meteor meteor-helper

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

如何在GitHub上显示我的存储库中的问题

直到一个月前,GitHub有一个问题视图,允许用户查看未解决的问题并在他们自己的存储库中提取请求.这对于了解许多OSS项目需要解决的问题非常有用.

他们最近发布了一个更新(在我看来)不太有用,因为它只显示了一个人创建,分配或被提及的问题.

在此输入图像描述

这基本上排除了我的存储库中其他人创建的所有问题.

在这个新系统中是否有一种简单的方法可以查看我的存储库中的所有未解决的问题(更好的是,在我的组织中的存储库中)?在这一点上,唯一的解决方案是通过电子邮件挖掘或逐个查看存储库,这两者都非常难吃.

我知道这本身并不是一个编程问题,但它比其他任何地方都更有可能得到回答.

git github repository issue-tracking

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

Javascript:深入遍历/迭代对象键

我正在尝试在Mongo中索引各种JSON对象。有时,JSON对象在其中包含键的某处有一个键.,这使Mongo抱怨:

MongoError: The dotted field 'foo (e.g. bar)' in 'key.0.prop foo (e.g. bar)' is not valid for storage.
Run Code Online (Sandbox Code Playgroud)

抛开这些数据不应该具有这种键,我想暂时解决这个问题,方法是通过删除包含点的文本来调整其中带有点的键。但是,这些键可以在对象中的任何位置,这需要同时遍历和修改键。例如,

{
  "foo": {
    "foo (e.g. bar)": "baz" 
  },
  "a": "b"
}
Run Code Online (Sandbox Code Playgroud)

会成为

{
  "foo": {
    "foo": "baz" 
  },
  "a": "b"
}
Run Code Online (Sandbox Code Playgroud)

基于transform(badKey)我要指定的某些功能。

迭代Javascript对象并根据某些条件修改键的最简单/最可靠的方法是什么?请注意,某些键可能嵌套在多个级别的深处,因此无法在此处进行简单的键值迭代。指向提供此功能的库的指针非常棒。

javascript iteration json traversal mongodb

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