- 博客(192)
- 收藏
- 关注
原创 Qt——day03
文章目录一、自定义控件的封装1.SpinBox 和 HorizontalSlider 结合使用1.1 目标效果2. 封装步骤2.1 在项目中添加新Qt设计师界面类文件2.2 进入设计控件的UI界面2.3 使用控件界面使用自定义控件2.4 在制作控件的文件中完善控件的功能二、常用的鼠标事件1.捕获鼠标进入或者离开Label区域2.捕获鼠标的其他事件3.在原有类上增加定时器事件3.1 在 Label 中让数字每隔1秒就进行 ++ 操作4.处理多个定时器三、定时器类1.创建定时器对象2.停止定时器一、自定义控件
2021-12-21 19:26:44 2191
原创 Qt——day02
文章目录一、QMainWindow1.菜单栏1.1 创建菜单栏1.2 往菜单栏添加菜单1.3 往某个菜单添加菜单动作1.4 在菜单项间增加分割线1.5 菜单栏数量问题2.工具栏2.1 创建工具栏对象2.2 改变工具栏的默认位置2.3 设置工具栏运行停靠的位置2.4 设置工具栏浮动2.5 设置工具栏移动性2.6 往工具栏添加工具2.7 工具栏数量问题3. 状态栏3.1 状态栏的数量3.2 往状态栏添加部件4. 铆接部件(浮动窗口)4.1 添加浮动窗口5. 核心部件(中心部件)6.资源文件6.1 准备好外部的资
2021-12-20 14:49:58 2598
原创 QT——day01
文章目录一、项目创建以及默认生成的main文件和Pro文件1.项目创建1.1 项目名称和路径1.2 创建项目时的基类1.3 创建QWidget 类1.4 main 文件简单介绍1.5 Pro 文件1.6 .h 文件二、命名规范和常用快捷键1.命名规范2.常用快捷键三、QPushButton 按钮1.创建按钮第一种方法2.创建按钮第二种方法3.按钮移动 move4.重置窗口大小 resize5.设置窗口标题 setWindowTitle6.设置窗口固定大小 setFixedSize四、Qt中的对象模型(对象树
2021-12-19 12:49:23 1299
原创 C 高级编程day07 ——预处理和静动态库
文章目录一、预处理1.预处理的基本概念1.1 文件包含指令(#include)1.1.1 文件包含处理1.1.2 #incude<> 和 #include"" 区别1.1.3 注意:2.宏定义2.1 无参数的宏定义(宏常量)2.2 注意事项:2.3 带参数的宏定义(宏函数)3. 条件编译3.1 防止头文件被重复包含引用3.2 一些特殊的预定宏一、预处理1.预处理的基本概念 C语言对源程序处理的四个步骤:预处理、编译、汇编、链接。 预处理是在程序源代码被编译之前,由预处理器(Prepr
2021-11-26 13:51:14 1319 1
原创 C 高级编程day06——函数指针和回调函数
文章目录一、函数指针1.函数类型(模板)1.1 如何区分两个不同的函数?1.2 函数指针使用的注意事项1.3总结定义函数指针的步骤2.函数指针(指向函数的指针)三种定义方式二、函数指针做参数(回调函数)1.注意事项一、函数指针1.函数类型(模板)1.1 如何区分两个不同的函数? (1)一个函数在编译时被分配一个入口地址,这个地址就称为函数的指针,函数名代表函数的入口地址。 测试:将main函数的地址打出来int main(){ printf("%p\n",main); re
2021-11-25 20:06:01 352
原创 C 高级编程day04 多维数组与结构体强化
一、多维数组1.一维数组 元素类型角度:数组是相同类型的变量的有序集合 内存角度:连续的一大片内存空间 在讨论多维数组之前,我们还需要学习很多关于一维数组的知识。首先让我们学习一个概念。1.1 数组名 考虑下面这些声明:int a;int b[10]; 我们把a称作标量,因为它是个单一的值,这个变量是的类型是一个整数。我们把b称作数组,因为它是一些值的集合。下标和数名一起使用,用于标识该集合中某个特定的值。例如,b[0]表示数组b的第1个值,b[4]表示第5个值。每个值都是一
2021-11-24 18:48:00 1726
原创 C高级编程day03 位运算
一、位逻辑运算符 4个位运算符用于整型数据,包括char.将这些位运算符成为位运算的原因是它们对每位进行操作,而不影响左右两侧的位。请不要将这些运算符与常规的逻辑运算符(&& 、||和!)相混淆,常规的位的逻辑运算符对整个值进行操作。1.按位取反:~ (1)一元运算符 ~ 将每个1变为0,将每个0变为1,如下面的例子:~(10011010) 01100101 (2)请注意该运算符不会改变a的值,a仍为2。假设a是一个unsigned char,已赋值为2.在二进制中,2
2021-11-23 21:56:13 745
原创 C 高级编程day02 函数的调用模型与指针强化
文章目录一、宏函数1.如何定义宏函数2.什么时候使用宏函数3. 宏函数优点:二、函数的调用模型1.函数调用流程2.函数调用惯例2.1函数参数的传递顺序和方式2.2栈的维护方式2.3 常见的调用惯例2.4 函数变量传递分析2.4.1 main 函数在栈区开启的内存2.4.2 main 函数在堆区开启的内存2.4.3 子函数1在栈区开启的内存2.4.4 子函数1在堆区开启的内存3.栈的生长方向和内存存放方向(1)测试栈的生长方向(2)测试内存存放方向三、指针强化1.指针变量2.野指针和空指针2.1 空指针2.2
2021-11-22 21:49:30 1583
原创 C 高级编程day01——内存分区
文章目录一、数据类型1.数据类型的概念2.数据类型大致分类3.数据类型别名3.1 测试代码:3.2 注意事项4.void数据类型4.1 void * 转换5.sizeof 操作符5.1 基本语法5.2 sizeof 注意点5.3 测试5.4 数组名与指针6.变量6.1 变量的概念6.2 变量名的本质6.3 修改变量的值的两种方式二、程序的内存分区模型1.内存分区1.1 程序运行之前1.2 size + 可执行二进制文件(1)代码区(2)全局初始化数据区/静态数据区(data段)(3)未初始化数据区(又叫 b
2021-11-20 20:35:44 1635 1
原创 day10 文件操作
文章目录一、概述1. 磁盘文件和设备文件1.1 磁盘文件1.2 设备文件2. 磁盘文件分类3. 文本文件和二进制文件3.1 文本文件3.2 二进制文件二、打开文件与关闭文件1.文件指针2. 文件的打开2.1 打开文件函数2.2 打开的模式一、概述1. 磁盘文件和设备文件1.1 磁盘文件 指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上,使用时才调入内存。简单点说就是将数据存放到外部介质上,比如磁盘,U盘啊等等,要使用的时候再导进来。1.2 设备文件 在操作系统中把每一个与主机相连的输
2021-11-17 17:17:02 1268
原创 day09 结构体等复合类型(自定义类型)
文章目录一、结构体1.概述2. 结构体变量的定义和初始化2.1定义结构体变量的方式:2.2 结构体类型和结构体变量关系2.3 结构体成员的使用2.4 结构体的大小和内存结构2.4.1 测试代码2.4.2 分析测试结果一、结构体1.概述 我们知道数组用来描述一组具有相同类型数据的有序集合,用于处理大量相同类型的数据运算。 有时我们需要将不同类型的数据组合成一个有机的整体,来满足需求,因为普通的数据类型无法满足需求。比如说需要打印一个学生的具体信息,一个学生有学号/姓名/性别/年龄/地址等属性。显然
2021-11-16 23:09:42 1223
原创 day08 变量作用域生命周期与内存
求非空字符串元素个数:“ni chou sha chou ni za di” 字符串逆置: str_inversehello -- olleh void str_inserse(char *str){char *start = str; // 记录首元素地址char *end = str + strlen(str) - 1; // 记录最后一个元素地址。while (start < end) // 首元素地址是否 < 最后一个元素地址{ char tmp = *
2021-11-15 17:51:20 1054
原创 day07 指针和字符串
一、指针和函数:1.栈 帧: 当函数调用时,系统会在 stack 空间上申请一块内存区域,用来供函数调用,主要存放 形参 和 局部变量(定义在函数内部)。 当函数调用结束,这块内存区域自动被释放(消失)。 这个就像是工地里请了批个工人过来干活,那么要腾出一片空间给这个工人使用,搭棚放工具啥的。如果工期结束了这片空间上的东西就销毁了2.传值和传址:2.1传值: 函数调用期间,实参将自己的值,拷贝一份给形参。 不会影响原来实参的值。为什么不会影响呢?因为被调用的函数中,操作的形参和实参是
2021-11-14 16:10:32 992
原创 day06 指针基础
一、指针和内存单元 (1)指针: 地址。很多人都说指针就是地址,其实我觉得这个说法不正确,应该说指针指向地址,或者说指针存放地址。 (2)内存单元: 计算机中内存最小的存储单位。——内存单元。大小一个字节。 每一个内存单元都有一个唯一的编号(数)。称这个内存单元的编号为 “地址”。 (3)指针变量:存地址的变量。二、指针定义和使用:1.间接引用int a = 10;int *p = &a; int* p;--- windows; int *p ---Linux
2021-11-13 20:04:09 1290
原创 一、链表及经典问题
文章目录一、141 环形链表1、思路2、注意细节,起点不一样3、代码二、142 环形链表入口三、202 快乐数四、206 反转链表五、92 反转链表二六、61 旋转链表七、19 删除链表第N个节点八、83 删除排序链表中的重复元素九、82 删除排序链表中的重复元素二十、24 两两交换链表中的节点一、141 环形链表1、思路 本方法需要到「Floyd 判圈算法」(又称龟兔赛跑算法)有所了解。 假想「乌龟」和「兔子」在链表上移动,「兔子」跑得快,「乌龟」跑得慢。当「乌龟」和「兔子」从链表上的同一个节
2021-11-13 08:54:53 1294
原创 day05 数组与函数
文章目录一、二维数组:1.大小:2.地址合一:3.二维数组的初始化:4.多维数组:【了解】二、字符串:1.字符数组和字符串的区别2.字符串获取 scanf:3.字符串操作函数:4.字符串追加:三、函数1.函数的作用:2.函数分类:3.随机数:4.函数定义:5.函数调用:6.函数声明:7.exit函数: #include 一、二维数组:int arr[10] = {1,2,3,5,6,7};{1,2,3,5,6,7};{1,2,3,5,6,7};{1,2,3,5,6,7};{1,2,3,5,6,7
2021-11-12 07:24:08 102
原创 day03 运算符和程序运行结构
文章目录一、变量类型限定符1.extern:2.const:3.volatile:4.register:二、字符串:三、输入输出函数1.printf函数:2.putchar函数:3.scanf函数:4.getchar()函数:四、算数运算符:1.++ 和 --:2.赋值运算:3.比较运算符:4.逻辑运算符:5.运算符优先级:6.三目运算符: ? :五、类型转换:1. 隐式类型转换:2. 强制类型转换:六、程序运行结构1.if分支语句:匹配一个范围.属于模糊匹配.2.switch 分支:精确匹配.3.whil
2021-11-08 20:38:25 208
原创 day02 常量变量,进制转换
一、常量及定义方法常量:不会变化的数据。不能被修改。1. “hello”、'A'、-10、3.1415926(浮点常量) 2. #define PI 3.1415 【强调】:没有分号结束标记。 【推荐】 定义宏: 定义语法: #define 宏名 宏值3. const int a = 10; 定义语法:const 类型名 变量名 = 变量值。 const关键字: 被该关键字修饰的变量,表示为只读变量。const 是只读变量,如果通过简单的修改方式修改就会出错:二、变量及定义方法
2021-11-07 11:29:08 341
原创 day01 初识C语言及gcc编译过程
文章目录一、解决提示窗一闪而过:二、两种编写 helloworld 的方式:三、system 函数:四、gcc编译4步骤:【重点】1. 预处理文件1.1 预处理做的工作为:1.2 头文件展开,可以展开任意文件1.3 宏定义替换1.4 替换注释1.5 展开条件编译 --- 根据条件来展开指令2.编译 -S xxx.s 汇编文件2.1 逐行检查,检查语法错误2.2 将C程序翻译成汇编指令3.汇编 -c xxx.o 目标文件4. 链接 xxx.exe 可执行文件。五、VS调试程序:六、CPU内部结构与寄存器6
2021-11-02 22:22:43 751
原创 TCP 个人理解
一、简介 TCP 是面向连接的运输层协议,提供全双工的,可靠交付的服务,并且还拥有流量控制和拥塞控制。面向连接的:就是在传输数据之前要建立连接,传输完毕之后要关闭连接。全双工:两端主机的进程可以同时收发数据可靠交付:就是传输的数据无错误,按序,不丢失,不重复。比如说发送方发送了 12345,那么接收方接收到也是 12345无错误:主要是不发错给其他的主机进程,比如说A是和B通信,但A却发送给了C,这就是出错了。按序:就是接收方最后从缓冲区得到的数据的顺序是和发送方想要发送的数据的顺序是一样的。
2021-10-29 13:01:59 2086
原创 1.ftp 数据采集模块
ftp 数据采集模块主要是使用封装好的 Cftp类写的客户端程序从服务器将数据采集回来。Cftp类是在 ftplib开源库的基础上做的二次封装。 使用 ftp 进行开发前,先对ftp 进行简单的了解。一、ftp 协议简单介绍 ftp(File Transfer Protocol文件传输协议)是基于TCP/IP 协议的应用层协议,用于文件的传输,包括ftp服务器(或服务端)和ftp客户端。ftp客户端与服务器创建网络连接,请求登录服务器,登录成功后,就可以进行文件传输,主要包括下载文件和上传文
2021-10-20 23:55:01 1666 1
原创 Oracle 内存结构特性
用户的所以操作都在内存中进行,最后由数据库后台进程将操作结果写入物理磁盘中。 用户操作数据库的实质是:与实例建立连接,然后通过实例来操作数据库。一、高速缓冲区 高速缓冲区存放的是最近从数据文件中读取出来的数据,供用户使用。 用户要操作数据时,实例将数据读取到高速缓冲区中,用户在高速缓冲区中操作数据,处理的结果放在高速缓冲区中,最后由数据库的进程写入磁盘。二、共享池 缓存:暂时存储 共享池缓存最近执行过的SQL语句、pl/sql 程序和数据字典,是对SQL语句、pl/sql 程序进
2021-10-13 17:23:58 132
原创 tnsnames.ora 文件
一、简介 Oracle的客户端安装了之后,要连接数据库,但是要知道数据库在哪呀。数据库相当于是一个娱乐场所(公司),实例是里面的美女,为客人提供服务的。数据库应该称为数据库管理系统,数据库实例是系统中的进程,为客户提供服务。一个系统包含的东西有很多。注意区分数据库系统和数据库实例。当你要找一个美女服务你时,你要知道娱乐场所在哪(IP地址),从哪里进去(端口),美女的名字(实例名),美女的身份证号或者标识(实例标识符)。因为名字一样的人,一个闭月羞花,一个惨不忍睹。客户端连接数据库,要获取数据库系
2021-10-13 15:47:15 3035
原创 SQL plus
一、简介 这是一个开发Oracle数据库的工具。简单点来说就是能用这个工具(程序)来登陆Oracle数据库,然后能操作数据库,只不过是以命令行的方式来操作。这个工具哪里来的呢?当你安装了客户端机时,SQL plus也自动安装了。当然安装了服务端,也会自动安装。因为服务器那里不一定安装了Oracle客户端机,但是有时候也要在服务器那里对数据库进行管理。所以当你安装了Oracle服务端时,也会同时安装这个工具。这个工具(程序)是通过命令来操作数据库的,有时候对一些不太熟悉命令行的人不太友好,老是要敲命
2021-10-13 15:38:16 1092
原创 C语言gdb调试
文章目录一、gdb的安装二、调试前的准备三、基本调试命令四、调试core文件1.修改系统资源限制参数2.core 文件存放的路径3.gdb 调试加上 core 文件五、调试正在运行中的程序1.运行示例程序2.查看进程编号3.gdb 调试加入进程编号六、调试多进程服务程序1.示例程序2.先用 gdb 进去调试3.gdb默认调试父进程4.停止其他的进程5.查看可以调试的进程: info inferiors6.切换调试的进程:inferior + Num七、调试多线程1.测试代码2.运行程序3.查看线程3.1 查
2021-10-12 22:02:48 2375
原创 poll 模型
一、poll 模型简介 从字面含义来看,poll 就是对集合中的文件描述符进行调查。1.没有文件描述符数量限制 poll 和 select 在本质上没有差别,管理多个文件描述符也是进行轮询,根据描述符的状态进行处理,但是 poll 没有最大文件描述符数量的限制2.fdset 采用数组 select 的 fdset(存放文件描述符的集合)采用 bitmap,select 默认大小为 1024,可以修改但是没有必要;poll 采用了数组,这个数组的大小根据业务的需求去定义大小。那么意思就是可
2021-10-10 22:10:23 1718
原创 select 的缺点
1.select 支持的文件描述符数量太少了(比如说可以监视的socket),默认是1024,虽然可以调整,但是描述符数量越大,效率越低,调整的意义不大。 2.每次调用select ,都要产生拷贝。需要把fdset 从用户态拷贝到内核,需要将fdset备份。每次调用select函数都要将socket集合备份。当次数很大时,就产生了大量的拷贝,大量的开销。 同时在线的大量客户端有事件发生的可能很少,但是每次有事件发生都要遍历fdset。当监视的描述符数量增加时,其效率就会线性下降。...
2021-10-10 19:38:20 694
原创 select 模型代码详解
文章目录一、select 的第一个参数(监视的范围)二、第二个参数三、第三个参数四、第四个参数五、第五个参数(超时的机制)六、函数返回值1.成功的返回1.1 成功的返回的含义1.2 FD_ISSET() 判断是哪个socket发生事件1.3 FD_ISSET() 的返回值2.错误的返回值3.演示错误的集合3.1 正常的情况3.2 错误的情况4.捕捉到了信号5.返回0的情况(超时)七、利用select函数来实现tcp的超时机制八、pselect 函数一、select 的第一个参数(监视的范围) 这个
2021-10-10 17:06:57 1530
原创 APP服务端优化——3.增加数据库连接池
老规矩,先备份。文章目录一、数据库连接池的介绍二、数据库连接池的实现1.定义数据连接对象数组和锁2.初始化数据库连接池3.将初始化锁放在客户端连接上来前三、数据库连接池的使用1.函数去掉数据库连接对象参数2.从数据库连接池中获取一个连接对象(1)定义获取一个连接对象函数 getconns(connection *conn)(1.1)如何判断某个对象是空闲的(1.2)如果连接池中没有空闲的对象了怎么处理(2)使用数据库连接对象3.解锁(1)解锁的思路(2)线程中解锁的位置(2.1)操作数据库失败后(2.2)
2021-10-08 19:28:58 886
原创 APP服务端优化——2.将多进程改为多线程
文章目录一、修改的注意事项1.将创建多进程的函数改为创建多线程的函数2.创建一个容器,存放子线程的socket3.将原来多进程的程序的return修改为break4.makefile文件连接线程库5.修改全局变量5.1 业务请求参数(1)声明(2)在线程主函数中定义(3)将业务结构体变量作为参数传给需要到业务参数的函数5.2 数据库连接对象(1)将全局的数据库连接对象去掉(2)把数据库连接对象放在线程主函数中定义(3)修改连接数据的方式(4)将数据库连接对象传到需要操作数据库的函数中5.3 接收发送报文缓冲
2021-10-08 14:49:38 464
原创 天气APP服务端——2.项目的组织和数据结构设计
1.为独立项目创建目录(1)天气APP是一个独立的项目,应该要为它创建一个独立的目录。(2)这个项目的源码,SQL和bin分别放在不同的子目录下2.数据库用户的设计 其实天气APP的数据量不会太大,但应该采用规范化的设计,以后可能要扩充数据,所以不应该把所有的数据都放在一起。这个APP的数据量比较大的是用户的使用日志。因此我们创建了两个数据库的用户。 将数据分开存放,其实一个重要的原因就是为了方便数据的备份。重要的数据就采用全用户的备份方式;数据量比较大的,不是那么重要的就备份数据结构。
2021-10-06 21:00:48 487
原创 天气APP服务端——1.APP服务端设计
1.业务的需求1.1 匹配最近的城市站点的实现(1)手机开启定位,会获得用户所在地方的经纬度。然后城市站点的经纬度与用户的经纬度去匹配,匹配到最近的站点。 有了两个地方的经纬度,就去计算两点之间的距离根据两个经纬度计算距离:https://blog.csdn.net/zhou8572/article/details/40829367?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%
2021-10-06 19:22:13 412
原创 202 肥婆快乐数
class Solution {public: // 2、制作节点的函数 int makeNode(int x) { // 定义一个变量,存放各个位上的数的总和 int sum = 0; // 用一个循环来取各个位上的数的平方 while(x!=0) { // 先取最后一位x%10,然后求平方和,接着放进总和变量里面
2021-10-04 12:56:53 98
原创 找出有环链表的入口点
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *detectCycle(ListNode *head) { if(head == NULL) ret
2021-10-04 10:15:47 147
原创 链表是否有环
class Solution {public: bool hasCycle(ListNode *head) { // 首先判断链表是否为空 if(head == NULL) return false; // 定义快慢指针 ListNode *slow = head; // 其实快指针也可以和慢指针同起点,只要快指针跑得比满指针快就行 ListNode *fast = head->next;
2021-10-04 09:16:11 70
原创 初识html
1.HTML 概念 CSS 可以用来美化网页,js 能让网页变为动态产生交互行为。js 封装为jQuery 。vue 用于数据的分离和绑定的框架。2.HTML 基本结构 就像人一样,有头部,有主体部分。 成对标签为开放标签,只有一个为闭合标签。3.网页的基本信息3.1 title 标签3.2 meta 标签 meta是html语言head区的一个辅助性标签,meta元素可提供相关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。me
2021-09-06 10:06:28 79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人