小编Nav*_*vin的帖子

为什么人们使用bouncycastle而不是Java内置的JCE提供程序?有什么不同?

为什么人们使用bouncycastle而不是Java Cryptography Extension?有什么不同?

java cryptography

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

使用指针从单链表中删除项目

在最近的Slashdot访谈中, Linus Torvalds给出了一个例子,说明一些人如何使用指针,表明他们并不真正理解如何正确使用它们.

不幸的是,由于我是他所谈论的人之一,我也不理解他的例子:

我见过太多人通过跟踪"prev"条目删除单链表项,然后删除条目,做类似的事情

if (prev)
    prev->next = entry->next;
else
    list_head = entry->next;
Run Code Online (Sandbox Code Playgroud)

每当我看到这样的代码时,我就会去"这个人不理解指针".而且很遗憾很常见.理解指针的人只使用"指向条目指针的指针",并使用list_head的地址初始化它.然后当他们遍历列表时,他们可以在不使用任何条件的情况下删除条目,只需执行即可

*pp = entry->next
Run Code Online (Sandbox Code Playgroud)

有人可以提供更多解释为什么这种方法更好,以及它如何在没有条件声明的情况下工作?

c pointers linked-list

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

哪种STL算法可以确定容器中的一项是否恰好满足谓词?

我需要一个STL算法,该算法需要一个谓词和一个集合,并在集合中true只有一个成员满足该谓词的情况下返回,否则返回false

我将如何使用STL算法来做到这一点?

例如,用STL算法代码替换以下内容以表示相同的返回值。

int count = 0;

for( auto itr = c.begin(); itr != c.end(); ++itr ) {
    if ( predicate( *itr ) ) {
      if ( ++count > 1 ) {
        break;
      }
    }
}

return 1 == count;
Run Code Online (Sandbox Code Playgroud)

c++ algorithm counting c++-standard-library c++11

46
推荐指数
4
解决办法
2846
查看次数

获取C++函数参数的类型

是否有一种标准方法来获取函数参数的类型并将这些类型作为模板参数包传递?我知道这在C++中是可行的,因为它之前已经完成了.

我希望用C++ 14或即将推出的C++ 1z,这里有一种惯用的方法arg_types<F>...:

template <typename ...Params>
void some_function(); // Params = const char* and const char*

FILE* fopen(const char* restrict filename, const char* restrict mode);

int main(){
    some_function<arg_types<fopen>...>();
}
Run Code Online (Sandbox Code Playgroud)

需要明确的是,一个声称没有标准方法可以做到这一点的答案不是答案.如果没有答案,我希望问题仍然无法解决,直到解决方案被添加到C++ 500或直到宇宙的热量死亡,以先发生者为准:)

编辑:删除的答案指出我可以PRETTY_FUNCTION用来获取参数类型的名称.但是,我想要实际的类型.不是那些类型的名称.

c++ templates variadic-templates c++14 c++17

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

以不同顺序添加相同的双精度时的结果不同

为什么添加相同数字时输出会有所不同?

public class Test {

    public static void main(String a[]) {

        double[] x = new double[]{3.9, 4.3, 3.6, 1.3, 2.6};
        System.out.println(">>>>>>> " + sum(x));
    }

    public static double sum(double[] d) {

        double sum = 0;
        for (int i = 0; i < d.length; i++) {
            sum += d[i];
        }
        return sum;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是: 15.7

如果我交换价值观

double[] x = new double[] {2.6, 3.9, 4.3, 3.6, 1.3};
Run Code Online (Sandbox Code Playgroud)

我得到输出为: 15.700000000000001

如何获得相同的输出?

java floating-point floating-accuracy

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

语言的类型安全方面是R.

维基百科指出R是"多范式:数组,面向对象,命令式,功能性,程序性,反思性和动态性.但是它的类型安全性如何?请用例子解释R中不同方面/种类的可能类型安全性,例如

  • 我们是否获得未经检查的运行时类型错误?
  • 尝试忽略数据类型的操作或函数调用是否被拒绝?
  • 一旦类型匹配失败发生,是否存在明确定义的错误或异常行为(与未定义的行为相反)?
  • 数据对象是固定的还是不变的?
  • 类型系统可以逃避吗?
  • 它是否具有复杂类型的复杂细粒度系统,并且每个对象都有一个明确定义的类型,它将禁止非法的值和操作吗?
  • 支持隐式类型转换(已经通过一些答案显示了这一点,谢谢).

这些问题来自维基百科(http://en.wikipedia.org/wiki/Strong_typing),因为强/弱类型太过模糊而无法提出要求(感谢delnan的澄清).

r typing

12
推荐指数
4
解决办法
3025
查看次数

使用LLVM IR实现动态打字Lanugage

我正在尝试使用动态类型实现玩具语言,即变量没有类型,只有值,并且每个变量在使用之前都需要声明.例如,代码可能看起来像var x; x = 3; x = 'a';.此外,我想将这种玩具语言编译为本机代码,而不是在某些虚拟机中运行它.

目前,我已经生成了一个AST,我将使用LLVM C++ API将AST编译为LLVM IR.问题是,我应该生成什么样的IR

  1. 变量声明(带或不带初始值,如var x;var y = 3.4;
  2. 可变访问(如ain c = a + 1)

compiler-construction compilation llvm dynamic-typing llvm-ir

10
推荐指数
0
解决办法
1197
查看次数

为什么"hello \\ s*world"与"hello world"不匹配?

为什么此代码抛出InputMismatchException?

Scanner scanner = new Scanner("hello world");
System.out.println(scanner.next("hello\\s*world"));
Run Code Online (Sandbox Code Playgroud)

http://regexpal.com/中使用相同的正则表达式匹配(使用\ s代替\\ s)

java regex java.util.scanner

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

使用MSVC 2013初始化`static constexpr double`

标题说明了所有这两种常用方法都不起作用.我错过了什么?

1.

class Cl {
    static constexpr double PI;
};
constexpr double Cl::PI = 3.14;
Run Code Online (Sandbox Code Playgroud)

(26):错误C2737:'private:static double const Cl :: PI':'constexpr'对象必须初始化

2.

class Cl {
    static constexpr double PI = 3.14;
};
Run Code Online (Sandbox Code Playgroud)

(26):错误C2864:'Cl :: PI':具有类内初始化程序的静态数据成员必须具有非易失性const整数类型
类型为'const double'

在两次尝试中,错误都在类中的同一行.我正在使用VisualStudio/MSVC 2013年11月CTP编译器.

请注意,使变量const不是解决方案,因为我想在constexpr函数和普通函数中使用此常量.

c++ visual-c++ constexpr c++11 visual-studio-2013

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

ovly_debug_event在chrome中做了什么?

当我注意到很多线程都有类似于此的跟踪时,我正在查看chrome的线程堆栈:

0, wow64cpu.dll!TurboDispatchJumpAddressEnd+0x6c0
1, wow64cpu.dll!TurboDispatchJumpAddressEnd+0x4a8
2, wow64.dll!Wow64SystemServiceEx+0x1ce
3, wow64.dll!Wow64LdrpInitialize+0x429
4, ntdll.dll!RtlIsDosDeviceName_U+0x24c87
5, ntdll.dll!LdrInitializeThunk+0xe
6, ntdll.dll!ZwWaitForSingleObject+0x15
7, kernel32.dll!WaitForSingleObjectEx+0x43
8, kernel32.dll!WaitForSingleObject+0x12
9, chrome.dll!ovly_debug_event+0x16574
10, chrome.dll!ovly_debug_event+0x14904
11, chrome.dll!ovly_debug_event+0x14826
12, chrome.dll!ovly_debug_event+0x16d19
13, chrome.dll!ovly_debug_event+0x1bea1b
14, chrome.dll!ovly_debug_event+0xe8ff4
15, chrome.dll!ovly_debug_event+0x16b50
16, chrome.dll!ovly_debug_event+0x16ab2
17, kernel32.dll!BaseThreadInitThunk+0x12
18, ntdll.dll!RtlInitializeExceptionChain+0x63
19, ntdll.dll!RtlInitializeExceptionChain+0x36
Run Code Online (Sandbox Code Playgroud)

铬源具有以下代码,sel_ldr.c其中似乎声明ovly_debug_event为几乎为空的函数:

void _ovly_debug_event (void) {
#ifdef __GNUC__
  /*
   * The asm volatile is here as instructed by the GCC docs.
   * It's not enough to declare a function noinline.
   * GCC will still look inside …
Run Code Online (Sandbox Code Playgroud)

c c++ google-chrome stack-trace chromium

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