精华内容
下载资源
问答
  • Qt 多线程中地信号与槽 函数原型: 1 QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection) enum Qt::...

    Qt 多线程中地信号与槽

    函数原型:

    1 QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
    

    enum Qt::ConnectionType
    此枚举描述可以在信号和插槽之间使用的连接类型。特别地,它确定特定的信号是立即传递到一个插槽,还是排队等待稍后的传递。

    通常使用的connect,实际上最后一个参数使用的是Qt::AutoConnection类型。

    Constant(value) Description
    Qt::AutoConnection(0) (默认)如果接收者位于发出信号的线程中,则使用Qt::DirectConnection。否则,使用Qt::QueuedConnection。连接类型在信号发出时确定。
    Qt::DirectConnection(1) 当信号发出时,插槽立即被调用。插槽在发送信号的线程中执行。
    Qt::QueuedConnection(2) 当控制返回到接收者线程的事件循环时调用插槽。插槽在接收线程中执行。
    Qt::BlockingQueuedConnection(3) 与Qt::QueuedConnection相同,只是发出信号的线程阻塞,直到插槽返回。如果接收者位于发送信号的线程中,则不能使用此连接,否则应用程序将死锁。
    Qt::UniqueConnection(0x80) 这是一个可以与上述任何一种连接类型组合使用的标志,使用的是按位或。当Qt::UniqueConnection被设置时,如果连接已经存在,QObject::connect()将会失败(也就是说,如果相同的信号已经被连接到同一对对象的同一个槽中)。这个标志是在Qt 4.6中引入的。

    在多线程中发出一个信号,没被子线程接收到,原因就是默认连接方式为Qt::AutoConnection,在多线程中又为Qt::QueuedConnection,对于排队连接,参数必须是Qt的元对象系统所知道的类型,因为Qt需要复制参数以将它们存储在后台事件中。如果你尝试使用排队连接,并得到错误消息。

    解决办法有两种:

    1. 把自己定义地类型注册为元组类型,使用qRegisterMetaType()注册,可以把这个函数放在connect()函数使用之前。
      参考代码:
    1 #include <QMetaType>//记得包含这个头文件
    2 //my_type是我自己定义的类型
    3 qRegisterMetaType<my_type>("my_type");
    4 connect(xx,SIGNAL(xx(my_type)),xx,SLOT(xx(my_type)));
    
    1. 在connect函数的第五个参数加入Qt::DirectConnection
    1 connect(xx,SIGNAL(xx(my_type)),xx,SLOT(xx(my_type)),connect(xx,SIGNAL(xx(my_type)),xx,SLOT(xx(my_type))););
    

    参考链接:https://www.cnblogs.com/cxjchen/archive/2013/06/04/3116909.html

    展开全文
  • 中地数码集团笔试题

    2016-10-15 20:44:17
    某城市发生了一起汽车撞人逃跑事件该城市只有两种颜色的车,蓝色15% 绿色85%事发时有一个人在现场看见了他指证是蓝车但是根据专家在现场分析,当时那种条件看正确的可能性是80% 那么,肇事的车是蓝车的概率到底是多少...

    1.四个人进行篮球传接球练习,要求每个人接球后在传给别人。开始由甲发球,并作为第一次传球,若第五次传球后,球又回到甲手中,则由多少种传球方式(D)


    A 60 , B 65 ,C 70, D 75


    2.10个箱子总重100公斤,且重量排在前三位数的箱子总重不超过重量排在后三位的箱子总重的 1.5倍,问最重的箱子
    重量最多是多少公斤?B


    A 11 , B 500/23 ,C 20, D 25


    3.A,B,C,D,E是5个不同的整数,两两相加的和共有8个不同的数值,分别是17,25,28,31,34,39,42,45,则这5个数中能被6整除的有几个?C


    A.0 B.1 C.2 D.3


    4.小李用150元钱购买了16元一个的书包、10元一个的计算器和7元一支的钢笔寄给灾区儿童,如果他买的每一样物品数量都不相同,书包数量最多而钢笔数量最少,那么他买的计算器数量比钢笔多多少个?B


    A、1   B、2   C、3   D、4


    5.某城市发生了一起汽车撞人逃跑事件该城市只有两种颜色的车,蓝色15% 绿色85%事发时有一个人在现场看见了他指证是蓝车但是根据专家在现场分析,当时那种条件能看正确的可能性是80%
    那么,肇事的车是蓝车的概率到底是多少? D


    A、12%   B、68%   C、17%   D、83%


    6.勘探:矿石:工厂(B)
    A.运输:货物:火车
    B.养殖:鲤鱼:餐厅
    C.训练:士兵:战场
    D.驯服:海豚:大海


    7.甲、乙、丙、丁四人对四个抽屉中的物品进行预测.甲:有些抽屉中没有书本;乙:所有抽屉中都有书本;丙:第二个抽屉中没有钢笔;丁:第三个抽屉中有信件.
    如果四人的断定中只有一项为真,那么以下哪项一定为真?A
    A.第二个抽屉中有钢笔
    B.第三个抽屉中有信件
    C.四个抽屉中都有书本
    D.四个抽屉中都没有书本

    展开全文
  • 别 首先是 GUI 的建立拖动所需控件双击控件修改控件的参数 主要有 string T ag( 这个是回调函数的依据 ) 其中还有些参数如 value style 也是需要注意的这个在实际操作中不忽视 这里需要给说明一下 图中所示按钮都...
  • 很多同学肯定都会抱怨自己每天的工作就是 CRUD,复制粘贴然后再改一改字段名什么的,根本没有什么技术含量,同时也造成了大量重复或相似代码。 设计模式、反射、注解等,这些 Java 高级特性能够帮助我们减少重复的...
  • .a 是一个纯二进制文件,.framework 除了二进制文件还有其他资源文件,.a不直接使用,必须有.h文件的配合,而.framework则可以直接使用。 可以理解为 .a +.h +sourceFile = framework .a文件肯定静态的,.tbd肯定...

    iOS中的库分为两种类型:
    静态库:.a和framework
    动态库:.dylib 和.framework

    • .a 是一个纯二进制文件,.framework 除了二进制文件还有其他资源文件,.a不能直接使用,必须有.h文件的配合,而.framework则可以直接使用。
      可以理解为 .a +.h +sourceFile = framework
    • .a文件肯定静态的,.tbd肯定是动态库,.framework 可能是静态库也有可能是动态库。
    • 深究的话.a文件可以理解成一种归档文件,其中存储的是经过编译的.o格式的目标文件。
    • 静态库在链接时,会被完整地复制到可执行文件中,如果多个app使用了同一个静态库,那么每个app都会拷贝一份。
    • 动态库不会复制,只有一份,程序运行时动态的加载到内存中,系统只会加载一次,多个程序共用一份。
    • 但是项目中国使用了自己定义的动态库,苹果是不允许上架的,在iOS8.0以后苹果开放了动态库加载.tbd的接口,用于挂在.tbd动态库。

    对静态framwork做如下操作:

    1. Dead Code Stripping 设置为NO: 如果开启此选项则会对“dead”、“unreachable”的代码进行过滤
    2. Link With Standard Libraries设置为NO :避免重复链接
    3. Mach-O Type设置为Static Library
    4. iOS Deployment Target静态库需要支持的版本。
    5. 在编译库的时候,xcode不支持同时编译模拟器和真机架构,需要选中Generic iOS Device和任意一个模拟器各编译一次。针对两个不同架构的.a进行合成(lipo -create第一个.a文件的绝对路径 第二个.a文件的绝对路径 -output 最终的.a文件路径)
    6. 在项目中导入同时支持模拟器和真机的.a文件和暴露的.h文件。 需要注意的是提供给使用者的话,光.a文件是不能够编译成功的,还需要提供头文件给使用者导入

    使用framework

    1. 如果打包的文件中设置图片的地方,图片最好单独打包一个bundle,这个时候图片的引用不再是mainBunle。
    2. 在Build Phases的Headers中,将需要公开的头文件添加到public。并且在frameworkXX.h中国也要引入需要公开的头文件。
    3. 同样也要修改Build Active Architecture Only 修改为NO,否则生成的静态库就支持当前选择的设备结构。

    动态库

    关于动态库和静态库的比较,对于使用者而言,导入动态库唯一要注意的是需要添加对应的动态库到工程里面。

    动态库的出现可能的原因是因为Extension的出现,Extension和APP是两个分开的可执行文件,同时需要共享代码,这种情况下动态库的支持是必不可少的。

    这种动态framework和系统的UIKit.Framework还是有很大区别的,系统的库不需要拷贝到目标工程中,我们自己做出来的framework如果是动态的,最后也还是要拷贝到App中(APP和Extension的bundle是共享的),因此苹果又把这种framework称为Embedded Framework

    在Xcode9之前官方不支持swift静态库,如果是swift项目必须采用user_framework!。

    CocoaPods
    对于目前采用模块化管理,一般都是使用CocoaPods的方式来管理代码。CocoaPods现在同时支持static library 和framework 的依赖管理。 在使用Cocoapods管理的项目中增加了一下目录文件:

    1. PodFile依赖描述文件
    2. Podfile.lock当前安装的依赖库的版本
    3. xx.xcworkspace 使用cocoapod管理依赖的项目,Xoce只能使用workspace编译项目。
      xcworkspace文件实际是一个文件夹,实际workspace信息保存到contents.xcworkspacedata里。
    4. Pods.xcodeproj,所有的第三方库都由pods工程构建,每一个第三方库都对应Pods工程的一个targets。 在Target Support Files目录下每一个第三方库都会有一个对应的文件夹,比如AFNetworking,该目录下有一个空实现文件;预定义文件用来优化头部文件编译速度;xcconfig文件在工程配置中使用,主要存放头文件搜索目录,链接的Flag(比如链接哪些库)。
      在Target Support Files的目录下还会有一个Pods-XXX的文件夹,该文件夹下存放了第三方库声明文档markdown 文档和plist;还有一个dunmmy的空实现文件;以及debug和release各自对应的xcconfig配置文件;另外还有两个脚本文件,frameworks.sh用于实现framework库的链接,当依赖的第三方库是framework形式才会用到该脚本,resources.sh用于编译storyboard类的资源文件或者拷贝*.xcassets之类的资源文件。

    Pods工程配置 Pods工程会为每一个依赖的第三方库定义一个Target,还会定义一个Pods-XXX的Target,每个Target会生成一个静态库。 Pods工程会新建Debug和Release两个Configuration,每一个Configuration会为不同的target设置不同的xcconfig,xcconfig指出了头文件查找目录、要链接的第三方库、链接目录等信息。

    CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking
    GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
    OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration"
    PODS_BUILD_DIR = ${BUILD_DIR}
    PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
    PODS_ROOT = ${SRCROOT}
    PODS_TARGET_SRCROOT = ${PODS_ROOT}/AFNetworking
    PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
    SKIP_INSTALL = YES
    复制代码

    OTHER_LDFLAGS指明了链接的framework。

    在主工程中的Build Phases 中有一项安装pod的framework,会调用Pods-xxx-frameworks.sh

    经常遇到的linker flag 问题

    .a其实是编译好的目标文件的集合,问题出在链接一步,而不是编译的问题,在Objc中使用静态库时,需要知道哪些文件需要链接进来,它依据的是 __.SYMDEF SORTED文件。
    可惜文件不会包含所有.o文件,而只是包含了定义了类的目标文件,可能并没有包含拓展类的信息,这样的情况下拓展类Extension虽然存在,但是并没有被链接到最终的可执行文件中,从而导致找不到方法的错误。

    解决方法是在调用者的Build Settings中找到other liner flag(OTHER_LINK_FLAG) 并写上-Objc选项,不管是否被引用到,链接器会把 Objective-C 的类和分类的所有对象文件全部链接,注意的是如果只有分类没有类,即使加了-Objc选项也会报错,这个时候应该使用-force_load参数,但这个情况一般不会出现。

    但是Workspace有很大的好处,Xcode会自动编译被依赖的静态库。这也就是为什么我们在pod install之后不需要配置相关设置,直接build主项目即可。

    在纯Objc的项目中,CocoaPods使用编译静态库.a方法将代码继承到项目中。在Pods项目中的每个target都对应这一个Pod的静态库。不过在编译过程中并不会真的产出.a文件。
    对于swift项目,Cocoapods提供了动态framework的支持,通过user_framework! ,对于swift写的库,想通过Cocoapods引入工程,必须加user_framework!

    CocoaPods作为OSX和iOS开发平台的类库管理工具,Cocoapods会自动处理库的依赖,减少各种过配置。不需要手动编译第三方库,直接编译主工程即可,隐式地指定了编译顺序。

    静态库不会递归引用(比如A静态库引用了B静态库,A编译后的静态库并不会包含B静态库,如果想使用A静态库,使用者还需要导入B静态,否则就会报‘Undefined symbol’错误),所以手动导入静态库的话,使用起来会比较麻烦。

    Cocoapods有一套它自己的版本表示规则,也可以自动分析依赖关系,既然静态库只是目标文件的打包形式,那么我们只需要找到被嵌套的静态库,并拿到其目标文件,然后和完成的静态库放在一起重新打包即可,如下操作,最终得到对外发布A并集成了B。

    lipo A.a -thin x86_64 output A_64.a # 如果是多 CPU 架构,先提取出某一种架构下的 .a 文件  
    lipo B.a -thin x86_64 output B_64.a  
    ar -x A_64.a # 解压 A 中的目标文件  
    ar -x B_64.a # 解压 B 中的目标文件  
    libtool -static -o Together.a *.o # 把所有 .o 文件一起打包到 Together.a 中
    复制代码

    可能在使用ar命令的时候会遇到如下问题:

    ar: libstaticDemo.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
    ar: libstaticDemo.a: Inappropriate file type or format
    复制代码

    出现上面这个问题是因为.a是支持在不同架构的运行的合成,也就是合体之后的静态库,

    lipo -info xx.a
    lipo -thin x86_64  libstaticDemo.a -output x86_64libDemo.a 
    复制代码

    查看支持的哪些架构,若是支持多种架构,则需要拆分,这样使用ar就不会有问题了。

    基于pod自动创建:pod lib create 库名 在podspec中,需要注意的是 依赖项不仅要包含自己类库的依赖,还要包括所有第三方库的依赖,只有这样当你的库打包成.a 或.framework 时才能让其他项目使用。
    打包类库

    sudo gem install cocoapods-packager
    
    pod package xxx.podspec --library --force
    
    复制代码

    其中--library 指定打包成.a文件,如果不带上将会打包成.framework 文件,--force是指强制覆盖。
    该插件通过对引用的三方库尽心重名很好的解决了类库命名冲突问题。

    cocoapods 1.4.0.2-beta支持打包静态库,但需要在podspec中添加属性static_framework = true。

    模拟器32/64分别对应i386/x86架构 真机:armv7,armv7s,arm64

    工具:
    lipo

    查看当前静态库支持的CPU架构

    lipo -info xx.a  
    复制代码

    合并静态库

    #lipo -create 静态库存放路径1  静态库存放路径2 ...  -output 整合后存放的路径
    lipo -create xx1.a xx2.a -output xx3.a
    复制代码

    拆分

    #lipo 静态库源文件路径 -thin CPU架构名称 -output 拆分后文件存放路径
    lipo xxx3.a -thin armv7 -output xx2.a
    复制代码

    转载于:https://juejin.im/post/5b597d98518825615d2fbaf9

    展开全文
  • 实验一 连续时间信号在 Matlab 中的运算 一 实验目的 1学会...1连续时间信号的表示 连续信号的表示方法有两种符号推理法和数值法 从严格意义上讲 Matlab 数值计算的方法不处理连续时间信号然而可 利用连续信号在等
  • adsp中地磁矫正库的使用

    千次阅读 2014-01-26 16:09:01
    再然后就是使了,高通默认的都是使了的,registry item 3801设置为1,不过 ro.qc.sensors.smgr_mag_cal_en这个flag我没有找到,可能源码没有开放。 如果库文件没有读取成功,我们可以看到如下的log: ...

    在adsp中,地磁的矫正需要用到第三方的矫正库,那么如何才能正确使用呢?


    On msm8974 platform, you can try to enable qualcomm mag calibration lib: 


    To enable Qcom mag cal 
    - Set registry item 3801 to 1 
    - Set the flag “ro.qc.sensors.smgr_mag_cal_en=true” 


    To confirm whether QMagCal is available, please check whether you have this header file: Sensors/scm/algo/inc/qmag_cal.h 


    #define AKMD8963_LIB_PATH "/vendor/lib/libAKM8963.so" 
    { SNS_REG_UUID_AKM8963, AKMD8963_LIB_PATH, &mag_cal_akm_sam_init }, 


    以上是以AKM8963为例,高通给的回复。


    也就是说,我们首先需要把库文件按照一定的名字,发到特定的目录下面。这个名字和目录在代码中有定义,不过很遗憾,这部分我们没有源码。每个UUID对应一个库文件路径,这个UUID我们已经在sns_reg_common.h这个文件中定义了,只要在高通认证过的芯片,都在这里定义了的。

    再然后就是使能了,高通默认的都是使能了的,registry item 3801设置为1,不过 ro.qc.sensors.smgr_mag_cal_en这个flag我没有找到,可能源码没有开放。


    如果库文件没有读取成功,我们可以看到如下的log:

    E/Sensors (  445): mag_cal.c(1588):mag_cal_sam_init: Failed to init mag cal lib for UUID(1) d4b21999-dd43-4e9e
    E/Sensors (  445): mag_cal.c(1593):mag_cal_sam_init: Failed to init mag cal lib for UUID(2) b6d8-9e68015a5c35
    E/Sensors (  445): sns_sam.c(4349):Failed to register algorithm service 16 with SAM


    adsp驱动的调试:

    如果是高通代码已经包含的驱动,那么我们调试就非常的方便了,只需要更改sensor_def_qcomdev.conf这个文件里面的内容就可以了

    这里面定义了I2C地址,中断管脚,一些参数和UUID等,然后push进去,不过要记得删除sns.reg文件,然后重启就可以了。

    具体的分析后面进行。。。

    展开全文
  • WinCE中地Flash分区和CheckSum点滴

    千次阅读 2009-09-09 16:33:00
    从CheckSum的这个特性可知数据值为0的字节是不会影响到最终的结果,这种特性我认为也是CheckSum的一个弱点,不像MD5,SHA1等摘要算法一样基本上反映出哪怕一个bit的改动,但是这个特性也给WinCE运行期间计算保存...
  • 使用验证码,虽然在一定程度上避免纯机器恶意访问,但是为了避免给人工操作带来太多干扰,不适合在每个位置都放置验证码,一般仅在少数关键点放置,这样就带来了新的挑战,也就是在没有验证码的时候机器操作,在有...
  • 自从来到我们的论坛以来,认识了很多的朋友和编程的高手,从中学到了很多知识。我看在论坛中有很多人问关于树控的问题。...这也是软件系统中常用的一种界面,希望对大家有所帮助。 本例的运行结果如图: 首先,新建一
  • 详解PCB设计中地线的干扰与抑制

    千次阅读 2013-02-27 23:06:09
    另一个问题是,尽管设备浮地,但设备与地之间还是有寄生电容,这个电容在频率较高时会提供较低的阻抗,因此并不有效地减小高频地环路电流。 2)使用 变压器 解决地环路干扰的最基本方法是切断地环路。用 ...
  • 如何将 Excel 中的数据在 MATLAB 界面下显示出来 首先 Excel 必须是 office 的WPS 的不可以 MATLAB 不识 别在 MATLAB 中使用命令 xlsread 读取 Excel 中的数据到 MATLAB 里如下所示 [number,txt,raw]=xlsread'...
  • 这个方式可使地回流电流可以使用的不同路径的数目最大化,因此能够尽量减小任何给定信号走线的接地电感,在单一的信号返回路径过于复杂而不轻易进行定义时,这样一种结构非常适合具有多个封装结构的数字电路的布局...
  • 『通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?』 
  • 告之要准备一个自我介绍(内容包括个人信息和做过的项目)的 PPT,然后把自己的电脑带过去讲的(期间发现过去的作品有个大 bug,果然很多 bug 都是在演示时才会出现),估计过吧。。 之后打来电话签就业协议,...
  • 相关文章: 《今天你买到票了吗?...不简单套用“实物电商系统”对“大型票务系统”做需求分析 ...“大型票务系统”和“实物电商系统”在不提供商品(服务)时给消费者带来的影响有巨大差异...
  • 『通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?』 ...
  • 告之要准备一个自我介绍(内容包括个人信息和做过的项目)的 PPT,然后把自己的电脑带过去讲的(期间发现过去的作品有个大 bug,果然很多 bug 都是在演示时才会出现),估计过吧。。 之后打来电话签就业协议,...
  • 统计stu.dat文件中地每个人地总成绩并将原有地数据计算出的总成绩存放在磁盘文件“stu.sort"文件中 #include<stdio.h> #include<stdlib.h> #include <conio.h> struct stu { int ji; int ...
  • 文章之三:WinCE中地Flash分区和CheckSum(转载 C151151 ) 最近在分析如何在WinCE运行时得到保存在FLASH的binfs分区中的image数据的完整性,积累了一些CheckSum和image数据结构,FLASH...
  • 通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern "C"声明...很多资料上都只是说明“如果没有 extern "C" 修饰,输出函数仅仅从 C++ 代码中调用。”却并没有明确这个调用是通过显式调用还是隐式调...
  • “大型票务系统”和“实物电商系统”在不提供商品(服务)时给消费者带来的影响有巨大差异 “大型票务系统”和“实物电商系统”的系统边界之间的区别与联系 “大型票务系统”和“实物电商系统”按系统...
  • 汉字顺序颠倒错乱后,读者地阅读理解正确率仍为,这说明读者识别到那些词素位置颠倒地错词以后,仍激活正确地词,从而获得语义.“研表究明,汉字序顺并不定一影阅响读.比如当你看完这句话后,才发这现里地字全是都...
  • “大型票务系统”中地恶意访问的处理——“接入管理”部分 先说“实物电商系统”,最常见的情况就是超售,也就是卖出商品数量超过库存商品数量,这种情况在集中促销期间特别突出。目前电商网站对于超售的...
  • Linux内核中地时钟中断Linux 内核中的时钟中断第七章 Linux 内核的时钟中断(By 詹荣开,NUDT)Copyright © 2003 by 詹荣开E-mail:zhanrk@Linux-2.4.0Version 1.0.0,2003-2-14摘要:本文主要从内核实现的角度分析了...
  • 如下图,自然而然地看见网址中地keyword后面,赫然地跟着“海贼王手办”,几个大字 获取翻页的关键字接口 尝试翻页之后,发现page后面对应的页码变为2,所以改变page的就翻页了 获取各个商品的价格,名称的...
  • 第1章 研究Nginx前帮我们做什么 目录 第1章 研究Nginx前帮我们做什么 1.1 Nginx是什么 1.2 为什么选择Nginx 1.3 准备工作 1.3.1 使用Nginx的必备软件 1.3.2 磁盘目录 1.3.3 Linux内核参数的优化 1.3.4 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,407
精华内容 962
关键字:

中地能