当前位置: 首页 > news >正文

【面试题总结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的作用是:保护数据不被修改

  1. 当const修饰一个普通变量时,说明这个变量的值不能被修改,所以在定义该普通变量时要对其初始化否则后期无法更改它的值
  2. const修饰的全局变量,(值不能被修改),变量的空间在静态区的只读段
  3. const修饰的局部变量,(值不能被修改),变量的空间在栈区
  4. 将const放在*号前面,修饰的是,如果放在*后面,表示指针的指向不能修改,可以通过指针修改指针中的值,如果两个都修饰(*前后都有const),两个都不能更改
  5. const修饰函数形参数据,则为保护形参数据不被更改。当指针引用作为函数形参,不能该值的时候需要用const修饰
  6. const修饰函数的返回值,(修饰指针、引用作为形参,保护形参数据不被更改)如果修饰的是值返回,可修饰,可不修饰,当修饰的是指针或者引用返回的时候,需要设置成const

在C++中,const修饰的成员变量,代表这是常成员变量,必须使用初始化列表进行初始化。
① 当类中有常成员的时候,必须使用初始化列表进行初始化,
② 类中有成员子对象时,调用构造函数完成初始化列表
③ 保护成员变量不被修改
④ 任意一个常成员函数中不能修改常成员变量的值,除非使用vlabel关键字(取消常属性)

3、详细说一下QT中基于TCP的通信中服务器端操作

  1. 创建一个QTCPServer的类对象,该类对象就是一个服务器
  2. 将该对象调用listen函数设置成监听状态,监听时,可以监听指定的ip地址,也可以监听所有主机地址(Any),可以通过指定端口号,也可让该服务器自动选择
  3. 当有客户端发来连接请求时,该服务器就会自动发射一个newConnection的信号,我们可以将该信号连接到自定义的槽函数中处理相关逻辑
  4.  在槽函数中,可以调用nextPendingConnetion函数可以获取最新连接的客户端套接字的地址,我们可以将该套接字存入到客户端容器中
  5. 此时,服务器已经和客户端建立连接请求了,如果有客户端向服务器发来数据,那么对于的客户端套接字就会发射一个readyRead的信号
  6. 读取套接字中的数据使用read、readLine、readAll函数来完成
  7. 向套接字中数据,可以使用write函数完成
  8. 关闭服务器,使用close来完成
  • 注意:QByteArray和QString之间的转换

4、详细说一下QT中基于TCP的通信中客户端操作

  1. 实例化一个QTCPSocket的类对象
  2. 调用该对象的成员函数connectToHost连接到服务,连接服务器时,需要给定服务器的ip地址和端口号
  3. 如果连接服务器成功,那么该客户端就会自动发射一个connected的信号,我们可以将该信号连接到槽函数中处理相关逻辑
  4. 如果服务器有数据向客户端发来,那么该客户端就会自动发射一个readyRead信号,我们可以在该信号对应的槽函数中处理数据
  5. 可以使用read、readLine、readAll读取客户端套接字中的数据
  6. 可以使用write向服务器发送数据
  7. 使用成员函数disConnectFromHost断开与服务器的连接
  8. 如果成功断开与服务器的连接,那么该套接字就会自动发射一个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的同学们来查找和回忆。 实验环境&#xf…...

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不受跨域限制&#xff0…...

MySQL——条件查询

2023.9.2 今天学习了尚硅谷MySQL基础DQL语言中的条件查询语言。相关SQL语句笔记如下&#xff1a; #条件查询 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常用六大设计模式 单例模式 特点 三私一公 &#xff1a;私有的静态变量&#xff08;存放实例&#xff09;&#xff0c;私有的构造方法&#xff08;防止创建实例&#xff09;&#xff0c;私有的克隆方法(防止克隆对象)&#xff0c;公有的静态方法&#xff08;对外界提供实…...

Rust入门(1)

Rust的入门 1.配置Rust环境&#xff08;Windows环境&#xff09;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服务器&#xff0c;温故而知新&#xff0c;本篇文章梳理总结一下部署流程知识&#xff1b; 最初的解决方案&#xff1a;https://blog.csdn.net/BinBinCome/article/details/129750951?spm1001.2014.3001.5501后来的解决方案&#xff1a;https://blog…...

目标检测YOLO实战应用案例100讲-基于卷积神经网络的小样本机载雷达动目标检测

目录 前言 机载雷达动目标检测方法及深度学习理论基础 2.1引言 2.2机载雷达回波信号模型...

SpringBoot 的 MVC

1.1 MVC定义 MVC是Model、View、Controller的缩写&#xff0c;它是软件工程当中的一种软甲架构模式&#xff0c;它把软件系统分为模型 Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据View&#xff08;视图&#xff09;是应用程…...

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代理工具&#xff0c;它允许您在设备上配置全局代理来实现安全、隐私保护和自由上网。本文将详细介绍如何使用Postern在Android设备上配置HTTP和HTTPS代理&#xff0c;为您提供更便捷的上网体验。 步骤1&#xff1a;下载和安装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中的标准库&#xff0c;可以直接import Queue引用&#xff1b;队列时线程间最常用的交互数据的形式。 python下多线程的思考…...

无穷级数重要知识点

部分和 s ∑ i 1 n u i s \sum_{i1}^{n} u _{i} si1∑n​ui​ 注意&#xff1a;部分和不是数列的一部分之和&#xff0c;而是一个极限的概念&#xff0c;此处的n是一个极限值&#xff0c; n 趋于正无穷&#xff01; \color{red}n趋于正无穷&#xff01; n趋于正无穷&#x…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...