什么方法需要床放在什么位置好$(funtion)外

一种通用性较强的信杂比改善因子计算方法
一、引言 为了保证雷达系统的曾、体技术指标或对某些专题研究提供高性能信一号处理器,往往要将假定的信一号处理机方案放在不同干扰环境中进行性能(fi真计算,或者根据给定的杂波环境,通过计算来寻求一个较优的信号处理机方案。这就涉及到系统性能仿真的问题。有关多普勒处理器的性能分析问题,已有不少文献作了报道乙’一‘。但它们往往是针对某些特殊情况而进行的分析计算,各有不同侧重,缺乏通用性。从分析方法来讲,可分为两大类:一类是基于滤波器频响及信号、干扰的i普特性的频域分析法L’U二;另一类是基于滤波器单位脉冲响应及信号、干扰的时问统讨一特性的口寸域分析法比仁。一般来说,频域方法只能解决系统稳态下的性能分析问题,当系统采用递归滤波器时,这种方法与实际应用情况出入较大,l心且要用数值方法来解决积分中遇到的困难;山1时域方法大多又没有考虑到杂波滤波器为自适应或递归的这样一种情形。本文在建认多普勒处理器一般模型之后,寻出了通用性较强的信杂比改善因子计...&
(本文共7页)
权威出处:
风廓线雷达主要是利用大气湍流对电磁波的散射作用对大气风场等物理量进行探测的遥感设备,它的探测对象主要是晴空大气,可以提供大气风场、湍流场、风切变状况等气象要素信息,具有时空分辨率高、精度高等特点,已经广泛应用于大气探测、航空航天等领域。目前国内风廓线雷达在硬件方面已达到国外的先进水平,但在信号处理、谱矩估计及数据质量控制方面与国外差距较大。因此开展风廓线雷达信号处理算法和应用的研究具有十分重要的意义。本文首先分析了国内外风廓线雷达的发展及研究现状,并通过查阅大量文献,对风廓线雷达典型干扰源如地物杂波、间歇杂波等信号的特征作了归纳和总结。接着,介绍了基于快速Fourier变换(FFT)的经典风廓线雷达信号处理方法,并列举目前具有代表性的各类改进算法,分析它们在应用中存在的不足。时-频分析已广泛的用于处理非平稳信号。时-频分析中分数阶Fourier变换(FRFT)具有能够使间歇杂波(Chirp信号)在分数阶Fourier域能量聚集的...&
(本文共72页)
权威出处:
X射线的探测和应用在物质成分分析、结构分析等研究中发挥着越来越重要的作用,其中能量色散X射线荧光(Energy Dispersive X-ray Fluorescence, EDXRF)技术是X射线探测领域的一个重要分支,如何进一步提高分析准确度和自动化程度是EDXRF技术发展中所面临的主要问题,其中,解谱技术和含量计算方法研究是两个关键突破点。首先,准确的解谱技术是保证EDXRF分析计算得到准确含量的重要前提。通过建立探测器响应函数(Detector Response Funtion, DRF)实现能谱分析,可有效提高谱数据处理的自动化程度和计算精度。DRF可以对测量X荧光能谱进行数学特征和物理特征分析,其函数形式主要与射线类型、射线能量、探测器类型有关,因此,建立一种通用性较强的优化DRF模型显得尤为重要。其次,定量分析技术研究是关系EDXRF技术水平的核心内容。传统的EDXRF定量分析方法,要么在很大程度上依赖于标样的准确...&
(本文共163页)
权威出处:
一放大链脉间相移与雷达改善因子 动目标雷达利用固定目标回波(杂波)的相位在相邻脉冲之间保持不变的特点,使其经相位检波后可跨周期相减而加以抵消。可见,放大链的输出相位在相邻脉冲之间产生失真,杂波就不可能被完全抵消。若杂波在相邻脉冲间有相泣差么甲,杂波振幅为E,则动国标对消系统的输入杂波功率与输出杂波功率之比CA为CA二 E“1(E△印)“△甲2(l)如图1所示:故动目标雷达的改善因子受到的限制为: ‘“Ze,g介(2,当I=40分贝时,△小二1/aoo弧食,约0、6。。图l固定目标回波矢量图二放大链的失真和噪声 放大链的时域或频域失真以及放大管内部的噪声,都会引起相位的随机起伏而影响放大链的相位稳定性。、户‘ 1.频域失真。只一 放大链的频域失真主要来源于微波管本身振幅特性与相位特性的非线性。‘~般说来,只要微波管的帮宽比信号带宽大得多,非线性问题就不很严重。所以对于信号的相对带宽为百分之几的情况,匹配良好的行波管可以不考虑非线性...&
(本文共3页)
权威出处:
维护的根本目的是为了提高系统的利用率和平均故障间隔时间,降低故障发生的频率和停机时间。维护优化模型是以寻求维护成本和维护效果的最优平衡为目标而构建的数学模型。Barlow和Proschan提出了最小修复(as bad as old)的概念[1]。Brown等[2]、Pham和Wang[3-5]、Kijima[6]和Nakagawa等[7-10]在此基础上进一步研究了不完全维护现象,即大部分维护活动难以使系统真正地修复如新,经过维护后的系统更多地处于一种介于“全新”和“如旧”之间的状态,或者说从恢复效果来看,多数维护是不完全维护。例如填加润滑剂、调校等,这样的预防维护活动不足以使部件恢复到“全新”状态,而只能影响部件的失效率变化[11]。因此在维护模型中,将这些活动作为不完全维护处理,才能更接近于实际情况。Pham和Wang将不完全维护的处理方法系统地归纳为8种类型[3],包括(p,q)法、改善因子法等。Malik等在维修排序问题...&
(本文共5页)
权威出处:
改善因子测试的基本原理改善因子(I)是评价MTI雷达工作质量的一种常用的性能指标。改善因子的定义是,动目标显示系统输出的信号杂波功率比(S0/C0)和输入信号杂波功率比(Si/Ci)之比值。即其中Si和S0为在目标所有可能的径向速度上取平均的信号功率,G为系统对信号的平均功率增益,C0是对消滤波器输出的剩余杂波,它由多种因素引起,可以写成:C0=C0系统不稳+C0扫描+C0杂波起伏+......所以系统总的改善因子I也由各种因素共同决定:(C0系统不稳+C0扫描+C0杂波起伏+......)=+......总的改善因子受各分项改善因子的限制,其数值总是小于任一分项的改善因子。各分项改善因子也称为改善因子的限制值。要使动目标显示雷达有好的改善因子,必须使各分项改善因子都较大,首先是高频部分的稳定性要好。各分项的改善因子要合理配合,如果其中一个已经很小,则过分提高其指标对系统性能不会有多少益处。MTI雷达改善因子测试方框图如图1所示...&
(本文共3页)
权威出处:
“回波存贮,同频相消”实现捷变频与.MTI兼容的基本原理 采取‘回波存贮,同频相消”方案实现捷变频与MTI兼容是意大利sclcnia公司独创的,它的基本原理是:当雷达频率捷变时,把各个频率的相参回波信号变成数字信号,贮存于存贮器组中,然后经逻辑开关将最近的三个发肘频率相同的周期内的回波信号(相邻信号的时间间隔可以是n个周期)送人数宁式三脉冲对消器中,以实现多卜勒滤波处理。 图1为上述捷变频与动口标显示兼容装置的原理性方框图.一生板侧侧┌──────────────┐│」铱铱铱铱铱二几二奋一一一,│ ┌──────┐│臀)撇? │ │ │相位检波公 │││ │ │ └──────┘│└────┘┌─────┐ ││ │逻辑控创器│ │ ┌──────┐│┌────┐└─────┘ │ │凡司变换踌 │││伪班机玛│ │ └──────┘││ 产生 │ │ ┌──────┐│└────┘ │┌─┐│存储特组 ││ ││ │└────...&
(本文共7页)
权威出处:
扩展阅读:
CNKI手机学问
有学问,才够权威!
出版:《中国学术期刊(光盘版)》电子杂志社有限公司
地址:北京清华大学 84-48信箱 知识超市公司
互联网出版许可证 新出网证(京)字008号
京ICP证040431号
服务咨询:400-810--6613
订购咨询:800-810-6613
传真:010-
京公网安备75号引用自http://blog.csdn.net/lwhsyit/article/details/2828306
类似Windows系统中的动态链接库,Linux中也有相应的共享库用以支持代码的复用。Windows中为*.dll,而Linux中为*.so,我来详细的告诉你如何在linux下编写动态库,以及如何使用它.
在linux下编写动态链接库的步骤:
1.&&&&& 编写库的头文件和源文件.
2.&&&&& 把所有涉及到的源文件用如下方式编译为目标文件:
g++/gcc -g -c -fPIC -o library1.o library1.cpp
g++/gcc -g -c -fPIC -o library2.o library2.cpp
&&&&& ......
(注释:-fPIC指通过这个选项来生成与位置无关的代码,可以在任何地址被连接和装载,-c指只编译而不连接原程序)
3.&&&&& 把所有的目标文件链接为动态库:
g++/gcc -g -shared -Wl,-soname,lib***.so -o lib***.so.1.0.0 library1.o library2.o ....& -lc
&&&&&&&&&&&&&&&&
&&& (注释:-lc选项,表示使用c语言库,一般都要用到)
4.&&&&& 建立一个库名链接
ln -s lib***.so.1.0.0 lib***.so
现在你就可以引用库了.下面我分别给出简单例子告诉你如何动态和静态使用动态库:
假如你的应用程序源代码叫testlib.cpp
采用/如下方式编译:
&&&&& g++ -g -o testlib testlib.cpp -ldl
&&&&&&&&&&&&
&&&&(注释:-ldl选项,表示生成的对象模块需要使用共享库)
////////这个例子告诉你如何动态的调用.so库
testlib.cpp
#include &dlfcn.h&
#include &iostream.h&
#include ...
int main()
&&&&&& void *handle=NULL;
&&&&&& //define a pointer which will point to the function in the lib you want to use.
&&&&&& YourFuntionType (*pFunc)(YourFunctionPerameterList........);
&&&&&& //open the lib you want to use.
&&&&&& handle=dlopen(&//../yourlib.so&,RTLD_LAZY);
&&&&&& if(handle==NULL)
&&&&&& &&&&&& cout&&&failed loading library!&&&
&&&&&&&&&&&&& return -1;
&&&&&& dlerror();
&&&&&& //try to load the function in lib
&&&&&& pFunc=(YourFuntionType(*)(YourFunctionPerameterList))dlsym(handle,&YourFuntionName&);
&&&&&& if(dlerror()!=NULL)
&&&&&& &&&&&& cout&&&Loading function in lib error!&&&
&&&&&&&&&&&&& return -1;
&&&&&& //now you can use the funtion like this
&&&&&& (*pFunc)(YourFuntionPerameterList);
&&&&&& return 0;
(注释:dlopen()
&&&&&&&&&&&&& 第一个参数:指定共享库的名称,将会在下面位置查找指定的共享库。
-环境变量LD_LIBRARY_PATH列出的用分号间隔的所有目录。
-文件/etc/ld.so.cache中找到的库的列表,用ldconfig维护。
-目录usr/lib。
-目录/lib。
-当前目录。(这里就是这种情况)
第二个参数:指定如何打开共享库。
-RTLD_NOW:将共享库中的所有函数加载到内存
-RTLD_LAZY:&&&&&&&&&&&& 会推后共享库中的函数的加载操作,直到调用dlsym()时方加载某函数
&&&&&&&&& 调用dlsym时,利用dlopen()返回的共享库的phandle以及函数名称作为参数,返回要加载函数的入口地址。
&&&&&&&dlerror()
&&& 该函数用于检查调用共享库的相关函数出现的错误。
特别需要注意的几点问题:
1.&&&&& 当你想用c++写动态库的时候,记住千万别忘了在头文件里面加上如下内容,否则生成的库在动态调用的时候会出问题!!!!!!!
&#ifdef __cplusplus
&&&&&& extern &C& {
&& #ifdef __cplusplus
2.&&&&& 当你的库中包括与omniORB3相关的东西的时候,一定要在makefile中加上 -D__x86__ -D__OSVERSION=4
/////////////这个例子告诉你如何静态调用.so库
首先你得确保你的应用程序能够找到你的.so库,这可以有几种方法来实现.
1.你可以把YourLib.so.1.0.0 和YourLib.so放到/usr/lib中,然后执行命令:ldconfig,这样你就可以在你的应用程序中直接调用你库中的函数了,当然你 得把库的头文件包含到你的应用程序中
2.编译你的应用程序
g++/gcc -g -o yourapp yourapp.cpp –lYourLib
1.你也可以采用在系统中设置环境变量的办法来实现.&在root目录下:
vi .bash_profile
然后添加LD_LIBRARY=/../YourDirIncludingYourLib
然后注消一次,环境变量就生效了,这样你就可以在你的应用程序中直接调用库中的函数了,同样你得有头文件.
2.编译你的应用程序
g++/gcc -g -o yourapp yourapp.cpp –lYourLib
你可以直接采用在编译链接的时候告诉系统你的库在什么地方
&&&&&& g++/gcc -g -o yourapp yourapp.cpp -L/YourDirIncludingYourLib –lYourLib
如:& g++/gcc -g -o yourapp yourapp.cpp -L. –lYourLib
-L. :当前目录
/////////////////////////////////
假如你的库中有个函数:int eat(.....)
那么采用如下方式调用它
yourapp.cpp
#include &YourLib.h&
int main()
&&&&&& eat();
是不是很easy?对了在静态调用的时候好像不存在上面的&注意1&的问题,不过鉴于保险起见,最好还是按照标准的方式写c++头文件吧,这绝对是个好习惯.
面通过一个简单的例子开始介绍Linux标准对象。
我们的标准对象文件含有一个函数,不需要声明export导出符号,只需要编译器设置即可。如下:
设建立一个tools.h文件以及tools.c文件
** tools.h
#include &stdio.h&
#include &stdlib.h&
void draw();
void write();
void sign();
void show();
#include &tools.h&
void draw()
&&& printf(&draw some graphics./n&);
void write()
&&& printf(&write some characters./n&);
void sign()
&&& printf(&sign your name./n&);
void show()
&&& printf(&A picture by xufeng./n&);
&&& draw();
&&& write();
&&& printf(&A picture is finished./n&);&
按照如下编译:
$ gcc -fPIC -shared -o libmytools.so tools.c
执行生成一个libmytools.so文件,按照Linux标准对象的命名惯例,应该在库名称之前加上&lib&前缀,尽管不是必须的。编译开关-fPIC代表函数符号可以重定向,-shared代表编译结果是一个标准对象。
不同于Win32DLL,Linux标准对象中的所有函数都是直接导出的,都可以被调用程序所访问。下面我们编写调用程序:&
#include &tools.h&
&&& show();
&&& printf(&success!/n&);
按照如下gcc编译:
$ gcc -o test test.c ./libmytools.so
编译生成test可执行文件。如上编译条件的最后一条需要是所调用的标准对象文件名,注意必 须含有路径。如果只是使用libmyso.so,则必须确保这个文件在可访问的PATH下面。本例所使用的文件名&./libmytools.so&是当 前路径下的,使用了相对路径。
09:08 mugua250 阅读(26) 评论(0)&
引用自:http://blog.csdn.net/lwhsyit/article/details/2830783
库文件在连接(静态库和共享
库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到 库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:&
在环境变量
LD_LIBRARY_PATH 中指明库的搜索路径。&
/etc/ld.so.conf 文件中添加库的搜索路径。&
将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择&
添加方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如:&
/usr/X11R6/lib
/usr/local/lib
需要注意的是:第二种搜索路径的设置方式对于程序连接时的库(包括共享库和静态库)的定位已经足够了,但是对于使用了共享库的程序的执行还是不够的。这是 因为为了加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取库列表文件 /etc/ld.so.cache 从中进行搜索的。/etc/ld.so.cache 是一个非文本的数据文件,不能直接编辑,它是根据 /etc/ld.so.conf 中设置的搜索路径由 /sbin/ldconfig 命令将这些搜索路径下的共享库文件集中在一起而生成的(ldconfig
命令要以 root 权限执行)。
因此,为了保证程序执行时对库的定位,在 /etc/ld.so.conf 中进行了库搜索路径的设置之后,还必须要运行 /sbin/ldconfig 命令更新 /etc/ld.so.cache
文件之后才可以。ldconfig ,简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache 以供使用。因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下 /sbin/ldconfig使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用 的,结果编译过程中抱错,缺少xxx库,去查看发现明明就在那放着,搞的想大骂computer蠢猪一个。
&&&&&&&&在程序连接时,对于库文件(静态库和共享库)的搜索路径,除了上面的设置方式之外,还可以通过
-L 参数显式指定。因为用 -L 设置的路径将被优先搜索,所以在连接的时候通常都会以这种方式直接指定要连接的库的路径。&
前面已经说明过了,库搜索路径的设置有两种方式:
在环境变量
LD_LIBRARY_PATH 中设置
/etc/ld.so.conf 文件中设置。
其中,第二种设置方式需要
root 权限,以改变 /etc/ld.so.conf 文件并执行 /sbin/ldconfig 命令。而且,当系统重新启动后,所有的基于 GTK2 的程序在运行时都将使用新安装的 GTK+ 库。不幸的是,由于 GTK+ 版本的改变,这有时会给应用程序带来兼容性的问题,造成某些程序运行不正常。为了避免出现上面的这些情况,在
GTK+ 及其依赖库的安装过程中对于库的搜索路径的设置将采用第一种方式进行。这种设置方式不需要 root 权限,设置也简单:
export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH
可以用下面的命令查看
LD_LIBRAY_PATH 的设置内容:
echo $LD_LIBRARY_PATH
至此,库的两种设置就完成了。
交叉编译时候如何配置连接库的搜索路径&
交叉编译的时候不能使用本地(i686机器,即PC机器,研发机器)机器上的库,但是在做编译链接的时候默认的是使用本地库,即/usr/lib,/lib两个目录。因此,在交叉编译的时候,要采取一些方法使得在编译链接的时候找到需要的库。&
首先,要知道:编译的时候只需要头文档,真正实际的库文档在链接的时候用到。&(这是我的理解,假如有不对的地方,敬请网上各位大侠指教) 然后,讲讲如何在交叉编译链接的时候找到需要的库。
(1)、交叉编译时候直接使用-L和-I参数指定搜索非标准的库文档和头文档的路径。例如:
arm-linux-gcc test.c -L/usr/local/arm/2.95.3/arm-linux/lib -I/usr/local/arm/2.95.3/arm-linux/include&
(2)、使用ld.so.conf文档,将用到的库所在文档目录添加到此文档中,然后使用ldconfig命令刷新缓存。&
(3)、使用如下命令:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/2.95.3/arm-linux-lib
参见《ld.so.conf 文档和PKG_CONFIG_PATH变量》这篇文章。&
通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(!)。&
通过设定环境变量LD_LIBRARY_PATH也可以指定动态库搜索路径。当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号&:&分隔。&
不过LD_LIBRARY_PATH的设定作用是全局的,过多的使用可能会影响到其他应用程序的运行,所以多用在调试。(LD_LIBRARY_PATH 的缺陷和使用准则,可以参考《Why LD_LIBRARY_PATH is bad》 )。通常情况下推荐还是使用gcc的-R或-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路 径查找库,避免了使用LD_LIBRARY_PATH环境变量查找。&
(4)、交叉编译时使用软件的configure参数。例如我编译minigui-1.3.3,使用如下配置:
#!/bin/bash
rm -f config.cache config.status&
./configure --build=i686-linux --host=arm-linux --target=arm-linux /&
CFLAGS=-I/usr/local/arm/2.95.3/arm-linux/include /
LDFLAGS=-L/usr/local/arm/2.95.3/arm-linux/lib /&
--prefix=/usr/local/arm/2.95.3/arm-linux /&
--enable-lite /&
--disable-galqvfb /
--disable-qvfbial /
--disable-vbfsupport /
--disable-ttfsupport /&
--disable-type1support /&
--disable-imegb2312py /&
--enable-extfullgif /&
--enable-extskin /
--disable-videoqvfb /&
--disable-videoecoslcd&
这里我配置了CFLAGS和LDFLAGS参数,这样一来,我就不用去修改每个Makefile里-L和-I参数了,也不用再去配置LD_LIBRARY_PATH或改写ld.so.conf文档了。
Linux下动态库使用小结&
1. 静态库和动态库的基本概念
静态库,是在可执行程序连接时就已经加入到执行码中,在物理上成为执行程序的一部分;使用静态库编译的程序运行时无需该库文件支持,哪里都可以用,但是生 成的可执行文件较大。动态库,是在可执行程序启动时加载到执行程序中,可以被多个可执行程序共享使用。使用动态库编译生成的程序相对较小,但运行时需要库 文件支持,如果机器里没有这些库文件就不能运行。
2. 如何使用动态库
如何程序在连接时使用了共享库,就必须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这 两个目录,然后按照/etc/ld.so.conf里面的配置搜索绝对路径。同时,Linux也提供了环境变量LD_LIBRARY_PATH供用户选择 使用,用户可以通过设定它来查找除默认路径之外的其他路径,如查找/work/lib路径,你可以在/etc/rc.d/rc.local或其他系统启动 后即可执行到的脚本添加如下语句:LD_LIBRARY_PATH =/work/lib:$(LD_LIBRARY_PATH)。并且LD_LIBRARY_PATH路径优先于系统默认路径之前查找(详细参考《使用
LD_LIBRARY_PATH》)。
不过LD_LIBRARY_PATH的设定作用是全局的,过多的使用可能会影响到其他应用程序的运行,所以多用在调试。(LD_LIBRARY_PATH 的缺陷和使用准则,可以参考《Why LD_LIBRARY_PATH is bad》 )。通常情况下推荐还是使用gcc的-R或-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路 径查找库,避免了使用LD_LIBRARY_PATH环境变量查找。
3.库的链接时路径和运行时路径
现代连接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,用户可以通过-L指定连接时库的路径,通过-R(或-rpath)指定程序运行时库的路径,大大提高了库应用的灵活性。比如我们做嵌入式 移植时#arm-linux-gcc $(CFLAGS) –o target –L/work/lib/zlib/ -llibz-1.2.3 (work/lib/zlib下是交叉编译好的zlib库),将target编译好后我们只要把zlib库拷贝到开发板的系统默认路径下即可。或者通过-
rpath(或-R )、LD_LIBRARY_PATH指定查找路径。
1.编译时的-L选项是否影响LD_LIBRARY_PATH的值?
举一个实例:
当前文件夹结构如下:&
test.c tools/&
tool下有tool.c tool.h my_err.h 以及由此生成的libtool.so&
tool下编译生成库文件&
gcc -Wall -g -shared -o tool.so tool.c&
在当前文件夹引用:&
gcc -Wall -g –o test.c -Ltools -ltool&
编译不报错,但是运行加载的时候就出现cannot open shared object file。&
如果将该库文件拷贝到/usr/lib下就没有错误,正常运行。
说明编译时的-L选项并不影响环境变量LD_LIBRARY_PATH,-L只是指定了程序编译连接时库的路径,并不影响程序执行时库的路径,系统还是会到默认路径下查找该程序所需要的库。
有关动态链接库需要注意的相关事项
1.有关动态链接库需要注意的相关事项。
如果碰到有GTK 的中 有 &gtk/gtk.h&&
那么需要加入动态链接库的参数
$ gcc test_a.c test_b.c iptbox.c -fPIC -shared -o iptbox.so `pkg-config --cflags --libs gtk+-2.0
生成出来的.so 动态链接库 需要放在usr/lib 目录下
cp libipt.so /usr/lib&
2、在AP时出现错误,可以使用下列方式来查找问题:
strace ./test&
3、查找夹下路径:
find /usr/lib -name libipt.so
4、解压缩:
tar -zxvf 文件名
5、解RPM包的方式:
#&-ivh scim-1.4.7.4-1benX.src.
#cd /usr/src/dorado/SPECS
#rpmbuild -bb scim.spec
6、目录权限打开:
od 777&(目录名称)
7、linux 下三步骤:
c. make install
8、更新库引用:
9、查找是否有安装该AP.
# whereis scim-ppenglish
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:55239次
积分:1383
积分:1383
排名:第11980名
原创:65篇
转载:143篇
(4)(3)(4)(10)(9)(3)(1)(4)(21)(29)(5)(6)(10)(2)(26)(14)(39)(1)(17)今天整理一些jquery的用法,希望能够在工作中帮助到大家
jQuery顶级对象 缩写$&&& window.jQuery&& window.$ &
第一部分,找对象 &
其本选择器 &
&&& $(&#id&) &
&&& $(&.class&) &
&&& $(&input&) &
&&& 复合选择器 $(&#id,.class,input&) &
层次选择器 &
&&& $(&div p&) 包含选择器 div中所有的p 子元素 子子元素.. &
&&& $(&div & p&)& 子后代选择器 div中直接子后代 &
&&& $(&div + p&)第一个兄弟p &
简单选择器 &
&&& :first 选取第一个元素&& $(&div:first&)& &
&&& :last 选取最后一个元素 &
&&& :not(选择器) 选取不满足“选择器”条件的元素$(&div:not(#id)&) &
&&& :even、:odd,选取索引是奇数、偶数的元素 &
&&& :eq(索引序号)、:gt(索引序号)大于、:lt(索引序号)小于 &
表单对像选择器 &
&&& $(&:input&)匹配所有 input, textarea, select 和 button 元素 &
&&& $(&:text&)匹配所有 匹配所有的单行文本框 &
&&& $(&:checkbox&)匹配所有复选框 &
&&& etc.....查看帮助 &
表单对象属性选择器 &
&&& $(&:checkbox:checked&) &
&&& $(&select option:selected&) 这个比较特别不不可以使用: &
&&& $(&input:disabled&) &
&&& $(&input:enabled&) &
内容选择器 &
&&& $(&div:contains('John')&) 匹配包含给定文本的元素 &
属性过滤选择器 &
&&& $(&div[id]&)选取有id属性 &
&&& $(&div[title=test]&)选取title属性为test的元素 &
&&& $(&div[title!=test]&)选取title属性不为test的元素 &
兄弟节点,子节点 &
&&& .siblings()所有兄弟节点。没有自己 &
&&& .next()下一个兄弟节点 &
&&& .nextall()查找当前元素之后所有的同辈元素。 &
&&& .nextAll(&div&) &
&&& .prev()之前的一个节点 &
&&& .prevAll() &
&&& .end返回上一次jQ对像被破坏之前的状态 &
&&& $(&#d4&).nextAll().css(&background-color&, &red&).end().css(&background-color&, &black&); &
&&& 这时的end()返回的是$(&#d4&)对像 &
&&& andself 我和我之后的节点 &
&&& $(&#d4&).nextAll().andSelf().css(&background-color&, &red&); 我和我之后的兄弟节点变红 &
&&& $(&#d4&).nextAll().andSelf().end().css(&background-color&, &red&); 我之后的兄弟节点变红 &
第二部分,改变对像 &
设置样式 &
&&& css()& 设置行内样式& 设置标签的style属性 &
&&& css({ &width&: width, &height&: height,&top&:0,&left&:0 }); 可以采用json格式 &
&&& addClass(&myclass&)(不影响其他样式)&&& class=&c1 c2& &
&&& removeClass(&myclass&)移除样式 &
&&& toggleClass(&myclass&)如果存在样式则去掉样式,如果没有样式则添加样式 .例子,做开关灯的时候 &
&&& hasClass(&myclass&)判断是否存在样式 &
设置属性 &
&&& attr(&class&,&c1&)&& 对class属性赋值& 设置标签的所有属性 &
设置内容或值 &
&&& html()& text()& val() &
移动,创建,增加,删除dom对像 &
&&& var $link = $(&&a href=''&百度&/a&&);动态创建jquery对象,只是在内存中 &
&&& 加到对像内 &
&&& .append($link);向后追加 &
&&& appendTo将一个元素移动到另一个元素的最后面 &
&&& prepend向前追加 &
&&& prependTo将一个元素移动到另一个元素的最前面 &
&&& 加到对像外 &
&&& after 在结束标签之前添加元素 &
&&& before在开始标签前添加元素 &
&&& remove()& 删除当前节点 &
&&& empty() 清空当前节点之间的内容,节点保留 &
第三部分,事件,方法 &
&&& $(funtion(){}); 当面页加载完成时调用,只加载一次.一般写jq都写在里面 &
&&& .each(funtion(){}) 每个对像都要执行的函数 &
&&& .map(funtion(){})将一个数组中的元素转换到另一个数组中。.map([1,2,3]funtion(n){return n+1;} &
&&& .click(funtion(){}) &
&&& .mouseover(funtion(){})& &
&&& .mouseout(funtion(){}) &
&&& .resize(funtion(){}) &
&&& 阻止事件冒泡& 关于哪些事件冒泡,我没有记,反正,出问题了,你就用下面这个就OK,没必要记住 &
&&& $(&#d1&).click(function(e){ e.stopPropagation();}) &
&&& 取消后续内容 &
&&& e.preventDefault(); 这个我不知道,是什么意思,平时好像也没有用到 &
&&& 绑定事件 $(&#id&).bind(&click&:function(){},&mouseover&: function () {& }) &
&&& 解除绑定 $(&#id&).unbind(&click&) &
&&& 让事件只执行一次 $(&#id&).one(&click&,function(){})& //评分控件 &
&&& 合成事件hover& toggle &
&&& hover(enterfn,leavefn)& 当鼠标放上时执行enterfn,当鼠标离开时执行leavefn &
&&& toggle(fn1,fn2) 当鼠标第一次点击时执行fn1,第二次点击执行fn2,以后依次执行 &
&&& *事件参数 &
&&& pageX、pageY &
&&& target 获得触发事件的元素 个人觉得没什么用,就相当于this &
&&& altKey、shiftKey、ctrlKey &
&&& keyCode 键盘码、 获取按下的是哪个键 $(document).keydown(funtion(e){alert(e.keyCode)}); &
&&& altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget
screenX screenY shiftKey srcElement target toElement view wheelDelta which &
&&& 其它常用的方法 &
&&& focus();blur();得到焦点。失去焦点&& [搜索文本框效果] &
&&& 获取对像的宽度和高度 &
&&& var width = $(对像).width(); &
&&& var height = $(对像).height(); &
第四部分,动画&&& 复杂动画可以解决其它动画实现的效果,所以个人觉得,只须记住复杂动画就可以了 &
&&& show()、hide() &
&&& toggle()& 切换显示隐藏 &
&&& slideDown、slideUp、 fadeOut、fadeIn &
&&& animate 复杂动画& $(&img&).animate({ &bottom&: 0, &right&: 0 }, 2000).animate({ &opacity&: 0 }, 4000); &
&&& $(&#d1&).animate({ &left&: 300, &top&: 300 }, 5000).animate({ &width&: 300, &height&: 300, &opacity&: 1 }, 3000, function () { &
&&&&&&&&&&&&&&& }); &
&&& $(&#d1&).animate({ &left&: &-=80& }, 1000); &
第五部分,自定义插件 &
&&& $.extend({ &xhc1&: function (x, y) { &
&&&&&&& return x & y ? x : &
&&& $.fn.extend({ &xhc1&: function (x, y) { &
&&&&&&& alert(x & y ? x : y); &
&&& $(function () { &
&&&&&&& alert($.xhc1(6, 3));& 对应第一种 &
&&&&&&& $(&:button&).xhc1(6, 3); 对应第二种 &
第六部分。调用插件 &
cookie插件 &
&&& &script src=&jquery.cookie.js& type=&text/javascript&&&/script& &
&&& var tim = $.cookie(&tim&); &
&&& $.cookie(&tim&, new Date(), { expires: 30 }); &
验证表单插件 &
&&& &script src=&../../js/jquery.validate.js& type=&text/javascript&&&/script& &
&&& 具体看查JQValidate.txt &
提交表单插件 &
&&& &script src=&../../js/MyAjaxForm.js& type=&text/javascript&&&/script& &
&&& $(&#from1&).ajaxSubmit({ &
&&&&&&&&&&&&&&&&&&&&&&&&&&& success: function (str) { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if (str == &ok&) { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if (confirm(&增加成功,是否继续&)) { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& $(json.add.form).resetForm(); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& var id = $(&.cpb&).attr(&title&).replace(&第&, &&).replace(&页&, &&); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& pagejson(json, id); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& } &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& var id = $(&.cpb&).attr(&title&).replace(&第&, &&).replace(&页&, &&); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& $(json.add.divid).dialog('close'); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& pagejson(json, id); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& } &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& } &
&&&&&&&&&&&&&&&&&&&&&&&&&&& }, &
&&&&&&&&&&&&&&&&&&&&&&&&&&& error: function (error) { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& alert(error); &
&&&&&&&&&&&&&&&&&&&&&&&&&&& }, &
&&&&&&&&&&&&&&&&&&&&&&&&&&& url: json.add.addurl, &
&&&&&&&&&&&&&&&&&&&&&&&&&&& type: &post& &
&&&&&&&&&&&&&&&&&&&&&&& }); &
时间插件 &
&&& &script src=&../../js/datapattern.js& type=&text/javascript&&&/script& &
&&& (eval(data.replace(/\/Date\((\d+)\)\//gi, &new Date($1)&))).pattern(&yyyy-MM-dd&) &
easyui插件 &
&&& &link href=&../../Content/themes/default/easyui.css& rel=&stylesheet& type=&text/css& /& &
&&& &link href=&../../Content/themes/icon.css& rel=&stylesheet& type=&text/css& /& &
&&& &script src=&../../js/jquery.easyui.min.js& type=&text/javascript&&&/script& &
&&& &script src=&../../js/easyui-lang-zh_CN.js& type=&text/javascript&&&/script& &
&&& $(json.add.divid).dialog({ &
&&&&&&&&&&& title: json.add.addTitle, &
&&&&&&&&&&& width: json.add.W, &
&&&&&&&&&&& height: json.add.H, &
&&&&&&&&&&& maximizable: true, &
&&&&&&&&&&& resizable: true, &
&&&&&&&&&&& modal: true, &
&&&&&&&&&&& border: false, &
&&&&&&&&&&& resizeable: true, &
&&&&&&&&&&& collapsible: true, &
&&&&&&&&&&& buttons: [{ &
&&&&&&&&&&&&&&& text: '确定', &
&&&&&&&&&&&&&&& iconCls: 'icon-ok', &
&&&&&&&&&&&&&&& handler: function () { &
&&&&&&&&&&&&&&&&&&& //验证表单 &
&&&&&&&&&&&&&&&&&&& if (frmflag.form()) { &
&&&&&&&&&&&&&&&&&&&&&&& $(json.add.form).ajaxSubmit({ &
&&&&&&&&&&&&&&&&&&&&&&&&&&& success: function (str) { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if (str == &ok&) { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if (confirm(&增加成功,是否继续&)) { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& $(json.add.form).resetForm(); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& var id = $(&.cpb&).attr(&title&).replace(&第&, &&).replace(&页&, &&); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& pagejson(json, id); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& } &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& var id = $(&.cpb&).attr(&title&).replace(&第&, &&).replace(&页&, &&); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& $(json.add.divid).dialog('close'); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& pagejson(json, id); &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& } &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& } &
&&&&&&&&&&&&&&&&&&&&&&&&&&& }, &
&&&&&&&&&&&&&&&&&&&&&&&&&&& error: function (error) { &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& alert(error); &
&&&&&&&&&&&&&&&&&&&&&&&&&&& }, &
&&&&&&&&&&&&&&&&&&&&&&&&&&& url: json.add.addurl, &
&&&&&&&&&&&&&&&&&&&&&&&&&&& type: &post& &
&&&&&&&&&&&&&&&&&&&&&&& }); &
&&&&&&&&&&&&&&&&&&& }; &
&&&&&&&&&&&&&&& } &
&&&&&&&&&&& }, { &
&&&&&&&&&&&&&&& text: '关闭', &
&&&&&&&&&&&&&&& handler: function () { &
&&&&&&&&&&&&&&&&&&& $(json.add.divid).dialog('close'); &
&&&&&&&&&&&&&&& } &
&&&&&&&&&&& }] &
&&&&&&& }); &
$(who).when(what)
$(*).get(0) &
&&& 得到一个jq对像集合后,最好用 for 不要用forin &
&&& append和appendTo &
&&& appendTo的真正用途是。将一个现存的元素移动到一个元素中。 &
&&& &p&I would like to say: &/p&&div id=&foo&&&/div&& &
&&& $(&p&).appendTo(&#foo&); &
&&& &div id=&foo&&&p&I would like to say: &/p&&/div&& &
&&& 如果将一个元素追加进去的话,用append就可以了,虽然appendTo也可以。 &
&&& :的有简单选择器和表单选择器和表单对像选择器 还有一个内容选择器,$(&div:contains('John')&)& &
&&& 这里有一个特别的表单元素。select 不可以用: 只有他的option 里的属性才支持:& $(&select option:selected&) &
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:35040次
排名:千里之外
原创:40篇
转载:32篇
(2)(3)(6)(1)(2)(1)(3)(2)(7)(8)(4)(5)(6)(12)(10)}

我要回帖

更多关于 冰箱放在什么位置好 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信