自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【数据库】关系数据库和非关系数据库的优缺点

注1:数据库事务必须具备ACID特性,ACID是Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性。注2:数据的持久存储,尤其是海量数据的持久存储,还是需要一种关系数据库。...

2019-08-31 21:23:06 395

转载 【数据结构】重温数据结构:理解 B 树、B+ 树特点及使用场景

链接:https://blog.csdn.net/u011240877/article/details/80490663

2019-08-18 16:42:03 344

转载 git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:

场景:因为有事情需回到学校搞毕设,同事在公司说接口代码有问题,需要修改;我用笔记本把代码同步到笔记本,然后做了一些修改、提交。修改完成。第二天我来到公司(公司里用台式机,不是自己的笔记本),忘了先git pull到本地之后,直接在台式机上的代码进行编写,突然想起忘了pull了,然后想用git pull来更新本地代码。结果报错:error: Your local changes to t...

2019-07-10 15:17:31 747

转载 什么是TPS,什么是QPS,区别是什么?

一、TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完...

2019-07-10 14:33:14 449

原创 PB协议的说明与使用

详情请看: http://www.cppblog.com/woaidongmao/archive/2009/06/23/88391.htmlGO语言对PB协议的操作: https://developers.google.com/protocol-buffers/docs/gotutorial...

2019-06-23 11:59:13 1469

转载 DB理论--数据存储方式

从本篇开始呢,我来详细的整理一下mysql。mysql其实还是有点难度的,这里我会认真的,详细的整理到MySQL的各个细节。OK,现在我来开始。首先呢,这里先开始整理数据库理论,为了方便我统一来使用DB表示数据库。比如说什么是DB?为什么要使用DB?什么是数据库泛型?什么是sql?如何访问DB?常用的DB有哪些等等,之后呢关于高级的一点的sql优化等等最后在整理。什么是DB?记...

2019-06-23 11:29:46 896

转载 幂等性验证思想

引入:这段时间在做新渠道的接入,把以前的核心拿过来copy一份进行改造,在进行代码重读的时候,发现了一个好玩的东西,在申请入件的时候,需要经过一步校验,注释上写的是,对于短时间重复提交的验证。当时我就很好奇点了进去,看一看到底是什么东西,然后点开之后大吃一惊,里面做的操作是:取到这笔件的身份证信息,使用其作为标识去查询有没有这个标识的线程,如果有则返回失败,这笔件短时间内重复提交了,如果没有...

2019-06-05 16:45:25 3199

转载 【C++】关于vector<bool>

vector<T>标准库模版类应该是绝大多数c++程序员使用频率比较高的一个类了。不过vector<bool>也许就不那么被程序员所了解。关于vector<bool>不尝试研究一番,一般还不太容易知道其中蕴含的问题。首先得明确一点,那就是vector<bool>是vector<T>的特化版。这个特化版本要解决的问题就是存储容量的问题。...

2019-05-04 20:40:16 1506 3

转载 【C++】构造函数、析构函数抛出异常的问题

转自:http://www.cnblogs.com/fly1988happy/archive/2012/04/11/2442765.html1. 抛出异常1.1 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为: throw 表达式;如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,...

2019-04-28 21:50:42 502

原创 【计算机网络】cookie和session的区别

一、cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当...

2019-04-22 20:00:56 287

转载 【操作系统】系统调用的概念

“操作系统”通常包含以下两种含义:1、表示完整的软件包,包括用来管理计算机资源的核心层软件,以及附带的所有标准软件工具,诸如命令行解释器、图形用户界面、文件操作工具和文本编辑器等;2、狭义上的操作系统是指管理和分配计算机资源(如CPU、RAM和设备)的核心层软件。内核负责管理分配计算机资源,作为计算机和用户之间的沟通桥梁而存在。因此就有内核态和用户态的概念。执行硬件指令可以在两种状态间...

2019-04-20 13:01:30 1116

原创 【算法】对于大数的操作

1.大数相加void Add(string& s1, string& s2){ int len1 = s1.size(); int len2 = s2.size(); string ret; //保存结果 reverse(s1.begin(), s1.end()); //反转以后比较好算 reverse(s2.begin(), s2.end()); ...

2019-03-22 21:03:25 379

转载 【C++】构造函数中必须通过初始化列表来进行初始化情况

1、类成员为const类型2、类成员为引用类型#include <iostream>using namespace std;class A{public: A(int &v) : i(v), p(v), j(v) {} void print_val() { cout << "hello:" << i <&lt...

2019-03-20 18:37:11 567

转载 【Linux】多线程和多进程 及其应用场景

一. 两者区别进程是分配资源的基本单位;线程是系统调度和分派的基本单位。属于同一进程的线程,堆是共享的,栈是私有的。属于同一进程的所有线程都具有相同的地址空间。多进程的优点:①编程相对容易;通常不需要考虑锁和同步资源的问题。②更强的容错性:比起多线程的一个好处是一个进程崩溃了不会影响其他进程。③有内核保证的隔离:数据和错误隔离。对于使用如C/C++这些语言编写的本地代码,...

2019-03-10 14:57:35 614

转载 【C++】const 指针与指向const的指针

最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~1.const指针的定义:  const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下:type *const 指针名称;  声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含...

2019-03-06 11:52:35 375

原创 【C++】常见的内存泄漏及解决方法

之所以撰写这篇文章是由于前段时间花费了非常大的精力在已经成熟的代码上再去处理memory leak问题。写此的目的是希望我们应该养成良好的编码习惯,尽可能的避免这种问题,由于当你对着一大片的代码再去处理此类的问题,此时无疑添加了解决的成本和难度。准确的说属于补救措施了。一. 什么是内存泄漏(memory leak)? 指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内...

2019-02-26 18:19:47 2149

原创 一次完整的HTTP请求是怎样的??

写完了HTTP服务器项目,但是对于一个完整的HTTP请求还不是很懂,在这里总结一下,当然这里的总结只是将每个过程进行简化,并没有去深入讲解(实属小弟实力不足啊)   我们都知道,如果我们打开浏览器/www.baidu.com/几秒后就会跳转出百度的首页,接下来就讲解一下这个过程!!1.解析URL    首先浏览器会检测这个url是否正确存在,如果不合法,将会返回一个默认的搜索引擎。...

2019-02-26 17:49:24 435

原创 【Linux】线程安全的单例模式以及计算密集型线程和IO密集型线程

一.单例模式1.含义 一个类只能实例化出一个对象2.单例模式实现的两种方式饿汉模式 我们在程序运行之初就将对象创建好,就是说不管你将来用不用,程序启动时就创建一个唯一的实例对象。是以空间换时间的做法。这样程序运行中想要调用这个实例时都可以直接使用。举个例子:就像是一个人在吃完饭后立刻就去将碗洗了,这样以便于在下一次开饭的时候可以马上吃到饭。 ...

2019-02-16 15:04:25 262

转载 【linux】send和recv函数解析

1. send函数int send( SOCKET s, const char FAR *buf, int len, int flags );  不论是客户端还是服务器端应用程序都用send函数来向TCP连接的另一端发送数据。客户端程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的:第一个参数指定发送端套接字描述符;第二个参...

2019-02-15 20:52:38 541

原创 【C】堆区和栈区的区别

 一.程序内存的区域​二.堆和栈的区别一.程序内存的区域                                                                           1、栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,内存的分配是连续的,类似于平时我们所说的栈,如果还不清楚,那么就把它想成数组,它的...

2019-01-26 12:43:45 2486 2

原创 【C++】智能指针(后续)

上篇文章我们讲了几种智能指针原理以及实现方法,这篇文章我们主要讲一下shared_ptr的线程安全问题和循环引用问题。目录 一.线程安全问题 二.循环引用一.线程安全问题shared_ptr的线程安全问题存在两方面1.由于shared_ptr的原理是多个对象共用引用计数,那么在两个线程的智能指针同时进行++或者--操作时就会出现问题。假设引用计数的初始值是1,在两个线...

2019-01-19 16:26:53 239

原创 【C++】面向对象的三大特性

封装:封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正是由于封装机制,程序在使用某一对象时不需要关心该对象的数据结构细节及实现操作的方法。使用封装能隐藏对象实现细节,使代码更易维护,同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。继承:  继承来源于现实世...

2019-01-15 18:13:07 1059

原创 【C++】const修饰的成员函数

在日常学习中总是碰到const修饰的成员函数,自己也总是稀里糊涂的,只能是靠着编译器来区分const和非const成员函数的相互调用关系,今天在这里总结以下。一.const修饰成员函数的格式在成员函数的后边加上const void display() const { swap(5); cout &lt;&lt; "display()" &lt;&lt; endl;...

2019-01-14 15:43:37 3177 5

原创 【C++】智能指针

目录一.什么是智能指针?二.为什么需要智能指针??三. 思维导图​ 四.模拟实现三个智能指针1.auto_ptr 2.unique_ptr3.shared_ptrshared_ptr的线程安全问题和循环引用的解决方法下篇文章在做分享一.什么是智能指针?     智能指针包括两部分:      1.RAII          RAII(Resou...

2019-01-13 17:34:17 229

转载 【Linux】vim的简单配置

vim是从 vi 发展出来的一个文本编辑器。功能丰富,在程序员中被广泛使用,而且可以根据自己需要对其进行配置,下面我们来介绍一些vim的基本配置。 首先将你的Linux切换到超级用户,输入命令 su,输入密码再回车切换到root用户,cd进入当前用户主工作目录,输入vim .vimrc进行vim配置. 以下是我的配置文件,值得说明的一点是最后一个设置set filetype=c是设置默认...

2018-12-09 19:12:45 459

原创 Git上传代码时碰到的问题及解决方法

1.git add . 出现问题 解决方法a.首先用git  status查看一下状态 b.解决方法很简单$ git add -A  #或 git add -all 2.git push 出现问题解决方法首先git pull origin master在用 git push origin master 以后会持续更新遇到的问题 ...

2018-12-07 23:27:38 785

原创 【操作系统】大小端问题

在面试中经常会遇到被问,大小端问题,如何去判断是大端还是小端,以前老是记不住,今天总结一下!!一.首先了解一下什么是大小端模式???大端(存储)模式:一个数据的低字节内容存放在高地址中,高字节的内容存放在低地址中。(简单的说就是:低字节,高地址。高字节,低地址。----->大端) 小端(存储)模式:一个数据的低字节内容存放在低地址中,高字节的内容存放在高地址中。(简单的说就是:...

2018-11-28 09:59:22 1796

转载 【Linux】HTTPS的理解

本文是我在今日头条上看到的,希望大家可以共同学习HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)简言之就是HTTP的安全版本,其提供安全的主要是SSL,SSL是应用层和传输层之间添加一层(SSLSecure Sockets Layer 安全套接层)来提供安全通信;前面Google的Chrome浏览器将不是HTTPS的URL...

2018-11-25 21:12:06 300

原创 【Linux】HTTP的理解

HTTP(超文本传输)协议是存在于应用层的协议应用层:负责应用程序之间的数据沟通(常用的协议有:HHTP,FTP,SSH)一.首先我们认识一下URL(统一资源定位符)    通俗的将URL就是我们日常生活中访问的网站。例如:www.baidu.com。    根据下图我们可以很清楚的认识到URL的组成。(可以看博客:https://blog.csdn.net/ergoug...

2018-11-24 21:04:25 315

转载 【Linux】内核态和用户态

一.定义1.内核态:当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。2.用户态:当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用...

2018-11-09 21:47:36 3178 1

原创 【C++】多态的理解

一.多态的概念简单的讲就是同一事物在不同条件下所呈现出来的不同形态举例:火车站的同一窗口成人售票就是全价票,学生就是半价票。这就是同一事物,但是在不同的条件下可以呈现处不同的形态。有点见人说人话,见鬼说鬼话的意思。二.多态的实现#include&lt;iostream&gt;#include&lt;Windows.h&gt;using namespace std;cla...

2018-11-09 16:29:42 462

转载 【数据结构】有关二叉树的面试题

目录二叉树节点定义1、求二叉树中的节点个数2、求二叉树的深度3、前序遍历,中序遍历,后序遍历4、分层遍历二叉树(按层次从上往下,从左往右) 5、将二叉查找树变为有序的双向链表6、求二叉树第K层的节点个数7、求二叉树中叶子节点的个数 8、判断两棵二叉树是否结构相同 9、 判断二叉树是不是平衡二叉树10、求二叉树的镜像11、求二叉树中两个节点的最低公共祖...

2018-10-31 23:28:48 427

原创 【Linux】Linux中的0644 和 0755的权限

Linux 系统中采用三位十进制数表示权限,如0755, 0644ABCD  A- 0, 表示十进制 B-用户 C-组用户 D-其他用户  利用 ls -l可以查看文件的权限---  -&gt; 0   (no excute , no write ,no read)--x  -&gt; 1   excute, (no write,...

2018-10-31 23:07:08 12306 3

原创 【C++】四种强制类型转换

强制类型转换在有些地方起到了很大的作用,在看C++中的强制类型转换时,我们首先看一下我们熟悉的C语言中的强制类型转换。一.C语言的强制类型转换C语言中强制类型转换分为两种:隐式类型转换(相似类型转换,及相关类型的转换,这里和类型提升也优点相似) 显示类型转换(不相关类型之间的转换,比如指针和整型)int main(){ int i = 1; double b = i;...

2018-10-30 12:41:26 4018 2

原创 【C++】struct和class的区别

       在C++中我们可以看到struct和class的区别并不是很大,两者之间有很大的相似性。那么为什么还要保留struct,这是因为C++是向下兼容的,因此C++中保留了很多C的东西。一.首先看一下C中struct1.struct的定义struct A{ int a; int b; //成员列表};注意:因为struct是一种数据类型,那么就肯定不能定义...

2018-10-27 16:14:03 35391 7

原创 【Linux】TCP的三次握手,四次挥手,以及常见的有关面试题

首先我们要清楚TCP是传输层的协议,传输层的功能就是负责端到端的传输。接下来看一下TCP的三次的三次握手和四次挥手的流程图一.TCP的三次握手在进行TCP的三次握手建立连接之前,客户端和服务端都要做一定的工作。初始化工作:1.客户端:客户端刚开始处于CLOSED状态,首先要创建socket,然后进行accept的连接请求。(这里客户端不需要手动的绑定地址,因为客户端在发送数...

2018-10-25 20:50:00 632

转载 【Linux】TCP SYN泛洪攻击

尽管这种攻击已经出现了十四年,但它的变种至今仍能看到。虽然能有效对抗SYN洪泛的技术已经存在,但是没有对于TCP实现的一个标准的补救方法出现。你可以在如今的操作系统和设备中找到保护应用层和网络层的不同解决方案的不同实现。本篇论文详细描述这种攻击并展望和评估现在应用于终端主机和网络设备的对抗SYN洪泛方法。1 基本的漏洞SYN洪泛攻击首次出现在1996年。当时Phrack杂志中描述了这种攻击...

2018-10-25 20:48:13 1321

原创 【Linux】GDB的使用总结

在使用Linux的时候利用GDB调试程序是一件很重要的事,在这里就将GDB调试中所用到的命令进行一个总结在使用GDB的前提条件:要在生成二进制代码时 +g (gcc -g test.c -o test)在生产文件后在利用命令进行调试: gdb  + 生成二进制文件名(test)  ...

2018-10-24 12:16:50 171

原创 【C++】new和malloc的区别

     之前的博客中也有写过new和malloc但是没有系统的整理过。因为最近看面经经常会碰到面试官会问new和mmalloc的区别,所以在这里整理一下,希望对大家有帮助。new和malloc的区别可以从以下几方面进行阐述: 最大的区别:new在申请空间的时候会调用构造函数,malloc不会调用 申请失败返回:new在申请空间失败后返回的是错误码bad_alloc,mallo...

2018-10-18 16:56:59 1030

原创 【C++】宏(#define)和内联函数(inline)的理解以及区别

宏(#define)和内联函数(inline)的理解以及区别: 宏        缺点:              1.宏没有类型检测,不安全              2.宏是在预处理时进行简单文本替换,并不是简单的参数传递(很难处理一些特定情况。例如:Add(z++))              3.使代码变长              4.宏不能进行调试    ...

2018-10-14 19:26:30 1146

空空如也

空空如也

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

TA关注的人

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