- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 数字追赶--搜狐笔试题
题目如下://下面的for循环分别循环了几次。1.unsigned short i,j;for(i=0, j=2; i!=j; i+=5, j+=7){}2.unsigned short i,j;for(i=3,j=7;i!=j;i+=3,j+=7){}分析: 题目1:unsigned short 可以表示为2的16次方个数,其数的范围为0到2的16次方-1,在题目1中,j比i大2,
2017-07-31 17:33:39 234
原创 二进制中1的个数及其拓展
前言判断二进制中1的个数可以变形出很多道算法题,本文主要是总结位运算还有相关位运算的算法题。左移和右移对于m<<n,左移运算符对于正负数都是将最左边的n位丢弃,同时在最右边补上n个0。 如:00010101<<2 = 01010100。 而对于右移运算符,需要考虑二进制数的有无符号性。如果数字是一个无符号数,那么就用0填补最左边的n位。如果数字是一个有符号数,那么就用数字的符号位填补最左边的n位
2017-07-26 11:18:27 494
原创 由重建二叉树算法题到临时对象不能绑定到非 const 的左值引用
前言最近再刷剑指offer,在将一个临时变量传给一个引用的时候,出现了non-const lvalue reference to type 'vector<[...]>' cannot bind to a temporary of type 'vector<[...]>'的错误,意思就是不能将临时对象绑定到非const的左值的引用,那么在这里就总结一下这道算法题,const引用的用法。const总结
2017-07-25 20:13:15 953
原创 深入理解虚函数
前言在C++中,在基类中被声明为virtual并在在一个或多个派生类中被重新定义的成员函数就是虚函数。基本格式如下:virtual (return_type) (func_name) (arg) {function body;}我们可以通过指向派生类的基类指针或引用来调用派生类中同名覆盖的成员函数。如下代码:class A{ public: virtual void pri
2017-07-20 12:40:00 302
原创 深入理解extern "C" 的使用
前言最近用到了动态库的函数dlsym函数,其作用是返回指定符号函数的地址。详见 深入理解Linux动态库和静态库http://blog.csdn.net/u013616945/article/details/75151418但由于动态库文件是C++写的,如果函数不加extern “C” 符号的话,在编译的时候回提示找不到dlsym函数指定符号的函数。下面就总结extern “C”的使用。C++
2017-07-18 21:28:23 2222
原创 链表中环的入口结点
题目: 一个链表中包含环,请找出该链表的环的入口结点。解法一:定义指针P1和P2指向链表的头结点。假设链表中的环有n个结点,指针P1先在链表走n步,然后两个指针已相同的速度前进。因为P1总是比P2多走n个结点,但进入环之后,当两个指针相遇时,则为环的入口结点。代码如下:class Solution {public: ListNode* EntryNodeOfLoop(ListNode*
2017-07-18 18:38:12 293
原创 删除链表的重复结点
题目: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。方法一:从头遍历整个链表,如果当前节点与下一个节点值相同,那么就把两个节点删除。为了不使链表断开,需要另外一个节点指向当前遍历节点的上一个节点(preNode),把preNode与后面不重复的第一个节点相连。代码如下:
2017-07-18 11:53:17 732
原创 深入理解Linux静态库与动态库
前言最近在写一个小型的http服务器,为了能够提供网页的动态内容,开始接触linux静态库和动态库的概念。之后又看了《深入理解计算机系统》的第七章–链接,在此对于linux静态库和动态库做一个总结。为什么需要库定义程序一般需要经过预处理,编译,汇编和链接将我们编写ASII文本程序变成可执行的目标文件(.out)。然而在实际开发中,有许多模块是反复复用的,如printf函数,scanf函数等,故所有的
2017-07-15 12:20:41 656
原创 realloc函数用法
函数原型:void *realloc(void *ptr, size_t size);功能: 重新分配大小为size的一块内存,返回内存地址ptr。函数源码流程图:使用方法:/* realloc example: rememb-o-matic */#include <stdio.h> /* printf, scanf, puts */#include <stdlib.h> /
2017-07-14 20:45:20 1000
转载 C语言中巧用正则表达式 regex_t
标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。C语言处理正则表达式常用的函数有regcomp()、regexec()、regfree()和regerror(),一般分为三个步骤,如下所示:C语言中使用正则表
2017-07-13 19:54:20 467
原创 http协议浅析
HTTP协议:http协议是一种基于C/S模式的无状态协议,其既可以使用非持久连接,也可以使用持久连接,默认方式下HTTP使用持久连接。无状态指的是HTTP服务器并不保存关于客户机的任何信息。非持久连接指的是每个请求/响应对是经一个单独的TCP连接发送的,而持久连接指的是所有连接以及响应经由相同的TCP连接发送。HTTP报文格式请求行有三个字段,方法字段,URL字段和HTTP版本字段。方法字
2017-07-07 19:30:15 330
原创 基于Reactor模式的libevent网络库之浅析与使用
Libevent特点:跨平台支持。支持linux,unix,和windows.统一事件源:对I/O事件,信号和定时事件提供统一的处理。线程安全。使用libevent_pthreads库来提供线程安全支持。基于Reactor模式的实现。Reactor事件处理机制:Reactor是一种事件驱动机制,有一个或多个并发的输入源(事件),有一个service handler, 有多个event ha
2017-07-07 17:01:49 1454 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人