小编Cap*_*man的帖子

Javascript函数定义语法

可能重复:
JavaScript:var functionName = function(){} vs function functionName(){}
在JavaScript中声明函数

我已经看到了两种不同的语法来定义javascript中的函数:

function f() {
   ...
}
Run Code Online (Sandbox Code Playgroud)

以及

var f = function() {
    ...
};
Run Code Online (Sandbox Code Playgroud)

这些有什么区别?其中一个被弃用了吗?

javascript syntax function

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

类构造函数可以永远阻塞吗?

假设我有一个在无限循环中提供某种功能的对象。

将无限循环放在构造函数中是否可以接受?

例子:

class Server {
    public:
    Server() {
        for(;;) {
            //...
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

或者如果构造函数永远不会完成,C++ 中是否存在固有的初始化问题?

(这个想法是运行你刚才说的服务器Server server;,可能在某个线程中......)

c++ multithreading constructor infinite-loop

42
推荐指数
3
解决办法
4236
查看次数

写入小文件会阻塞 20 毫秒

我发现在我的 Ubuntu 22 服务器上,尝试写入文件通常会导致大约 20 毫秒的延迟,即使只写入几个字节也是如此。

这是一些演示该问题的基本代码:

#include <iostream>
#include <fstream>
#include <chrono>
#include <filesystem>
#include <thread>

using namespace std;

void go_c() {
  FILE *out = fopen("hello.txt", "w");
  fputs("hello", out);
  fclose(out);
}

void go_cpp () {
  ofstream out("hello.txt");
  out<<"hello"<<endl;
}

double test(void (*f)()) {
  typedef chrono::time_point <chrono::steady_clock> tp;

  tp t0 = chrono::steady_clock::now();
  f();
  tp t1 = chrono::steady_clock::now();

  return chrono::duration<double>(t1-t0).count() * 1000; //milliseconds
}

void bench(void (*f)(), const char *txt, int delay_ms) {
  filesystem::remove("hello.txt");

  for (int i=0;i<5;i++) {
    double t = …
Run Code Online (Sandbox Code Playgroud)

c++ linux performance

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

使用带有"select"功能的非阻塞套接字有什么好处?

我正在Linux中编写一个服务器,它必须支持来自多个客户端的同时读/写操作.我想使用select函数来管理读/写可用性.

我不明白的是:假设我想等到套接字有可读数据.它将阻塞的选择状态的文档,直到有可读取的数据,并且读取函数不会阻塞.

所以如果我使用select并且我知道read函数不会阻塞,为什么我需要将套接字设置为非阻塞?

unix sockets network-programming

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

如何编译目录中的所有cpp文件?

我在许多文件夹中有许多源文件..有没有办法一次性编译所有这些文件而不必命名它们?

我知道我可以说

g++ -o out *.cpp 
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试

g++ -o out *.cpp folder/*.cpp
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.

这样做的正确方法是什么?我知道有可能使用makefile,但它可以用直接的g ++完成吗?

g++

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

为什么numpy list访问速度比vanilla python慢​​?

我的印象是numpy对于列表操作会更快,但下面的例子似乎表明不是这样:

import numpy as np
import time

def ver1():
    a = [i for i in range(40)]
    b = [0 for i in range(40)]
    for i in range(1000000):
        for j in range(40):
            b[j]=a[j]

def ver2():
    a = np.array([i for i in range(40)])
    b = np.array([0 for i in range(40)])
    for i in range(1000000):
        for j in range(40):
            b[j]=a[j]

t0 = time.time()
ver1()
t1 = time.time()
ver2()
t2 = time.time()

print(t1-t0)
print(t2-t1)
Run Code Online (Sandbox Code Playgroud)

输出是:

4.872278928756714
9.120521068572998
Run Code Online (Sandbox Code Playgroud)

(我在Windows 7中运行64位Python 3.4.3,在i7 920上运行)

我知道这不是复制列表的最快方法,但我试图找出我是否正在使用numpy错误.或者是这种操作的numpy速度较慢,而且在更复杂的操作中效率更高?

编辑:

我也试过以下,只是通过b …

python performance numpy

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

线程之间的布尔停止信号

通知后台线程停止执行的最简单方法是什么?

我用过类似的东西:

volatile bool Global_Stop = false;

void do_stuff() {
    while (!Global_Stop) {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

这有什么问题吗?我知道对于复杂的情况,您可能需要“原子”或互斥锁,但对于布尔信号,这应该可行,对吗?

c++ multithreading c++11

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

由于浮点舍入错误,"floor"是否可能返回不准确的结果?

我知道浮点数通常包括舍入误差.

当你取浮点(或双)的地板或天花板以将其转换为整数时,结果值是精确的还是"浮动"值仍然是近似值?

基本上,像floor(3.14159265)这样的东西有可能返回一个基本上为2.999999的值,当你试图将它转换为int时会转换为2吗?

c++ floating-point

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

如何从C ++执行python

我有一个C ++程序,需要对用Python编写的库进行某些调用。(而不是用C ++重写整个库...)

最简单的方法是什么?我需要将2个数字传递到库中,并取回2个数字。

我需要它可移植并且可以在Windows和Linux中运行,因此例如不可能使用POSIX popen。

到目前为止,我最好的解决方案是编写一个python包装程序,由C ++代码中的“系统”调用来调用,该程序使用命令行参数,调用该函数,并将结果写入文件,然后由文件打开。 C ++程序。

如果您知道更好的话,请告诉我...

c++ python

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

time.h 中的 time() 是单调的吗?

我说的是老式的 time() 函数,它返回自纪元以来的秒数(UTC)。这应该是单调的,对吧?

在我的测试中(见下文),它的运行速度比使用 CLOCK_MONOTONIC 的 Clock_gettime 快大约 10 倍,所以我想知道它是否可以用作单调计时器,用于我需要低延迟低分辨率单调计时器的情况。(例如,删除服务器上存在时间超过 15 秒的连接)

如果您好奇的话,这是代码:

#include <cstdio>
#include <chrono>
#include <time.h>
#include <sys/time.h>
#include <x86intrin.h>

using namespace std;

class Timer {
    std::chrono::time_point<std::chrono::steady_clock> start;
public:
    inline double t() {
        auto end = std::chrono::steady_clock::now();
        std::chrono::duration<double> diff = end - start;
        return diff.count();
    }
    inline double milli() { return t() * 1000.0;}
    Timer() :start(std::chrono::steady_clock::now()) {}
};

const int nloop = 10000000;

void cpp_steady() {
    for (int i=0;i<nloop;i++) {
        chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
    }
}

void …
Run Code Online (Sandbox Code Playgroud)

c++ performance time

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

Javascript onkeypress事件触发但输入文本值不正确

我正在编写一个简单的javascript表单,它根据值"blue"检查输入值.现在,如果你输入"蓝色",它表示它是不正确的,但如果添加任何其他字符,它说是正确的.好像有一个字符的延迟,所以当我输入"蓝色"时,它只会变成"蓝色".这是代码:

<html>
<head>
<title>Favorite Color</title>
</head>

<body>
<h1>Quiz Time</h1>
<h2>What is your favorite color?</h2>

<p>Your Answer: <input type="text" id="txtinput" /></p>
<p id="message"></p>

<script type = "text/javascript">
function init() {
    var inp = document.getElementById("txtinput");
    inp.onkeypress=checkAnswer;

    checkAnswer();
}

onload = init;

function checkAnswer() {
    var text = document.getElementById("txtinput");
    var msg = document.getElementById("message");

    var sol = "blue";
    var ans = text.value;
    ans = ans.toLowerCase();

    if (ans.length <=0) {
        msg.innerHTML="<span style=\"color:blue;\">Enter Something.</span>";
    }
    else if (ans == sol) {
        msg.innerHTML="<span style=\"color:green;\">Correct!</span>";
    } else { …
Run Code Online (Sandbox Code Playgroud)

javascript events

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

现代 x64 系统上的指针内部是什么?

此代码例如:

int x = 75;
int *p = &x;

printf("%llx\n",p);
Run Code Online (Sandbox Code Playgroud)

写入 64 位数字。我想问的是,这个数字到底是多少?是的,它是一个地址。

但它是存储值 75 的虚拟内存中的绝对地址吗?或者它可能从某个页面标记偏移,或者从程序内存块的“起点”偏移?

如果重要的话,我问的是典型的 x64 英特尔芯片上的 64 位 Windows 10。

c windows 64-bit

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

如何写入非阻塞套接字(使用 epoll 时)

当在非阻塞套接字上使用 epoll 进行异步套接字 IO 时,读取似乎很简单:直到epoll_wait套接字准备好读取,然后读取直到获得EAGAIN/ EWOULDBLOCK

但是怎么发送呢?据推测,执行单个大型send操作会阻塞,因此您将始终得到EAGAIN/ EWOULDBLOCK。你打算做什么?

c sockets linux epoll

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