- 博客(169)
- 资源 (4)
- 收藏
- 关注
原创 秋招面经及我的秋招结束了
秋招结束了,也没有什么经验总结其实。整个秋招面试的公司有:360,海康威视,喜马拉雅,欢聚时代,百度,腾讯面过的公司里除了百度一面挂之外其他差不多都拿到了,最后毫无疑问肯定是去腾讯得了。感觉自己走了狗屎运。整理了一下这几家公司我的面经以供大家参考:(双非本科+测开/测试岗)360一面:* 学历,课程,为什么做测试* 写了一个qq发送文件的测试用例* 进程,线程* 输入一个网址...
2018-10-21 19:58:21 1034 1
原创 Android Studio安装中的问题及第一次运行hello world程序
总结一下,在安装Android Studio中可能出现和遇到的问题,并给出解决方案。1.AS在安卓官网可以直接下载完整的安装包。2.SDK找不到的情况,可以自己下载,参考:https://www.jianshu.com/p/4ac1313b50cb3.可以在设置代理,AS会自动下载(更推荐4.启动虚拟器时,需要下载image,配置代理就可以直接下载,否则去中文官网上下载。参考:http:/...
2018-12-10 21:36:17 4963 3
原创 软件工程
软件概述软件的概念及特点软件与程序:程序是人们为了完成特定功能而编制的一组指令集软件不仅包括程序,还包括程序的处理对象-数据,以及文档软件具有的一些特点:软件是一种逻辑实体,具有抽象性软件的生产与硬件的制造不同,是被开发或设计的软件在使用工程中不会磨损软件的开发尚未完全摆脱手工的开发方式软件的开发和运行必须依附于特定的计算机系统环境软件的分类软件工程软...
2018-11-12 18:07:42 704
原创 软件测试-持续集成jenkins教程
首先,了解持续集成与Jenkins的概念。持续集成持续集成就是我们常说的CI,是一种软件开发实践,即团队开发成员经常集成项目,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的编译,发布,自动化回归测试来验证,从而尽快地发现集成错误。 可以说,持续集成是为了持续交付。持续集成的核心价值在于:持续集成中的每一个环节都是自动完成的,无需太多的人工...
2018-08-28 13:42:19 1871
原创 Selenium学习笔记-webDriver API
定位元素web Driver提供了8种页面元素定位的方式,在此总结:IDHTML规定id属性在文档中必须是唯一的,web Driver提供的id定位就是通过元素的 id属性来查找元素。 比如说我们要获取一下百度的首页的输入框和搜索按键:# coding = utf-8from selenium import webdriverbrowser = webdriver.Fir...
2018-08-24 18:12:55 293
原创 C++:智能指针
首先,为什么需要智能指针?来看下面这段代码bool doSomething(){ // 如果时间执行失败了就返回false return false;}// 为了避免内存泄漏和文件描述符泄漏,我们需要写出以下这样冗余的代码// 我们需要一种方法让他自动的释放掉void Test1(){ int* p1 = new int[2]; FILE* ...
2018-08-09 18:06:09 261
原创 c++:多态
多态从定义来讲,多态按字面意思就是“多种形态”在面向对象语言中,接口的多种不同的实现方式即为多态。 静态多态&多态多态静态联编&动态联编联编:程序调用函数,编译器决定使用那个可执行代码块静态联编实际上就是函数重载和运算符重载,是在编译过程中进行联编的动态联编就是在程序运行过程中才动态的确定操作对象。使用虚函数,在内存与执行速度是需要付出代...
2018-08-09 15:54:43 186
原创 Linux的虚拟存储及动态内存管理及共享内存
物理内存与虚拟内存虽然应用程序操作的对象是映射到物理内存之上的虚拟内存,但是处理器直接操作的却是物理内存。所以当用程序访问一个虚拟地址时,首先必须将虚拟地址转化成物理地址,然后处理器才能解析地址访问请求。地址的转换工作需要通过查询页表才能完成,概括地将,地址转换需要将虚拟地址分段,使每段虚拟地址都作为一个索引指向页表,而页表则指向下一级别的页表或者指向最终的物理页面。 linux中使...
2018-07-26 16:28:01 983
原创 C++:模板全特化、偏特化、类型萃取
首先,特化是什么? 之前实现vector时,我们发现传参传string时,拷贝构造与扩容不应该用简单的浅拷贝,而是应该调用赋值实现。但是对于int,char这种内置类型又可以直接使用值拷贝,显然我们不能在同一份代码里对于不同类型实现两个方法。 也就说明,当一个模板类不能适用于所有类型时,我们可以单拉出来一个特化出来的类,当我们需要这个类的时候编译器会去找这个被特化的类。全特化比如上面那...
2018-07-24 16:32:15 2603
原创 C++:模板参数及利用容器适配器实现Stack和Queue
当我们再写栈和队列时,要借助数组或链表实现,c++就提供了这样一种方式:容器适配器。 用vector或list为容器,适配出一个stack或queue。具体是如何适配的? 只要我vector或list提供的接口可以适合你stack或queue,就可以通过适配器适配出一个stack,queue。 template <class T,class Container>cla...
2018-07-24 10:23:59 481
原创 C++:模板实现vector和list
实现vectortemplate <class T>class Vector{protected: void Expand(size_t newcapacity) { if (newcapacity > Capacity()) { T* tmp = new T[newcapacity]; ...
2018-07-23 11:12:46 783
原创 C++:继承总结
继承的相关概念继承是面向对象复用的重要手段。继承是类型之间的关系建模,通过继承类的关系,可以达到复用的目的。比如下面这个例子:老师,学生,保安都可以由人这个类继承下来。 实现一个简单的类继承是一种复用手段,在继承关系里父类的成员都会变成子类的一部分三种继承方式public:公有继承private:私有继承protected:保护继承三种继承关系下父类成员...
2018-07-17 14:35:42 248
原创 C++:日期类的实现
日期类的实现实现日期类,就是实现其中的几个默认的成员函数以及一些运算符的重载的实现。构造函数使用初始化成员列表初始化年月日,并且对日期的非法性做以判断。Date::Date(int year,int month,int day) :_year(year) ,_month(month) ,_day(day){ if(!IsValid()) ...
2018-07-09 18:31:14 1841
原创 C++:内联函数与友元函数
const修饰成员函数const修饰成员函数:在成员函数后面加const,const修饰指针所指向的对象,也就是说保证调用这个const成员函数的对象在函数内不会被改变。class Date{public: void Display() { cout<<_year<<_month<<_day<<endl...
2018-06-30 23:31:05 1180 1
原创 C++:this指针 and 类的六个默认成员函数
首先来看一个例子:class Date{public: void Show() { cout&amp;lt;&amp;lt;_year&amp;lt;&amp;lt;&quot;-&quot;&amp;lt;&amp;lt;_month&amp;lt;&amp;lt;&quot;-&a
2018-06-29 17:23:54 558
原创 C++:初识类和对象
类和对象面向对象面向对象程序设计:面向对象程序设计是一种程序设计范性,同时也是一种程序开发的方法。对象:指的是类的实例,将对象作为程序的基本单元,将程序和数据封装在其中,以提高软件的重要性,灵活性和扩展性。c++不是纯面向对象语言,而是基于面向对象的语言,因为包含c的部分,c是面向过程。面向对象的三大特性:继承多态封装定义一个类:class ...
2018-06-29 11:04:28 269
原创 C++:指针与引用
指针&amp;amp;amp;引用引用引用“&amp;amp;amp;”是C++新增的概念,这里的“&amp;amp;amp;”不是取地址的语义。引用不是定义一个新的变量,而是给已经定义的变量重新起一个别名格式:类型 &amp;amp;amp;引用变量名 = 以定义的变量名eg:int a =10;int&amp;amp;amp; b = a;相当于给a取了个别名,叫b。也就是说,b
2018-06-26 23:05:53 190
原创 C++:命名空间,函数重载与缺省参数
本篇博客主要针对与c与c++不同的地方做以总结。C++:在C的基础上添加了一些新的特性 C++的学习主要分为以下几个大的板块。 - c - 类 &amp; 对象 - 继承 &amp; 多态 - 模板 &amp; 泛型编程 - 异常处理 - C++库 &amp; STL也就是说,之前我们所学过的c语言的所有知识在c++中仍然适用。数据类型内置类型自定义类型:stru...
2018-06-26 10:02:07 232
原创 网络编程-多路转接之poll与epoll模型
首先,还是需要理解io过程:io过程总体来看分两步,第一步就是等,第二步才是数据搬迁。而如果要想提高io的性能与效率,就要减少等的比重。 可以假想一个场景: 你去钓鱼,但是你只有一个鱼竿。你的同伴也和你一起去钓鱼,但是他带了100个鱼竿。假设每条鱼上钩的概率都是一样的,那么你和他相同的时间内,你在死盯着一个鱼竿,而他只需要来回巡视所有的鱼竿,一旦有鱼上钩,拿上来即可。很明显,它的这种方...
2018-06-08 16:54:39 377
原创 网络基础-数据链路层的基础概念及PPP协议概述
数据链路层位于网络模型的底层,使用的信道主要有两种类型:点对点信道广播信道点对点的数据链路层首先是区分几个概念:链路:从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。在数据通信时,两个计算机之间的通信路径可能要经过许多种这样的链路。数据链路:当需要在一条线路上传送数据时,除了必须有一条物理线路之外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现...
2018-06-04 11:27:09 1205
原创 网络编程-五种i/o模型及select模型
五种i/o模型首先是认识几个概念:同步通信 & 异步通信 同步通信与异步通信关注的是消息通信机制(与进程/线程同步概念完全不相关)同步通信:指在发出一个调用时,在得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。可以说是,由调用者主动等待这个调用的结果。异步通信则是相反,调用在发出之后,该调用立刻就返回了,所以是没有返回结果的。换句话说,当调用发出后,调用者...
2018-06-03 19:39:56 5408
原创 数据结构-七大排序算法总结
首先总结一下排序的算法分别是什么:冒泡排序之前写过冒泡排序的思路及其优化,所以再次就不再赘述了。 冒泡排序 在此写一个从后向前冒泡的版本://每次冒泡将当前最小值冒到第一个位置上//[0,bound)表示有序元素//[bound,size)表示待排序区间void BubbleSort(int arr[],size_t size){ if(arr==NULL|...
2018-06-01 15:14:46 574
原创 网络基础-网络层:地址解析协议ARP与路由转发流程
地址解析协议ARPARP协议不是一个单纯的数据链路层协议,而是一个介于数据链路层和网络层之间的协议。 ARP协议的用途是:为了从网络层使用的IP地址解析出在数据链路层使用的硬件地址。可以说,ARP协议建立了IP地址与MAC地址的映射关系。 ARP协议的作用 网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址。数据包首先是被网卡接收到再去处理上层协议的...
2018-05-31 21:02:32 3031
原创 数据结构-海量分析问题总结
题目一: 给定一个大小超过 100G 的文件, 其中存在 IP 地址, 找到其中出现次数最多的 IP 地址(hash文件切分) 首先,我们的思路就是利用哈希进行文件的切分,我们把100G大小的文件分为1000份,那么下来差不多每一个文件就是100M左右,然后再利用哈希函数除留余数的方法分配到对应的编号文件中,然后得出每个文件中出现次数最多的IP,然后堆排序取得这1000个ip中出现次...
2018-05-27 21:23:37 353
原创 数据结构-哈希扩展-位图and布隆过滤器
关于哈希表,有一些扩展的东西需要我们了解。 下面是一道腾讯的笔试题: 给4 0 亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这4 0 亿个数中。这是一道关于海量数据查找的题,其实这道题,我们就可以和哈希表联系在一起,为何说是海量数据呢,对于一个40亿整数,我们如果要存的话,按照无符号整数来存储,那么下来,大概就需要40亿*4这么多字节,下来大概就是1...
2018-05-25 14:22:26 433
原创 数据结构-搜索结构之哈希
哈希概念 理想的搜素方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种一种存储结构,通过某种函数使元素的存储位置与他的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。当向该结构中: a - 插入元素时,根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放。 - 搜索元素时,对元素的关键码进行同样的计...
2018-05-21 15:19:43 301
原创 网络基础-网络层:IP协议解析
网络层 网络层之间的通信被称作“点对点通信” 网络层是可以跨越不同的数据链路,即使是在不同的数据链路上也能实现网端节点之间的数据包传输 IP的主要作用就是在复杂的网络环境中就将数据包发给最终的目标地址网络层与数据链路层的关系数据链路提供在两个设备之间的通信功能。网络层则负责在没有直连的两个网络之间进行通信传输。那么有为什么非要分这么两个层次呢? 以旅行为例子: 假...
2018-05-19 08:43:58 904
原创 网络基础-理解TCP三次握手,四次挥手
三次握手正常情况下,TCP要经过三次握手建立连接,四次挥手释放连接。 三次握手过程:客户端首先发起建立连接请求,向服务器发送一个SYN希望建立连接,并消耗一个序列号。服务器收到客户端的SYN请求之后,如果能够建立连接,向客户端返回一个SYN+ACK,表示确认应答。客户端收到服务器的确认应答后,向服务器端在发送一个ACK确认应答。以上过程其实很好理解,下面总结在三次握手过程...
2018-05-18 11:46:53 3502
原创 网络基础-netstat命令详解
netstat netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况语法netstat (选项)选项-a或--all:显示所有连线中的Socket;-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;-c或--continuous:持续列出网络状态;-C或--cache:显示路由器配...
2018-05-16 09:11:54 441 1
原创 数据结构-二叉搜索树
二叉搜索树二叉搜索树又称为二叉排序树,它要么是一颗空树,要么是一颗具有以下性质的树:若他的左子树不为空,则左子树上所有节点的值都小于根结点的值若他的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也满足二叉搜索树的性质如下图所示,满足一个二叉搜索树:对一个二叉搜索树做以下操作:插入查找删除插入向一个二叉搜索树中插入一个元素: 需要考...
2018-05-15 20:39:03 367
原创 数据结构-实现堆的相关操作
堆的概念首先:堆是一个完全二叉树。 堆有两种:大堆及小堆 小堆: 这个树的根节点是这个树中的最小的元素 对于任意一个子树来说, 子树的根节点, 小于左右孩子节点的值. 大堆: 这个树的根节点是这个树种的最大元素 对于任意一个子树来说, 子树的根节点, 大于左右孩子节点的值. 举例说明:实现操作堆的初始化与销毁向堆中插入一个元素给一个数组创建一个堆取堆...
2018-05-14 17:53:09 285
原创 网络编程套接字-实现简单的TCP网络(多进程与多线程版本)
下面是实现一个单进程版本的TCP网络服务:server.cint StartUp(char* ip,int port){ //建立套接字 int sock=socket(AF_INET,SOCK_STREAM,0); if(sock<0) { printf("sock error\n"); exit(2); }...
2018-05-12 20:46:25 566
原创 网络基础-TCP协议格式及其与UDP的对比
TCP协议段格式 下面对上面的各个字段进行解释:源/目的端口号:表示数据是从哪个进程来,到那个进程去;序列号:指发送数据的位置,每发送一次,就累加一次该数据字节数的大小;确认应答号:是指下一次应该收到的数据的序列号;首部长度:该字段可以看作TCP传输的数据部分应该从TCP包的哪个位开始计算。保留位:该字段主要是为了以后扩展时使用,其长度为4位.一般设置为0,但即使收到的包在该字...
2018-05-11 14:41:19 228
原创 网络基础-传输层:TCP协议详解
TCP TCP与UDP的区别相当大。它充分的实现了数据传输时各自控制功能,可以进行丢包时的重发控制, 还可以对次序乱掉的分包进行顺序控制,而这些在UDP中都没有。此外,TCP还作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过以下实现可靠传输:校验和序列号确认应答重发控制连接管理窗口控制通过序列号与确认应答提高可靠性在TCP中,
2018-05-10 16:43:30 258
原创 网络基础-传输层与UDP协议
运输层协议 从传输层来看,通信的真正断点并不是主机而是主机中的进程。也就是说,端到端的通信时是应用进程之间的通信。 运输层还对收到的报文进行差错检测。 运输层需要有两种不同的运输协议,面向连接的TCP和无连接的UDP。 TCP:传输控制协议 UDP:用户数据报协议端口传输层是为了实现两个不同主机上的进程之间的通信。为了识别不同主机上的进程,使用端口号标识。因此,两个不同
2018-05-06 18:35:23 271
原创 剑指offer-面试题5-替换空格
替换空格 题目:请实现一个函数,把字符串中的每个空格替换成%20。例如:输入“we are happy”输出“we%20are%20happy”。拿到这个题时,第一个要考虑的就是内存够不够的问题。因为原来空格是一个字符,现在要将一个空格替换为三个字符,内存会变大。现在假设是在内存足够的情况下修改。 过程如下: 完成一个空格的替换: 完成替换: 测试用例的考虑:正确输入:空格位于最
2018-05-04 15:34:26 253
原创 网络基础-应用层:E-mail应用:SMTP协议,POP协议,IMAP协议
Email应用的构成邮件客户端邮件服务器SMTP协议:只支持文本 邮件服务器: 邮箱:存储发给该用户的Email 消息队列:存储等待发送的Email SMTP协议: 邮件服务器之间传递消息所使用的协议 客户端:发送消息的服务器 服务器:接收消息的服务器传输过程邮件的传送需要可靠传输,所以是基于TCP进行Email的可靠传输。 默认端口是25. 传输过
2018-05-04 11:23:06 6281
原创 网络基础-域名系统,文件传送协议,远程终端协议
域名系统DNS Domain Name System Internet上主机/路由器的识别问题 IP地址:给机器看的 域名:给人看的 域名解析系统:将域名翻译为IP地址. 多层命名服务器构成的分布式数据库DNS服务:域名向IP地址的翻译主机别名邮件服务器别名负载均衡:web服务器分层体系: 顶级域名服务器:负责com,org,net,edu等顶级域名
2018-05-03 18:31:26 627
原创 网络基础-应用层:web服务与HTTP协议
web与HTTPweb:world wide web 就是我们所说的万维网:是一个大规模的联机式的信息储藏室。 万维网是一个分布式的超媒体系统,是超文本系统的扩充。 网页包含多个对象:可能是HTML文件,JPEG图片,视频文件,动态脚本等。万维网以C/S结构工作:客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。 对象的寻址:URL(Uniform Resoure
2018-05-03 14:40:47 777
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人