自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 收藏
  • 关注

原创 Git : 没有stash就切换分支导致分支被修改

今天从工作分支切master分支时时发现master也被修改了,master应该和远程保持同步,所以我自己没有修改为什么分支会被影响呢:其实是因为工作区和暂存区的内容是公共的!!!按理来说在切分支时应该有stash的警告,但是如果要切换到的分支未进行修改过(就是不存在冲突)这时切换分支就不会有stash警告,切分支操作会导致工作区和暂存区修改内容被带到当前分支!!!这时...

2019-08-23 09:41:05 972 1

原创 分布式版本控制工具:Git (原理图解及使用教程 ,包含所有基础命令操作的理解)

目录前言版本控制神器git集中式版本控制与分布式版本控制图解图解快照原理图解git三种状态git命令操作解析用户身份检查个人设置获取git仓库git仓库中记录变更查看当前文件状态暂存已修改的文件提交变更拉取分支查看分支,查看git提交记录分支的使用分支的总结分支命令分支冲突暂时保存哈希关于各个部分如何撤回的问题...

2019-07-26 19:42:32 893

原创 静态库动态库的理解及生成链接过程

从源码到可执行程序,经历预处理编译汇编链接四个阶段,其中编译就是将源文件生成中间文件的过程,经过汇编后生成的未链接的.o文件也叫目标文件(object)库文件就是将这些中间 .o 文件打包生成的文件,这个对一些共用函数,工具类函数打包复用是非常方便省去调用编译的过程。静态库:1. 静态库对函数库的链接是在编译时期完成的2. 程序在运行时与函数库再无瓜葛,移植方便3. 浪...

2019-07-16 10:23:40 1976

原创 c++:对文件的流式操作(ofstream,ifstream,fstream)(ostringstream,istringstream,stringstream)

目录ofstream,ifstream,fstream操作函数整理代码演示&原理解释文件定位问题:ostringstream,istringstream,stringstream代码演示istringstreamostringstreamstringstreamofstream,ifstream,fstream操作函数整理C++ 通过以...

2019-07-15 14:00:01 1590

原创 常见可能导致服务器莫名退出需要(SIG_IGN)的信号

在编写项目时可能会遇见连接或者进程莫名退出的情况,不会报错也很按找出原因,通过日志不断定位,最终发现与信号有关一下列出我在项目中遇见过的常见需要改变默认处理动作的信号可以通过 函数:kill(pid,0) 或 命令行:kill -0 pid 对进程进行检测,0不会发送任何信号,但是会进行错误检查,如果进程存在,命令返回0!signal(SIGHUP, SIG_IGN);...

2019-07-14 18:47:32 928

原创 项目构建工具入门:CMake工作理解 和 入门使用教程

理解开始接触linux时,编译代码习惯上gcc编译c代码,g++编译c++。(gcc 将.c 按c编译,对.cpp按c++编译,g++将.c/.cpp都按照c++编译)当写一个较大的文件时,通常分为多个子文件,这时编译就会非常麻烦!所以出现了批处理工具make,通过makefile中的命令进行连接和编译。如果文件变动较大,每次都要修改makefile文件,也是非常麻烦。这时...

2019-07-13 13:00:16 451

原创 gitlab使用ssh一直提示Permission denied的问题

在新电脑上使用ssh连接gitlab时,遇见一直需要输入密码的问题,但是没有密码能够通过[user@host ~]$ git clone [email protected]:projectname/proj.gitCloning into [email protected]'s password: Permission denied, please...

2019-07-12 14:13:08 3849

原创 Cookie与Session流程及区别

目录1:实现状态保持的原理CookieSessioncookie和session的本质区别如何寻找自己浏览器的cookie1:实现状态保持的原理登录一个网站时常常会涉及到用户登录的状态保持,来使得用户获得更好的体验。那么cookie和session就是为了实现状态保持的CookieCookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据。 Co...

2019-06-04 19:18:59 319

原创 apache:ab压力测试工具的简单使用及解析

想对自己写的简单http服务器进行压力测试,网上主要是是ab或webbench,ab的测试结果较为全面安装命令:yum -y install httpd-tools测试命令 ab -c 10 -n 10 http://www.baidu.com/(简单测试使用这两个参数就够用了)-n表示总共发送的请求数-c表示每次并发的请求数测试结果翻译:服务器软件:BW...

2019-05-27 13:13:53 307

原创 网络:深入理解DNS(域名解析)

DNS的作用 DNS(Domain Name System,域名系统),提供将域名与IP转换地址的服务,网络通信大部分是基于TCP/IP协议的,所以通讯时只能识别IP地址,而不能识别域名,每台主机或服务器都有自己的IP地址,但是我们不可能记下一串数字,通过DNS只需记住有直观意义的域名(主机名)就行主机名到IP地址的映射有两种方式:静态映射:每台设备都配置常用的主机与IP...

2019-04-28 22:37:21 643

原创 c++:深入理解new

首先总结new/malloc区别:new是操作符,malloc是函数 是否需要指定内存大小 int* ptr = new a;int* ptr = (int *)malloc(sizeof(int));new操作符不需指定申请内存大小malloc必须显示的指出所需内存尺寸 内存分配失败时返回值 malloc失败会返回空指针,所以malloc分配后需要判断是否分配成功...

2019-04-27 14:52:39 660

原创 面试:海量数据总结

目录1:给⼀一个超过100G大小的文件,文件中存着IP地址, 设计算法找到出现次数最多的IP地址,如何找到top K的IP?2:给定100亿个整数,设计算法找到只出现一次的整数3:给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集4:1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数5:给两个文件,分别有100亿个query,...

2019-04-05 15:12:26 398

原创 STL:关联式容器

目录序列式容器关联式容器:键值对树形结构的关联式容器mapmultimapsetmultiset底层结构二叉搜索树AVL树红黑树STL红黑树总结序列式容器关联式容器:我们已经接触过STL中的部分容器,比如:vector、list、deque等,这些容器统称为序列式容器,因为其底 层为线性序列的数据结构,里面存储的是元素本身 关联式容器也是...

2019-02-27 10:51:08 355

原创 STL: stack和queue,priority_queue容器适配器介绍及底层选择

目录 适配器stack,queue,priority_queue容器适配器底层选择         queuestackpriority_queue适配器适配器是一种设计模式(反复被使用的,多数人知晓的,经过分类的,代码设计经验总结)该模式中是将一个类的接口转换成客户希望的另外一个接口。(适配器的大概意思就是使将一类事物的行为封装起来,让其实现另一类事物的行...

2019-02-26 11:13:40 711

原创 内存分布及相关面试题

目录 在C/C++中内存分为5个区,分别为堆区栈区对比:内存泄漏malloc与new区别总结在linux中的内存分布在C/C++中内存分为5个区,分别为 栈区: 指那些由编译器在需要的时候分配,不需要时自动清除的变量所在的存储区。如函数执行时,函数的形参以及函数内的局部变量,返回值分配在栈区,函数运行结束后,形参和局部变量出栈(自动释放)。栈内存分配效率高但是...

2019-02-26 10:16:30 397

原创 STL:list功能及特点详解

目录list介绍list特点list初始化list迭代器失效list迭代器实现list和vector对比list介绍List由双向链表实现,元素也放在堆中。由于链表的特性任意地方插入和删除效率非常高,每个元素占用一块空间,但是内存空间不是连续的通过指针进行数据访问,所以其随机存取非常没有效率(没有提供[]重载)list特点list是可以在任意位置插入或删...

2019-02-21 17:00:12 601

原创 STL:string类使用解析

目录 string介绍string特点string类的常用接口说明string类对象的容量操作string类对象的访问操作 string类对象的修改操作经典的string类问题string介绍C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底...

2019-02-18 17:40:43 177

原创 C++ Vector(向量容器):特点,使用方式及迭代器失效问题

目录vector介绍vector特点vector初始化vector iterator的使用vector空间增长问题vector增删查改vector迭代器失效问题迭代器失效总结vector介绍vector是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样 被操作,由于它的特性我们完全可以将vector看作动态数组。...

2019-02-17 20:46:35 1652

原创 STL:入门基础总结

目录 什么是STLSTL组成部分容器适配器什么是STLSTL标准模板库:是c++标准库的重要组成部分,是一个高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。STL的一个重要特点是数据结构和...

2019-02-17 15:35:49 321

原创 数据结构:八大排序理解与C语言实现

目录序插入排序直接插入排序希尔排序选择排序直接选择排序堆排序交换排序 冒泡排序快速排序归并排序非比较算法计数排序时间复杂度序排序:就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。  排序码:通常数据元素有多个属性域,其中有一个属性域可用来区分元素,作为排序依据,该域即为排序码。  按照主排序码进行排序,排序的结果是...

2019-01-18 23:57:42 777

原创 数据结构:哈希散列结构理解及位图的使用

目录哈希概念哈希冲突哈希函数常见哈希算法处理哈希冲突闭散列线性探测二次探测开散列哈希变形—位图布隆过滤器哈希概念顺序搜索以及二叉树搜索树中,元素存储位置和元素各关键码之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可以不经过任何比较,一次直接从表中得到...

2019-01-18 17:54:51 803

原创 三次握手四次挥手:概念理解与细节总结(脑补出来的血腥案例:女神屌丝女朋友)

目录三次握手理解两次握手为什么会有第三次握手呢?原因1原因2SYN洪泛攻击三次握手生活案例:女神和屌丝四次挥手       为什么会是4次挥手?四次挥手生活案例:分手详细图解tcp连接断开检测        服务器初始化建立连接过程数据传输过程断开连接过程TCP协议的三次握手和四次挥手是面试中最爱问的问题之一,我将我的理解总结在这...

2018-12-04 17:58:51 798

原创 Linux:高级IO(五中基本IO模型)(非阻塞:fcntl,dup/dup2)(多路转接的就绪事件通知机制:select/poll/epoll)

目录五种基本IO模型总结:同步异步阻塞非阻塞非阻塞IOfcntl重定向dup/dup2系统调用多路转接selectfd_set返回值执行过程select优缺点socket就绪条件读就绪读就绪poll优点缺点epollepoll系统调用epoll_createpoll_ctlstruct epoll_...

2018-11-27 21:51:26 541

原创 网络基础应用层:http协议和格式,url,传输层:端口号,UDP/TCP协议,TIME_WAIT,校验和 序列号 确认应答 超时重发 连接管理 流量控制 拥塞控制 滑动窗口 快速重传 延迟应答

目录 应用层HTTP协议URL​urlencode和urldecodeHTTP协议格式传输层端口号​端口号划分认识知名端口号两个问题UDP协议UDP特点UDP缓冲区TCP协议理解TIME_WAIT状态解决TIME_WAIT状态引起的bind失败方法确认应答ACK机制超时重传机制滑动窗口机制流量控制拥塞窗口(拥塞...

2018-11-26 17:14:25 865

原创 Linux:网络编程套接字(tcp /udp,网络字节序,大小端,套接字(相关函数),tcp /udp简单的通信端客户端通信代码,三次握手四次挥手)

 目录认识ip地址端口号port:传输层协议tcp(传输控制协议)udp(用户数据报协议 )网络字节序大小端判断大小端代码转换网络端口函数转换网络ip地址socket(套接字编程)使用函数 struct sockaddr_inmyaddr参数初始化监听listen()accept()一个非常简单的udp服务端程序服务端:用...

2018-11-17 21:31:12 628

原创 网络基础(网络发展,协议,OSI和TCP/IP模型)(网络层:IP协议,网段划分)(数据链路层:以太网,MAC地址,ARP协议,MTU等)

目录网络发展网络协议两个出名的通信协议结构模型OSI七层参考模型TCP/IP五层参考模型网络通信中的数据(协议的封装与应用)封装与分用网络层IP协议IP协议头格式网段划分路由选择数据链路层认识以太网以太网数据帧格式MAC地址ARP协议ARP数据报格式MTU其他重要协议DNS:ICMP:ping命令网络发展...

2018-11-16 18:02:35 789

原创 Linux:进程间关系与守护进程(进程组,作业,会话,守护进程)

目录进程组作业作业有关的信号进程组与作业的区别:会话作业控制守护进程(精灵进程)         创建孤儿进程进程组是一个或多个进程的集合每个进程组除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。 通常他们与同一个作业有关,可以接受来自同一端的各种信号。 每个进程组有唯一一个进程组ID, 进程组中有一个进程是组长进程,进...

2018-11-16 17:19:18 284

原创 Linxu:线程(线程安全,同步与互斥,生产消费者模型,互斥量,条件变量,信号量,读写者模型,读写锁,自旋锁)

目录线程的安全线程的同步与互斥同步与互斥方式生产者与消费者模型:mutex(互斥量)代码演示死锁条件变量初始化等待条件满足唤醒等待销毁条件变量使用规范posix信号量信号量是什么?与条件变量的区别初始化信号量等待信号量销毁信号量发布信号量代码演示读写者模型:读写锁读写锁接口初始化和销毁解锁和加锁...

2018-11-16 14:53:35 350

原创 Linux:多线程(线程概念,优缺点)(线程创建,等待,分离,查看)

目录​线程概念线程是什么?posix线程库进程线程对比线程优点线程缺点进程的优点共享私有线程控制线程的创建线程ID如何查看如何获得线程id线程终止(退出)pthread_exitpthread_cancel线程等待线程分离线程概念线程是什么?在一个程序中的一个执行路线就叫做线程(thread),更准确的...

2018-11-10 17:26:10 628

原创 Linxu:进程信号:(信号的产生方式)(信号的注册,阻塞屏蔽,注销,不同的处理方式)(重入函数)(volatile)(竞态条件)

 目录 信号的基本概念信号的产生方式产生信号Core Dump信号的注册信号的阻塞与屏蔽信号阻塞屏蔽验证代码信号的注销信号的处理信号的处理方式信号的忽略处理代码实现信号的自定义处理代码实现(sigcb)信号的自定义处理代码实现(sigaction推荐)信号的捕捉流程:  可重入函数不可重入函数可重入代码演示  volati...

2018-11-08 12:20:57 355

原创 Linux:进程间通信(匿名管道命名管道)(共享内存,消息队列,信号量)

目录进程间通信的介绍管道匿名管道原理:代码实现匿名管道特性实现管道符 | 命名管道命名管道特性代码实现管道读写规则操作系统中ipc的相关命令共享内存(重点)生命周期:代码实现代码实现获取数据消息队列信号量 进程间通信的介绍进程间通信:进程之间的沟通交流 因为进程的独立性,所以导致进程间的数据通信将变得非常麻烦。...

2018-11-07 18:36:45 1371

原创 Linux:基础IO(文件描述符分配规则)(重定向)(inode)(软硬链接)

目录文件描述符的分配规则重定向原理FILE总结理解文件系统inode是什么inode内容硬链接软链接软硬链接区别:文件描述符的分配规则最小分配原则通过代码理解://这是一个演示文件描述符分配的demo//1:文件描述符是一个数字,并且这个数字是一个结构体的下标//分规则:寻找最小的未使用下标#include<stdio.h&g...

2018-11-05 13:53:47 1056

原创 Linux:基础IO(cIO库函数详细介绍)(IO系统调用接口详细介绍)(两者关系:文件描述符和文件指针)

目录c系统中的库函数:fopen:打开文件fclose:关闭文件fwrite:向文件写入一个数据块fread:读写fprintf:格式化输出到一个流/文件中fseek:移动/跳转 到当前 读取/写入位置fgets:获取字符串fput:把字符串写入到指定的流( stream) 中,但不包括空字符。rewind改变内部指针代码演示IO系统调用接口op...

2018-11-03 20:57:57 559

原创 实现一个简单的shell

代码的详细解释都在里面了~~~~//自己实现一个简单的shell#include&lt;stdio.h&gt;#include&lt;unistd.h&gt;#include&lt;stdlib.h&gt;#include&lt;errno.h&gt;#include&lt;string.h&gt;//1:获取终端输入(scanf接收一个输入信息)//2:解析输入(按空格解析到...

2018-11-01 12:25:17 767

原创 Linux:进程控制(fork/vfork)(进程终止:exit/_exit)(进程等待:wait/waitpid/status)(进程替换:exec函数/shell实现)

目录 进程创建fork原理fork函数返回值fork用法和调用失败的原因vfork函数总结进程终止进程退出场景:进程常见退出方法return退出_exit函数exit函数总结:进程等待进程等待的重要性进程等待的方法wait方法waitpid方法总结获取子进程status总结:进程程序替换替换原理替换...

2018-10-30 21:14:57 999

原创 Liunx:环境基础开发工具使用总结(基本操作命令及使用详解)

目录1vim的基本概念2vim的基本操作3vim正常模式命令集1:插入模式2:移动光标3:删除文字4:复制5:替换6:撤销7:更改8:跳到指定行4vim末行模式命令集分屏操作编译器的使用1:背景知识2:gcc如何完成调试器gdb的使用开始使用自动化构建工具make/Makefile背景原理进度条程序软件管理...

2018-10-25 21:32:17 362

原创 C++:函数模板(理解)

 目录泛型编程函数模板1:函数模板概念2:模板格式:3函数模板原理4:函数模板的实例化与类模板实例化5:函数模板的匹配原则类模板1类模板的定义格式2类模板的实例化3非模板类型参数4类模板的特化5类模板特化之类型萃取6模板分离编译泛型编程泛型编程最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用...

2018-10-24 00:06:17 356

原创 程序地址空间:虚拟地址原理及发展过程(图解说明)

目录 简单理解的空间布局图及验证:早期的内存管理机制分段分页简单理解的空间布局图及验证:用两段代码测试一下: 1 #include&lt;stdio.h&gt; 2 #include&lt;stdlib.h&gt; 3 #include&lt;unistd.h&gt; 4 int val = 100; 5 int main() 6 { ...

2018-10-19 00:29:25 2512

原创 Linux :进程(进程状态,僵尸进程,孤儿进程,进程优先级,环境变量)

目录进程进程状态僵尸进程孤儿进程进程优先级环境变量进程基本解释: 基本概念:程序的一个执行实例,正在执行的程序等。 内核观点:担当分配系统资源的实体。描述进程PCB: 进程的信息被放在一个叫作进程控制块的数据结构中,可以理解为进程的属...

2018-10-07 20:10:21 330

原创 c++:多态的详解(理解)

目录1多态概念:2多态实现:2.1虚函数2.2重写(覆盖)2.3重载,覆盖(重写),隐藏(重定义)的区别​2.4多态的构成条件2.5动态绑定与静态绑定3抽象类4带有虚函数对象模型剖析1:包含有虚函数的类对象与普通类对象的区别2:虚函数表3:打印虚表5基类与派生类虚表中内容6对象模型1:虚函数调用过程2:单继承3:多...

2018-10-07 12:29:28 523

空空如也

空空如也

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

TA关注的人

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