小编Rei*_*ica的帖子

是否可以向JavaScript函数发送可变数量的参数?

是否可以从数组中向JavaScript函数发送可变数量的参数?

var arr = ['a','b','c']

var func = function()
{
    // debug 
    alert(arguments.length);
    //
    for(arg in arguments)
        alert(arg);
}

func('a','b','c','d'); // prints 4 which is what I want, then 'a','b','c','d'
func(arr); // prints 1, then 'Array'
Run Code Online (Sandbox Code Playgroud)

我最近写了很多Python,这是一个很好的模式,能够接受varargs并发送它们.例如

def func(*args):
   print len(args)
   for i in args:
       print i

func('a','b','c','d'); // prints 4 which is what I want, then 'a','b','c','d'
func(*arr) // prints 4 which is what I want, then 'a','b','c','d'
Run Code Online (Sandbox Code Playgroud)

在JavaScript中是否可以发送一个数组作为参数数组?

javascript variadic-functions

159
推荐指数
6
解决办法
10万
查看次数

为什么MYSQL更高的LIMIT偏移会降低查询速度?

简而言之:一个包含超过1600万条记录的表[大小为2GB].使用ORDER BY*primary_key时,使用SELECT的LIMIT偏移越高,查询变得越慢

所以

SELECT * FROM large ORDER BY `id`  LIMIT 0, 30 
Run Code Online (Sandbox Code Playgroud)

远远不及

SELECT * FROM large ORDER BY `id` LIMIT 10000, 30 
Run Code Online (Sandbox Code Playgroud)

这也只能订购30条记录.所以这不是ORDER BY的开销.
现在,当获取最新的30行时,大约需要180秒.如何优化该简单查询?

mysql performance sql-order-by limit

158
推荐指数
5
解决办法
7万
查看次数

什么是SQL(语言)的好替代品?

我偶尔会听到关于SQL如何糟糕而且它不是一种好语言的事情,但我从来没有真正听到过关于它的替代方案.那么,是否有其他优秀的语言可以实现相同的目的(数据库访问),是什么让它们比SQL更好?有没有好的数据库使用这种替代语言?

编辑:我熟悉SQL并一直使用它.我没有问题,我只对可能存在的任何替代方案感兴趣,以及为什么人们更喜欢它们.

我也不是在寻找替代类型的数据库(NoSQL运动),只是寻找不同的数据库访问方式.

sql database

90
推荐指数
9
解决办法
6万
查看次数

为什么模数除法(%)仅适用于整数?

我最近遇到了一个问题,可以使用模数除法轻松解决,但输入是一个浮点数:

给定周期函数(例如sin)和只能在周期范围内计算它的计算机函数(例如[-π,π]),创建一个可以处理任何输入的函数.

"明显"的解决方案是这样的:

#include <cmath>

float sin(float x){
    return limited_sin((x + M_PI) % (2 *M_PI) - M_PI);
}
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我收到此错误:

error: invalid operands of types double and double to binary operator %
Run Code Online (Sandbox Code Playgroud)

有趣的是,它确实在Python中有效:

def sin(x):
    return limited_sin((x + math.pi) % (2 * math.pi) - math.pi)
Run Code Online (Sandbox Code Playgroud)

c c++

75
推荐指数
5
解决办法
11万
查看次数

为什么我应该按照它们声明的顺序初始化成员变量?

我今天编写了一些代码并得到了一个奇怪的编译错误,这似乎是由于成员变量的初始化顺序与声明的顺序不同.

例:

class Test {
    int a;
    int b;

public:
    Test() : b(1), a(2) {
    }
};

int main() {
    Test test;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后,如果我编译它-Werror -Wall:

$ g++ -Werror -Wall test.cpp
test.cpp: In constructor ‘Test::Test()’:
test.cpp:3:9: error: ‘Test::b’ will be initialized after [-Werror=reorder]
test.cpp:2:9: error:   ‘int Test::a’ [-Werror=reorder]
test.cpp:6:5: error:   when initialized here [-Werror=reorder]
cc1plus: all warnings being treated as errors
Run Code Online (Sandbox Code Playgroud)

我意识到这-Wall是明确要求GCC过度警告,但我认为所有这些都是有原因的.那么,初始化成员变量的顺序怎么样呢?

c++ g++ compiler-warnings

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

为什么我们不能自动推断出退货类型?

最近我在找一个想要使C++更多Haskell-y的朋友,我们想要一个基本上像这样的函数:

auto sum(auto a, auto b) {
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

显然我不能使用auto作为参数类型,所以我将其更改为:

template<class A, class B>
auto sum(A a, B b) {
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.我们最终意识到我们需要这个:

template<class A, class B>
auto sum(A a, B b) -> decltype(a + b) {
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,重点是什么?不decltype只是重复信息,因为编译器只能查看return语句?

我认为可能需要它,所以我们可以只包含一个头文件:

template<class A, class B>
auto sum(A a, B b) -> decltype(a + b);
Run Code Online (Sandbox Code Playgroud)

...但我们无论如何都不能使用这样的模板.

我考虑的另一件事是编译器可能更容易,但看起来它实际上会更难.

案例1:随着 decltype

  • 弄清楚decltype语句的类型
  • 找出任何返回值的类型
  • 看看它们是否匹配

案例2:没有 decltype

  • 找出任何返回值的类型
  • 看看它们是否匹配

因此,考虑到这些事情,尾随返回类型的重点是decltype …

c++ c++11

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

如何解密SHA-256加密字符串?

我有一个使用以下方法编码的字符串,有没有办法将此字符串解码回原始值?谢谢.

public synchronized String encode(String password)
        throws NoSuchAlgorithmException, IOException {

    String encodedPassword = null;
    byte[] salt = base64ToByte(saltChars);

    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    digest.reset();
    digest.update(salt);

    byte[] btPass = digest.digest(password.getBytes("UTF-8"));
    for (int i = 0; i < ITERATION_COUNT; i++) {
        digest.reset();
        btPass = digest.digest(btPass);
    }

    encodedPassword = byteToBase64(btPass);     
    return encodedPassword;
}

private byte[] base64ToByte(String str) throws IOException {

    BASE64Decoder decoder = new BASE64Decoder();
    byte[] returnbyteArray = decoder.decodeBuffer(str);

    return returnbyteArray;
}

private String byteToBase64(byte[] bt) {

    BASE64Encoder endecoder = new BASE64Encoder();
    String returnString …
Run Code Online (Sandbox Code Playgroud)

java hash cryptography

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

如何在Spring MVC中发送HTML电子邮件?

我已成功发送简单的电子邮件:

SimpleMailMessage mailMessage = new SimpleMailMessage();

mailMessage.setTo("someone@abc.com");
mailMessage.setSubject("This is the test message for testing gmail smtp server using spring mail");
mailMessage.setFrom("abc@gmail.com");
mailMessage.setText("This is the test message for testing gmail smtp server using spring mail. \n" +
        "Thanks \n Regards \n Saurabh ");
mailSender.send(mailMessage);
Run Code Online (Sandbox Code Playgroud)

我需要什么设置才能发送html电子邮件

java spring-mvc

41
推荐指数
5
解决办法
7万
查看次数

如何以跨平台方式以彩色打印到控制台?

如何在Mac OS X和Linux上使用"printf"输出彩色文本?

linux macos console colors

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

将C或C++文件作为脚本运行

所以这可能是一个很长的镜头,但有没有办法将C或C++文件作为脚本运行?我试过了:

#!/usr/bin/gcc main.c -o main; ./main

int main(){ return 0; }
Run Code Online (Sandbox Code Playgroud)

但它说:

./main.c:1:2: error: invalid preprocessing directive #!
Run Code Online (Sandbox Code Playgroud)

c c++ shell

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