小编Fra*_*ank的帖子

防止在多线程上下文中使用非线程安全方法

当用户尝试在多线程上下文中使用类的非线程安全方法时,有没有办法抛出异常?我想问题主要是检测多个线程正在尝试使用该方法.或者,我可以在函数声明中使用"not_synchronous"关键字/标记吗?

java multithreading thread-safety

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

空Java字符串的大小

我听到一位同事说如果我在Java类中删除一个String成员,即使String为空,我也会支付"24字节".那是准确的吗?Integer,Float,Double是一样的吗?(而不是int,float,double,每个只有4,4和8个字节).

java string size primitive-types

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

Matlab/Octave 1-of-K表示

我有一个大小为5000,1(矩阵),其中包含1到10之间的整数.我想将这些索引扩展为1的10向量.即,y包含1,2,3 ......我希望它"扩展"为:

1 0 0 0 0 0 0 0 0 0 
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

我试过了:

Y = zeros(5000,10); Y(y) = 1; 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

它适用于矢量:

如果y = [2 5 7],和Y = zeros(1,10),然后Y(y) = [0 1 0 0 1 0 1 0 0 0].

matlab matrix octave

6
推荐指数
2
解决办法
2625
查看次数

Java通用成员初始化

假设我有一个参数化的Java类,其中包含一个私有的T _member.我想写一个默认的构造函数(没有参数),它以某种方式将我的T _member初始化为一些已知的类型T特定值(对于Integer为-1,对于Float为Float.MAX_VALUE ...).那可能吗?我尝试了新的T(),但编译器不喜欢这样.或者我什么都不做,保证为我调用默认构造函数?

java generics

6
推荐指数
2
解决办法
1317
查看次数

O(M + N)是什么意思?

这是一个基本问题......但我认为O(M + N)与O(max(M,N))相同,因为当我们进入无穷大时,较大的项应该占主导地位?而且,这与O(min(M,N))不同,是吗?我一直看到这种符号,尤其是 在讨论图算法时.例如,您经常看到:O(| V | + | E |)(例如,http://algs4.cs.princeton.edu/41undirected/).

performance complexity-theory big-o

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

C++模板部分特化问题

我使用以下代码编译时遇到问题:

  template <typename T, 
            template <class T, class Allocator = std::allocator<T> > class C>
  bool is_in(const C<T>& a, const C<T>& b);

  template <typename T, std::vector> // HERE
  bool is_in(const std::vector<T>& a, const std::vector<T>& b)
  {
    return false; // implementation tbd
  }

...

vector<int> a, b;

cout << is_in(a,b) << endl;
Run Code Online (Sandbox Code Playgroud)

错误消息是(在标有"HERE"的行上):

error: 'std::vector' is not a type
Run Code Online (Sandbox Code Playgroud)

(当然,我已经从std中包含了矢量!).有什么建议吗?我摆弄了一段时间,但我已经到了可以使用一些帮助的地步:-)我需要部分专门化初始模板声明,以便我可以根据实际的类型设置编译器开关实现容器C(将有一个is_in用于集合,一个用于向量,一个用于范围......,每次使用不同的算法).

谢谢!

c++ templates template-specialization

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

使用boost :: lexical_cast和std :: transform

g ++不喜欢:

vector<int> x;
x += 1,2,3,4,5;

vector<string> y(x.size());
transform(x.begin(), x.end(), y.begin(), lexical_cast<string>);
Run Code Online (Sandbox Code Playgroud)

错误消息是:

error: no matching function for call to 'transform(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, <unresolved overloaded function type>)'
Run Code Online (Sandbox Code Playgroud)

这清楚地表明lexical_cast是最后一个转换参数的问题......有没有办法避免编写包含lexical_cast的函数对象?

谢谢!

c++ boost transform lexical-cast

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

试图理解 Java String 实现

我正在查看 String 的 openjdk 实现和私有的,每个实例成员看起来像:

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence
{
    /** The value is used for character storage. */
    private final char value[];

    /** The offset is the first index of the storage that is used. */
    private final int offset;

    /** The count is the number of characters in the String. */
    private final int count;

    /** Cache the hash code for the string */
    private int hash; // Default to 0

    [...]
}
Run Code Online (Sandbox Code Playgroud)

但我知道 …

java string size primitive-types

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

Scala中函数组合的语法很好

我希望得到一个像desort = (reverse . sort)Scala中的Haskell一样富有成效的语法......这是我的尝试:

implicit class Composition[A,B,C](val g: A => B) {
  def o(f: B => C): A => C = { a:A => f(g(a))}
}

val fg = cos _ o sin
Run Code Online (Sandbox Code Playgroud)

我们有什么方法可以摆脱_gf的声明吗?

scala

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

Scala方法对地图产生副作用并返回它

将函数应用于 a 的每个元素Map并最终返回相同的Map,不变的,以便它可以用于进一步的操作的最佳方法是什么?

我想避免:

myMap.map(el => {
  effectfullFn(el)
  el
})
Run Code Online (Sandbox Code Playgroud)

实现这样的语法:

myMap
  .mapEffectOnKV(effectfullFn)
  .foreach(println)
Run Code Online (Sandbox Code Playgroud)

map 不是我要找的,因为我必须指定地图中出现的内容(如第一个代码片段中所示),而我不想这样做。

我想要一个特殊的操作,它知道/假设在执行副作用函数后应该不加更改地返回地图元素。

事实上,这对我来说非常有用,我想把它用于Map, Array, List, Seq,Iterable ... 总的想法是偷看元素做某事,然后自动返回这些元素。

我正在处理的真实案例如下所示:

 calculateStatistics(trainingData, indexMapLoaders)
   .superMap { (featureShardId, shardStats) =>
      val outputDir = summarizationOutputDir + "/" + featureShardId
      val indexMap = indexMapLoaders(featureShardId).indexMapForDriver()
      IOUtils.writeBasicStatistics(sc, shardStats, outputDir, indexMap)
    }
Run Code Online (Sandbox Code Playgroud)

一旦我计算了每个分片的统计信息,我想附加将它们保存到磁盘的副作用,然后只返回这些统计信息,而不必创建 aval并将其val名称作为函数中的最后一个语句,例如:

val stats = calculateStatistics(trainingData, indexMapLoaders)
stats.foreach { (featureShardId, shardStats) =>
  val outputDir = summarizationOutputDir …
Run Code Online (Sandbox Code Playgroud)

scala

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