自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 并查集 (以9.3号贝壳的技术笔试 [家族关系] 为例)

这篇文章有参考另一个小姐姐博客,她写的比较详细☞  https://blog.csdn.net/xu1105775448/article/details/82077944  并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的...

2018-09-04 10:34:23 223 0

转载 深入分析Volatile的实现原理

本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/ftf-java-volatile 引言 在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开...

2018-08-26 10:46:48 68 0

原创 初识Shell

运行方式 我的test.sh文件 #!/bin/bash ls pwd date 第一种,为当前文件加上可执行权限,作为可执行文件,需要给代码第一行加上 #!/bin/bash $ chmod +x test.sh $ ./test.sh   cgdb        Deskto...

2018-08-26 09:48:13 96 0

转载 设计模式的六大原则

关于设计模式的六大设计原则的资料网上很多,但是很多地方解释地都太过于笼统化,我也找了很多资料来看,发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂,因此转载过来。   原作者博客链接:http://blog.csdn.net/LoveLion/article/category/738...

2018-08-25 17:25:02 485 0

原创 Py-plug-in (HTTP服务器)

HTTP基本框架 关于 HTTP 这部分内容请移步之至☞ https://blog.csdn.net/J4Ya_/article/details/80892967 主要学习以下几个部分 HTTP 请求的方法 HTTP 报文格式(主要理解 GET 请求和 POST 请求) ...

2018-08-13 23:59:34 180 0

原创 selenium - 浏览器操作

本片博客主要介绍有关于浏览器的操作 浏览器的最大化 设置浏览器的宽、高 操作浏览器的前进后退   浏览器最大化 为了使我们"观看"脚本运行的效果,我们通常会将浏览器调整至全屏模式 API: maxsize_window() ...

2018-08-08 10:08:49 206 0

原创 selenium - 元素的定位和添加等待

注意: 本文使用的是火狐的webdriver, 要求火狐浏览器必须是 54 一下版本 getckodriver也最好不要下载最新的版本 1.chromedriver 下载地址:https://code.google.com/p/chromedriver/downloads/list 2.F...

2018-08-08 09:44:17 424 0

原创 单元测试、集成测试、系统测试、验收测试

本文是按照开发阶段划分测试技术 单元测试 单元测试是对软件组成单元进行测试,目的是检验软件基本组成单元的正确性,测试对象是软件设计的最小单位 - 模块,又称为模块测试 单元测试的实质是代码测代码 测试阶段: 编码后或者编码前(TDD,编码前属于测试驱动开发) 测试对象: ...

2018-08-06 09:33:17 5201 1

原创 cvte面筋(2018秋招提前批)

面试岗位: C/C++后台开发工程师 cvte一面(电话面,22分钟) 有没有用c++做过什么项目(畅聊) 讲一下项目 序列化和反序列化怎么实现的 ,还问了一下jsoncpp这个库 当前是一个聊天室,如何扩展为多个 传输过程是用什么协议完成的 ...

2018-08-05 17:11:46 455 0

原创 工厂模式(C++)

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工...

2018-07-26 09:35:26 844 0

原创 动态规划 - 数字和为sum的方法数

问题描述: 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。 输入描述: 输入为两行: 第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)第二...

2018-07-25 17:38:33 665 2

原创 单例模式(C++)

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例...

2018-07-24 16:27:23 182 1

原创 I/O多路复用 epoll

epoll初识 epoll是为了处理大量的句柄而作了改进的poll; 它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法   epoll相关系统调用 epoll_create -> 创建epoll模型(即内核中的软件资源) // 创...

2018-07-23 14:28:14 141 0

原创 C++智能指针 shared_ptr + weak_ptr

前面所讲解的scoped_ptr(unique_ptr)对于拷贝构造函数和赋值运算符的重载解决方法是直接防拷贝,禁止使用这两个函数,但是不能避免的在有些场景中,我们不仅需要资源管理即初始化,资源退出即释放,我们还需要对这个对象进行拷贝或者赋值,在这种车场景下,就诞生了shared_ptr sha...

2018-07-22 23:53:09 1060 2

原创 C++智能指针 unique_ptr (scoped_ptr)

首先提出: scoped_ptr是boost库中对这个只能指着的叫法,unique_ptr是C++11标准库中对这个智能指针的叫法 上一篇我们讲解了智能指针中的auto_ptr,但是auto_ptr中还是有很大的缺陷,于是在boost库中,各位民间大佬提出了另外几种智能指针,分别是 scoped...

2018-07-22 19:05:30 1082 0

原创 C++智能指针 auto_ptr

RAII(Resource Acquisition Initialization)   资源分配即初始化。 定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源正确的初始化和释放。 为什么要使用智能指针? 请看如下代码 bool do...

2018-07-22 00:29:03 115 0

原创 软件测试 - 基础篇

软件测试的生命周期 需求分析 -> 测试计划 -> 测试设计 、 测试开发 -> 测试执行 -> 测试评估   软件测试 & 软件开发生命周期 需求阶段: 测试人员了解需求,对需求进行分解,得出测试需求 ...

2018-07-18 09:10:23 136 0

原创 I/O多路复用 - poll

函数结构 int poll(struct pollfd* fds,nfds_t nfds,int timeout); 参数: fds : 这是一个poll函数监听的结构列表,每一个元素中,包含以下的内容 (文件描述符、监听的事件集合、返回的事件集合) nfds : 表示fds...

2018-07-17 11:44:51 107 0

原创 I/O多路复用 - select

了解select,首先我们先了解一下这两句话select只负责等(即并不数据搬迁,不处理数据)等待文件描述符的读就绪或者写就绪select函数select系统调用是用来让我们监视多个程序的文件描述符的变化;程序会停在select这里等,知道被监视的文件描述符至少有一个达到了就绪状态;函数原型参数:...

2018-07-16 12:32:18 104 0

原创 聊一聊系统 (Linux下实现群聊系统)

1.原理   客户端从标准输入读取数据,将数据序列化后发送至网络; 服务器端使用多线程+生产者消费者模型 生产者从网络中读取数据,并将读取到的用户信息添加至用户列表中,将数据放至数据池中; 消费者从数据池读取数据,并广播给所有在用户列表中的用户; ...

2018-07-15 16:43:54 778 1

原创 软件测试 - 概念篇

1.需求1.1 概念满足用户的期望或正式规定文档(合同, 规定, 规范)所具有的条件和权能用户需求: 一般比较简单/粗略;软件需求: 或叫做功能需求,该需求会详细描述开发人员必须实现的软件功能;吃饭的例子:用户需求: 我饿了软件需求: 想吃炒菜米饭,锅包肉,冰淇淋...需求不一定完全正确,需求也需...

2018-07-13 21:17:19 150 0

原创 TCP协议如何提高传输效率

本片主要讨论TCP协议在保证可靠传输的前提下,如何提高传输效率;提高性能滑动窗口快重传延迟应答捎带应答滑动窗口如果我么每一次发送一个数据,都要给一个ACK应答,收到ACK应答以后再去发送下一个数据(如下图),那么我们的效率会比较低,大部分的时间都浪费在等待ACK应答上;既然一发一收的效率比较低,那...

2018-07-11 18:44:14 3070 0

原创 TCP协议如何保证可靠传输

本片主要谈论如何保证TCP可靠传输,并在可靠传输的基础上提高效率;可靠性校验和序列号确认应答超时重传连接管理流量控制拥塞控制确认应答(ACK)机制TCP将每个字节的数据进行了编号,即为序列号;1-1000是数据序号,确认序号是收到的数据序号+1;超时重传机制情况1: 数据丢包主机A发送数据给主机B...

2018-07-10 21:59:43 236 0

原创 TCP协议 - 基础篇

TCP协议TCP全称为"传输控制协议(Transmission Control Protocol)"TCP协议格式注意: TCP协议中如上的内容是在一行的,这里为了便于绘图,才将协议分为了多行!源/目的端口号: 表示数据从哪里来,到哪里去;32位序号/确认序号: 为实现可靠传输...

2018-07-09 08:32:00 148 0

原创 UDP协议

UDP协议格式16位UDP长度表示整个数据报(UDP首部+UDP数据)的最大长度;不可靠传输 : 如果校验出错,就直接丢弃;UDP特点无连接 : 知道对端的IP和端口号就直接进行传输,不需要简历连接;不可靠 : 没有确认机制,没有重传机制;如果因为网络故障无法发送到对方,UDP协议层也不会给应用层...

2018-07-04 10:24:53 88 0

原创 浅谈 HTTP

URL格式URL即'网址'服务器地址实际上是指ip地址,这里用域名表示,便于记忆http服务器端口号默认80,可以不使用80带层次的文件路径不同,访问服务器上的文件就不同查询字符串 : 都是以键值对的方式存储的, 键和值之间使用等号分隔,每一组键值对之间用 & ...

2018-07-03 08:36:53 146 0

原创 守护进程

认识守护进程守护护进程也称精灵进程(Daemon),是运⾏在后台的⼀种特殊进程。它独⽴于控制终端并且周期性地执⾏某种任务或等待处理某些发⽣的事件。Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和⽤户交互。其它进程都是在⽤户登录或运⾏程序时创建,在运⾏结束或⽤户注...

2018-06-30 10:25:22 77 0

原创 进程间关系

进程组每个进程除了有⼀个进程ID之外,还属于⼀个进程组。进程组是⼀个或多个进程的集合。通常,它们与同⼀作业相关联,可以接收来⾃同⼀终端的各种信号。每个进程组有⼀个唯⼀的进程组ID。每个进程组都可以有⼀个组⻓进程。组⻓进程的标识是,其进程组ID等于其进程ID。组⻓进程可以创建⼀个进程组,创建该组中的...

2018-06-30 10:19:57 38 0

原创 读者写者模型

读者写者模型锁类型 : 读写锁应用场景 :对于一块公共资源来说,读取的频率比较高,但是写的频率很低.通常而言,在读的过程中,往往伴随着查找的操作,中间消耗着大量的时长,如果给这种代码加锁,就会极大的降低我们的效率.所以在读的时候是不需要加锁的,大家共享公共资源,但是不会修改,那么就不存在数据读错的...

2018-06-28 12:26:17 97 0

原创 生产者消费者模型

生产者消费者模型生产者 生产者消费者模型锁类型 - 挂起等待锁一种场景这里指上面的仓库,我们可以用栈,链表等数据结构构造. 两个角色生产者 - 负责向上面的仓库中生产资源,仓库已满时,需等待到仓库有空为止.消费者 - 负责消费上面仓库中的资源,仓库为空时,虚等待到生产者向仓库中生产了商品为止.三种...

2018-06-27 17:21:56 67 0

原创 Linux - 线程同步

条件变量使用互斥锁可以解决线程安全的问题,保证多线程下临界资源数据的正确性.但是仅仅互斥还是会存在一些问题.某个线程获取锁之后, 发现数据没有就绪, 又立刻释放锁.如果这个线程的优先级很高, 那么就可能在释放了锁之后又立刻尝试获取锁, 再立刻释放.依次类推. 这样虽然并没有发生死锁, 但是这个线程...

2018-06-26 15:21:49 41 0

原创 Linux - 线程互斥

互斥量(mutex)很多变量需要在线程间共享,这个变量就称为共享变量,可以通过共享数据完成线程之间的交互.但是,多个线程并发的操作共享变量就会出现问题.如下模拟实现一个网上购票系统:#include <stdio.h>#include <stdlib.h&...

2018-06-24 17:35:58 109 0

原创 STL - vector的使用

vector结构start指向这块空间的起始位置finish指向有效元素的后一个位置end_of_storage指向这块空间的下一个位置vector的迭代器 vector迭代器的底层其实就是一个原生指针,对迭代器的 ++ 等同于对指针做 ++ 操作,对迭代器的解引用 (*) 等同于对原生指针解引用...

2018-06-19 10:55:12 79 0

原创 C++ - STL

STL概念 STL是C++标准库最重要的组成部分,STL即标准模板库,不仅是一个可复用的组件库,而且是一个包罗算法和数据结构的软件框架。STL的六大组件容器 - 一些数据结构迭代器空间配置器适配器算法仿函数以算法和容器为核心。容器什么是容器容器是用来存放数据的,因为现实中我们考虑到不同的应用场景,...

2018-06-18 20:49:26 52 0

原创 Linux - 线程特性举例

这里主要演示线程的以下几个特性线程共享同一地址空间(全局变量,堆,栈)线程退出引起进程退出多线程充分利用多核CPU资源同组线程共用同一地址空间全局变量#include <stdio.h>#include <stdlib.h>#include ...

2018-06-17 17:04:48 44 0

原创 Linux - 线程控制

内核中并没有线程的概念,只有PCB的概念,所以线程并没有系统调用。但是为了使用户操作线程方便,就有大佬封装了一个POSIX线程库,可以使我们在用户层完成线程的创建销毁、以及其他操作。POSIX线程库使用时需要包含 <pthread.h> 头文件链接这些线程库时,需要加上...

2018-06-15 21:42:45 108 0

原创 Linux - 线程基础概念

什么是线程线程是能够运行和调度的最小单位进程实际运作的单位是进程中单一顺序的执行流(例如,一个进程中的main函数,是由线程执行起来的)一个进程可以并发执行多个线程进程和线程进程/任务是资源分配的基本单位线程/轻量级进程(这个叫法只针对于Linux而言,别的OS下不一定是)是资源调度的基本单位我们...

2018-06-06 16:28:26 175 0

原创 Linux - 信号

信号,将内核和进程联系起来,是操作系统内部交互的机制。通过kill -l指令查看所有信号注意,这里没有32,33号信号,也是从这里将信号分为两类,1~31位普通信号,34~64为实时信号信号产生原因 通过键盘按键产生信号ctrl-c:2号信号(SIGINT),终止当前运行进程,注意:ctrl-c ...

2018-06-06 16:18:33 81 0

原创 进程间通信 - 信号量

信号量信号量实际上是一个计数器,作用是统计临界资源的多少,保护临界资源。信号量本身也是临界资源进程互斥各进程要求共享资源,而有些资源必须互斥使用,因此进程就会竞争这些资源,称为互斥。一次只允许一个进程使用的资源叫做临界资源。互斥资源的的程序段叫做临界区。进程同步多个进程需要相互配合完成一项任务。信...

2018-06-04 11:21:30 97 0

原创 进程间通信 - 共享内存

共享内存                                                                如上图所示,多个进程之间通过自己的页表,映射到物理内存的共享区,现在这些进程都可以对这个共享区域的数据进行操作,且一个进程操作了这块空间的数据,其他的进程也可以“...

2018-06-04 09:12:00 73 0

提示
确定要删除当前文章?
取消 删除