小编sky*_*yde的帖子

如何在scala中获取方法列表

在像python和ruby这样的语言中,要求语言它的字符串类支持哪些与索引相关的方法(哪些方法的名称包含单词"index"),你可以做

“”.methods.sort.grep /index/i
Run Code Online (Sandbox Code Playgroud)

而在java中

List results = new ArrayList();  
Method[] methods = String.class.getMethods();  
for (int i = 0; i < methods.length; i++) {  
    Method m = methods[i];  
    if (m.getName().toLowerCase().indexOf(“index”) != -1) {  
        results.add(m.getName());  
    }  
}  
String[] names = (String[]) results.toArray();  
Arrays.sort(names);  
return names;  
Run Code Online (Sandbox Code Playgroud)

你会如何在Scala中做同样的事情?

scala

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

.net Async和google go轻量级线程之间的主要区别是什么

在运行中调用runtime.GOMAXPROCS(1)时,运行时只会为所有goroutine使用一个线程.当你做你的goroutines会产生并让其他goroutines在同一个线程上运行.

对于我来说,如果你不使用后台线程,.net异步CTP功能如何进行协同并发似乎非常相似.

我的问题是你能想到一种方法优于另一种方法的优点或缺点.

.net c# asynchronous go .net-4.5

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

Intel cpu上的SIMD前缀和

我需要实现前缀和算法,并且需要它尽可能快.例如:

[3, 1,  7,  0,  4,  1,  6,  3]
Run Code Online (Sandbox Code Playgroud)

有没有办法使用SSE/mmx/SIMD cpu指令执行此操作?

我的第一个想法是递归并行地对每一对求和,直到所有的总和都计算如下!

[3, 4, 11, 11, 15, 16, 22, 25]
Run Code Online (Sandbox Code Playgroud)

为了使算法更清晰,"z"不是最终的输出

而是用来计算输出

//in parallel do 
for (int i = 0; i < z.length; i++) {
    z[i] = x[i << 1] + x[(i << 1) + 1];
}
Run Code Online (Sandbox Code Playgroud)

c++ sse simd prefix-sum

20
推荐指数
5
解决办法
6755
查看次数

是否可以使用没有hadoop依赖的apache mahout?

是否可以使用Apache mahout而不依赖于Hadoop.

我想在单个计算机上使用mahout算法,只在我的Java项目中包含mahout库,但我根本不想使用hadoop,因为无论如何我将在单个节点上运行.

那可能吗?

java hadoop machine-learning dependency-management mahout

14
推荐指数
2
解决办法
6865
查看次数

从存储过程catch块处理死锁重试是一个好主意

从我的承诺来看,不可能完全阻止交易陷入僵局.

我希望从应用程序代码的角度来看,交易永远不会失败.所以我已经看到这个模式用于Microsoft SQL,我想知道这是一个好主意吗?


    DECLARE @retry  tinyint
    SET @retry  = 5
    WHILE @retry >0
    BEGIN
      BEGIN TRANSACTION
      BEGIN TRY
        // do transaction her
        COMMIT
        BREAK
      END TRY
      BEGIN CATCH
        ROLLBACK

        if (ERROR_NUMBER() = 1205 OR ERROR_NUMBER() = 1222)
        BEGIN
          SET @retry = @retry - 1
          IF @retry = 0
             RAISEERROR('Could not complete transaction',16,1);
          WAITFOR DELAY '00:00:00.05' -- Wait for 50 ms
          CONTINUE
        END
        ELSE
        BEGIN
          RAISEERROR('Non-deadlock condition encountered',16,1);
          BREAK;
        END
      END CATCH;
    END

sql database sql-server deadlock

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

Scala中的策略

有没有相当于Haskell Control.Parallel.Strategies或实现相同的方法?

这允许以不同的方式评估现有代码.通过将算法与策略和算法从评估中分离出来.

parallel-processing haskell scala

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

使用GO时如何测量系统过载

我在GO中重写一个旧系统,在旧系统中我测量系统负载平均值,以了解我是否应该增加线程池中的线程数.

在go中,人们不使用线程池或goroutine池,因为启动goroutine非常便宜.但仍然运行太多goroutine效率低,只是足以使cpu使用率接近100%

因此,有没有办法知道有多少goroutine准备运行(未阻止)但当前没有运行.或者有没有办法获得计划的runnable goroutine"运行队列"的数量.

performance multithreading scalability go

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

IPFS 和 Bittorrent 中的分布式哈希表如何防止滥用?

我的理解是 IPFS 和 Bittorrent Mainline DHT 建立在分布式哈希表 (Kademlia) 之上。他们使用文件哈希作为 Kademlia 密钥来查找可能拥有此文件的对等点列表。

1- 我不明白的是,这是否都是分散的,谁从不再托管文件内容的 DHT 对等方中删除?

2- 什么阻止某人在 DHT 中免费存储大量数据?

3- 什么防止某人通过为流行文件添加大量无效对等点来破坏网络。

4- 什么阻止坏人加入 DHT 环而不遵循路由协议,从而阻止发现消息到达正确的节点。

bittorrent dht chord kademlia ipfs

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

如何找到一个horneq队列长度

我正在使用Hornetq 2.0我不知道我怎么知道目前有多少消息在队列中.

这是一个非常有用的功能,所以我可以在运行时知道我的消费者是否足够快地消费消息.

我没有使用JMS api,而是使用高度优化的核心API.

获取队列中消息数的正确(最快)方法是什么?

我找到了2路,但不知道这是什么方法.

public int size(){

    ClientSession session;

    try {

        session = sf.createSession(false, false, false);

        ClientRequestor requestor = new ClientRequestor(session, "hornetq.management");

        ClientMessage m = session.createMessage(false);

        ManagementHelper.putAttribute(m, "core.queue." + queueName, "messageCount");

        ClientMessage reply = requestor.request(m);

        int count = (Integer) ManagementHelper.getResult(reply);

        return count;

    } catch (Exception e) {

        e.printStackTrace();

    }

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

要么

public synchronized int size(){

    ClientSession coreSession = null;

    int count = 0;

    try {

        coreSession = sf.createSession(false, false, false);

        ClientSession.QueueQuery result;

        result = coreSession.queueQuery(new …
Run Code Online (Sandbox Code Playgroud)

java jms message-queue hornetq

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

在Scala中等效的Haskell标记或F#计算表达式?

F#Computation Expressions允许隐藏厚层语法糖背后的一元语法的复杂性.Scala中是否有类似的东西?

我认为这是为了理解......

例:

val f = for {
  a <- Future(10 / 2) // 10 / 2 = 5
  b <- Future(a + 1)  //  5 + 1 = 6
  c <- Future(a - 1)  //  5 - 1 = 4
 } yield b * c         //  6 * 4 = 24

 val result = f.get
Run Code Online (Sandbox Code Playgroud)

但它确实感觉不对.有更好的语法吗?

例如,你可以拥有哈斯克尔

    main = do fromHandle <- getAndOpenFile "Copy from: " ReadMode
          toHandle   <- getAndOpenFile "Copy to: " WriteMode 
          contents   <- hGetContents fromHandle …

monads f# haskell scala do-notation

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