- 博客(85)
- 资源 (1)
- 收藏
- 关注
原创 C中运算符优先级
优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名
2015-04-20 12:50:22 712
转载 用户态和内核态的概念区别
本文转自:这里究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:1)例子C代码1. void testfork(){ 2. if(0 = = fork()){ 3. printf(“create new p
2015-04-13 10:21:35 698
转载 extern "C"的用法解析
本文转自:这里1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函
2015-04-08 19:04:00 630
原创 Redis中的RDB持久化和AOF持久化(一)
概述Redis是一种内存数据库,运行时数据和状态都保存在内存中,为了避免服务器进程结束而导致的数据丢失,需要将数据保存到磁盘上。Redis提供了两种策略,分别是RDB持久化和AOF持久化。本文先介绍RDB持久化。RDB持久化手动创建RDB文件的两个命令是SAVE和BGSAVE,他们的区别是SAVE在主进程中进行文件写入,保存时会阻塞主进程,使其不能执行任何其他操作。BGSAVE是for
2015-04-07 19:52:54 1234
转载 浅谈new/delete与malloc/free的区别与联系
本文转自:这里一、基本概念 malloc/free:1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是
2015-04-07 15:09:03 821
原创 Redis中的内存释放与过期键删除
简介在Redis中,内存的大小是有限的,所以为了防止内存饱和,需要实现某种键淘汰策略。主要有两种方法,一种是当Redis内存不足时所采用的内存释放策略。另一种是对过期键进行删除的策略,也可以在某种程度上释放内存。相关数据结构Redis中的数据库结构如下:/* * 数据库结构 */typedef struct redisDb { // key space,包括键
2015-04-06 17:31:52 43334 4
原创 Redis的五种对象类型及其底层实现
Redis对象类型简介Redis是一种key/value型数据库,其中,每个key和value都是使用对象表示的。比如,我们执行以下代码:redis>SET message "hello redis"其中的key是message,是一个包含了字符串"message"的对象。而value是一个包含了"hello redis"的对象。Redis共有五种对象的类型,分别是:
2015-04-01 16:19:51 45286 14
原创 浅析基于glibc的malloc
最近看了几个malloc和free的问题,总结一下。malloc和free由谁提供?一般来讲,它们是C Standard Library提供的而不是由操作系统的内核实现。例如微软的是msvcrt,Linux下是glibc。当然也有第三方库函数,比如jemalloc、tcmalloc。所以每个malloc和free的实现都有所不同,而且这些实现和内核之间是保留有一定自由度的。比如每次mall
2015-03-31 16:58:55 3715 1
转载 C/C++中的内存对齐
一、什么是内存对齐、为什么需要内存对齐?现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。字,双字,和四字在自然边界上不需要在内存中对齐。(对字,双字,和四字来说,自然边界分别是偶数地址,
2015-03-25 13:20:29 655
转载 浅析UNIX中的select和epoll
本文转自:知乎2013-10-27更新:由于此文陆陆续续收到赞同,而且其中有些地方并不完全正确,特在本文最后予以订正我不了解楼主的层次,我必须从很多基础的概念开始构建这个答案,并且可能引申到很多别的问题。首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。不管是文件,还是套接字,还是管道,我们都可以把他们看作流。之后我们
2015-03-25 12:53:17 1482
原创 Redis中的内存管理:关于zmalloc
Redis是一种使用C语言编写的NoSQL数据库,特点是高性能,高灵活性。但由于C语言没有自带GC,所以Redis在实际使用过程中,内存的分配和释放的合理性和高效性就非常重要。为了达到这个目的,Redis的实现中封装了C里的malloc,calloc,realloc和free函数来对自己的内存进行管理。这些实现都在zmalloc.h和zmalloc.c中。程序中维护一个use_memory,表示已
2015-03-24 20:37:01 3506 2
原创 阿里巴巴菜鸟网络二面
下午五点多打电话过来二面,首先还是自我介绍,然后面试官问了课题,讲了大概十多分钟,根据一面的经验,我判断他肯定是没听懂,但他还是问了你这个算法怎么优化之类的。然后他问我对操作系统文件懂多少,这个确实懂的不多啊,他就改问进程和线程之类的,互斥啊同步啊mutex加锁CPU调度啊等等,说了一大堆。然后又问C++怎么对内存进行管理,我说C++没有垃圾回收,需要自己new了再delete,当然也可以用智能指
2015-03-20 20:40:23 6524
原创 LeetCode 76.Minimum Window Substring
题目:Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).For example,S = "ADOBECODEBANC"T = "ABC"Minimum windo
2015-03-19 21:43:40 524
原创 LeetCode 69.Sqrt(x)
题目:Implement int sqrt(int x).Compute and return the square root of x.分析与解答:更快的方法是牛顿法,这里采用二分法也是可以的。class Solution {public: int sqrt(int x) { if(x == 0){ return 0;
2015-03-17 21:17:29 549
原创 LeetCode 64.Minimum Path Sum
题目:Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.Note: You can only move either down or
2015-03-17 21:12:34 450
原创 LeetCode 63.Unique Paths II
题目:Follow up for "Unique Paths":Now consider if some obstacles are added to the grids. How many unique paths would there be?An obstacle and empty space is marked as 1 and 0 respectively
2015-03-17 19:58:34 448
原创 LeetCode 62.Unique Paths
题目:A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to r
2015-03-17 19:57:44 420
原创 LeetCode 31.Next Permutation
题目:Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest
2015-03-17 15:14:38 406
原创 LeetCode 56.Merge Intervals
题目:Given a collection of intervals, merge all overlapping intervals.For example,Given [1,3],[2,6],[8,10],[15,18],return [1,6],[8,10],[15,18].分析与解答:先排序,然后遍历,在遍历的过程中合并。/** * Def
2015-03-16 15:13:24 671
原创 阿里巴巴菜鸟网络电话面试
其实在这之前我一直不知道菜鸟网络到底是个什么东西。。。只是知道应该算是阿里的子公司吧。不过既然有师兄的内推,抱着不去白不去的心态就投简历了。第二天(今天)就接到了面试电话。面试官听声音好年轻的感觉,像一个同学的声音。他先让自我介绍了一下,问本科和研究生学过哪些课程,然后介绍现在做的课题。因为和计算机不太相关,所以解释了半天他也听不懂,囧死。然后他问了一个很简单的题目。说因为菜鸟在做物流这一块,如果
2015-03-11 21:10:17 21745 4
原创 LeetCode 55.Jump Game
题目:Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.De
2015-03-11 18:39:13 454
转载 HTTP的长连接和短连接
本文转自:这里本文总结&分享网络编程中涉及的长连接、短连接概念。 关键字:Keep-Alive,并发连接数限制,TCP,HTTP一、什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个
2015-03-10 14:05:41 555
转载 TCP的长连接与短连接
本文转自:这里1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:2. TCP短连接我们
2015-03-10 10:24:08 358
原创 select poll 和 epoll简介
本文转自:这里select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负
2015-03-10 10:07:25 482
原创 LeetCode Maximum Subarray
题目:Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguous subarray [4,−1,2,
2015-03-09 13:48:00 352
原创 LeetCode 52.N-Queens II
题目:Follow up for N-Queens problem.Now, instead outputting board configurations, return the total number of distinct solutions.分析与解答:比上一题更简单了class Solution{ public: int
2015-03-08 21:39:50 344
转载 线程池简介
本文转自:这里什么是线程池?诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次
2015-03-08 21:14:07 373
转载 bitset简介
本文转自:http://blog.csdn.net/bill_ming/article/details/7180445 bitset的定义和初始化表3-6列出了bitset的构造函数。类似于vector,bitset类是一种类模板;而与vector不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset时,要明确bitset含有多少位,须在尖括
2015-03-08 20:33:57 592
原创 LeetCode 51.N-Queens
题目:The n-queens puzzle is the problem of placing n queens on ann×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens puzz
2015-03-08 20:02:11 376
转载 TCP建立连接为什么需要3次握手
本文转自:TCP连接建立过程中为什么需要“三次握手”传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层(Transport layer)通信协议。是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的。互联网络与单个网络不同,因为互联网络的不同部分可能有着截然不同的拓扑、带宽、延迟、分组大小和其他参数
2015-03-06 13:58:06 970
转载 taglist的使用方法
本节所用命令的帮助入口::help helptags:help taglist.txt 使用下面的命令生成帮助标签:helptags ~/.vim/doc下面介绍常用的taglist配置选项,你可以根据自己的习惯进行配置: - Tlist_Ctags_Cmd选项用于指定你的Exuberant ctags程序的位置,如果它没在你PATH变量所定义的路径中,需要使用
2015-03-05 17:16:14 1069
转载 哈希表总结
博客Markdown编辑器上线啦 那些年我们追过的Wrox精品红皮计算机图书 PMBOK第五版精讲视频教程 火星人敏捷开发1001问哈希表总结分类: 结构与算法 2013-07-01 00:32 6360人阅读 评论(0)收藏 举报转载自http://blog.csdn.net/chenhuajie123/article/det
2015-03-05 15:00:33 853
原创 ubuntu 14.04下用root登陆图形界面
修改 /etc/lightdm/lightdm.conf如下:[SeatDefaults]autologin-user=rootgreeter-session=unity-greeteruser-session=ubuntugreeter-show-manual-login=trueallow-guest=false
2015-03-04 14:09:27 4790
转载 Vim 一键编译、连接、运行 C/C++ 单文件(Windows 与 Linux通用)
本代码是对vim下一键保存/编译/链接/运行的配置,放在vimrc文件内即可"------------------------------------------------------------------------------" "---------------------------------------------------------------------------
2015-03-02 15:27:06 6644
原创 LeetCode 48.Rotate Image
题目:You are given an n x n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise).Follow up:Could you do this in-place?分析与解答:先沿对角线反转,再沿中线上下旋转。class Solution {
2015-02-26 12:48:54 479
原创 LeetCode 47.Permutations II
题目:Given a collection of numbers that might contain duplicates, return all possible unique permutations.For example,[1,1,2] have the following unique permutations:[1,1,2], [1,2,1], and
2015-02-26 01:17:14 358
原创 LeetCode 46.Permutations
题目:Given a collection of numbers, return all possible permutations.For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].分析与解答:
2015-02-25 23:46:55 428
原创 LeetCode 45.Jump Game II
题目:Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position.Yo
2015-02-25 23:44:58 345
原创 LeetCode 42.Trapping Rain Water
题目:Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.For example, Given [0,1,0,2,1,0,1,3
2015-02-25 17:13:30 523
原创 LeetCode 41.First Missing Positive
题目:Given an unsorted integer array, find the first missing positive integer.For example,Given [1,2,0] return 3,and [3,4,-1,1] return 2.Your algorithm should run in O(n) time and uses
2015-02-25 00:26:40 350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人