小编Sky*_*ker的帖子

如何比O(n ^ 2)更好地计算最小平均子数组?

我写了以下代码来计算平均最小的子数组的最小起始索引(至少两个元素)。

但是,无法找到一种方法来使其更快,即O(n)或O(n log n)方法。我想不出任何方法来访问所有可能的子数组而不打O(n ^ 2):

#include <iostream>
#include <vector>
#include <limits>

using namespace std;

int solution(vector<int> &A) {
    float previousAvg = 0.0;
    float minAvg = numeric_limits<float>::max();
    int minStartIx = numeric_limits<int>::max();
    for (size_t i = 0; i < A.size(); ++i) {
        for (size_t j = i + 1; j < A.size(); ++j) {
            if (j == i + 1) {
                previousAvg = (A[i] + A[j]) / 2.0;
                cout << "avg(from=" << i << ", to=" << j << ") = …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm

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

C++"new T [size]"不起作用?

我有一个模板类定义为:

#include <stdio.h>
#include <queue>

using namespace std;

template<class T>
class tbufferpool {
private:
    const int m_initial;
    const int m_size;
    const int m_total;
    T *m_buffer;
    vector<T*> m_queue;

public:
    // constructor
    tbufferpool(int initial, int size) : m_initial(initial), m_size(size), m_total(initial*size) {
        m_buffer = new T[m_total];
        T* next_buffer = m_buffer;
        for (int i = 0; i < initial; ++i, next_buffer += size) {
            m_queue.push_back(next_buffer);
        }
    }
Run Code Online (Sandbox Code Playgroud)

在构造函数中的某些时候我做了:

m_buffer = new T[size];
Run Code Online (Sandbox Code Playgroud)

这适用于大多数用例,但在一次测试中,我得到valgrind报告的以下内存错误(下面的命令和相关代码段)测试仍然正常.有趣的一点是operator new(unsigned long)意味着它不是为我所预期的具体T型I设置"双"分配和对齐但是对于unsigned long?如果我修改我的缓冲池实现和硬编码,new double[size]那么这个内存错误没有显示,但我当然只能使用它tbufferpool<double> …

c++

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

如何通过总和(获取百分比)对数据框值进行归一化

我有以下数据框:

> str(df)
 'data.frame':  52 obs. of  3 variables:
  $ n    : int  10 20 64 108 128 144 256 320 404 512 ...
  $ step : Factor w/ 4 levels "Step1","Step2",..: 1 1 1 1 1 1 1 1 1 1 ...
  $ value: num  0.00178 0.000956 0.001613 0.001998 0.002975 ...
Run Code Online (Sandbox Code Playgroud)

现在我想归一化/除以df$value属于同一个 n 的值的总和,这样我就可以得到百分比。这不起作用,但显示了我想要实现的目标。在这里,我将属于相同 n 的值的总和预先计算到 dfa 中,并尝试将原始值除以匹配df$value的聚合总数:dfa$valuen

dfa <- aggregate(x=df$value, by=list(df$n), FUN=sum)
names(dfa)[names(dfa)=="Group.1"] <- "n"           
names(dfa)[names(dfa)=="x"] <- "value"
df$value <- df$value / …
Run Code Online (Sandbox Code Playgroud)

aggregate r dataframe data.table

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

将 Comparable 与 Comparator 相互转换?

我经常有一种Comparator类型,而我需要一种Comparable,反之亦然。是否有可重用的 JDK API 可以相互转换?大致如下:

    public static <C> Comparable<C> toComparable(final Comparator<C> comparator) {
        // does not compile because Hidden can not extend C, 
        // but just to illustrate the idea
        final class Hidden extends C implements Comparable<C> {
            @Override
            public int compareTo(C another) {
                return comparator.compare((C) this, another);
            }
        };
        return new Hidden();
    }

    public static <C extends Comparable<C>> Comparator<C> toComparator(final Class<C> comparableClass) {
        return new Comparator<C>() {
            @Override
            public int compare(C first, C second) {
                assert …
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
2
解决办法
3242
查看次数

使用Akka实现MapReduce

我正试图在Akka之上实现MapReduce,很幸运能找到Akka Essentials一书的代码.但是,我发现这个示例实现有两个主要问题,两者看起来都像基本的并发设计缺陷,在一本关于Akka的书中找到它是非常令人震惊的:

  1. 完成后,客户端将调用,shutdown()但此时无法保证消息通过WCMapReduceServer.我看到WCMapReduceServer在任何时候只获取部分数量的客户端消息,然后WCMapReduceServer输出[INFO] [06/25/2013 09:30:01.594] [WCMapReduceApp-5] [ActorSystem(WCMapReduceApp)] REMOTE: RemoteClientShutdown@akka://ClientApplication@192.168.224.65:2552意味着客户端shutdown()在客户端实际设法刷新所有未决消息之前发生.在客户端代码行41中,我们看到shutdown()发生时没有先刷新.在关闭系统之前,Akka是否有办法强制执行刷新出站消息?

  2. 另一个我已经修复过的更大的缺陷是用于向MapReduce服务器发出EOF信号的方式,主要任务(文字文件)完成后,给定所有子任务(文件的每一行)都完成.他发送一个特殊的字符串消息,DISPLAY_LIST并且此消息排队的优先级最低,请参阅代码.这里的一个重大缺陷是即使DISPLAY_LIST具有最低优先级,如果任何Map(或Reduce)任务任意长,则DISPLAY_LIST在所有MapReduce子任务完成之前消息将通过,因此该MapReduce示例的结果是非确定性的,即每次运行都可以得到不同的词典.可以通过替换MapActor#onReceive实现来揭示该问题 使用以下内容即使一个Map步骤任意长:

    public void onReceive(Object message) {
        System.out.println("MapActor -> onReceive(" + message + ")");
        if (message instanceof String) {
            String work = (String) message;
            // ******** BEGIN SLOW DOWN ONE MAP REQUEST
            if ("Thieves! thieves!".equals(work)) {
                try {
                    System.out.println("*** sleeping!");
                    Thread.sleep(5000);
                    System.out.println("*** back!");
                }
                catch (InterruptedException e) {
                    e.printStackTrace(); …
    Run Code Online (Sandbox Code Playgroud)

java mapreduce akka

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

如何让Eclipse控制台显示与终端相同的GoogleTests输出?

我广泛使用GoogleTest,控制台中的输出如下所示:

GoogleTest控制台输出

当我在Eclipse中运行相同的代码时(使用今天为止最新的Eclipse Mars),我得到以下输出,没有颜色和垃圾字符(仅将输出粘贴到此处是看不见的):

Running main() from gtest_main.cc
[0;32m[==========] [mRunning 3 tests from 1 test case.
[0;32m[----------] [mGlobal test environment set-up.
[0;32m[----------] [m3 tests from NloptAdapterSuite
[0;32m[ RUN      ] [mNloptAdapterSuite.testQuadraticFunction1
[0;32m[       OK ] [mNloptAdapterSuite.testQuadraticFunction1 (1 ms)
[0;32m[ RUN      ] [mNloptAdapterSuite.testQuadraticFunction1WithNoise
[0;32m[       OK ]     [mNloptAdapterSuite.testQuadraticFunction1WithNoise (1 ms)
[0;32m[ RUN      ] [mNloptAdapterSuite.testQuadraticFunction2
[0;32m[       OK ] [mNloptAdapterSuite.testQuadraticFunction2 (1 ms)
[0;32m[----------] [m3 tests from NloptAdapterSuite (3 ms total)

[0;32m[----------] [mGlobal test environment tear-down
[0;32m[==========] [m3 tests from 1 test case ran. (3 ms …
Run Code Online (Sandbox Code Playgroud)

c++ eclipse console googletest eclipse-mars

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

如何使用Slick代码生成器来包含数据库视图?

我正在尝试使用Slick 3.0.3为我的架构中的数据库表和视图生成Scala代码.以这个博客为例,我有以下文件build.sbt.但是,这将为我的数据库表生成代码,并且不包括数据库视图.如何获得生成的视图?

根据光滑的问题1022,我看到它可以做,但API看起来不一样,slick.codegen.SourceCodeGenerator并且没有getTablesdefaultTables包含视图名称.

name := "slickCodeGen"

version := "1.0"

scalaVersion := "2.11.6"

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")

libraryDependencies ++= Seq(
  "com.typesafe.slick" %% "slick" % "3.0.3",
  "com.typesafe.slick" %% "slick-codegen" % "3.0.3",
  "org.postgresql" %  "postgresql" % "9.4-1201-jdbc41",
  "com.zaxxer" % "HikariCP" % "2.3.2",
  "org.scalatest" %% "scalatest" % "2.2.4" % "test"
)

slick <<= slickCodeGenTask

sourceGenerators in Compile <+= slickCodeGenTask

lazy val slick = TaskKey[Seq[File]]("gen-tables")
lazy val slickCodeGenTask = (sourceManaged, dependencyClasspath …
Run Code Online (Sandbox Code Playgroud)

code-generation scala sbt slick slick-3.0

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

Scala Play 2.5表单bindFromRequest:在这里找不到任何HTTP请求?

我有一个控制器动作实现如下:

def doChangePassword = deadbolt.Restrict(List(Array(Application.USER_ROLE_KEY)))() 
{ request => // <<<<<<<<<<<< here is the request 
  Future {
    val context = JavaHelpers.createJavaContext(request)
    com.feth.play.module.pa.controllers.AuthenticateBase.noCache(context.response())

    val filledForm = Account.PasswordChangeForm.bindFromRequest
    // compilation error here, it can't see the request ^^^^^^^

    if (filledForm.hasErrors) {
      // User did not select whether to link or not link
      BadRequest(views.html.account.password_change(userService, filledForm))
    } else {
      val Some(user: UserRow) = userService.getUser(context.session)
      val newPassword = filledForm.get.password
      userService.changePassword(user, new MyUsernamePasswordAuthUser(newPassword), true)
      Redirect(routes.Application.profile).flashing(
        Application.FLASH_MESSAGE_KEY -> messagesApi.preferred(request)("playauthenticate.change_password.success")
      )
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的实现导致编译错误:

[error] /home/bravegag/code/play-authenticate-usage-scala/app/controllers/Account.scala:74: Cannot find …
Run Code Online (Sandbox Code Playgroud)

scala playframework deadbolt-2

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

如何从C++启动Python线程?

请注意,我被限制使用Python 2.6.我有一个Python 2.6应用程序,它使用一个用boost-python构建的C++多线程API库.我的用例只是从C++ boost线程执行Python函数回调,但尽管有许多不同的尝试和研究所有可用的在线资源,我还没有找到任何有效的方法.所有提出的解决方案围绕的功能的不同组合:Py_Initialize*,PyEval_InitThreads,PyGILState_Ensure,PyGILState_Release但在尝试所有可能的组合后一无所获工程实践中如

因此,这个问题:如何从C++启动和运行Python线程?我基本上想要:创建它,用Python目标函数对象运行它并忘记它.

那可能吗?

c++ python multithreading boost-python

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

如何强制 sbt 一次获取所需的一切?

我正在一个非常安全的项目中工作,无法通过代理访问 SBT 通常需要的所有在线存储库。我们想一次性获取我们需要的依赖项和传递依赖项。

如何强制 sbt 一次性获取项目所需的所有依赖项,然后只能离线工作?我试过在家里完全做到这一点。然后我复制了以下所有内容:

~/.ivy2/cache
~/.ivy2/local
$ACTIVATOR_HOME/repository
Run Code Online (Sandbox Code Playgroud)

SBT即使使用sbt "set offline := true" rungo执行并尝试在线获取所有内容......仍然很痛苦。然后终于打破并抱怨它没有找到一些依赖。

更新:我注意到另一个麻烦来源,但还不能断定它是 OP 损坏构建问题的罪魁祸首。我从 Linux(Ubuntu 机器)构建并获取项目的依赖项,然后将所有文件复制到企业 Windows 7 Pro 环境中。我发现许多属性文件~/.ivy2/cache在 Ubuntu 中引用了激活器存储库目录的绝对路径,这在 Windows env 中当然是不正确的,例如

#ivy cached data file for ch.qos.logback#logback-classic;1.1.3
#Fri Mar 10 08:39:37 CET 2017
artifact\:ivy\#ivy.original\#xml\#-1844423371.location=/opt/dev/activator/1.3.12/repository/ch.qos.logback/logback-classic/1.1.3/ivys/ivy.xml
artifact\:ivy\#ivy\#xml\#1016118566.is-local=true
artifact\:ivy\#ivy\#xml\#1016118566.location=/opt/dev/activator/1.3.12/repository/ch.qos.logback/logback-classic/1.1.3/ivys/ivy.xml
artifact\:ivy\#ivy.original\#xml\#-1844423371.is-local=true
artifact\:ivy\#ivy\#xml\#1016118566.exists=true
artifact\:logback-classic\#jar\#jar\#804750561.is-local=true
artifact\:logback-classic\#jar\#jar\#804750561.location=/opt/dev/activator/1.3.12/repository/ch.qos.logback/logback-classic/1.1.3/jars/logback-classic.jar
artifact\:ivy\#ivy.original\#xml\#-1844423371.exists=true
artifact\:logback-classic\#jar\#jar\#804750561.exists=true
Run Code Online (Sandbox Code Playgroud)

所以我去做了一个查找和替换,但构建仍然不起作用。将数千个属性文件硬编码到激活器位置的绝对路径看起来并不是一个好主意。我宁愿他们为此使用环境变量。

scala sbt typesafe-activator

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