Qt如何使用第三方库
1.获取库的.dll和.lib(或.a)在资源管理器中找到对应库的.dll和.lib(或.a)如果第三方库不是Qt生成的:通常比较规范的第三方库,有lib和include两个文件夹。lib文件夹就是包含的库文件。include则包含头文件。 如果第三方库是Qt生成的:(通过Qt创建库的方法请见另一篇文章) 第三方库的构建时可以选择构建套件(Kit): 使用的MSVC编译:编译后会生成.dll和.lib两个文件。.dll在运行应用程序时调用,.lib在应用程序隐式调用动态链接库时使用使用MinGW编译:编译后会生成.dll和.a两个文件,.dll在运行应用程序时调用,.a在应用程序隐式调用动态链接库时使用 注意,如果一个项目中使用了第三方库,构建项目时使用的套件,必须与使用的第三方库构建使用的套件一致,否则会报错”link1104“错误 即如果第三方库用的MinGW编译,项目中添加的库文件是.a,那么项目构建的时候,也是用MinGW编译才可以通过 构建时可以选择套件、构建的位置,如果选择了Debug,则应该到中间文件目录的Debug文件夹下去找构建后的库:中间文件目录会生成 ...
C++_范围for
C++_范围for通常遍历STL的方式有三种: 通过下标+循环 (只适用于顺序存储结构) 迭代器iterator(STL容器都自带) 范围for 下面讲解一下范围for:范围for的实现逻辑实际上就是调用了迭代器iterator,通过查看汇编就可以看出来 范围for是遍历STL中的每一个元素 这里不要和迭代器搞混,迭代器是访问的元素的地址,然后再解引用迭代器,访问到的元素 范围for使用时变量直接就是获取到的元素(也就是包含了用迭代器获取地址+迭代器解引用) 下面是一个使用案例: 1234567891011121314151617181920212223242526272829string s("hello world");//范围forfor(char ch : s){ cout << ch;}//迭代器iteratorstring::iterator it = s.begin();while(it!= s.end())//注意要使用不等号而不是小于号,因为某些数据结构地址空间不一定是连续的{ cout ...
MySQL_数据库备份与还原
数据库备份备份命令在shell命令行进行1$ mysqldump [-P端口号] -u用户名 -p密码 [-B] 数据库名 > 备份后的名称.bak.sql [ ]内的是可以省略的 -u和用户名、-p和密码之间可以加空格,可以不加 -B和数据库名之间必须有空格(如果-B没有省略的话) 端口号可能是3306,取决于数据库有没有指定端口 备份后的文件要具体到路径,否则认为当前工作路径(同其他shell命令一样) eg1:mysqldump -uroot -p0295 test2 > ../test2.bak.sql备份到了父目录 eg2:mysqldump -P3306 -uroot -p0295 test2 > test2.bak.sql备份到了当前目录 可以多个数据库同时备份 1$ mysqldump [-P端口号] -u用户名 -p密码 [-B] 数据库1 数据库2 > 备份后的名称.bak.sql eg:mysqldump -uroot -p0295 -B test2 test_mysql > test.back.sql两个数据库备份到了一个备 ...
MySQL_库和表的使用(部分未完
库和表的使用操作小记 记录的是基础用法,有很多细节省略了,详细请看课件或者完整笔记 MySQL的SQL语句分为以下三类 DDL 【数据定义语句】 用来维护存储数据的整体结构,比如库和表的创建、修改、删除、备份与还原、查看 代表命令create,alter,drop,source,show DML【数据操纵语句】 用来操作表中的具体数据,比如插入数据、查询数据、删除数据 代表命令insert,select,delete,update DLC【数据控制语句】 负责权限管理和事务 代表命令grant,revoke,commit 登录mysql有两种方式: 指明端口 不指明端口,使用默认的 -p的作用是不显式地输入密码,我并没有设置root账户的密码,直接按回车即可 -u和root之间可以有空格可以没有 DDL【数据定义语句】查看mysql所有库 注意mysql语句要用分号结尾 创建库 或者“如果这个库不存在的话,就创建”(创建表的时候也一样): 注意,关于库、表的名称,最好使用反引号`` `括起来,这个符号是电脑esc键下面的键 ...
C&C++连接与使用MySQL
连接mysql首先要下载好devel开发库才行 「MySQL-04」Linux环境下使用C/C++连接并操纵MySQL_linux c++ mysql-CSDN博客 否则会提示找不到库
MySQL_关系的码,关系的完整性
[toc] 关系的码候选码 候选码是能够唯一标识关系中某一个元组的一个属性或属性集,也叫候选键如: 学生关系中,学号可以唯一标识学生,班级+姓名也可以唯一标识一个学生,学号和(班级,姓名)都是候选码 候选码需要满足: 唯一性:唯一标识一个元组(注意不是说候选码只有一个) 最小性:构成候选码的属性个数最少,比如前面的(班级,姓名),再添加一个学号或其他属性就多此一举了 主码 主码是从候选键中选着一个作为查询、插入、删除元组操作的操作变量,也叫主键、主码、关系键、关键字简单来说就是从候选码中选出的一个最具代表性的 主属性:包含在任何一个候选码的各个属性称为主属性(也就是说,之前的(班级,姓名)中,班级和姓名都是主属性) 非主属性:不包含在任何候选码中的属性 外码 关系R1,R2,其中属性集X是R1的非主码属性,但X是R2的主码,则称X是R1的外码(也叫外键、外部关系键),R1为参照关系,R2为被参照关系 外码的取值是由被参照的关系的主码的域决定的,也就是外码的域来自“那个”主码的域(R1的外码和R2的主码必须在同一个域上) 注意一个地方,外码 只是 不是主码,不代表外 ...
友链位置
友链位置 友链界面
Butterfly设置自定义的ICP
Butterfly设置自定义的ICP
STL&string&模拟实现
STL简介STL(standard template library-标准模板库):是C++标准库的重要组成部分,不仅是一个可以复用的库,而且是一个包罗数据结构与算法的软件框架。 STL六大组件 string解析string严格来说不属于STL,它的创建时间比STL更早 头文件&命名空间头文件#include <string>但是有引入头文件<iostream>的时候,不引用头文件<string>也可以 命名空间std 构造函数string::string三种常用的构造函数 123string();//defaultstring(const string& str);//使用一个string拷贝构造,是深拷贝string(const char* s);//使用char数组拷贝构造,是深拷贝 123456char ch[] = "hello" string str1;//默认构造函数string str2("hello world");//使用string拷贝构造string str3(c ...
模版template
模板模板可用应用于函数,也可应用于类。应用于函数的为函数模板,应用于类的为类模板。 模板参数–很多地方和函数参数类似函数参数:传递的是对象值 模板参数:传递的是类型 函数模板的类型一般是编译器根据实参传递给形参的类型推演出来的,但是也有推演不出来的时候:例1: 1234567891011template < class T >T *func(int n){ return new T[n];}int main(){ int *p = func(10); return 0;} 推到不出来模板参数T的类型,因为模板参数应用在了返回值类型上没有办法通过传参判断出来模板参数的类型 此时应显式指定模板参数类型,“函数模板显式实例化”:12345678int main(){ int *p1 = func<int>(10); double *p2 = func<double>(10); return 0;}//类似于使用vector的时候,需要显式指定vector元 ...
命名空间&作用域限定符
namespace命名空间要定义在全局,不能定义在局部 同一个域里面的同名的命名空间的内容会被合并 命名空间可以嵌套 命名空间通常放在头文件 命名空间不影响生命周期 123456789101112131415161718192021222324namespace cyj{ int a = 10; struct test{ string name; }; class Test{ int age; };}namespace bit{ int a = 20; int add(int first, int second){ return first+second; }}using namespace bit;//1.使用命名空间内定义的变量时,可以提前将命名空间展开,然后直接使用int main(){ int c = add(cyj::a, a); // ::域作用限定符 //2.若 ...
迭代器iterator
迭代器iterator的使用迭代器iterator是一个额外的、独立数据结构,存在于STL库中。专门用于访问STL中各个数据结构中的元素。 (可以朴素地认为迭代器就是指针) 使用迭代器访问元素,和使用方括号[]加下标的效果一样,都是获取元素的引用,可读可写 但是方括号是对象本身的数据结构自带的(通过重构),而迭代器是不属于被访问的对象的,一个单独的数据结构 当一个对象为const时,为只可读的,此时还是可以通过方括号下标访问(因为通常会重构一个const类型的方括号),只要不对访问到的元素进行修改即可 但是已经不能使用普通迭代器访问了,因此使用迭代器访问元素,本质上是使用一个数据结构A(iterator)访问另一个数据结构B(被访问的对象)中的元素,而非数据结构B直接调用自己的成员函数访问自己 因此就算数据结构B设置为const,但是外部的迭代器仍有写的权限,这是不合理的。此处应使用const_iterator 迭代器的使用方法 使用迭代器的时候要指明被访问的数据结构类型 12//此处以string对象为例string::iterator ite; STL中的数据结构 ...
教师监考系统开发记录
[toc] 开发规划: 实现无界面的系统,编写可以独立完成所有功能的后端代码 提高代码的复用性,减少重复的字段,解耦合。将功能封装为函数,函数值完成执行,获取值,返回值,不进行打印等额外功能,将函数功能化。调用函数的代码负责对函数返回值进行处理。提高易用性。 抽象化,将同类功能函数抽象为同一类,并加入必要的成员变量,隐藏信息、保护数据、便于代码移植。 实现有界面的系统,采用B/S 浏览器/服务器 结构 前端通过浏览器展示,采用html展示页面结构,css进行html美化,js用于控制html上组件的行为,并内联ajax,将某些组件的响应作为请求,与参数一起打包发送,并等待后端响应,获取参数,然后执行相应的操作 后端,先移植后端代码与数据库到Linux云服务器。升级cmake和gcc。安装httplib c++库,用来监听指定端口下的网络请求,执行后端代码,将结果作为参数传回前端。 将移植后的后端代码进行更改,将接口的参数和返回值,进行更改,比如将变量进行JSON序列话和反序列化,用于网络通信时参数传递。 技术栈:后端:C/C++ C++11,STL,准标 ...






