自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 负载均衡及软、硬负载简介

主要是再服务端,比如我们访问百度获取一些信息,其实访问的是代理服务器,反向代理服务器将链接负载到百度真实的服务器,我们感受不到代理服务器的存在。在客户端由用户主动发起,例如翻墙软件,客户端通过主动访问代理服务器,通过代理服务器获取外网数据再转发回客户端。通过特定的负载均衡软件(nginx)等实现对请求的分配派发。(所以它的负载均衡策略也就是nginx的均衡策略)硬件负载的效率比较高(但是性价比太高)。它的原理是把目标IP地址改为后台服务器的ip地址。通过硬件实现的负载均衡,数据包转发功能。

2022-12-12 09:57:24 867

原创 MrDoc本地测试及Apache部署

MrDoc apache部署

2022-09-27 14:52:31 712

原创 Linux中IO复用之select,poll和epoll

问题:如果我们先前创建的几个进程承载不了目前快速发展的业务的话,是不是还得增加进程数?我们都知道系统创建进程是需要消耗大量资源的,所以这样就会导致系统资源不足的情况。那么有没有一种方式可以让一个进程同时为多个客户端端提供服务?接下来要讲的IO复用技术就是对于上述问题的最好解答。对于IO复用,我们可以通过一个例子来很好的理解它。(例子来自于《TCP/IP网络编程》)某教室有10名学生和1名老师,这些学生上课会不停的提问,所以一个老师处理不了这么多的问题。那么学校为每个学生都配一名老师,也就是这个教室

2022-04-19 18:50:36 636

原创 C++ 移动语义

在谈论移动语义之前,我们先来了解一下什么是左值和右值。左值和右值c++中,左值代表一个在内存中有确定位置的对象(有地址)。而右值不在内存中有确定位置,比如临时变量、表达式、匿名变量和lambda表达式等。(左值和已被修改 而右值不能)左值是持续的;右值是短暂的,并且右值不会将原对象置于有效状态。PS:一个变量的生命周期在超出作用域后结束。如果一个变量代表一个对象,当然这个对象的生命周期也在那时结束。对于临时对象也是如此,C++ 的规则是:一个临时对象会在包含这个临时对象的完整表达式估值完成后、按..

2022-04-18 00:34:39 433

原创 力扣11、盛最多水的容器

力扣刷题 盛最多水的容器

2022-04-11 22:33:47 305

原创 浅谈静态链接

  在前文源文件到目标文件的过程中,我们知道一个程序的编译分为三步:预编译、编译、汇编。当汇编生成可重定位的二进制目标文件之后,我们就需要将目标文件和库链接起来形成可执行文件。  链接分为两种,一种是静态链接,一种是动态链接。它们的区别是静态链接是在可执行文件之前就进行链接,而动态链接则是在程序运行时进行链接。本文主要简述静态链接及其过程,动态链接后续再说。首先为什么要有静态链接呢?  因为我们在程序开发的过程中,肯定不会只有一个源文件,大型软件往往拥有成千上万个代码模块,这些模块之间相互依赖又相互独

2021-11-06 10:13:32 728

原创 源代码到目标文件的过程--------目标文件里有什么

在谈论目标文件里面有什么内容之前,我们先来看一下,一个程序如何从源代码变成一个目标文件。源代码到目标文件的过程一个程序从源文件到可执行文件要经过四个步骤:预处理编译汇编(链接)我们简单介绍一下。(以下命令全部采用Linux上的GCC编译器命令。我们以hello.c文件为例)预处理:gcc -E hello.c -o hello.i1、删除所有的#define和注释,展开所有宏定义。2、处理所有的条件预编译指令,如#if #ifndef等。3、处理#include指令,将有关头文件

2021-11-05 12:52:33 638

转载 C++中哈希表小结

1、hashtablehashtable 的目的是为了提供任何操作都是常数级别。SGI STL 中, hash table 使用了 开链法 实现的。大致的意思如下图所示:hash table 内的元素为 桶子(bucket),每个桶子里面有很多节点。其实有点像我们前面整理的 deque(双端队列),双端队列主控是个指向指针的指针,而hash table是一个vector;双端队列缓冲区是一块连续内存,像是array,而hash table 则是一个类似的单向链表。一下便是一个node节点的结构:tem

2021-07-22 15:37:52 272

原创 C++中友元介绍

为什么要引入友元?采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,由此提供类与外界间的通信接口。有时候其他类或函数要访问该类的非共有成员,方法为令其他类或者函数成为它的友元。友元函数若类想把一个函数作为它的友元,加一条以friend关键字开头的函数声明语句即可。格式如下:friend <类型> <函数名>;友元可以访问类的私有成员,其本身是定义在类外的普通函数,但是友元的声明只能常出现在类定义的内部。友元不是类的成员也不受

2021-04-08 22:35:38 117

原创 C++中sizeof小结

首先,sizeof是一个操作符。其作用是返回一个对象或类型所占的内存字节数。其返回值为 size_t,依赖于编译系统的值,一般定义为 typedef unsigned int size_t。32位机下:# include <iostream>using namespace std;//空类大小class Empty{};class Son : public::Empty{};//静态成员函数和静态成员class Sfun {public: static int a;

2021-04-08 09:51:48 91

原创 C++中内联函数——inline

在大多数机器上,调用函数要做很多工作:调用前要保存寄存器,并在返回时恢复、复制实参,程序还必须转向一个新位置执行。C++中支持内联函数,其目的是为了解决程序中函数调用问题,提高函数执行效率,用关键字inline放在函数定义的前面可将函数指定为内联函数。关键字inline必须放在函数定义前面才能使函数成为内联,放在声明前面不起任何作用。头文件中声明方法:class A{public: void f1(int x); /** * @brief 类中定义了的函数是隐式

2021-04-07 22:34:01 241

原创 面试题---链表相交

给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如

2021-03-29 21:03:10 94

原创 linux-----线程学习

并行和并发的区别并发(concurrency):在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。(并发是指同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上有多个进程被同时执行的效果–宏观上并行,针对单核处理器)互斥:进程间相互排斥的使用临界资源的现象,就叫互斥。同步(synchronous):进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程

2021-03-16 20:39:12 98

原创 剑指 Offer 13. 机器人的运动范围

***地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m = 3

2020-12-01 15:12:26 99

转载 Linux下的软连接和硬链接

一、引言 1.什么是目录? Linux 文件系统是树状结构的。根目录下存在一系列子目录。目录里边有文件或者子目录。 但问题在于: 目录是什么?文件又是什么?12 文件是:数据 + 属性(比如名字、创建时间、所有者之类)目录是:一个列表,列表中的每一项是...

2020-11-23 20:41:14 118

原创 力扣 1535、找出数组游戏的赢家

*给你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行。比较 arr[0] 与 arr[1] 的大小,较大的整数将会取得这一回合的胜利并保留在位置 0 ,较小的整数移至数组的末尾。当一个整数赢得 k 个连续回合时,游戏结束,该整数就是比赛的 赢家 。返回赢得比赛的整数。题目数据 保证 游戏存在赢家。示例 1:输入:arr = [2,1,3,5,4,6,7], k = 2输出:5解释:一起看一下本场游戏每回

2020-11-14 22:27:58 161

原创 力扣 605、种花问题

力扣 605、种花问题假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出: True示例 2:输入: flowerbed = [1,0,0,0,1], n = 2

2020-11-14 10:59:05 135

原创 剑指offer题03、数组中重复数组

剑指offer题03、数组中重复数组找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例输入:[

2020-10-30 00:37:26 61

原创 C++ const关键字

Const关键字:1、const意味着“只读”;2、Const指定一个变量不被修改,在C++中定义const变量时,必须先初始化;3、对指针而言:常量指针:const int *p;//p(指针指向的内容)不可变,但p(指针)可变(常量指针必须初始化)指针常量:int * const p;//指针P不能被重新赋值 而p(即指针指向的内容)可变4、默认情况下,const对象被设定为仅在文件内有效;如果想在多个文件之间共享const对象,必须在变量的定义前添加extern关键字(extern关键字意

2020-10-14 23:03:25 111

原创 操作系统的发展

操作系统是随着用户需求的变化而变化的,此外,还随着计算机硬件的发展而不断进行完善。操作系统的发展分为以下几个阶段:·人工操作·批处理系统·分时操作系统·实时操作系统·网络操作系统·分布式操作系统·多处理操作系统·嵌入式操作系统1、人工操作用纸带或卡片进行输入输出,计算前手工装入纸带或卡片,计算完成后,手工卸取纸带或卡片;特点:(1)无操作系统(2)用户独占全机,CPU等...

2020-03-04 11:37:44 1125 1

原创 什么是操作系统?

一句话来说,操作系统是控制计算机操作及其资源的系统软件,是用户与计算机交流的一个中介。操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心。是处于用户与计算机系统硬件之间用于传递信息的系统程序软件。例如:操作系统会在接收到用户输入的信息后,将其传给计算机系统硬件核心进行处理,然后再把...

2020-02-26 22:11:45 790

原创 类和对象的概念简析

首先结构化程序设计(如C语言)采用全局变量和函数以及函数间调用组成,算法以函数形式呈现,来对数据结构进行操作。因此,函数和数据结构没有之间联系,并且随着程序的增加,使得程序逐渐难以理解,例如某个数据结构的值不正确时,难以查找是那个函数导致的等一系列问题。 由此,面向对象语言应运而生,面向对象(ObjectOriented )是认识事务的一种方法,是一种以对象为中心的思维方式面向将系统看成通过交互作用来完成特定功能的对象的集合。每个对象用自己的方法来管理数据。也就是说只有对象内部的代码能够操作对象内部的数据

2020-02-25 11:12:02 184

空空如也

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

TA关注的人

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