小编Mic*_*ael的帖子

具有更好性能的Java序列化替代方案

假设我使用标准Java对象序列化来向/从内存缓冲区写入/读取小(<1K)Java对象.最关键的部分是反序列化,即从内存缓冲区(字节数组)中读取Java对象.

对于这种情况,是否有更快的标准Java序列化替代方案?

java performance serialization

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

并行十大分布式数据算法

这是一个面试问题.假设有几台计算机,每台计算机都保存一个非常大的访问URL日志文件.查找前十个访问量最大的网址.

例如:假设只有3台计算机,我们需要前两个访问量最大的URL.

Computer A: url1, url2, url1, url3
Computer B: url4, url2, url1, url1
Computer C: url3, url4, url1, url3

url1 appears 5 times in all logs
url2 2
url3 3
url4 2 

So the answer is url1, url3

日志文件太大而无法放入RAM并通过网络复制它们.据我了解,重要的是使计算并行并使用所有给定的计算机.

你会如何解决它?

language-agnostic algorithm parallel-processing distributed-computing

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

如何查找数组中的反转次数?

可能重复:
计算数组中的反转

这是一个电话采访问题:"查找数组中的反转次数".我猜他们的意思是O(N log N)解决方案.我认为它不能比O(N log N)更好,因为这是排序的复杂性.

类似问题的答案可归纳如下:

  1. 计算元素移动距离的一半以对数组进行排序:复制数组并对副本进行排序.对于原始数组的每个元素,a[i]找到它j在排序副本(二进制搜索)中的位置,并将距离的一半加起来abs(i - j)/2.
  2. 修改merge sort:修改merge以计算两个已排序数组之间的反转,并merge sort使用修改后的数组运行merge.

    是否有意义 ?还有其他(可能更简单)的解决方案吗?电话采访难道不是很难吗?

arrays sorting algorithm

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

如何发现"贪心"算法?

我正在阅读关于"贪婪"算法的教程,但我很难发现它们解决了真正的"顶级编码器"问题.

如果我知道某个问题可以通过"贪婪"算法解决,那么对解决方案进行编码就非常容易了.但是,如果我没有被告知这个问题是"贪婪的"我无法发现它.

使用"贪婪"算法解决问题的常见属性和模式是什么?我可以将它们减少到已知的"贪婪"问题之一(例如MST)吗?

algorithm greedy

17
推荐指数
2
解决办法
4781
查看次数

功能组合,Kleisli箭头和Monadic法则

阅读本文后,我理解>=>(Kleisli arrow)只是一个组合函数的高阶函数,它返回"monadic values".例如:

val f: A => M[B] = ...
val g: B => M[C] = ...

val h: A => M[C] = f >=> g // compose f and g with Kleisli arrow

它看起来像是一个简单的"简单"函数组合(即返回简单值的纯函数):

val f: A => B = ...
val g: B => C = ...

val h = f andThen g; // compose f and g

现在我猜这个"简单"的构图andThen符合某些规律

  • 身份:f andThen g == gg andThen f …

monads functional-programming scala kleisli

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

了解Scala中的随机monad

这是我上一个问题的后续行动

Travis Brown指出这java.util.Random是副作用,并建议使用随机monad Rng 来使代码纯粹功能化.现在我正在尝试自己构建一个简化的随机monad以了解它是如何工作的.

是否有意义 ?您如何修复/改进下面的解释?

随机生成器

首先,我们抄袭随机生成函数 java.util.Random

 // do some bit magic to generate a new random "seed" from the given "seed" 
 // and return both the new "seed" and a random value based on it

 def next(seed: Long, bits: Int): (Long, Int) = ...
Run Code Online (Sandbox Code Playgroud)

请注意,next返回两个新的种子和价值,而不仅仅是值.我们需要它将新种子传递给另一个函数调用.

随机点

现在让我们编写一个函数来生成单位平方的随机点.

假设我们有一个函数来生成范围[0,1]中的随机双精度

 def randomDouble(seed: Long): (Long, Double) = ... // some bit magic
Run Code Online (Sandbox Code Playgroud)

现在我们可以编写一个函数来生成一个随机点.

def randomPoint(seed: Long): (Long, (Double, Double)) …
Run Code Online (Sandbox Code Playgroud)

random monads scala

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

如何将给定的文本分解为字典中的单词?

这是一个面试问题.假设你有一个字符串text和一组dictionary(一组字符串).你如何分解text为子串,以便在每个子串中找到dictionary.

例如,您可以分解"thisisatext"["this", "is", "a", "text"]使用/usr/share/dict/words.

我相信回溯可以解决这个问题(在伪Java中):

void solve(String s, Set<String> dict, List<String> solution) {
   if (s.length == 0)
      return
   for each prefix of s found in dict
      solve(s without prefix, dict, solution + prefix)
}

List<String> solution = new List<String>()
solve(text, dict, solution)

是否有意义?你会优化搜索字典中前缀的步骤吗?您会推荐哪些数据结构?

language-agnostic string algorithm data-structures

16
推荐指数
2
解决办法
4729
查看次数

如何声明Callable执行函数在Java中返回void?

假设我想foo异步运行静态方法

void foo() throws Exception {...} 
Run Code Online (Sandbox Code Playgroud)

由于foo抛出一个异常,我宁愿创建Callable并调用ExecutorService.submit它来获得Future.

现在我不知道如何申报的CallableFuture正确的.我应该申报吗?

Callable<Void> and Future<Void>?
Run Code Online (Sandbox Code Playgroud)

java concurrency future callable

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

在Scalaz中,Kleisli,ReaderT和Reader是否相同只是巧合

在斯卡拉兹

  • Kleisli[F, A, B]是一个包装A => F[B].
  • ReaderT[F, A, B]- 读者monad变换器 - 只是别名Kleisli[F, A, B].
  • Reader[A, B]monad是ReaderT身份monad 的专长Id:
    type Reader[A, B] = ReaderT[Id, A, B].

难道仅仅是巧合还是有一些更深层次的原因Kleisli,ReaderT以及Reader是同构的Scalaz?

scala scalaz kleisli reader-monad

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

与其他Web技术相比,node.js的优点

据我所知,node.js对Java Script程序员很有用,他们现在可以在服务器端开发.此外,一些Java Script代码可以从客户端移植到服务器端.

是否有任何其他的优点node.js与其他服务器端技术(Java web开发框架,比较RoR,Django等等)?

node.js

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