小编dri*_*ood的帖子

为什么恒定总是从大O分析中掉线?

我试图在PC上运行程序的背景下理解Big O分析的一个特定方面.

假设我有一个性能为O(n + 2)的算法.如果n变得非常大,那么2变得微不足道.在这种情况下,非常清楚真正的性能是O(n).

但是,另一种算法的平均性能为O(n ^ 2/2).我看到这个例子的书说实际表现是O(n ^ 2).我不确定我明白为什么,我的意思是在这种情况下,2似乎并非完全无足轻重.所以我正在寻找书中一个很好的清晰解释.这本书以这种方式解释:

"考虑1/2意味着什么.检查每个值的实际时间高度依赖于代码转换的机器指令,然后取决于CPU执行指令的速度.因此1/2不会非常意思."

我的反应是......嗯??? 我完全不知道那句话是什么,或者更确切地说,这句话与他们的结论有什么关系.请允许有人为我拼出来.

谢谢你的帮助.

algorithm big-o analysis

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

尝试 ES6 样式导入会给出“不能在模块外使用导入语句”

我正在尝试在 intellij 中编写一个 javascript 测试,我需要为其导入一些依赖项,并且我想使用 ES6 样式的导入语句,但出现错误

/usr/local/bin/node /workspace/rr-sample/node_modules/mocha/bin/_mocha
--ui bdd --reporter "/Users/me/Library/Application Support/IntelliJIdea2019.1/NodeJS/js/mocha-intellij/lib/mochaIntellijReporter.js"
tests/*.test.js /workspace/rr-sample/tests/App.test.js:3
import chai from 'chai'
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:1043:16)
    at Module._compile (internal/modules/cjs/loader.js:1091:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1160:10)
    at Module.load (internal/modules/cjs/loader.js:976:32)
    at Function.Module._load (internal/modules/cjs/loader.js:884:14)
    at Module.require (internal/modules/cjs/loader.js:1016:19)
    at require (internal/modules/cjs/helpers.js:69:18)
    at /workspace/rr-sample/node_modules/mocha/lib/mocha.js:334:36
    at Array.forEach (<anonymous>)
    at Mocha.loadFiles (/workspace/rr-sample/node_modules/mocha/lib/mocha.js:331:14)
    at Mocha.run (/workspace/rr-sample/node_modules/mocha/lib/mocha.js:809:10)
    at Object.exports.singleRun (/workspace/rr-sample/node_modules/mocha/lib/cli/run-helpers.js:108:16)
    at exports.runMocha (/workspace/rr-sample/node_modules/mocha/lib/cli/run-helpers.js:142:13)
    at Object.exports.handler (/workspace/rr-sample/node_modules/mocha/lib/cli/run.js:292:3)
    at Object.runCommand (/workspace/rr-sample/node_modules/yargs/lib/command.js:242:26)
    at Object.parseArgs [as _parseArgs] (/workspace/rr-sample/node_modules/yargs/yargs.js:1087:28)
    at Object.parse …
Run Code Online (Sandbox Code Playgroud)

javascript intellij-idea mocha.js chai

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

如何将信任证书从.jks转换为.pem?

我有一个Java SSL服务器,我希望我的Java SSL客户端和C++ SSL客户端能够连接.Java客户端连接没有问题.现在我希望我的C++ SSL客户端能够连接.所以为了这个目的,我想,我想将serverpub.jks导出到.pem文件,以便我的C++客户端可以将它加载到它的ssl上下文中.但这不起作用.

下面是我如何为Java客户端和服务器创建jks密钥库的描述,以及我如何尝试将serverpub.jks导出到.pem文件.

步骤1:生成客户端和服务器密钥库

c:\keytool -genkeypair -alias myserverkeys -keyalg RSA -dname "CN=my Server,OU=kl2217,O=kl2217org,L=NYC,ST=NY,C=US" -keypass password -keystore server.jks -storepass password
c:\keytool -genkeypair -alias myclientkeys -keyalg RSA -dname "CN=my Client,OU=kl2217,O=kl2217org,L=NYC,ST=NY,C=US" -keypass password -keystore myclient.jks -storepass password
Run Code Online (Sandbox Code Playgroud)

步骤2:导出服务器公共证书并创建单独的密钥库

c:\keytool -exportcert -alias myserverkeys -file serverpub.cer -keystore myserver.jks -storepass spacex
c:\keytool -importcert -keystore serverpub.jks -alias serverpub -file serverpub.cer -storepass password
Run Code Online (Sandbox Code Playgroud)

步骤3:导出客户端公共证书并创建单独的密钥库

c:\keytool -exportcert -alias myclientkeys -file clientpub.cer -keystore myclient.jks -storepass spacey
c:\keytool -importcert -keystore clientpub.jks -alias clientpub -file clientpub.cer -storepass password
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好. …

java keytool pem

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

显式函数模板专业化 - 为什么?

我一直在阅读和研究,不同的帖子,c ++书籍,文章,到目前为止还没有人向我解释这种结构的理性.它毫无意义,它真的让我烦恼.模板的重点是将类型参数化为函数(或类,但我具体说的是函数模板,而不是类).为什么使用没有类型参数的有趣的模板语法???

//this seems ridiculous. why would anybody ever use this?
template<> void Swap(int & a , int & b){}
//I would always use this if I needed to take care of a special case, no?
void Swap(int & a , int & b){}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我真的很感激一些见解,而且我确实理解功能模板专业化在实践中并不是那么有用,但我仍然想要理解为什么它首先被发明.想出它的人肯定有一个当时看起来足够引人注目的理由.

谢谢.

c++ template-specialization

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

不了解Java原子包中的CAS操作

我正在研究Java书籍中的并发包。我不太了解本书中有关CAS操作的内容。下面的代码示例是counter本书中的线程安全类。

public class Counter{
    private AtomicInteger count = new AtomicInteger();
    public void increment(){
        count.getAndIncrement();    //atomic operation
    }
    ....
}
Run Code Online (Sandbox Code Playgroud)

这是书中所说的。

实际上,即使诸如这样的方法也要getAndIncrement()花费几个步骤来执行。此实现现在是线程安全的,因此称为CAS。CAS代表“比较并交换”。大多数现代CPU都有一组CAS指令。现在正在发生的事情的基本概述如下:

  1. 存储在count中的值将被复制到一个临时变量中。
  2. 临时变量增加。
  3. 将当前计数的值与原始值进行比较。如果未更改,则将旧值替换为新值。

好吧,我明白它关于多个步骤的说法。我不太了解的是枚举步骤中正在发生的事情。

  1. 存储在count中的值将被复制到一个临时变量中。

该临时变量在哪里?它在主存储器中,注册吗?还是特定于CPU体系结构?

  1. 将当前计数的值与原始值进行比较。如果未更改,则将旧值替换为新值。

原始值存储在哪里?不能是临时变量。那个人正在被修改,对吧?我想念什么?

谢谢

java atomicity compare-and-swap

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

JSX 中的 className 属性是什么意思?

我正在尝试找出一些示例 JavaScript/React/Enzyme 代码,并且classNameReactTestObj下面JSX 部分中的属性含义感到完全困惑。

我知道className在 JSX 中使用是因为它class是 JavaScript 中的保留关键字,但我认为JSX/HTML 中的className/class属性是用于引用 CSS 类的保留关键字?如果在我的示例中没有 CSS,除了引用 CSS 类之外,class/的合法用途是className什么?

import React from 'react';

export class ReactTestObj extends React.Component<Props, State> {

  constructor(props) {
    super(props);
  }

  render() {
    return (
      <div className={'outer'}>
        <div className={'inner'}>
          <span className={'prop'}>prop</span>
          <span className={'state'}>state</span>
          <button
            className="activate"
            onClick={function() {

            }}>
            {this.props.value}
          </button>
        </div>
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

和上下文的示例测试代码:

import { mount, React, expect } from '../specHelper';
import …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs enzyme

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

为什么删除Qt(QSslSocket)对象会导致崩溃

我真的很难过,希望有人知道我的问题.

我有一个非常简单的SSL客户端和服务器.连接很好.沟通很好.当客户端与服务器断开连接时,会出现问题.这会在服务器上触发一个在SLOT中处理的信号error_handler(QAbstractSocket::SocketError in_error).在那个函数中,sslSocket对象必须被删除,我想.

但是这样做会导致服务器出现故障.我不明白发生了什么.我希望这很简单,但显然我缺少一些Qt(或其他)概念.

有人可以帮忙吗?

基本服务器代码:

void SSLServer::incomingConnection(int sd)
{
    sslSocket = new SSLSocket(this);
    if( sslSocket->setSocketDescriptor(sd))
    {
        QFile sslkeyfile(privKey_);
        sslSocket->setPrivateKey(QSslKey(sslkeyfile.readAll(),QSsl::Rsa));

        QFile cliCertFile(serverCert_);
        sslSocket->setLocalCertificate(QSslCertificate(cliCertFile.readAll()));

        QFile certFile(caCert_);
        sslSocket->addCaCertificate(QSslCertificate(certFile.readAll()));

        sslSocket->setPeerVerifyMode(QSslSocket::VerifyPeer);
        sslSocket->setProtocol(QSsl::SslV3);

        connect(sslSocket, SIGNAL(error(QAbstractSocket::SocketError)),
                this, SLOT(error_handler(QAbstractSocket::SocketError)));
        connect(sslSocket, SIGNAL(sslErrors(QList<QSslError>)),
                this, SLOT(ssl_error_handler(QList<QSslError>)));
        connect(sslSocket, SIGNAL(encrypted()), this,
                SLOT(ready()));
        connect(sslSocket, SIGNAL(readyRead()), this,
                SLOT(read_data_from_client()));

        sslSocket->startServerEncryption();
        if(!sslSocket->waitForEncrypted())
        {
            qDebug() << "failed to perform SSL handshake with client";
            return;
        }
    }

}

void SSLServer::read_data_from_client()
{
    QByteArray qstrbytes = sslSocket->readAll();
    qDebug() << Q_FUNC_INFO << qstrbytes;
}

void …
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

无法得到哪个Android版本将支持chromecast应用程序的答案

我不明白为什么我很难找到一个简单,直截了当的问题的答案.

我刚买了chromecast加密狗,想从我的Android手机控制设备.这是一项微不足道的任务,我知道因为我设置了我的Windows 8平板电脑来做到这一点.唯一的问题是我有一个旧的2010 HTC手机运行froyo.当我去谷歌播放时,我没有看到chromecast应用程序,我认为这是因为它不会在froyo上运行.因此我的问题是 - 运行chromecast app的最低操作系统要求是什么.不知何故,这个基本信息不易获取.

非常感谢任何可以让我知道的人.我错过了一些简单的东西吗?这是怎么回事?

谢谢你的帮助.

android chromecast

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

我为什么要从g ++中收到"未初始化"的警告

编译Qt c ++程序会产生一个困扰我的编译器警告.

struct QAE{
    QString qsSetname;
    QString qsAnswer;
    QString qsQuestion;
    int index;
};

typedef QHash<int, QAE *> * ptrQAEset;
typedef QHash<int, QAE *> QAEset;

QHash<QString, ptrQAEset> QAESets;

void func() {
    ptrQAEset qaeset = QAESets.value(oldSetName, qaeset);
    QAESets.remove(oldSetName); //remove association with old set name
    QAESets.insert(newSetName, qaeset); //create association with new set name
}
Run Code Online (Sandbox Code Playgroud)

和警告

    C:\Qt\5.4\mingw491_32\include\QtCore\qhash.h:205: warning: 'qaeset' may be used uninitialized in this function [-Wmaybe-uninitialized]
     : next(n), h(hash), key(key0), value(value0) {}
Run Code Online (Sandbox Code Playgroud)

我显然正在初始化它.我不明白这个警告.

谢谢

c++ qt

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

对java同步的工作方式感到困惑

我有基于我在网上找到的示例的示例代码来说明如何使用wait()notify().让我在代码示例前面加上Java教科书所做的以下语句waitnotify.

线程不能在对象上调用wait或notify方法,除非它拥有该对象的锁定

现在看看这段代码和输出:

public class ThreadTester
{
    public class Message {
        private String msg;
        public Message(String str){ this.msg=str;}
        public String getMsg() { return msg; }
        public void setMsg(String str) { this.msg=str;} 
    }

    public class Waiter implements Runnable{         
        private Message msg;
        public Waiter(Message m){
            this.msg = m;
        }
        public void run() {
            String name = Thread.currentThread().getName();
            synchronized (msg) {
                try{
                    System.out.println(name + " acquired lock to msg object. waiting to get notified");
                    msg.wait(); …
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization

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