自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载

MySQL/InnoDB乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁MySQL存储引擎查看:SHOW ENGINES乐观锁:用数据版本记录机制实现,这是乐观锁最常用的一种实现方式。何谓数据版本?即为数据增加一个版本标识,一般是通过为数据库表增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段的值一同读出,数据每更新一次,对此version值加1。当我们提...

2018-09-29 17:16:22 226

原创 ACID

事务一组原子性的SQL查询,或者说是一个独立的工作单元。事务内的语句要么全部执行成功,要么全部执行失败。start transactionSELECT balanbce FROM checking WHERE customer_id = 1011;UPDATE cheching SET balance = balance-200.00 WHERE customer_id = 1001;...

2018-09-23 18:05:13 213

原创 IP协议

IP协议:网络层的核心协议,IP协议根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP协议就为它寻找一个合适的下一个路由器,并将数据包交付给该路由器来转发,并多次重复这一过程,直至数据包到达目标主机,或者因发送失败而丢弃。IP服务的特点:它为上层协议提供无状态、无连接、不可靠的服务。 ①无状态:IP通信的双方不同步传输数据的状态信息。缺点:无法处理乱序和重复

2018-09-06 17:50:46 254

原创 TCP协议

TCP协议:TCP/IP协议族中的另一个重要协议,它更加的靠近应用层,在应用程序中具有更强的可操作性。一些重要的socket选项都和TCP协议相关。TCP服务的特点:①面向连接、字节流和可靠传输。②使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写,双方都必须为该连接分配必要的内核资源,以管理连接状态和连接上数据的传输。TCP连接是全双工的,双方的读写可以通过一个连接进行,完成数据

2018-09-06 17:50:21 159

原创 堆区和栈区

C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack): 由编译器自动分配释放,存放函数的参数值,局部变量的值等。 2、堆区(heap): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由系统回收 。 3、全局区(静态区static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区

2018-08-17 12:37:44 370

原创 select和poll和epoll

什么是I/O复用:使应用程序同时管理多个文件描述符,以提高程序的性能。select在一段指定时间内,监听用户感兴趣的文件描述符上的事件(可读、可写、异常)。//select API:#include int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,

2018-08-17 12:37:23 155

转载 new/delete和malloc/free的区别

new/delete和malloc/free的区别:属性   new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。参数   使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。返回类型   new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹

2018-08-17 12:36:44 126

原创 第一次面试

今天,人生第一次面试,特别紧张。 也在今天找到了自己的弱势之处,虽然很惨,却也获益良多。 主要列出今天的两个面试题,可能在大牛看来很简单,但对于我这个没有刷过题,也不怎么聪明的人来说很难。 目的在于知会后来人吧!主要看思路,代码很好实现。 <1>在1~100之间的100个数,无序,无重复,将其中一个数替换为-1,请在O(n)时间复杂度和O(1)空间复杂度下找到这个被修改的数...

2018-08-17 12:34:29 159

原创 asmlinkage 的作用

asmlinkage 的定义(/usr/include/asm/linkage.h里面):#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))attribute是关键字,是gcc的C语言扩展,regparm(0)表示不从寄存器传递参数如果是_attribute_((regparm(3))),那么调用函数的时候参数不是...

2018-08-17 12:33:24 511

原创 C/C++的区别

一、默认值C语言中没有默认值,而C++中有默认值。 C++中默认值从右向左给出,必须从最右端开始。默认值的效率也要高于传参。(立即数直接压栈) 注:每个参数的默认值只能给一次,不可重复给。二、内联函数inline没有普通函数的栈帧开辟和回退的过程。 inline有时候被称为更安全的宏,因为在编译阶段处理时,会直接将函数的代码在它的调用点展开,从而不产生函数调用的开销,也不产

2018-08-17 12:32:19 152

原创 最大连续子序列

找到一个数组中的连续子数组(包含至少一个数字),该数组的总和最大。 例如,给定数组[-2,1,-3,4,-1,2,1,-5,4],邻接子数组[4,-1,2,1]有最大的总和6。分析: 当从头到尾遍历这个数组的时候,对于数组中的一个整数,我们可以将其加入之前的SubArray,也可以另起一个SubArray。 <1>若之前SubArray的总和...

2018-04-24 13:37:30 158

翻译 LeetCode---子集

一、给定一组不同的整数s,返回所有可能的子集。 注:<1>子集中的元素必须是非降序的。 <2>解决方案集不能包含重复子集。例:如果s= [1,2,3],一个解决方案是: { [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[] }#include <iostream>#include <vector>#...

2018-04-22 20:13:11 296

翻译 LeetCode---给定一个排序的整数数组,找到给定目标值的起始位置和结束位置。

给定一个排序的整数数组,找到给定目标值的起始位置和结束位置。 算法的运行时复杂度必须是O(log n)的顺序。 如果在数组中找不到目标,返回[-1,-1 ]。 例如,给定[5, 7, 7,8, 8, 10 ]和目标值8,返回[3, 4 ]。#include <iostream>#include <vector>#include <algorithm&...

2018-04-22 19:58:05 3083

原创 KMP

一直对KMP有一种朦朦胧胧的感觉。今天看了几篇博文,得以理解。 http://www.cnblogs.com/yjiyjige/p/3263858.html https://blog.csdn.net/yutianzuijin/article/details/11954939/ https://www.cnblogs.com/tangzhengyue/p/4315393.html在KMP...

2018-03-30 14:51:29 202

原创 慢启动、拥塞避免、超时重传、快速重传、快速恢复、滑动窗口

流量控制由于数据的发送方和接收方并不一定有相同的数据处理能力,为了避免数据发送过快而超过对方的接收能力,TCP采用了流量控制机制,接收方在TCP的包头里面通告了发送方自己的接收窗口,也就是还能够接收的最多的数据包,这样TCP就不会过度发包而超过对方的接收能力。滑动窗口:TCP流量控制的一种手段。这里说的窗口是指接收通告的窗口(RWND),告知对方本端的TCP接收缓冲区还能容纳多少字节的数据...

2018-03-18 13:41:32 1838

翻译 新的开始——排序数组的重复数字

给定一个排序数组,删除重复的位置,使每个元素只出现一次。并返回新长度。 不要为另一个数组分配额外的空间,您必须在内存中执行此操作。 例如,给定的输入数组{1,1,2,2,2},函数返回长度为2,数组为{1,2}。//删除重复数字#include <iostream>#include <vector>#include <algorithm>us...

2018-03-17 22:23:39 254

原创 智能指针

为什么会有智能指针?在c++中,new总是和delete配对使用,而有时候人们总是会把delete忘掉,或者说没有放在合适的位置上,从而导致内存泄漏。智能指针就是用来解决这样的问题的。举例说明。void func(const std::string &str){ std::string *ps = new std::string(str); ... if(....

2017-12-08 22:13:26 240

原创 指针和引用的区别

指针:指针指向一块儿内存,它的内容是指向内存的地址。引用:某一块儿内存的别名。区别:A.引用必须初始化。指针不必须被初始化(dangergous)。int i;int &ref1 = i;//okint &ref2;//errorB.不能有NULL引用,引用必须与合法的内存单元相关联。指针可以为空。int *p = NULL;int &ref = p;//dangerousC.只能引用一次,不可以

2017-11-24 16:52:15 199

原创 声明和定义的区别

声明:描述变量,函数或者是函数的类型。告诉编译器变量或者函数体的模样。int a;//定义式声明extern int b;//引用型声明int func(int c, int d);//函数声明声明是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。定义:对于声明的实现或者实例化。

2017-11-09 13:55:16 266

空空如也

空空如也

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

TA关注的人

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