【Q2—30min】

2023-11-21 00:52
文章标签 q2 30min

本文主要是介绍【Q2—30min】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.socket服务端创建过程
socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。
在这里插入图片描述

socket()//创建套接字
bind()//分配套接字地址
listen()//等待连接请求状态
accept()//允许连接,类似于打电话过程中的“接听”功能。
read()/write()//进行数据交换
close()//断开连接

启动服务端并测试:gcc server.c -o server ./server

2.mysql建表 其他的数据库
数据库,建立索引的好处
创建Student表:
use student_course;
create table Student(
-> Sno int not null auto_increment primary key,
-> Sname varchar(10) not null,
-> Sex char(1) not null,
-> Sage tinyint(100) not null,
-> Sdept char(4) not null)comment = ‘学生表’;
插入数据:
insert into Student (Sname, Sex, Sage, Sdept) values (‘李勇’, ‘男’, 20, ‘CS’);
查看全表内容:
select * from Student;
一个表可以创建多个索引,但每个索引在该表中的名称是唯一的。

创建索引的优点:
1)创建索引可以大幅提高系统性能,帮助用户提高查询的速度;
2)通过索引的唯一性,可以保证数据库表中的每一行数据的唯一性;
3)可以加速表与表之间的链接;
4)降低查询中分组和排序的时间。
索引的缺点:
1)索引的存储需要占用磁盘空间;
2)当数据的量非常巨大时,索引的创建和维护所耗费的时间也是相当大的;
3)当每次执行CRU操作时,索引也需要动态维护,降低了数据的维护速度。

3.linux gcc编译.cpp文件 常用命令
在这里插入图片描述

4.编译的四个过程:预处理,编译,汇编,链接。
使用gcc把C文件编译成可执行文件可分为四步:预编译、编译、汇编、连接。
1、预编译(生成.i文件)
预编译器cpp把源文件和相关的头文件(如实例代码中的头文件stdio.h)预编译成一个.i的文件。
执行的命令:gcc -E hello.c -o hello.i
预编译的作用:
a、处理所有的“#include”预编译指令
b、处理所有的"#define"指令,将代码中所有的"#define"删除,并展开所有的宏定义
c、处理所有的条件预编译指令,如#if #elif #else #ifdef #ifnodef #endif等
d、删除所有的注释
e、添加行号和文件名标识,以便产生错误时给出提示信息
2、编译(生成.s文件)
编译器gcc把预处理后的文件进行语法分析、语义分析以及优化后生成汇编代码文件。
执行的命令:gcc -S hello.i -o hello.s
3、汇编(生成.o文件)
汇编器把汇编代码文件转换成中间目标文件
执行的命令:gcc -c hello.s -o hello.o
4、链接(生成可执行文件)
链接器ld把目标文件与所需要的所有的附加的目标文件(如静态链接库、动态链接库)链接起来成为可执行的文件
执行的命令:gcc hello.o -o hello.out

5.stl常用的 vector底层原理 数组和链表区别。查询,插入,删除哪个快
STL是一个打包了数据结构的函数库,STL的所有对象都没必要提前分配内存大小,它会根据对象存取数据的大小来分配空间大小(系统自动扩张)
1.vector(向量)(底层是数组)
向量没有确定数据类型,所以向量可以是多种数据类型,但是注意一个向量对象只能有一种数据类型,可以构造二维向量(二维数组)比如二维整型向量vector 值得注意的是二维向量的大元素和小元素(行元素和最小元素)都是一个向量可以不分配大小而是通过数据的规模分配大小。
vector的find函数是一个比较特殊的函数他的返回值必须用迭代器接收。
迭代器即为一个存储某个值在向量中的地址。
整型迭代器的定义方式:vector::iterator 可以接收vector的元素的地址
vector的find函数: vector::iterator it; it=find(a.begin(),a.end(),int) 其中a为vector的对象
此时为查找a开头到结尾是否有这个值,如果没有就会返回a.end().
如果需要查找vector其中一个元素的下标是多少那么就用it-a.begin()即可求出下标。
2.string(字符串)
字符串也能根据其值的大小来自动分配空间,相当于字符数组但是不需要提前分配空间。string 可用+直接连接字符串。
3.set(集合)(底层红黑树
set即为一个红黑树(是一种自平衡二叉查找树,红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能.它虽然是复杂的,但它的最坏情况运行时间也是非常良好的可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目),其作用是将排入的数据自动进行去重并且按照树的特性(左孩子的值一定比父节点的小,右孩子的值一定比父节点大) 可起到二分搜索的一个作用,但是这里一般常用的是查找是否右一个值在set里面和去重。
set集合的两个特点,有序和不重复。自动排序。
4.priority_queuqe(优先队列)(底层为大根堆小根堆)
priority_queue的底层为堆,大根堆(根节点的值是整个堆最大的,所有的子节点都比父节点的值小)和小根堆(根节点的值是整个堆最小的,所有的子节点都比父节点大)
5.queue(队列)(底层list或者deque)
queue 模板类的定义在头文件中。
与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
6.map(映射)(底层为红黑树)
map提供一对一的hash,Map主要用于资料一对一映射(one-to-one)的情況,map内部的实现自建一颗红黑树,这颗树具有对对象自动排序的功能。比如一个班级中,每个学生的学号跟他的姓名就存在一对一的映射关系。
这里介绍常用的方法函数:
map<string, string> mapStudent;//定义变量,一对一数据类型。
7.list(链表)(底层双向链表)
8.stack(栈)(底层为list或者deque)
stack的底层就是一个栈,其底层默认容器为deque(双向队列),栈的特性是后进先出,并且只有一端有接口可以进行操作。

STL 众多容器中,vector 是最常用的容器之一,其底层所采用的数据结构非常简单,就只是一段连续的线性内存空间(泛型的动态类型顺序表)。他以两个迭代器start和finish分别指向配置得来的连续空间中目前已将被使用的空间。迭代器end_of_storage指向整个连续的尾部。
vector在增加元素时,如果超过自身最大的容量,vector则将自身的容量扩充为原来的两倍。扩充空间需要经过的步骤:重新配置空间,元素移动,释放旧的内存空间。一旦vector空间重新配置,则指向原来vector的所有迭代器都失效了,因为vector的地址改变了。
vector扩大容量的本质:当 vector 的大小和容量相等(size==capacity)也就是满载时,如果再向其添加元素,那么 vector 就需要扩容。vector 容器扩容的过程需要经历以下 4 步:
1.完全弃用现有的内存空间,重新申请更大的内存空间;
2.将旧内存空间中的数据,按原有顺序移动到新的内存空间中;
3.将旧的内存空间释放。
4.使用新开辟的空间

vector支持随机访问,但vector不适宜做任意位置的插入和删除操作,因为要进行大量元素的搬移。

所谓数组,就是相同数据类型的元素按一定顺序排列的集合;数组的存储区间是连续的,占用内存比较大,故空间复杂的很大。但数组的二分查找时间复杂度小,都是O(1);数组的空间是从栈分配的。(栈:先进后出)
数组的特点是:查询简单,增加和删除困难;
数组的优点:随机访问性强,查找速度快,时间复杂度是O(1)
数组的缺点:

  1. 从头部删除、从头部插入的效率低,时间复杂度是o(n),因为需要相应的向前搬移和向后搬移。

  2. 空间利用率不高

  3. 内存空间要求高,必须要有足够的连续的内存空间。

  4. 数组的空间大小是固定的,不能进行动态扩展。

    所谓链表,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。链表的空间是从堆中分配的。(堆:先进先出,后进后出)
    链表:链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。
    链表的特点是:查询相对于数组困难,增加和删除容易。
    链表的优点:

    1. 任意位置插入元素和删除元素的速度快,时间复杂度是o(1)
    2. 内存利用率高,不会浪费内存
    3. 链表的空间大小不固定,可以动态拓展。
      链表的缺点:随机访问效率低,时间复杂度是o(1)
      对于想要快速访问数据,不经常有插入和删除元素的时候,选择数组;对于需要经常的插入和删除元素,而对访问元素时的效率没有很高要求的话,选择链表。

6. get和post的区别:
(1)Get请求的数据(参数)会显示在地址栏,而Post不会,所以,Post比Get更加安全。
(2)Post请求的参数存放到了请求实体中,而Get没有请求实体,Get是存储在请求行中。
(3)数据传输Post有优势:Get方式请求的数据不能超过2k,而Post 没有上限。
(4)浏览缓存Get有优势:Get具有数据缓存,而Post没有。
从优势角度看,数据传输使用Post,数据浏览查询使用Get。即查询时使用Get,其他时候使用Post。表单全部使用Post提交。

这篇关于【Q2—30min】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/398663

相关文章

百度Q2财报:百度核心利润增长23%超预期 AI驱动业务高质量增长

北京时间8月22日,百度发布2024年Q2财报,显示季度总营收339亿元,百度核心营收267亿元,百度核心经营利润56亿元,同比增长23%,超出市场预期。 百度创始人、董事长兼首席执行官李彦宏表示,“随着时间的推移,生成式人工智能和基础模型对商业社会及日常生活所产生的革命性影响越来越显著。得益于全栈AI技术优势,以及基于文心大模型构建的AI应用快速普及,我们正在扩大AI落地规模,以解决现实世

【报告分享】2021年Q2中国新经济创业投资数据分析报告-IT桔子(附下载)

摘要:中国新经济2021 年Q2 的股权投资交易数为1449 起,同比增加了30%,环比略微下降;Q2 投融资交易总额为2888.62 亿元,同比增长57%,环比下降了14%。2021 年前两个季度股权投资交易热度回升,预计下半年的投资交易将更加活跃。 来源:IT桔子         如需查看完整报告和报告下载或了解更多,公众号:行业报告智

【报告分享】2021年Q2移动互联网行业数据研究报告-极光 (附下载)

摘要:短视频app存量竞争,视频号异军突起。就独立短视频app来看,行业时长占比和增长仍然领先于其他领域;行业月活也仍在增长,但同比变化呈下降趋势。内容用户对内容的搜索需求增强,各平台强化搜索内容生态扩张,搜索用户粘性逐步提升;搜索泛场景化趋势明显,搜索平台需给用户提供优质的内容与移动生态服务。 来源:极光         如需查看完整报告和报告下载或

界面组件Kendo UI for Angular 2024 Q2亮点 - 让应用程序界面拥有AI提示

随着最新的2024年第二季度发布,Kendo UI for Angular为应用程序开发设定了标准,包括生成式AI集成、增强的设计系统功能和可访问的数据可视化。新的2024年第二季度版本为应用程序界面提供了人工智能(AI)提示,从设计到代码的生产力增强、可访问性改进、一系列新的UI组件等。 Kendo UI for Angular是Kendo UI系列商业产品的新产品,Kendo UI for

深度学习 --- stanford cs231 编程作业(assignment1,Q2: SVM分类器)

stanford cs231 编程作业之SVM分类器 写在最前面:         深度学习,或者是广义上的任何学习,都是“行千里路”胜过“读万卷书”的学识。这两天光是学了斯坦福cs231n的一些基础理论,越往后学越觉得没什么。但听的云里雾里的地方也越来越多。昨天无意中在这门课的官网上无意中看到了对应的assignments。里面的问题和code都设计的极好!自己在做作业的时候,也才

底层公链2019 Q2研究报告 | TokenInsight

○ ● 2019年二季度,底层公链在行业中的市值占比为14.9%,较上季度略有下降;头部项目中,Ethereum、EOS和Tron的市值与交易量仍排名前三,其中Ethereum以69%占主导地位;近期公链的技术突破方向集中在跨链、分片和隐私计算方面。 要点总结: 1. 2019年第二季度,底层公链在行业中的市值占比14.9%,较第一季度的17%略有下降。主要原因可以归结于市场

CoinGecko 2020 Q2数字资产行业季度报告 | TokenInsight中文独家授权

↯ 要点总结 TokenInsight 作为CoinGecko全球战略合作伙伴,中文独家发布CoinGecko 2020 Q2 数字资产行业季度报告。 2020年第二季度,数字资产市场开始逐渐从第一季度受到新冠病毒影响的低迷中复苏。此季度内整个数字资产总市值增加了44.5%,DeFi生态也经历了一次高速的发展。想知道第二季度还发生了什么大事件?阅读报告速览第二季度行业发展。  TokenIns

TokenInsight Q2 季度报告:NFT 的夏天

本篇 NFT 报告共计 15 页,分为: 市场概览NFT 交易市场GameFiMetaverse收藏品体育类艺术类 本篇报告的一些关键数据: 截至 7 月,NFT 市场总销售额达到 10 亿美金;以 Axie 为代表的 Play to earn 类 GameFi 项目极度火爆,CryptoBlades 甚至在一个月内涨了 100 倍;从销售额来看,Bayc 比 CryptoPunks 更受欢迎;

腾讯光子工作室群 一面 (30min)

问题: 你毕业是打算考研还是直接工作 深挖项目(介绍、剖析遇到问题如何解决): 你在进行攻击的时候会不会有穿模的情况,怎么解决 为什么会造成卡顿(多嘴说的) 说说行为树和状态机之间的差别 MVC设计模式中的Model和Contorller是做什么的,Controller中是如何知道View中的数据更新的 桥接模式怎么实现的 连招怎么实现的分支效果 C++ C++没有自动内

阿里提前批(阿里云)一面30min

今日分享阿里云一面,给要准备就业的宝子们一点方向   1、自我介绍与项目介绍 2、八股文 Java的特性、Java的oop? Java有哪些方法来实现线程安全? 讲讲Spring中的AOP与IOC? synchronized锁怎么用? Mysql中右模糊查询用什么? IP数据包的头部? TCP第三次挥手? 讲讲TCP的Time_await状态? 线程和进程的区别? 单线程与多线程的区别?什么情况