自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GangStudyIT的博客

滴水穿石

  • 博客(75)
  • 收藏
  • 关注

原创 mybatis的接口无法注入到service层。

mybatis的接口无法注入到service层spring中mybatis接口注入到service层,有两种做法:<bean id="fileManagementMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" val...

2019-05-30 16:31:58 3869 2

原创 IO多路复用之epoll

IO多路复用之epollepoll出现背景在前面的文章中我们了解了,select的用法,也大体知道IO多路复用的概念。今天我们就来了解epoll,select是早期的一个用来解决高并发的IO多路复用的手段,最大的缺点就是有文件描述符上限,同时监控的文件描述符不能太多,太多效率会下降,select内部采用了数据的用户态拷贝到内核态,在内核态下进行文件描述符轮询的监控,这样一来就要反复的进行数据...

2018-09-24 19:08:07 424

原创 python2入门基础语法(三)

接语法(二)链接python语法 in / not in 返回的是真假,判断是否存在list不能用in 去判断list是子集,只能判断其中的一个元素list中可以用+来进行拼接list切片:list1[:] 是前闭后开 list2[区间开始:区间结束:步长] 还是前闭后开,其中步长大于0,没变 要小于0的时候,如:list[3:5:-1] 这是倒着从最后向前进行去看区间,...

2018-08-31 22:12:03 352

原创 传输层--TCP协议提高效率机制

TCP提高效率机制在TCP可靠传输的基础上要提高效率,那么又是怎么实现的呢?滑动窗口在TCP可靠传输中,我们总结了TCP的头部字段的作用和如何实现可靠传输的,现在就是提高效率。第一就是滑动窗口。滑动窗口是什么?可靠传输是每次发送一条信息后,都要等到对方的应答才能继续发送,所以一半的时间用来接收ACK的应答,这样传输效率明显就很低,所以为了解决这个问题,就有了滑动窗口,滑动窗...

2018-07-26 21:50:24 996

原创 五种IO模型、IO多路复用之select用法

五种IO模型在冯诺依曼计算机体系结构中,输入输出设备是其中的两大组件, 那么今天我们就来谈谈计算机中IO(输入输出)模型 IO分为 阻塞IO、非阻塞IO、信号驱动IO、IO多路转接、异步IO阻塞IO阻塞IO是我们在开发中非常常见的IO模型,我们在c中调用scanf、在c++中调用cin、调用系统read都会阻塞的等待用户输入,用户不输入,就会一直等待,形成的过程是分为 应用进程调用...

2018-07-25 14:30:06 2390

原创 传输层--TCP协议段头部信息及作用,可靠传输机制的实现

TCP协议段信息及作用在前面我们讲述了UDP协议段的头部信息,UDP协议段信息 那么今天接着说传输层的另一个协议,TCP协议。 TCP是传输层中比较重要的一种协议,它运用的地方很多,比如在FTP协议、http协议中就是运用了TCP的协议,因为它的可靠性,所以很大程度解决了文件传输丢失,或者错误顺序的情况。 我们先来看TCP头部格式 协议画的顺序是从左到右,头部信息也是从左到右进行的...

2018-07-20 21:51:29 2682

原创 传输层--UDP协议首部格式以及每个的用途

UDP首部格式在网络通信中,传输层将应用层的数据拿到然后,添加传输层的头部,再给网络层,那么传输层是为了保证两台主机之间的通信,就在头部中要添加必要的信息,我们就来分析一下UDP的头部信息。 首先我们通过一张图来了解: 首先我们先介绍一下,头部分部。 UDP是以32个比特位为一组,就是四个字节为一次,我仍为计算机提高效率就是接收或者发送的数据吞吐量刚好和计算接收的相对,是最高效的发送...

2018-07-18 21:59:04 2120

原创 C++中的单例设计模式

单例设计模式首先我们要注意,单例设计是一种模式,也就是一种设计思想,可以让程序员减少bug,为什么这么说呢?因为单例模式,就是像框架一样,在设计程序的时候,采用别人经过多次的尝试而得出在设计软件时候该怎么做能有更好的结果,不容易出现错误,所以就有了一种设计思想,或者设计时候的框架,今天我们来讨论单例设计模式。什么叫单例模式?单例模式,我们从代码说起,就是在面向对象编程中,一个类只能...

2018-07-15 00:40:10 241

原创 python2入门级基础语法(二)

换行要求 换行 : 在{} [ ] () 中 解释器会认为是一个代码块,换行也可以 一行太长可以用 \ 来进行换行 字符串中的 ’ ’ 和 ” ” 都不可以换行, ”’ ”’ 可以换行但是换行符就会保留下来多元赋值 在python中交换两个值,就可以直接进行: x,y = 3,5 x,y = y, x 交换两个值运算 &amp;lt;&amp;lt;= &amp;gt;&amp;gt;...

2018-07-09 21:59:25 412

原创 python2入门级基础语法(一)

python的运行机制解释运行, 没有可执行程序,一行一行解释Python算是一种 “半编译, 半解释” 型的语言. 一方面, Python解释器会按行读取源代码文件, 然 后会先将源代码转为供Python解释器直接执行的 “字节码”. 然后再执行字节码.我们执行一个.py文件之后, 会生成一个同名的.pyc文件. 这个.pyc文件就是Python解释器生成的字节码文 件. 如果已经存...

2018-07-04 21:59:13 542

转载 HTTP协议中各种方法的差别

HTTP协议是一个广泛应用的Internet协议。在其中有8个不同的请求方法:列表内容GETPOSTHEADPUTDELETEOPTIONSTRACECONNECT这8个方法中GET和POST最常见。GET方法 它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。 GET请...

2018-07-02 16:25:16 676

原创 应用层中的超文本传输协议----HTTP协议

在计算机网络中有osi网络七层模型,因为在实际中七层模型就可以转化成五层模型,如果有些模糊请戳网络基础对于HTTP协议是在应用层上的一个协议,在应用层上协议可以是在实际开发中自己制定,但是像HTTP这些很高技术的大牛制定好的协议,非常好用,所以就可以提供我们参考使用。那么在认识HTTP协议之前我们先认识一下URLURL什么是URL?简单的说就是我们经常所说的“网址”。 为什么要说...

2018-07-02 01:18:40 655

原创 C++中STL中vector和list的迭代器失效问题

C++ 中vector和list是我们常用的容器,在容器配合算法的时候,就用到了迭代器。 这样提高了代码的可读性,也配合了STL中的算法。但是在容器中使用迭代器时候会发生迭代器失效问题,所以我们就得注意。首先我们看vector的迭代器失效问题在vector中迭代器失效发生在insert和erase中。我们先看insert,在vector中插入元素,插入元素后当发现开辟的空间不够了...

2018-07-01 18:14:22 4103

原创 基于TCP协议实现Linux下客户端与服务器之间的通信,实现多线程、多进程服务器

TCP是TCP/IP协议族中一个比较重要的协议,这是一种可靠、建立链接、面向字节流的传输,工作在传输层。和TCP相对的不可靠、无链接、面向数据报的协议UDP,了解UDP客户端与服务器之间通信请戳UDP协议实现的服务器与客户端通信TCP协议建立连接首先我们通过一个大概的图来了解。 建立连接首先必须是服务器启动,这没什么好说的,服务器为被动方,客户端为主动方,当客户端发起请求建立连接...

2018-06-30 21:59:24 4454

原创 网络套接字socket,利用UDP协议实现服务器与客户端通信

两台主机之间的通信,是通过网卡再经过网络,互相传输,那么我们先来介绍再通信中想要在全球的pc中找到你要发送数据那一台,就需要IP来标识,那么这里在数据报文中就包含了源IP和目的IP,分别标识的是数据从哪来要到那里去。有了IP那么要怎么认识是主机的哪个进程收数据,这时就有端口号,一个端口号标识着一台主机上的唯一的进程。那么有个问题? 为什么不用PID而要用端口号?因为在一台主机或者服务器上,一...

2018-06-28 21:59:19 3927

原创 网络基础概念理解

网络在人们生活中可以说是息息相关,所以网络是非常重要的,但是网络是怎么实现通信的,怎样能从地球的两端建立通信?我们来了解一下网络的分类网络分为局域网和广域网。 局域网就是一台路由器,几台交换机,连接的起来好多台pc,实现这几台pc之间的通信,这就形成了一个局域网。 广域网也就是多个局域网组合起来就形成了广域网。 网络通信中的七层模型(osi七层模型)为了实现网络之间的...

2018-06-24 18:53:22 470

原创 模拟实现c++中STL的vector容器,模拟实现常用接口和迭代器

在C++中经常会用到STL的六大组件。哪六大组建呢? 有容器、算法、迭代器、容器适配器、空间配置器和仿函数,六大组件。 今天我们来模拟实现一下容器中的vector。 先说说vector的优点: 1)vector支持随机访问,这是它的最大的优点,有很多算法都要基于随机访问才能实现。 2)vector缓存利用率高,vector因为是连续的一段空间,所以在从内存到cpu的过程中会有个缓存区,所...

2018-06-21 21:59:11 843

原创 c++ 中的类型转换(强制转换和隐式类型转换)

在我们学习c语言的时候,就知道强制类型转换和隐式类型的转换,但是在类型转换的过程中,很有可能一个不注意,容易出问题,这无疑是加大了,程序员的工作量,而且还检查很不好检查。所以在c++ 中就对类型的转换做了一定的限制,但是实际中大多数人,是在学习了c 语言后才学习 c++ 语言所以就用了 c 语言中的类型转换方式,那么今天我们介绍一下 c++ 中类型转换的方式,他们都是通过类模板的方式实现c...

2018-06-20 11:05:19 6185

原创 Linux中线程的同步与互斥、生产者消费模型和读者写者问题、死锁问题

线程的同步与互斥线程是一个存在进程中的一个执行控制流,因为线程没有进程的独立性,在进程内部线程的大部分资源数据都是共享的,所以在使用的过程中就需要考虑到线程的安全和数据的可靠。不能因为线程之间资源的竞争而导致数据发生错乱,也不能因为有些线程因为调度器长时间没有调度从而导致饥饿问题。所以在线程中也有了同步与互斥,这里用 “也” 是因为进程中也有同步与互斥,今天来了解线程中的同步与互斥。线程中...

2018-06-18 23:24:06 560

原创 Linux中进程与线程的区别、线程的创建、等待与退出

进程与线程的区别在了解线程与进程之间的区别前我们先来认识线程与进程,我们从概念入手,什么是线程、什么是进程,再进行进程与线程之间的不同点与相同点比较,优点与缺点进行比较理解。进程的概念 进程(Process)就是程序的一次实例化,是分配资源的实体 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动 是资源分配的基本单位但是如果单单这样理解是完全不够的,...

2018-06-15 21:59:31 6082

原创 C++异常处理

c++中异常处理程序在运行过程中,有对也就有错,正确那么就不用说了,但是如果错误,那么我们如何快速的定位到错误的位置,以及知道发生了什么错误,在c语言中,我们知道处理异常的方式为错误码,在程序运行错误后,我们可以查错误码的方式来,进行判断,但是对于有些情况我们就很难判断,比如虽说常见的错误可以用错误码表示,但是对于一些比较不常见的错误,错误码就不能表示到。所以为了方便和加强代码的健壮性,引...

2018-06-14 21:58:05 244 1

原创 C++中的三种智能指针分析(RAII思想)

智能指针首先我们在理解智能指针之前我们先了解一下什么是RAII思想。RAII(Resource Acquisition Is Initialization)机制是Bjarne Stroustrup首先提出的,是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。 对于RAII概念清楚后,我们就可以理解为智能指针就是RAII的一种体现,智能指针呢,它是利用...

2018-06-10 21:59:04 8101 1

原创 删除链表中重复的节点(经典链表面试题)

题目 删除链表中重复的节点 在一个排序,如何删除重复的节点? 例如:1 -&amp;gt; 2 -&amp;gt; 3 -&amp;gt; 3 -&amp;gt; 4 删除后是 1 -&amp;gt; 2 -&amp;gt; 4分析在链表的面试题中,重要一点是要注意对链表的情况要全部考虑到,或许你在看到上面的例子后按照给出的例子大笔一挥,写出代码后,那么你很可能就已经凉凉。。。首先我们应该考虑大部分...

2018-06-08 15:07:18 25819 9

原创 操作系统(linux)中信号工作的原理分析

信号首先我们先理解一下信号是什么?在linux下我们先看看都有那些信号, 我们输入kill -l 就会出现 这就是信号的全部种类,总共有62种信号,其中1到31是普通信号,也是这篇主要理解的,后面34到64的信号为实时信号。信号是干什么的呢? 我们举个例子: 最简单的理解,在linux下我们在运行某个进程的时候,通常在shell下启动一个前台进程,但是我们进程运行过程中我们,按...

2018-06-02 21:59:28 5070 1

原创 数据结构中的堆的实现和堆排序

堆的实现堆的本质是一二叉树,并且是一颗完全二叉树。堆分为大堆和小堆,大堆就是在堆顶的元素的值是这个完全二叉树中的最大值,小堆刚好相反,是最小值。在树这个数据结构定义的时候是递归定义的所以也就满足,一个树中子数的更节点是最大或者最小(取决与建立大堆还是小堆)。堆的建立堆的建立过程是一个进行比较的过程,也就是说,每次插入一个元素,就需要对堆进行调整,怎么调整?当然在插入的时候,我们...

2018-06-01 23:41:25 803

原创 c++中模板的知识梳理

模板作用在C++中模板是泛型编程的一种体现,是采用无类型的逻辑代码编写。其作用就是达到代码的复用从而减少开发人员写重复的代码。模板的分类模板分类,大的方面分为模板函数和模板类。模板函数在时间开发过程中很有可能同一块代码,但是用了不同的类型,那么我们就必须每个类型都要写一份代码,为了解决这个问题,引入了模板函数。 具体是什么样子呢?在模板泛型编程中引入一个新的关键字...

2018-05-29 16:36:00 362

原创 mysql中数据类型

mysql数据类型首先我们要了解,在mysql中数据类型有哪几种呢? 数据类型大的分类分为: 数值类型、文本或者二进制、时间和日期、string类这四类。 每个下面都有什么具体的类型呢?我们用图来看。 在表中红色标识为常用的类型,未被标识的,相对而言是用的没有红色频繁。对于tinyint、smallint、int理解对于这三个类型我们就类比一下,在32位操作系统中,c语...

2018-05-18 21:21:44 278

原创 C++中多态实现的原理分析、虚继承的原理

多态的原理分析在面向对象的语言中,封装、继承、多态三大特性。我们今天说说C++中多态的实现原理。 多态往往是用来在继承中,子类中的某些行为与父类中的不同,但是为了降低调用的耦合度,我们就定义出,一个对象中有不同的形态,当然是相对与传的对象。在C++中多态在c++中多态就是要满足两个要求,当然前提是在继承中,因为有继承才为了满足一些要求,才出现了多态。 1)必须在继承中,存在虚函数,...

2018-05-12 21:43:35 541

原创 用C语言实现一个简易通讯录

通讯录实现通讯录,是基于c语言的IO文件操作、数据结构里面的顺序表实现。具体功能实现了信息的添加信息的显示信息的修改(修改单一属性)将内存中的信息保存到文件中去将文件中的信息加载到内存中(每次程序运行数据就会丢失)信息的删除信息的查找(按照各自的属性查找)给每一条信息设置了唯一的标识id通讯录的销毁头文件中的声明在c语言中我们采用结构体来记录每一个人...

2018-05-06 21:45:34 1531

原创 数据库(mysql)的基础和数据库的备份与恢复

数据库的初识为什么会有数据库?数据库能最大程度的保证数据的安全性数据库可以极大有效率的提高数据的查询与访问更为合理的管理数据数据库的有很多种,我们主要的学习mysql数据库。 下面我们来说明学习一下基本使用连接数据库(linux)安装好mysql数据库后,(未安装请自行百度)我们最开始连接,连接登陆指令mysql -h 地址 -u 用户 -p 密码举例:my...

2018-05-03 12:41:41 245

原创 Linux中进程的创建、进程的终止、进程的等待、进程的程序替换

进程的创建在进程的创建中,我们一个非常重要的函数 fork()函数,fork()函数会创建一个新的进程,为原有进程的子进程,原有就为父进程。 我们来看一下fork()函数的原型。 #include &amp;amp;amp;lt;unistd.h&amp;amp;amp;gt;pid_t fork(void);返回值:子进程返回0,父进程返回子进程的pid。fork()失败返回-1(linux下)进程调用fork(...

2018-04-26 17:33:58 750

原创 C++中的继承与多态知识梳理

继承在面向对象编程语言中,都有三大特性:封装,继承和多态。 今天我们就来研究一下,C++中的继承。 概念 继承是在面向对象的编程中,把一些相同或者相近的属性给抽象出来,以此达到代码的复用功能,大大的提高了程序的开发效率。具体的讲就是子类拥有了父类的所有成员。通俗的讲就是在写程序时,有时候需要定义一个人类,好不容易写完,写全一个人的类,现在又要写一个学生类,那么没有继承...

2018-04-25 13:48:05 378

原创 Linux操作系统中进程,PCB,fork()函数,僵尸进程,孤儿进程,进程优先级,环境变量

操作系统(Operator System)操作系统有很多种类,但是大的放向有三类。 Windows、MAC、Linux操作系统。 操作系统在计算机中,相当与一个管家,对下合理安排管理计算机资源,对上提供给用户一个稳定的操作环境。 计算机发展到现在经过不断的改进,目前使用的是冯诺伊曼体系结构,以内存,CPU,输入,输出。 操作系统中内核就是属于内存管理进程管理等,在操作系统中为了管理完成...

2018-04-20 22:01:51 1210

原创 二叉树实现及相关操作知识梳理

树型结构前言树型结构在生活中是非常常见的一种结构,应用范围很广,就用一个简单的例子来说。计算机中的文件目录就是一个树型结构,一般创建一个文件,如果文件中没有文件那么就相当于一个空树,如果里面有文件,就相当于这个文件的子树,以此类推,就形成了树型结构的文件目录。 在学习中我们主要学习二叉树的一些特性,把树细化学习。二叉树的概念二叉树是结点的有限集合,该集合或者为空,或者...

2018-04-20 17:44:57 386 1

原创 动态内存管理分析

内存区域的划分内存可以大块划分为系统占用不可访问的区域,剩下就是栈,堆,代码段,数据段(静态区)。 那么他们是如何分布在内存中的呢? 可以了解一下函数栈帧 栈和堆都可以存放数据 注意:栈是从高地址到低地址生长的,而堆与它相反。静态区是存放初始化和未初始化代码段就是存放代码啦C/C++中堆上的内存管理在C/C++上内存管理分为两种:1. 系统自动分配自动回收。...

2018-04-07 20:40:52 343

原创 C++入门小知识(二)const修饰成员函数,内联函数,有元,静态成员的理解

c++入门小知识总结(二)const修饰的成员函数如果学过C语言,那么对const有一定的了解,const修饰的变量不能能够被改变,修饰指针呢,指针不能被改变等。。。 在C++中const修饰的成员函数,那么可以推测一下,是不是它所修饰的成员函数不能改变呢?答案是no 不是说它所修饰的成员函数不能被改变,而是它所要接受的对象在本函数中不能不改变。 怎么来修饰成员函数呢? 举个例...

2018-03-30 16:45:38 274

原创 隐式this指针及C++类中六个默认成员函数

隐式指针-&gt;this指针什么叫隐式指针? 它其实就是在对象实例化以后,在传参的时候默认传过去的一个对象的地址 怎么理解这句话呢? 比如:我们的拷贝构造函数(不知到拷贝构造函数是干什么的可以往下看)class Date{public: // 构造函数 Date(int year = 1970, int month = 1, int day = 1) ...

2018-03-28 10:26:32 721

原创 Centos vim配置及插件YouCompleteMe代码补全的安装vimplus

Linux下的编译器vimvim是Linux下自带而且非常强大的编译器,但是它与一些集成的IDE相 常简单并且可以随手配置出自己喜欢的风格,对于初学者当然还是建议 用原味的,要做到熟悉vim的一些基本快捷键。最难受到就是一些,用了 有一段时间,自己想有一个可以的开发环境,那么你就可以用那些大牛 写好的安装过程,一步一步来,但其中也有一些坑大家需要注意。 这里我就把我遇到的坑和解决办法...

2018-03-24 21:36:51 3497 2

原创 海量数据处理

海量数据处理我们这里的海量数据处理主要是通过几个实际问题,应用数据结构,来熟悉哈希数据结构,位图数据结构,和布隆过滤器。如果哈希数据结构,位图数据结构和布隆过滤器请点击[https://github.com/jacksparrowwang/cg19.github.com/tree/master/Data%20Structure](github)海量数据的处理问题,遇到的问题一般有文件过...

2018-03-19 16:56:59 1173

原创 对栈的实现(顺序栈和链式栈)C语言

栈的实现两种方法实现:顺序栈 :基于静态顺序表链式栈 :基于链表顺序栈函数的结构体和声明基于顺序表的栈,也就是用数组的增删查改我们看结构体和声明typedef char SeqType;typedef struct SeqStack{ size_t size; SeqType data[MAXREPOSITORY];}SeqStack;...

2018-03-17 18:00:12 558

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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