当前位置:首页 >> 智能终端演进 >> 【Q2—30min】,www.pcpop.com

【Q2—30min】,www.pcpop.com

cpugpu芯片开发光刻机 智能终端演进 1
文件名:【Q2—30min】,www.pcpop.com 【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) 数组的缺点:

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

空间利用率不高

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

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

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

任意位置插入元素和删除元素的速度快,时间复杂度是o(1)内存利用率高,不会浪费内存链表的空间大小不固定,可以动态拓展。 链表的缺点:随机访问效率低,时间复杂度是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提交。

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接