【面试题总结1】-Static、Const、QT中基于TCP的通信服务器/客户端端操作
1、在C++和C中static关键字的用法
在C语言和C++中,
① static修饰未初始化的全局变量,结果默认为0 ;
② 当static修饰局部变量时,只是延长了这个变量的生命周期,并没有改变其作用域。
比如说,这个变量是在哪个函数被定义的,那么它的作用域就只在这个函数中,但是它的声明周期被延长了,一般的局部变量时函数结束,变量就会被释放掉,但是以static修饰的局部变量,会在整个项目结束时才被释放,所以它的值能够被保留,再次调用该函数时,不会重新被定义出来,是继续使用之前的这一个变量;
③ 用static修饰的函数,只能在本文件中被调用,不能被跨文件调用;
④ 用static修饰的全局变量,不能用extern引用到其他文件使用;
⑤ 用static修饰的指针,不能指向auto类型的地址。因为计算机时先为静态变量分配空间,再分配auto类型的变量,不可以使用指针指向不存在的变量地址。
在C++中,有静态数据成员和静态成员函数两个概念,
① 静态数据成员和静态成员函数都属于类,但不属于类的实例化,它们在所有类的实例当中,是共享的。
② 静态数据成员就是在类中定义数据时,在数据成员前+static关键字,它需要在类外进行初始化,如果不初始化的话默认结果为0,但不建议这么做。
③ 静态成员函数也就是在类中定义函数时,在函数声明前+static,静态成员函数 只能访问 静态数据成员。
2、在C++和C中const关键字的用法
const的作用是:保护数据不被修改
- 当const修饰一个普通变量时,说明这个变量的值不能被修改,所以在定义该普通变量时要对其初始化,否则后期无法更改它的值
- const修饰的全局变量,(值不能被修改),变量的空间在静态区的只读段
- const修饰的局部变量,(值不能被修改),变量的空间在栈区
- 将const放在*号前面,修饰的是值,如果放在*后面,表示指针的指向不能修改,可以通过指针修改指针中的值,如果两个都修饰(*前后都有const),两个都不能更改
- const修饰函数形参数据,则为保护形参数据不被更改。当指针、引用作为函数形参,不能该值的时候需要用const修饰
- const修饰函数的返回值,(修饰指针、引用作为形参,保护形参数据不被更改)如果修饰的是值返回,可修饰,可不修饰,当修饰的是指针或者引用返回的时候,需要设置成const
在C++中,const修饰的成员变量,代表这是常成员变量,必须使用初始化列表进行初始化。
① 当类中有常成员的时候,必须使用初始化列表进行初始化,
② 类中有成员子对象时,调用构造函数完成初始化列表
③ 保护成员变量不被修改
④ 任意一个常成员函数中不能修改常成员变量的值,除非使用vlabel关键字(取消常属性)
3、详细说一下QT中基于TCP的通信中服务器端操作
- 创建一个QTCPServer的类对象,该类对象就是一个服务器
- 将该对象调用listen函数设置成监听状态,监听时,可以监听指定的ip地址,也可以监听所有主机地址(Any),可以通过指定端口号,也可让该服务器自动选择
- 当有客户端发来连接请求时,该服务器就会自动发射一个newConnection的信号,我们可以将该信号连接到自定义的槽函数中处理相关逻辑
- 在槽函数中,可以调用nextPendingConnetion函数可以获取最新连接的客户端套接字的地址,我们可以将该套接字存入到客户端容器中
- 此时,服务器已经和客户端建立连接请求了,如果有客户端向服务器发来数据,那么对于的客户端套接字就会发射一个readyRead的信号
- 读取套接字中的数据使用read、readLine、readAll函数来完成
- 向套接字中写数据,可以使用write函数完成
- 关闭服务器,使用close来完成
- 注意:QByteArray和QString之间的转换
4、详细说一下QT中基于TCP的通信中客户端操作
- 实例化一个QTCPSocket的类对象
- 调用该对象的成员函数connectToHost连接到服务,连接服务器时,需要给定服务器的ip地址和端口号
- 如果连接服务器成功,那么该客户端就会自动发射一个connected的信号,我们可以将该信号连接到槽函数中处理相关逻辑
- 如果服务器有数据向客户端发来,那么该客户端就会自动发射一个readyRead信号,我们可以在该信号对应的槽函数中处理数据
- 可以使用read、readLine、readAll读取客户端套接字中的数据
- 可以使用write向服务器发送数据
- 使用成员函数disConnectFromHost断开与服务器的连接
- 如果成功断开与服务器的连接,那么该套接字就会自动发射一个disconnected的信号
注意:QByteArray和QString之间的转换
各个信号在构造函数内连接即可,不用在槽函数中连接
相关文章:
【面试题总结1】-Static、Const、QT中基于TCP的通信服务器/客户端端操作
1、在C和C中static关键字的用法 在C语言和C中, ① static修饰未初始化的全局变量,结果默认为0 ; ② 当static修饰局部变量时,只是延长了这个变量的生命周期,并没有改变其作用域。 比如说,这个变量是在哪个函…...

镜像的基本命令(docker)
文章目录 前言一、docker命令介绍1、帮助命令2、显示镜像3、搜索镜像4、下载镜像5、删除镜像 总结 前言 本文主要介绍docker中与镜像相关的一些命令,是对狂神课程的一些总结,作为一个手册帮助博主和使用docker的同学们来查找和回忆。 实验环境…...

Liunx远程调试
1、Vscode中使用xdebug调试php 2、工具的下载 3、debug的配置 1、Vscode中使用xdebug调试php 1,在phpstudy中启用xdebug扩展 2,打开php.ini,修改配置 [Xdebug] zend_extensionD:/PHP/Extensions/php/php5.6.9nts/ext/php_xdebug.dll xdebug…...

Mac m1 安装rabbitmq+php-amqplib
rabbitmq 官方地址 https://www.rabbitmq.com mac 软件包 Downloading and Installing RabbitMQ — RabbitMQ 一.这里我选择 homebrew brew updatebrew install rabbitmq二.php代码 用composer 安装 10年软件开发经验,结交朋友! 分销商城系统开发,App商城开发 商务合作 s…...

如何实现软件的快速交付与部署?
一、低代码开发 微服务、平台化、云计算作为当前的IT技术热点,主要强调共享重用,它们促进了软件快速交付和部署。 但现实的痛点却是,大多数软件即使采用了微服务技术或者平台化思路,也难以做到通过软件共享重用来快速满足业务需求…...

c语言每日一练(14)【加强版】
前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。博主有时会将一些难题综合成每日一练加强版,加强版是特殊的,它仅包含5道选择题&#x…...
操作系统的知识点总结
(一)操作系统的发展过程 一.前言 在 20 世纪 50 年代中期,出现了第一个简单的批处理 OS;60 年代中期开发出多道程序批处理系统:;不久又推出分时系统,与此同时,用于工业和武器控制的实时 OS 也相继问世。20 世纪 70 到 90 年代,是…...

浏览器安全-同源策略和CORS
同源策略 同源策略是浏览器的一个安全功能,浏览器禁止在当前域读写其他域的资源,如限制跨域发送ajax请求 不受同源策略限制的 1)页面中的链接,重定向表单以及表单提交 2)跨域资源引入 如script不受跨域限制࿰…...
MySQL——条件查询
2023.9.2 今天学习了尚硅谷MySQL基础DQL语言中的条件查询语言。相关SQL语句笔记如下: #条件查询 SELECT * FROM employees ; SELECT last_name,salary,commission_pct FROM employees WHERE salary>10000 AND salary<15000; SELECT last_name,salary FROM em…...

转载: 又拍云【PrismCDN 】低延时的P2P HLS直播技术实践
低延时的P2P HLS直播技术实践本文是第二部分《PrismCDN 网络的架构解析,以及低延迟、低成本的奥秘》低延时的P2P HLS直播技术实践 [首页 > Open Talk NO.41 | 2018 音视频技术沙龙深圳站 > 低延时 WebP2P 直播技术实践https://opentalk-blog.b0.upaiyun.com/prod/2018-0…...
PHP常用六大设计模式
PHP常用六大设计模式 单例模式 特点 三私一公 :私有的静态变量(存放实例),私有的构造方法(防止创建实例),私有的克隆方法(防止克隆对象),公有的静态方法(对外界提供实…...
Rust入门(1)
Rust的入门 1.配置Rust环境(Windows环境)1.下载Rust安装包2.配置path环境3.验证Rust4.Linux or MacOS系统(补充)1.Rust包依赖于C & 需要C编译器 5.卸载Rust6.Rust的构建工具和包管理器1.构建项目2.运行项目3.测试项目4.为项目构建文档5.将库发布到cr…...

Web服务器部署上线踩坑流程回顾
5月份时曾部署上线了C的Web服务器,温故而知新,本篇文章梳理总结一下部署流程知识; 最初的解决方案:https://blog.csdn.net/BinBinCome/article/details/129750951?spm1001.2014.3001.5501后来的解决方案:https://blog…...
目标检测YOLO实战应用案例100讲-基于卷积神经网络的小样本机载雷达动目标检测
目录 前言 机载雷达动目标检测方法及深度学习理论基础 2.1引言 2.2机载雷达回波信号模型...
SpringBoot 的 MVC
1.1 MVC定义 MVC是Model、View、Controller的缩写,它是软件工程当中的一种软甲架构模式,它把软件系统分为模型 Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据View(视图)是应用程…...

springboot上线打包+vuecli2部署在linux服务器上(打包上线)
这里也是记录一下springboot的上线打包流程,我这里前端使用的是vuecli2 springboot的依赖是2.7.9的版本 前端是使用的vue2 打包前,你的linux上必须要先安装,tomcat\java\nginx springboot打包 springboot打包点击一下,等maven编译打包成功在target文件下找到,jar包, 然后,把j…...

Postern配置HTTP和HTTPS的步骤
Postern是一款强大的Android代理工具,它允许您在设备上配置全局代理来实现安全、隐私保护和自由上网。本文将详细介绍如何使用Postern在Android设备上配置HTTP和HTTPS代理,为您提供更便捷的上网体验。 步骤1:下载和安装Postern应用 首先&am…...
DataTableResponseEntity
/// <summary>/// DataTable数据集合返回实体/// </summary>[Serializable]public sealed class DataTableResponseEntity : IResponse{private readonly DataTable sourceTable;private readonly int PageCount;private readonly int totalCount;private readonly…...

Python爬虫(十八)_多线程糗事百科案例
多线程糗事百科案例 案例要求参考上一个糗事百科单进程案例:https://cloud.tencent.com/developer/article/1021994 Queue(队列对象) Queue是python中的标准库,可以直接import Queue引用;队列时线程间最常用的交互数据的形式。 python下多线程的思考…...
无穷级数重要知识点
部分和 s ∑ i 1 n u i s \sum_{i1}^{n} u _{i} si1∑nui 注意:部分和不是数列的一部分之和,而是一个极限的概念,此处的n是一个极限值, n 趋于正无穷! \color{red}n趋于正无穷! n趋于正无穷&#x…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...