自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习过程中写的思维导图

一个代码产生的过程static关键字

2020-05-14 20:15:57 331

原创 C++ 博客专栏汇总 面试学习用 非突击问答式

虚函数表的原理1虚函数表的原理2C++一些面试汇总函数重载和函数重写纯虚函数c++的类型兼容性规则c++左值和右值智能指针1智能指针2lambda表达式struct和class的区别struct和union的区别struct中的字节对齐C++中的四种转换符的使用...

2020-03-28 23:21:33 250

原创 volatile关键字讨论

而通过上面的讨论之后,看了另外一篇讨论的文章其中提到如下:确实,其中提到了声明了vlatile之后,编译不对该变量做出任何上下文有关的优化,也就是其成了“可能是容易变的”,也就不能优化入寄存器,但其不能保证多线程所需要的【实际执行时的顺序符合预期】,也就是没有同步的语义在里面。依然在多线程上略微显得有些乏力。还可以说一个很直观的历史因素——volatile关键字出现时,多核cpu和线程都还没出现的,它的出现和并发编程毫无关系,能凑巧解决一些并发问题也只是撞大运文章详情可以看谈谈 C/C++ 中.

2021-05-13 19:16:43 94

原创 TTl是什么?

TTl=time to live这应当从网络的层次讲起:首先,PING命令是属于ICMP协议规定的,而ICMP是内嵌于IP层的,因此,可以说,PING是网络层的命令。PING的实现过程很简单,命令将引发IP层发送一个简单的IP包,而目的方收到这个包之后,将源和目的地址做一下交换,重新发出这个包即可,当然还要加一些超时的机制。简单来说,为了避免数据包在网路上的传送路径造成死循环或者无休止的投递下去,每个ip数据包都包含乐一个寿命计数器,这个就是数据包的的生存时间TTL,也叫hop count,只要一个

2021-04-07 21:58:54 2412

转载 环形均分纸牌

2020-11-25 21:33:25 127

原创 使用Priority_queue中遇到的问题

在一个下午,我刷到了一个题。里面需要使用一个小根堆,然而里面的需要存的是一个类(或者结构体),堆的排序方式是按照这个类的第三个int类型的成员进行排序,这样当然要重载小于大于符号,于是我就写,竟然不知不觉的搞了半天,这要是在面试的时候基本上可以宣告 “你可以走了”那我们来看一看我的心路历程:class Solution {public: int kthSmallest(vector<vector<int>>& matrix, int k) { priority_q

2020-07-03 18:46:19 1403

原创 微信的红包算法 了解一下两种就可以了

1.微信红包算法代码大致意思是这样的:假设有100元钱,分给十个人。那么第一个人获得红包大小怎么计算呢?100/10 = 10元。这是期望值。从0.01到20的区间中(其中20=10乘以2)随机抽取一个数,就是第一个人获得红包的大小。假设第一个人获得了15元,那么剩下的85元平均分给9个人,这九个人平均获得红包大小为9.4元,那么第二个人的红包大小均匀分布于0.01元到18.80元的区间中,依次类推。算法保证最后一个人至少抽到0.01元。微信红包的代码c++class LeftMoneyPackage

2020-06-18 13:06:11 2912

原创 一个String类的建简易实现

因为一个string类的实现很能反应一个c++程序员的水平,希望以后自己能够多动手写一写这些东西;其中比较重要的那几个构造函数和析构函数;如果能够把ostream的重载写出来将会更加流弊class String { friend ostream& operator<<(ostream& out, const String& str) { //这个输出符重载和friend很重要 //理解为什么要加用friend,因为不用friend人家以为你是重载的一元运算符

2020-06-17 20:44:16 129

转载 TCP性能的提升

文章目录TCP三次握手的性能提升调整SYN报文重传次数调整SYN半连接队列长度调整SYN+ACK报文重传次数调整accept队列长度绕过三次握手TCP四次挥手的性能提升明白shutdown和colse的区别主动方的优化被动方的优化TCP 数据传输的性能提升TCP连接滑动窗口是怎样影响传输速度的?如何确定最大的传输速度?TCP三次握手的性能提升调整SYN报文重传次数echo 5>/proc/sys/net/ipv4/tcp_syn_retries每次重传的时间点是上次重传的两倍调整SYN

2020-06-13 21:03:14 612

原创 C++该如何内存泄漏检测

内存泄漏检测MFC框架下有默认有检测手段-每一个cpp都有以下内容 #ifdef _DEBUG #define new DEBUG_NEW #endif 而DEBUG_NEW这个宏定义在afx.h中,就是它帮助我们解决这个问题这样如果泄露就可以通过输出窗口看见。纯C++ ,建议看一下MSNN里面Debug Routines内容其中最重要的一个是在头文件中包含crtdbg.h 然后调用_CrtDumpMemoryLeaks()就可以在输出窗口中打印;但是他是在调用 _crtDump

2020-06-13 20:48:47 222

原创 银行家算法 简易版纯代码

int Available[10]; //可使用资源向量int Max[10][10]; //最大需求矩阵int Allocation[10][10] = { 0 }; //分配矩阵int Need[10][10] = { 0 }; //需求矩阵int Work[10]; //工作向量int Finish[10]; //是否有足够的资源分配,状态标志.

2020-06-06 13:57:18 390

原创 effect C++ 55条

effect C++ 55条1.Perfer consts,enums,and inlines to #define;对于单纯的常量,最好以const对象或则enums替换#define;对于形如函数的宏,最好改为inline函数替换#define;记住:const常量对象一般不会生成空间分配,而是等到了需要取地址等操作的时候才会分派空间;而enums有点类似define,一直都不会分配空间;使用define只是简单的进行替换工作,对于一个常量来说,在debug的时候只会显示数值而没有变量名,d

2020-06-04 18:44:31 210

原创 OS and Database

OSDMA和cache一致性问题强一致性、顺序一致性、弱一致性和共识操作系统为什么要分用户态和内核态用户态和内核态的理解和区别进程和线程切换开销线程安全是什么如何实现线程安全堆区和栈区的区别协程银行家算法银行家算法2内存映射内存对齐...

2020-05-27 21:57:53 152

原创 STL 侯捷(二)

第三讲算法的效率在于他是否能够判断出迭代器的分类(通过提问iterator实现);仿函数----函数对象----记住是一个对象 像一个函数,而不是一个类名。仿函数一般会继承一些父类,比如继承 unary_funtion binary_funtion;但是只是继承typedef的一些名字而已,代表已经继承了体系里面了;然而就是这些继承的名字,却是仿函数的可适配的条件;那么这些继承 名字用来干嘛呢?这就和iterator和算法之间的“提问”和“回答”一样,是告诉适配器的一些信息;适配器就能通过这些信息进一

2020-05-19 21:23:32 127

原创 C++问答笔记(一)

文章目录c和c++有什么不同之处?面向对象OOP的特点:一个对象和其成员大小的关系?左值和右值的定义智能指针lambada表达式c和c++有什么不同之处?其实c和c++设计的哲学是不一样的,两者的取舍程度也是不一样的,所以不同的程序员和软件项目都会有不同的选择。那么c和c++相比,c具备着编译速度更快,显示程序描述的细节,如果更加厉害的程序员,可能写一个c就知道编译后汇编语言的结构,并且引导编译器进行优化。而c++包含了c的绝大部分功能,语法相对简洁。编程的思想也是整体的面向对象,但是c程序其实写大了也

2020-05-12 21:52:16 346

转载 do {...} while (0) 的用途汇总

do {…} while (0) 的用途汇总(欢迎补充)转载于原博主在一些Linux内核和其它的开源代码中,我们经常看到像下面这样的代码:do{ ... }while(0)该代码片段并非循环,这样想想似乎使用do…while没有任何意义,那么为什么还要使用它呢?实际上,do{…}while(0)的用途并不仅仅是优化你的代码。经过一系列的调研和探索,我们总结出它的一些用途如下...

2020-05-04 09:17:03 278

原创 面试高性能一般会问的几个问题

面试高性能一般会问的几个问题1.多进程和多线程的并发编程各自的优势线程的进程在单核的芯片上都是可以进行运行的,这就涉及到了一个切片的概念,那么切片成本的不一样多进程的好处就是地址空间相互独立,这是一个进程不影响另外一个进程,但是在进程之间的通信就比较困难;内核态进行切换2.协程为什么能够的实现更高的并发协程为什么会更很快:切换速度较快,在用户态进行切换非阻塞编程有关:所有的一套API...

2020-05-03 21:24:26 1010

原创 背包问题

背包问题大锅饭​ 每次看见背包问题之后都会忘记怎么做接下来我们来看看怎样解决一些经典的背包问题以及其优化的思路首先背包分为以下几种:1.01背包问题: 给你一个背包体积容量,每一个物品只能选择和不选(每个物品有体积和价值,我们追求最后选择 完成之后的价值最大情况)2.完全背包问题:同上,只是每一个物品可以选择无限次数3.多重背包问题: 给你一个背包体积容量,每一个物品有有限的选择次数4...

2020-04-22 17:29:27 111

原创 STL 侯捷 (一)

STL第一讲由于这一讲解比较零碎,我记录的也比较的零碎:标准库和标准模板模板的概念,前者包含了后者,前者还包括了一些零碎的函数库。这一讲主要讲解了我们STL之间的关系:STL常见的6大部件就是容器,适配器,分配器,算法,迭代器,仿函数;解释一下我们其中关系,我们的容器内存管理是由我们的分配器完成,并不需要我们自己进行内存的管理,而其实我们可以跨过容器直接对分配器进行操作,但是其实没有这...

2020-04-21 21:45:38 175

原创 离散数学知识点(下)

快速幂思想:反复平方法求 a^k mod p,时间复杂度 O(logk)。int qmi(int a, int k, int p) { int res = 1 % p, t = a; while (k) { if (k&1) res = (long long)res * t % p; //防止数值太大越界 t = (long long)t * t % p;...

2020-04-20 15:20:09 834

原创 离散数学相关知识(上)

1.质数:质数的判定:试除法:bool is_prime(int n){ if(n<2) return false; for(int i=2;i<n;i++) if(n%i==0) return false; return true;上面的时间复杂度为o(n)的吗,很暴力我们对着上面的式子进行优化,结合质数的性质,质数都是成对出现的。所以我们只需要列出最小...

2020-04-20 15:07:40 633 1

原创 图的最短路的几种算法

dijkstra朴素算法思想:1: 用临接矩阵来存储,因为是稠密度的,我们算法复杂度就是O(n^2)(我们在进行存便之间的关系的时候,已经排除掉重边的干扰了,存的都是最小值)2: 每一次找出我们存活点当中的距离最小值3: 利用这个最小值去更新所有点的其它点的最小值4: 更新完成之后,这个点的使命已经完成,将其杀死;5: 以上的动作重复n-1 次;就可以了dijkstra推优化的算法...

2020-04-17 10:42:42 203

原创 UNP简单学习(包含多路转接和线程池)

课堂笔记复习视频:https://www.bilibili.com/video/BV1iJ411S7UA?p=65文章目录课堂笔记**1.TCP状态转换****2.端口复用****3.半关闭状态****4.多路IO转接服务器****5.poll**:**6.read的返回值****7.epoll****8.事件模型****9.epoll 反应堆模型 (libevent 核心思想实现)****1...

2020-04-11 22:07:55 406

原创 libevent

笔记文章目录笔记**UDP**UDP实现C/S模型本地套接字:libevent库libevent框架libevent 常规事件libevent 未决和非未决libevent buffereventUDPUDP实现C/S模型 recv()/send() 只能使用TCP通信,替代read\write;自身就是一个并发处理,本来就是没有建立连接。server: socket()----&...

2020-04-11 20:21:08 335

原创 linux 系统编程资料

linux 系统编程资料链接:https://pan.baidu.com/s/1iHwt3RoCYgN8_dfEDcj4FA提取码:6bj7复制这段内容后打开百度网盘手机App,操作更方便哦

2020-04-08 17:22:50 158

原创 apue 第十二章 线程控制

线程控制文章目录线程控制线程的属性设置线程是否是分离状态(一创建就是分离,而不是调用pthread_detach函数进行分离)设置线程的一些栈属性(栈的大小,栈的最低地址等等)并发度:控制着用户级线程和内核线程之间的关系线程属性—取消选项明白有一个“取消点”的概念:这属于延迟取消,取消点可以是一些系统默认函数,也可以自己设置相对于延迟取消,那么也可以调用函数设置为异步取消也可以设置成disabl...

2020-03-22 11:08:02 173

原创 apue 第十三章 守护进程

守护进程文章目录守护进程守护进程的特征父进程ID为0 的进程通常为内核进程编程的规则1.将文件的创建屏蔽字设置为02.调用fork,然后让父进程退出3.调用一个setsid创建一个新会话4.改变继承来的目录,变为根目录5.关闭我们不需要的文件描述符6.某些守护进程打开/dev/null使其具有文件描述符出错记录三种产生日志的消息的方法单实例进程在任何时刻只允许运行该守护进程的一个副本,不能同时运...

2020-03-22 11:07:29 131

原创 apue 第十四章 高级IO

高级I/O文章目录高级I/O非阻塞I/O低速系统调用:可能使得进程永远阻塞的一类系统调用读写磁盘文件虽然可能会短时间的阻塞,但也不是低速系统调用非阻塞I/O可以通过两种方式获得不同的设备的阻塞程度不一样书上的实验方式被称作轮询,占用CPU资源较大字节范围锁(record locking)与读写锁的区别一些实现细节锁的隐含释放和继承I/O多路转接为啥需要多路转接?什么是多路转接技术select 和...

2020-03-22 11:05:29 218

原创 在C/C++中,如何得到int型能表示的最大值,最小值?

第一种方法:在limits.h/climits中,定义了INT_MAX,INT_MIN,可以直接使用第二种方法:如果要通过程序得到,比较简单的一种方法是靠操作内存中的二进制位了,具体需要了解数值在内存中的表示,牵涉到数据的原码、反码、补码。可以#define MAX_INT (((unsigned int)(-1))>>1) #define MIN_INT M...

2020-03-02 16:20:59 1288

原创 直观的打印一颗二叉树

直观的打印一颗二叉树在节点值两边加上特定的字符串标记来区分孩子和位置以及之间的位置关系:HXH:表示头结点 X;vYv:表示节点 Y 是左下方最近节点的孩子;Z:表示节点 Z 是左上方最近节点的孩子遍历树的顺序为:右子树 -> 根 -> 左子树;避免节点值长度不同影响对其,规定每个节点值长度为固定值(这里规定为 10)最直观的打印二叉树public class Prin...

2020-03-02 13:49:29 347

转载 文章转载的方法

起意&nbsp...

2020-03-01 17:23:01 248

原创 编程刷题的一些技巧

刷题当中遇到的一些编程技巧1.如何获得一个二维数组的行数和列数;int m=matrix.size(),n=matrix[0].size();2.记住 在一个二维数组当中,第一步是判断数组是否为空int m=matrix.size(); //取出行的数目if(m==0) return false; //如果行0 ,说明是个空数组,不为0,接下来才是取列数int n=matrix...

2020-02-26 21:38:10 882

原创 如何修改主机名 以及如何配置网卡

VMware 如何修改主机名.**方案一:仅当前登录有效,重启后失效**直接在命令行执行命令,一步完成:hostname master2.方案二:修改配置文件,永久有效2.1修改/etc/sysconfig/network中的hostname首先看看自己在/etc/network 文件vi /etc/sysconfig/networkHOSTNAME=master #修改...

2020-02-26 14:44:26 667

空空如也

空空如也

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

TA关注的人

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