自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++类型转换

我们先来看一看以前是怎么定义数据类型转换的:#include <iostream>using namespace std;void Test(){ //隐式的类型转换 int i = 10; double d = i; printf("%d ,%.2f\n", i, d); //显式的强制类型转换 int* p = &a...

2019-06-05 16:39:09 3882 1

转载 你想知道的负载均衡

本文转自一篇文章彻底了解清楚什么是负载均衡。负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站、应用、数据库或其他服务的性能以及可靠性。为什么要引入负载均衡?先看一个没有负载均衡机制的web架构:上图中的架构有什么缺陷了?首先,用户是通过网络直接和web服务器相连,想象一下,如...

2019-05-23 17:39:16 247

原创 TCP和UDP区别

面试常见题:TCP和UDP区别?下面来简单了解和介绍一下:UDP:面向数据报无连接不可靠对系统资源要求相对较少TCP:面向字节流有链接保障可靠性TCP对系统资源要求比较高TCP和UDP适用场景:TCP:用于可靠传输的情况,应用于文件传输,重要的状态更新等场景UDP:用于对高速传输和实时性要求比较高的通信领域,比如:早期的QQ(现在听说也是UDP),视频传输等 并...

2019-03-23 14:35:42 303

原创 TCP/IP之传输层协议详解

fdsf

2019-03-14 10:26:20 6298

原创 深入理解计算机网络之应用层详解

首先我们先来回顾一下OSI七层模型:这里我们只介绍网络通信中重要的四层:分层名称功能常用协议应用层针对特定应用的协议FTP(文件传输有协议),DNS(域名系统)以及常见的 HTTP协议传输层管理两个节点之间的数据传输。负责可靠传输(确保数据被可靠的传送到目标地址)TCP(传输控制协议)和UDP(用户数据报协议)网络层地址管理和路由选择(通过路由器寻...

2019-03-14 10:25:49 564 1

原创 C++之智能指针

智能指针

2019-01-29 22:14:07 349 1

原创 C++之异常处理

在以前我们学习C语言的时候,如果遇到错误我们是怎么处理的呢?直接 return错误码?还是直接终止程序(assert)?当然还有不常见的C 标准库中setjmp和longjmp组合。这些方法我相信大家在写代码的时候都会遇到各种各样的情况的吧。而且,C语言出错返回的错误码,我们经常需要自己去百度查询,非常麻烦。但是,在C++中,大佬们给我们提供了异常处理机制,这就解决了C语言中程序崩溃之后我们...

2019-01-24 12:41:41 119 1

原创 Linux之线程控制

线程控制由于线程是后来才引用进来的,因此,在编译链接时需要加 -lpthread来引入外部库(POSIX)创建线程#include <pthread.h>//函数原型 int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void *(*start_routine)(void*), void *a...

2019-01-22 11:31:37 112

原创 Linux之线程同步与互斥,模拟抢票系统

线程的同步与互斥相关背景概念临界区 :每个线程内部访问自己资源的代码叫做临界区:临界资源 :多个执行流共享的资源叫做临界资源互斥 :在任何时刻,只能有且仅有一个执行流访问临界区的临界资源原子性 :一个操作不会被任何调度机制打断,要么完成,要么没完成,只有两种状态,常见的++,–都不是原子操作,因为汇编代码不止一条互斥量mutex大部分情况,线程使用的数据都是局部变量,变量的地址...

2019-01-22 11:13:31 852

原创 Linux之线程简介

说线程之前我们先来回忆一下什么是进程?答:谈到进程,首先印入我们脑海当中的必然是PCB(进程控制块,Linux叫做task_struct),然后会想到页表,地址空间,映射关系,进程间通信等等…而我们今天要了解的线程跟进城有着莫大的关系,下面开始详细的介绍什么是线程程序中的一个执行流就是一个线程,更准确的说应该是一个进程内部的控制序列,后面讲。一个进程中至少有一个执行流线程在进程内运...

2019-01-17 18:27:04 177

原创 进程创建、等待和终止

前面我们在初识进程文末提到了一点点fork()函数创建子进程,但是没有详细地讲,在本文,我将详细地介绍一个进程的创建。等待以及终止是怎么样实现的。创建进程先认识两个重要的函数:函数功能fork创建子进程vfork创建子进程有人看到这笑了,这博主是傻吗?两个函数都是创建子进程,有啥区别呢?别急,带我慢慢给你剖析。(一) forkfork()函数是Lin...

2019-01-14 16:16:32 250

原创 对象数组、对象指针

今天老弟问了我一道题,是关于对象指针和对象数组的题目,当时竟然有点懵逼,一下子竟不知道这是些什么意思,然后百度查了查资料,现总结如下:对象数组顾名思义,对象数组跟数组类似,我们把型于Student s[]={Student("peter",18),Student("Suum",19)};叫做对象数组,切结后面不要忘了 ;看个例子:class Date{public: Date(int...

2019-01-01 23:57:27 938

原创 Linux之进程状态

前面我们说过,对于一个被执行的程序,操作系统会为该程序创建一个进程或一个任务。为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。这时有必要看一看kernel里面是怎么给我们定义的。相信大家的英文水平都不差,我就不做翻译了,简单老说就是包含了五种状态:事件说明R状态即运行状态,但它并不意味着进程一定是在运行中,它表明进程要么是在运行中,要么是在运行队列中...

2018-12-25 18:07:07 521

原创 Linux之初识进程

学习Linux我们离不开进程这个概念,那么什么是进程呢?进程:简而言之就是正在执行的程序。,我们应该知道在Linux下一切皆文件,打开一个终端(在Linux看来就是一个文件)就是一个进程。内核观点:进程还可以被描述成由一组元素组成的实体,进程的两个基本元素是程序代码和数据集。假设处理器开始执行这个程序代码,那么这个执行代码的实体就是一个进程。描述进程—PCB进程信息被放在一个叫进程控制...

2018-12-25 14:49:03 170

原创 Linux下实现单色和彩色进度条

当我们在使用电脑或者手机下载东西的时候我们经常会看到类似于下面的东西:这个正在往前走的蓝色横线就是一个进度条,相信大家都不会很陌生,那么我们在Linux下进度条虽然没有这么好看,但是效果都一样哈。那么问题来了我们自己要怎么设计一个进度条呢?在写之前咱们先普及一点知识,我们都知道,Linux下有三种缓冲方式:无缓冲:顾名思义,就是没有缓冲,只要你输入随即就会给你输出出来,典型代表就是s...

2018-12-18 17:56:53 201 1

原创 C语言之函数栈帧

!!!非常重要以前我们知道在调用函数的时候会有寄存器来执行一些操作,常见的有ebp 、esp、eax、ebx、ecx等 而在函数调用过程中也会调用两个寄存器,一个是ebp,一个是esp。ebp指向的是栈底,esp指向的是栈顶。我们那下面这个例子来分析函数调用过程的具体细节:#include <stdio.h>int Add(int x, int y){ int ret =...

2018-11-21 22:37:27 393

原创 Linux下软件安装常见的三种方式(源码安装, rpm安装, yum安装)

一、源码安装1.1提前通知:源码安装是Linux下安装软件最麻烦的,没有之一,一般建议是不用源码安装的,建议采用 yum 安装,简单快捷。而且源码包安装会比 rpm 包安装慢,是因为 rpm 的软件包是根据特定系统和平台而指定的,经常一种程序会提供很多 rpm 包的格式,用户根据系统情况选择适合的 rpm 包直接安装,而源码包相当于通用型,可以是用于多个系统中,所以需要运行configure...

2018-11-20 23:17:29 907 1

原创 动态内存管理----单例模式

什么是单例模式呢?一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。...

2018-11-20 22:01:14 255

原创 C++模板一

前言再写模板之前我们先来回忆一下以前我们在将函数重载是说过,在C++中是可以允许同名函数存在,只要函数参数个数,类型其中之一不同,就可以实现不同的函数功能。看看代码,回忆回忆:int Add(int left, int right){ return left + right;}double Add(double left, double right){ return left +...

2018-11-13 17:51:26 186

原创 动态内存管理常见面试题

学完C语言动态内存管理 和 C++动态内存管理我们就应该深入的去对比和了解两个的特性。一 、 malloc/free和new/delete异同点共同点:都是从堆上开辟空间,最后都需要手动释放不同点:malloc/delete是标准库函数,new/delete是操作符new创建对象时会调用构造函数+开空间 ;delete会调用析构函数,而malloc/free只会开空间,而不会调用构造...

2018-11-05 20:40:52 342 1

原创 C++之动态内存管理

C++动态内存开辟回忆C语言再写C++动态内存开辟之前,我们先来回忆下C语言中是怎么做到动态内存开辟的吧。我们知道C语言是通过 malloc、realloc、calloc三个函数来动态开辟内存空间,虽然都是动态开辟内存空间,但具体操作却又有很大不同,开辟的空间也有差异,总之用起来非常麻烦。如果记得不太清楚具体是怎么用的话,请移步C语言动态内存开辟。主角出场 new、delete我们知道C...

2018-11-05 19:29:07 283

原创 C语言之动态内存开辟

在C语言当中有malloc,calloc,realloc,free三种方式进行动态内存管理,但是由于C语言当中的内存管理有很多的缺陷,稍不注意就会造成内存泄漏的风险,在C++中虽然可以继续使用C中的管理方式,但是不建议使用。 C++未解决这些缺陷提供了自己的内存管理方式,那就是new和delete两个管理内存的关键字。...

2018-11-04 23:54:28 1774

原创 在Linux下除了vim,还有常见的其他编辑器简介

Linux下的编译器1 排行榜老大: vimVim是从 vi 发展出来的一个文本编辑器。它具有代码补完、编译及错误跳转等方便编程的功能,在程序员中被广泛的被使用。和Emacs并列成为Lunix系统用户最喜欢的编辑器–俗称神器。以下编译器不分名次,因为我也没用过,也不知道,^^2.BracketsBrackets也是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码,你...

2018-11-01 15:27:55 9687 1

原创 如何使用命令安装gcc/g++, gdb, vim

1、vimvi/vim 是我们在Linux下常见的多模式文本编译器,现在的Linux版本基本都自带的有vim工具,只是说版本可能不太一样而已,那么我们怎么查看自己虚拟机上的vim是什么版本呢?查看vim版本 指令 在shell输入vim大家看到的结果可能和我的不太一样,因为我这个是配置过的(只针对CentOS7),配置vim链接:,比起自带的好用了很多。原来的版本是下面这样的:然后再输...

2018-10-29 16:56:52 449

原创 vim的安装与配置

vim的安装与配置1.vim的安装#yum search vim //查看vim相关软件信息#yum install -y vim* //在线安装vim2.vim的配置(1)~/.viminfo    在vim中操作的行为,vim会自动记录下来,保存在 ~/.viminfo 文件中。这样为了方便下次处理,如:vim打开文件时,光标会自动在上次离开的位置显示。原来搜索过的字...

2018-10-29 15:44:07 322 1

原创 Linux指令之对目录的基本操作

本文主要介绍了Linux下对目录的创建 删除 拷贝 和 移动几个主要指令

2018-10-24 21:07:19 177 1

原创 Linux入门及基本指令一

我们都知道Linux是一个开源的操作系统,功能非常强大。关于Linux的起源及发展历史和版本在这里我就不再赘述,有兴趣的可以去百度查一查。开始下达命令 Linux下达指令非常方便,在用在命令行(shell)输入你想操作的指令就行了。对上述指令做出解释:一行指令中第一个命令绝对是[command指令]或可执行文件案(例如批次脚本,script)command是指令的名称,例如下面的第...

2018-10-24 18:04:07 237 1

原创 求两个数的最大公约数

简介:最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损。本文采用辗转相除法和更相减损两种方法解答。**辗转相除法:**辗转相除法, 又名欧几里德算法(Euclidean ...

2018-10-21 13:40:59 336 1

原创 求10 个整数中最大值。

学完循环语句之后我们再来写这个程序是不是so easy本文中我给的是数组形定义的十个数字,你们也可以自己输入任意个数字求最大值。#include <stdio.h>int main(){ int max = 0; int arr[10] = { 2, 1, 4, 3, 5, 8, 7, 9, 6, 0 }; int len = sizeof(arr) / sizeof(a...

2018-10-20 21:35:54 159

原创 交换两个数

在交换两个数我们大多数人只知道用第三个变量来实现交换,这里我提供两种不用第三个变量实现交换两个数的方法

2018-10-20 21:17:22 193

原创 打印100~200 之间的素数

题目要求:打印100~200 之间的素数先解释一下什么是素数?素数:素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。知道了定义,我们再来写这个代码就很简单了,看代码:int main(){ int i = 100; for (; i < 201; ++i) { if (1 == i % 2) { printf("%d ", i); } }...

2018-10-20 20:50:32 155

原创 进制转换

这道题是我在ACM上看到的一道算法题,代码实现及结果如下,具体想法和注释都在代码中标识出来了,有什么疑问请留言。#include <iostream>using namespace std;#include <string>// x,y进制数 x>=2,y<=36// s x进制数,每一位的第 10~35 用A~Z表示 为了方便计算str...

2018-09-07 19:14:32 205 4

原创 结构体内存对齐

结构体内存对齐规则: ●第一个成员在与结构体变量偏移量为0的地址处 ●其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处 注意的是:对齐数 = 编译器默认的一个对齐数与该成员大小的较小值。(VS默认的是8 GCC默认的是4) ●结构体总大小为最大默认对齐数(每个成员变量除了第一个成员都有一个对齐数)的整数倍 ●如果嵌套了结构体的情况,嵌套的结构体对齐到自己最大的对齐数的整数倍处,结...

2018-08-23 19:17:27 199 1

原创 C++ 之 多态(非常非常重要,重点在后面)

什么是多态? 顾名思义就是同一个事物,在不同场景下的多种形态。 下面会具体的详细的介绍。

2018-08-16 09:40:33 80947 43

原创 String类之引用计数和写时拷贝

string 类写到这里已经是升级版了,大家能看懂多少算多少,在面试的时候尽量不要给面试官说你懂这个,万一把自己搞糊涂了,岂不是得不偿失。 好了 ,废话到此结束,正文开始。引用计数我们知道,在浅拷贝当中,由于多个对象共用同一块空间,最后释放内存的时候导致同一块内存多次释放而出现问题,那么问题来了,能否保证当多个对象共同使用同一块空间时,该空间只释放一次? 答案当然是可以的了。 引用计...

2018-08-14 23:26:30 263

原创 C++之 String类 浅拷贝

在C语言当中,我们定义一个字符串是怎么定义的呢?char arr="Hello"; //这是一个字符串在字符串里我们有很多相关的操作,比如strlen strcmp strcpy等等,但是有些情况下我们来实现这些函数时有些不方便,C++就给我们提供string这种类型方便了很多操作。在string类中,我们简单的封装了构造函数,拷贝构造函数,赋值运算符重载和析构函数,...

2018-08-14 21:24:25 758 1

原创 String类之 深拷贝

上篇博客我们说浅拷贝存在同一块资源被多次释放的问题,那么这篇博客就是给浅拷贝擦屁股,解决它遗留下来的问题。解决这个问题,我们可以考虑单独给 s2 开辟一块空间,只将 s1 里的内容拷贝到 s2。 看一看我们代码是怎么实现的吧:class String{public: String(const char* pStr = "") { if (NULL ==...

2018-08-14 21:22:53 579

原创 继承体系下派生类的对象模型

看到标题我们首先应该想到的是什么是对象模型? 那好,什么是对象模型呢?对象模型就是对象中非静态成员变量在内存中的布局形式。但是,我们要看这个布局只能在内存中查看,在监视窗口可能不会看到我们想要看到的结果。那么什么又是继承呢? 继承:就是在一个已存在的类的基础上建立一个新的类,而这个新的类又从已有的类获得其原有的特性,这个现象叫做类的继承。 派生:从父类成生出来的子类叫做类的派生。 ...

2018-08-13 11:25:24 339

原创 C语言之大小端详解

什么是大小端呢?如果学完C语言你还不知道这个东西那就说明基础太差了。 假设我们有下面这个例子:int main(){ int a = 1; return 0;}那么这个a在内存中是怎么存储的呢? 编译器给出的结果是: 看到这个结果是不是有点懵逼,a这个变量值是1 ,在内存中存储应该是0x 00 00 00 01才对啊,为什么编译器给出的却是0x 01 00...

2018-08-08 11:32:29 12556 3

原创 C++运算符重载之 日期类

学完运算符重载和友元函数,我们就应该学会运用这些函数,而写一个日期类的代码基本包含了运算符重载的大部分东西。 接下来就看一看这个日期类的到底该怎么写。 首先,简单接介绍一下这个日期类的基本功能:// 当前日期days天后是什么日期? Date operator+(int days); // 当前日期days天前是什么日期? Date operator-(int days); // ...

2018-08-04 16:09:54 2213

空空如也

空空如也

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

TA关注的人

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