- 博客(10)
- 收藏
- 关注
原创 redis-简单动态字符串SDS
1、redis自定义了新的字符串机制SDS Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组),而是自己构建了一种名为简单动态字符串SDS的抽象类型2、简单动态字符串SDS SDS定义:struct sdshdr { // buf 中已占用空间的长度,不包括末尾‘\0’ int len; // buf 中剩余可用空间的长度 int fr...
2018-04-27 16:40:16 227
原创 《程序员代码面试指南》——字符串中空格替换(C++实现)
题目描述:将字符串中的空格替换为“%20”,要求时间复杂度为O(N),空间复杂度为O(1)思路:《剑指offer》也有一个一样的题目,空间复杂度为O(1)说明不允许用另一个数组来保存新的字符串,时间复杂度为O(N)则可以通过从尾到头遍历来保证,具体代码如下:C++代码实现:#include<iostream>#include<string>using namespace s...
2018-04-21 21:18:59 245
原创 《程序员代码面试指南》——字符串的统计字符串(C++实现)
题目描述:给定一个字符串str,返回str的统计字符串。例如“aaabbadddffc”的统计字符串为“a_3_b_2_a_1_d_3_f_2_c_1”思路:遍历字符串,用一个整形变量记录个数,具体过程见代码C++代码:#include<iostream>#include<string>using namespace std;int main(){ string st...
2018-04-21 20:19:11 465
转载 sizeof求类的大小
原文地址:https://blog.csdn.net/cy_cai/article/details/52979402一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小。 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。add charles 空结构体:struct d{} 的size...
2018-04-19 09:50:08 459
原创 读入未知数目的N*N二维矩阵(C++实现,附代码)
在我们做笔试题的时候,经常会遇到读入一个大小未知的数组的情况,比如一个经典的笔试题:求一个输入为N*N二维矩阵的90度旋转,但是题目并没告诉我们这个N是多大。有可能是3*3:1 2 34 5 67 8 9也可能是4*4:11 12 13 1421 22 23 2431 32 33 3441 42 43 44那么为了我们的算法能够处理所有的N*N维矩阵,首先我们得能够读入这个输入的二维矩阵。整个过程...
2018-04-16 18:43:07 5942 1
原创 C++四种类型强制转换
C中的类型转换我们一般如下使用:int a=1;double b=(double)a;或者double b=double(a);在C++中增加了类这个机制,一个类也可以视为一种类型,因此这些类型之间也是可以相互转换的,当然,为了兼容C,C++也保留了上述C中的类型转换方式,此外,C++中还引入了四种类型转换机制:static_cast、dynamic_cast、const_cast、reinter...
2018-04-08 10:06:10 573
原创 逆波兰(后缀)表达式求值C++实现
之前的一篇文章里已经讲到里怎么将中缀表达式转化为后缀表达式:https://blog.csdn.net/weixin_39138071/article/details/79809533现在我们用C++实现如何根据后缀表达式求值1、遍历后缀表达式;2、如果扫描的是数字,则将其压入栈中,继续遍历;3、如果扫描的项目是一个二元运算符+ - * /,则栈顶到两个元素依次出栈,计算后再将结果存入栈中;(接下...
2018-04-04 10:01:08 7366 2
原创 中缀表达式转后缀(逆波兰)表达式
原则:从左到右遍历中缀表达式:1、如果是数字则直接输出;2、如果是左括号,直接入栈;3、如果是右括号,直接栈顶元素出栈并输出,直到遇到左括号,左括号只出栈,不输出;4、如果是符号,如果优先级不高于栈顶符号则栈顶元素依次出栈并输出如果遇到+、-符号,如果栈非空并且栈顶元素不是左括号,则出栈并且输出,否则当前符号入栈如果是*、/符号,如果栈非空且栈顶元素是*或/,则出栈并输出,否则当前符号入栈大家可以...
2018-04-03 21:37:38 474
原创 TCP四次挥手及相关问题
1、TCP四次挥手过程图1、第一次挥手客户端进程调用close或shutdown函数发出连接释放报文,并且停止发送数据。该报文首部中,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN_WAIT_1状态TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。2、第二次挥手服务器收到连接释放报文,发出确认报文,该报文中...
2018-04-03 10:02:19 1067
原创 TCP三次握手
TCP三次握手流程图:TCP三次握手过程描述(参考上图):1、初始态:首先客户端、服务器端均处于CLOSED状态,客户端会调用connect函数开启连接,服务端则会调用listen函数处于LISTEN状态2、第一次握手客户端建立socket,调用connect函数,此时会向服务器发出连接请求报文,该报文中SYN字段置一,同时会选择一个初始序列号seq=x,之后客户端会进入SYN_SENT状态TCP...
2018-04-03 09:39:31 277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人