我有一个非常简单的JSON数组(请关注"points.bean.pointsBase"对象):
var mydata =
{"list":
[
{"points.bean.pointsBase":
[
{"time": 2000, "caption":"caption text", duration: 5000},
{"time": 6000, "caption":"caption text", duration: 3000}
]
}
]
};
// Usually we make smth like this to get the value:
var smth = mydata.list[0].points.bean.pointsBase[0].time;
alert(smth); // should display 2000
Run Code Online (Sandbox Code Playgroud)
但不幸的是,它确实没有显示任何内容.
当我将"points.bean.pointsBase"改为smth而没有点名时 - 一切正常!
但是,如果没有圆点,我无法将此名称更改为其他任何内容,但我需要获取值?!
有没有选择来获得它?
我正在Ubuntu下编译一个自定义内核,我遇到了我的内核似乎不知道在哪里寻找固件的问题.在Ubuntu 8.04下,固件与内核版本绑定的方式与驱动程序模块相同.例如,内核2.6.24-24-generic将其内核模块存储在:
/lib/modules/2.6.24-24-generic
Run Code Online (Sandbox Code Playgroud)
及其固件:
/lib/firmware/2.6.24-24-generic
Run Code Online (Sandbox Code Playgroud)
当我根据" 备用构建方法:老式Debian方式 " 编译2.6.24-24通用Ubuntu内核时,我得到了相应的模块目录,除了需要固件的设备外,我的所有设备都工作,例如我的英特尔无线网卡(ipw2200)模块).
内核日志显示,例如,当ipw2200尝试加载固件时,控制固件加载的内核子系统无法找到它:
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: ipw2200-bss.fw request_firmware failed: Reason -2
Run Code Online (Sandbox Code Playgroud)
errno-base.h将此定义为:
#define ENOENT 2 /* No such file or directory */
Run Code Online (Sandbox Code Playgroud)
(返回ENOENT的函数在它前面放一个减号.)
我尝试在/ lib/firmware中创建一个符号链接,其中我的内核名称指向2.6.24-24-generic目录,但是这导致了同样的错误.此固件是非GPL,由Intel提供并由Ubuntu打包.我不相信它与特定内核版本有任何实际联系.cmp表明各个目录中的版本是相同的.
那么内核如何知道在哪里寻找固件呢?
更新
我找到了解决我遇到的确切问题的解决方案,但是它不再有效,因为Ubuntu已经淘汰/etc/hotplug.d并且不再存储其固件/usr/lib/hotplug/firmware.
UPDATE2
更多的研究提出了更多的答案.直到版本92 udev,该程序firmware_helper是固件加载的方式.从udev93 开始,这个程序被替换为一个名为firmware.sh的脚本,据我所知,它提供了相同的功能.这两个硬编码固件路径/lib/firmware.Ubuntu似乎仍在使用/lib/udev/firmware_helper二进制文件.
固件文件的名称将传递到firmware_helper环境变量中$FIRMWARE,该变量连接到路径/lib/firmware并用于加载固件.
加载固件的实际请求是由驱动程序(在我的情况下为ipw2200)通过系统调用完成的:
request_firmware(..., "ipw2200-bss.fw", ...);
Run Code Online (Sandbox Code Playgroud)
现在,在驱动程序调用request_firmware和firmware_helper查看$FIRMWARE …
我有这个声明:
INSERT INTO qa_costpriceslog (item_code, invoice_code, item_costprice)
VALUES (1, 2, (SELECT item_costprice FROM qa_items WHERE item_code = 1));
Run Code Online (Sandbox Code Playgroud)
我正在尝试插入值副本与item_costprice的相同数据,但显示错误:
Error Code: 1136. Column count doesn't match value count at row 1
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?
任何人都可以提供比较或具体细节,说明在GCC和MS编译器中如何在编译和/或链接时处理模板实例化?这个过程在静态库,共享库和可执行文件的上下文中是不同的吗?我找到了关于GCC如何处理它的文档,但我不确定这些信息是否仍然指的是当前的状态.在编译我的库时,我应该使用他们建议的标志,例如-fno-implicit-templates吗?
我所知道的(可能不一定正确)是:
有没有办法检查宏中的数字相等性?
我想做点什么
#define choice 3
#if choice == 3
....
#endif
#if choice == 4
...
#endif
Run Code Online (Sandbox Code Playgroud)
C宏是否支持这样的事情?
我无法解释(并避免)Matlab mex程序与没有Matlab接口的相应C程序之间的速度差异.我一直在分析数值分析程序:
int main(){
Well_optimized_code();
}
Run Code Online (Sandbox Code Playgroud)
使用gcc 4.4针对Matlab-Mex等效编译(指向使用gcc44,这不是Matlab当前支持的版本,但出于其他原因需要):
void mexFunction(int nlhs,mxArray* plhs[], int nrhs, const mxArray* prhs[]){
Well_optimized_code(); //literally the exact same code
}
Run Code Online (Sandbox Code Playgroud)
我执行的时间如下:
$ time ./C_version
Run Code Online (Sandbox Code Playgroud)
与
>> tic; mex_version(); toc
Run Code Online (Sandbox Code Playgroud)
时间上的差异是惊人的.从命令行运行的版本平均需要5.8秒.Matlab中的版本在21秒内运行.对于上下文,mex文件替换了SimBiology工具箱中的算法,该算法大约需要26秒才能运行.
与Matlab的算法相比,C和mex版本都使用对openMP的调用线性扩展到27个线程,但为了进行性能分析,这些调用已被禁用并注释掉.
这两个版本以相同的方式编译,除了作为mex文件编译的必要标志:-fPIC --shared -lmex -DMATLAB_MEX_FILE应用于mex编译/链接.我删除了对mex文件的左右参数的所有引用.也就是说它不需要输入也没有输出,它仅用于分析.
伟大而光荣的谷歌告诉我,与位置无关的代码不应该是经济放缓的源头,除此之外我不知所措.
任何帮助将不胜感激,
安德鲁
我grep用来生成将由另一个程序解析的输出.
但是,该程序只希望输出为数字或零字节.
现在在grep输出后输出换行符.我已经检查了-Z选项,但它似乎不起作用,因为我使用grep进行count(-c).
我正在执行sh,而不是bash.因此嵌套它echo -n "$(grep -c pattern)"也不起作用.
如何摆脱拖尾换行?
使用goto现代C++编译器有哪些性能优势或惩罚?
我正在编写一个C++代码生成器,使用goto它会使编写更容易.没有人会触及生成的C++文件,所以不要让我全部"goto is bad".作为一个好处,他们可以节省临时变量的使用.
从纯粹的编译器优化角度来看,我想知道goto对编译器优化器的结果是什么?与使用临时/标志相比,它是否使代码更快,更慢或通常没有性能变化.