我试图让bash处理来自stdin的数据,但是没有运气.我的意思是以下工作:
echo "hello world" | test=($(< /dev/stdin)); echo test=$test
test=
echo "hello world" | read test; echo test=$test
test=
echo "hello world" | test=`cat`; echo test=$test
test=
Run Code Online (Sandbox Code Playgroud)
我想要输出的地方test=hello world.我试过把""引号括起来"$test"也不起作用.
由于范围问题,我对此感到疑惑.例如,考虑代码
typedef struct {
int x1;/*top*/
int x2;/*bottom*/
int id;
} subline_t;
subline_t subline(int x1, int x2, int id) {
subline_t t = { x1, x2, id };
return t;
}
int main(){
subline_t line = subline(0,0,0); //is line garbage or isn't it? the reference
//to subline_t t goes out of scope, so the only way this wouldn't be garbage
//is if return copies
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,返回语句是否总是复制?在这种情况下,它似乎工作,所以我被引导相信返回确实复制.如果它复制了,它会在每种情况下复制吗?
我想为我的终端应用程序创建一个进度条,它的工作方式如下:
[XXXXXXX ]
Run Code Online (Sandbox Code Playgroud)
这将在过程完成之前提供剩余时间的可视指示.
我知道我可以通过将它们添加到字符串然后只是printf来打印越来越多的X,但这看起来像:
[XXXXXXX ]
[XXXXXXXX ]
[XXXXXXXXX ]
[XXXXXXXXXX ]
Run Code Online (Sandbox Code Playgroud)
或类似的东西(显然你可以玩间距.)但这在视觉上不美观.有没有办法用新文本更新终端中的打印文本而无需重新打印?这都是linux,c ++.
pthread_create看起来像这样的函数头:
int pthread_create(pthread_t * thread,
const pthread_attr_t * attr,
void * (*start_routine)(void *),
void *arg);
Run Code Online (Sandbox Code Playgroud)
我理解这一切除了函数指针start_routine的形式void* (*fpointer) (void*),这意味着它接受一个void指针并返回一个void指针.
它所采用的void指针只是一种将参数传递给start_routine的方法,我得到了那个部分,但是我不明白为什么函数返回一个void指针?什么代码甚至会注意到void指针?
我有兴趣清除用printf语句生成的C程序的输出,多行很长.
我最初的猜测是使用
printf("output1\n");
printf("output2\n");
rewind(stdout);
printf("output3\n");
printf("output4\n");
Run Code Online (Sandbox Code Playgroud)
但这会产生
output1
output2
output3
output4
Run Code Online (Sandbox Code Playgroud)
我希望它会产生
output3
output4
Run Code Online (Sandbox Code Playgroud)
有谁知道如何获得后者的结果?
我正在使用需要非常高级的图像处理的Java项目.事实上,我正在使用OpenCV进行大部分操作,而我正在使用JNI来包装我需要的OpenCV函数.我对OpenCV给出的性能非常满意,编写OpenCV代码的人应该为代码赢得极大的荣誉.与Java开发人员编写的代码形成鲜明对比.
我开始对我的编程语言的选择持乐观态度,我项目的第一次工作迭代工作得很好,但它的性能远不及实时(每2秒大约1帧).我已经对MY代码进行了一些优化,它帮了很多忙.我已经能够将帧速率提高到大约每秒10-20帧,这很好,但我发现要进行任何进一步的优化我必须重写Java代码来做同样的事情但是10效率提高-20倍.
我对Java开发人员如何很少关注性能感到震惊,尤其是在为Media相关类编写类时.我已经下载了OpenJDK,我正在探索我正在使用的功能.例如,在Raster类下有一个名为getPixels(...)的函数,它获取图像的像素.我期望这个函数在源代码中是一个高度优化的函数,有几个调用System.arrayCopy来进一步优化性能.相反,我发现的是非常"优雅"的代码,他们调用5-6个不同的类和10-20个不同的方法,只是为了完成我在一行中可以做的事情:
for (int i =0; i < n; i++) {
long p = rawFrame[i];
p = (p << 32) >>> 32;
byte red = (byte) ((p >> 16) & 0xff);
byte green = (byte) ((p >> 8) & 0xff);
byte blue = (byte) ((p) & 0xff);
byte val = (byte)(0.212671f * red + 0.715160f * green + 0.072169f * blue);
data[i] = val;
grayFrameData[i] = (val & 0x80) + (val & (0x7f));
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将图像转换为灰度,并获得浮点像素数据,大约1-10ms.如果我想对Java内置函数做同样的事情,转换为灰度本身需要200-300ms,然后抓取浮动像素需要大约50-100ms.这对于实时性能来说是不可接受的.注意为了获得加速,我大量使用按位运算符,Java开发人员不愿意这样做.
我知道他们需要处理一般情况,但即便如此,他们至少不能给出优化选项,或者至少警告这个代码可能执行的速度有多慢.
我的问题是,在开发的最后阶段(我已经进行了第一次迭代,而不是我正在进行第二次迭代,实时执行更多)我应该咬紧牙关切换到C/C++我可以在调整更多东西,或者我应该坚持使用Java并希望事情变得更加实时友好,这样我就不必重写已经实现的Java代码来获得加速.
我真的开始厌恶"优雅"和慢速Java的真实性.那里的课程数量似乎有点矫枉过正.
我意识到这可能是一个非常小众的问题,但有没有人有使用连续神经网络的经验?我特别感兴趣的是连续神经网络可能对你通常使用离散神经网络的东西有用.
为了清楚起见,我将清楚我的意思是连续神经网络,因为我认为它可以解释为不同的东西.我并不是说激活功能是连续的.相反,我提到了将隐藏层中的神经元数量增加到无限量的想法.
因此,为了清楚起见,这是您典型的谨慎NN的架构:
的x是输入,则g是隐藏层的激活时,v是隐层的权重,则w是输出层的权重,则b是偏置,显然在输出层具有线性活化(即无).
此图描绘了离散NN和连续NN之间的差异:
那就是你让隐藏神经元的数量变得无限,这样你的最终输出就是一个整体.实际上,这意味着不是计算确定性和,而是必须用正交逼近相应的积分.
显然,它是神经网络的一个常见误解,太多隐藏的神经元会产生过度拟合.
我的问题是具体的,鉴于离散和连续神经网络的这个定义,我想知道是否有人有使用后者的经验以及他们使用它们的类型.
有关该主题的进一步说明,请访问:http: //www.iro.umontreal.ca/~lisa/seminaires/18-04-2006.pdf
是否有可能在Windows下编写一个程序,在达到预定义的地址时会导致远程进程线程中断(在该线程中停止执行)?
我一直在尝试使用Windows Debug API,但在设置断点时似乎非常有限.DebugBreakProcess函数似乎很有希望,但我找不到有关如何使用此API调用的任何示例.
我不清楚以下情况.
首先,这段代码编译得很好:
#include <vector>
typedef struct{
int x1,x2,x3,x4;
} ints;
typedef std::vector<ints> vec;
int main(){
vec v;
ints a = {0,1,2,3};
v.push_back(a);
}
Run Code Online (Sandbox Code Playgroud)
以下代码几乎相同:
#include <vector>
typedef std::vector<int[4]> vec;
int main(){
vec v;
int a[4] = {0,1,2,3};
v.push_back(a);
}
Run Code Online (Sandbox Code Playgroud)
但它会抛出我将在最后包含的极长的错误输出.为什么编译器对这两个程序的处理方式如此不同?这绝对不直观.
这是我的系统上使用g ++编译时抛出的编译器错误:
[mattg@pigott Test]$ g++ test2.cpp -o test2
In file included from /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/i586-redhat-linux/bits/c++allocator.h:34,
from /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/bits/allocator.h:48,
from /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/vector:62,
from test2.cpp:2:
/usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/ext/new_allocator.h: In member function ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp = int [4]]’:
/usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/bits/stl_vector.h:737: instantiated from ‘void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用带有VIM的ctags,而且我是两者的新手.为了测试ctags有用的程度,我决定通过一个非常简单的测试,即解析/ usr/include中的头文件,以便我可以自动完成一些非常基本的功能.
当我运行命令
ctags --c++-kinds=+p --fields=+iaS -f ~/.tags/tags /usr/include/*.h
Run Code Online (Sandbox Code Playgroud)
然后输出打印
BUFSIZ /usr/include/stdio.h 108;" d EOF /usr/include/stdio.h 115;" d FILE /usr/include/stdio.h /^typedef struct _IO_FILE FILE;$/;" t typeref:struct:_IO_FILE FSETLOCKING_BYCALLER /usr/include/stdio_ext.h /^ FSETLOCKING_BYCALLER$/;" e enum:__anon122 FSETLOCKING_BYCALLER /usr/include/stdio_ext.h 39;" d FSETLOCKING_INTERNAL /usr/include/stdio_ext.h /^ FSETLOCKING_INTERNAL,$/;" e enum:__anon122 FSETLOCKING_INTERNAL /usr/include/stdio_ext.h 36;" d FSETLOCKING_QUERY /usr/include/stdio_ext.h /^ FSETLOCKING_QUERY = 0,$/;" e enum:__anon122 FSETLOCKING_QUERY /usr/include/stdio_ext.h 32;" d P_tmpdir /usr/include/stdio.h 128;" d SEEK_CUR /usr/include/stdio.h 122;" d SEEK_END /usr/include/stdio.h 123;" d SEEK_SET /usr/include/stdio.h 121;" d _IOFBF /usr/include/stdio.h 101;" d _IOLBF /usr/include/stdio.h …