小编A. *_*evy的帖子

什么属于教育工具,以展示人们在C/C++中做出的无根据的假设?

我想为SO准备一些教育工具,这应该有助于初学者(和中级)程序员识别和挑战他们在C,C++及其平台中的无根据的假设.

例子:

  • "整数环绕"
  • "每个人都有ASCII"
  • "我可以将函数指针存储在void*中"

我认为可以在各种平台上运行一个小型测试程序,它运行"合理的"假设,根据我们在SO中的经验,通常是由许多缺乏经验/半经验的主流开发人员制作的,并记录他们在各种机器上打破的方式.

这样做的目的不是要证明做某事是"安全的"(这是不可能做到的,测试只有在他们破坏的情况下证明了什么),而是向最难以理解的个体展示最不起眼的表达方式如果它具有未定义或实现定义的行为,则在另一台机器上中断..

为此,我想问你:

  • 如何改进这个想法?
  • 哪些测试会很好,它们应该是什么样的?
  • 您是否可以在可以获得的平台上运行测试并发布结果,以便最终得到平台数据库,它们之间的区别以及为什么允许这种差异?

这是测试玩具的当前版本:

#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
#include <stddef.h>
int count=0;
int total=0;
void expect(const char *info, const char *expr)
{
    printf("..%s\n   but '%s' is false.\n",info,expr);
    fflush(stdout);
    count++;
}
#define EXPECT(INFO,EXPR) if (total++,!(EXPR)) expect(INFO,#EXPR)

/* stack check..How can I do this better? */
ptrdiff_t check_grow(int k, int *p)
{
    if (p==0) p=&k;
    if (k==0) return &k-p;
    else return check_grow(k-1,p);
}
#define BITS_PER_INT (sizeof(int)*CHAR_BIT)

int bits_per_int=BITS_PER_INT;
int int_max=INT_MAX; …
Run Code Online (Sandbox Code Playgroud)

c c++ portability cross-platform

120
推荐指数
8
解决办法
8933
查看次数

使用快速傅里叶变换分析音频

我正在尝试在python中创建一个图形频谱分析器.

我目前正在读取1024字节的16位双通道44,100 Hz采样率音频流,并将两个通道的幅度平均在一起.所以现在我有256个签名短裤阵列.我现在想要使用像numpy这样的模块在该阵列上预先形成一个fft,然后使用结果创建图形频谱分析器,开始时只需32个小节.

我已经阅读了关于快速傅里叶变换和离散傅里叶变换的维基百科文章,但我仍然不清楚结果数组代表什么.这是我使用numpy在我的数组上执行fft后数组的样子:

   [ -3.37260500e+05 +0.00000000e+00j   7.11787022e+05 +1.70667403e+04j
   4.10040193e+05 +3.28653370e+05j   9.90933073e+04 +1.60555003e+05j
   2.28787050e+05 +3.24141951e+05j   2.09781047e+04 +2.31063376e+05j
  -2.15941453e+05 +1.63773851e+05j  -7.07833051e+04 +1.52467334e+05j
  -1.37440802e+05 +6.28107674e+04j  -7.07536614e+03 +5.55634993e+03j
  -4.31009964e+04 -1.74891657e+05j   1.39384348e+05 +1.95956947e+04j
   1.73613033e+05 +1.16883207e+05j   1.15610357e+05 -2.62619884e+04j
  -2.05469722e+05 +1.71343186e+05j  -1.56779748e+04 +1.51258101e+05j
  -2.08639913e+05 +6.07372799e+04j  -2.90623668e+05 -2.79550838e+05j
  -1.68112214e+05 +4.47877871e+04j  -1.21289916e+03 +1.18397979e+05j
  -1.55779104e+05 +5.06852464e+04j   1.95309737e+05 +1.93876325e+04j
  -2.80400414e+05 +6.90079265e+04j   1.25892113e+04 -1.39293422e+05j
   3.10709174e+04 -1.35248953e+05j   1.31003438e+05 +1.90799303e+05j...
Run Code Online (Sandbox Code Playgroud)

我想知道这些数字究竟代表什么,以及我如何将这些数字转换为32个柱中每一个的高度百分比.另外,我应该将2个频道平均在一起吗?

python audio signal-processing fft spectrum

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

Node.js或Erlang

当涉及到它可以处理的并发级别时,我真的很喜欢这些工具.

Erlang看起来是更稳定的解决方案,但需要更多的学习和大量潜入功能语言范例.看起来Erlang在多核CPU方面做得更好(如果我错了就解决我的问题).

但我应该选择哪个?从短期/长期角度来看哪一个更好?

我的目标是学习一种工具,使得在高负载下扩展我的Web项目比传统语言更容易.

concurrency erlang multicore node.js

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

使用XMLHttpRequest加载JSON文件时,Firefox中的"格式不正确"错误

当我的页面上的JavaScript加载包含JavaScript Object Notation格式的对象的文本文件时,我在Firefox 3.0.7的错误控制台中收到"格式不正确"的错误.如果文件只包含JSON对象,则会产生错误.如果我将对象包装在<document> </ document>标记中,则不会产生错误.请求以任何一种方式成功,所以我可以忽略它,但我不希望我的错误日志填满这些消息.

以下是一些示例代码来说明问题.首先,名为"data.json"的"格式不正确"的文件:

{ a: 3 }
Run Code Online (Sandbox Code Playgroud)

现在加载文件的一些代码:

var req = new XMLHttpRequest();
req.open("GET", "data.json");
req.send(null);
Run Code Online (Sandbox Code Playgroud)

这会在Firefox错误控制台中产生以下错误:


格式不正确的文件://path/to/data.json行:1
{a:3}
- ^

如果data.json被修改为:

<document>{ a: 3 }</document>
Run Code Online (Sandbox Code Playgroud)

没有错误.我认为它是抱怨,因为普通的JSON文件不是一个格式良好的XML文档,所以我尝试在"发送"调用之前覆盖MIME类型以强制它作为纯文本加载,但这不起作用.

var req = new XMLHttpRequest();
req.open("GET", "data.json");
req.overrideMimeType("text/plain");
req.send(null);
// Still produces an error!
Run Code Online (Sandbox Code Playgroud)

我将继续将我的JSON数据包装在XML文档中以解决XMLHttpRequest正在执行的任何验证,但我想知道是否有任何方法可以强制它只是不加批判地加载纯文本而不是尝试验证它.或者,除了XMLHttpRequest之外还有另一种加载数据的方法可以用于纯文本吗?

javascript firefox xmlhttprequest mime-types

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

有什么好的模式/技术可以减少Java的冗长

可能有点烦人的事情之一是表达概念所需的代码量.我相信"代码更少更好"的理念,而且我想知道如何编写Java而不会如此令人沮丧地冗长.最近,我阅读了Java问题的隐藏特性,并介绍了使用双括号初始化来模拟List或Map文字.当然,使用这种方法有一些缺点,但它确实允许你用明显更少的字符做某些事情(如果你正确格式化),使代码更清晰,更清晰.我想知道是否没有其他聪明的技巧和鲜为人知的语言功能可以使我的代码更简洁.

我希望通过对该技术的解释,更换的更冗长的方式以及使用该技术的任何潜在缺点来看到答案.

java design-patterns coding-style

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

找到具有给定距离的线上的点

我有一个问题,我知道一条线,我只知道它的斜率(m)和它上面的一个点A(x,y)我如何计算这条线上的点(实际上是两条点)距离(d)点一个 ???我问这个是为了找到一条穿过A(x,y)的线上的像素强度,距离是这样.在这种情况下,距离将是像素数.

language-agnostic graphics vector lines points

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

如何使用QFileSystemWatcher监视文件夹以进行更改

我是QT的新手,我想使用QFileSystemWatcher来监控文件夹.我只是想不通怎么做.

我阅读了http://qt-project.org/doc/qt-4.8/qfilesystemwatcher.html,但我不知道如何初始化它.

我还没有找到一个例子,所以现在,如果有人可以发布一个解释或一个监视文件夹的简单示例,我就不用了.

哦,如果重要的话,这应该在控制台中运行.

谢谢你的回答和问候.

c++ qt

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

寻找字典单词

我有很多复合字符串,它们是两个或三个英文单词的组合.

    e.g. "Spicejet" is a combination of the words "spice" and "jet"
Run Code Online (Sandbox Code Playgroud)

我需要将这些单独的英语单词与这些复合字符串分开.我的字典将包含大约100000个单词.

什么是最有效的,我可以将单个英语单词与这些复合字符串分开.

algorithm text-processing data-structures

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

如何布局简单游戏的代码?

我来自一个主要开发网站的背景,也许是一些简单的基于表单的应用程序.MVC适用于此,但我不太清楚它是如何适用于游戏的.那你们怎么做呢?

我正在开发Qt和OpenGL,如果这是相关的.我有一个QGLWidget,我现在基本上用作中心枢纽.它应该将输入传递给Player对象以便它可以处理它,还是应该直接控制播放器?对象应该自己绘制,还是应该有另一个处理程序?基本上,到底是什么?谁处理什么?

相关文章的链接,其中一些问题的答案,提示或文件结构都受到赞赏.我真的不关心如何编程,只是如何模块化.

谢谢 :)

c++ layout design-patterns

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

循环链表算法

我最近在求职面试中被问到开发一种算法,可以确定链表是否是周期性的.由于它是一个链表,我们不知道它的大小.这是一个双向链表,每个节点都有"下一个"和"前一个"指针.节点可以连接到任何其他节点,也可以连接到自身.

我当时提出的唯一解决方案是选择一个节点并与链表的所有节点一起检查.面试官显然不喜欢这个想法,因为它不是最佳解决方案.什么是更好的方法?

c c++ linked-list data-structures

9
推荐指数
2
解决办法
4614
查看次数