自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FreeeLinux's blog

没有迷路的人

  • 博客(40)
  • 资源 (3)
  • 收藏
  • 关注

原创 Linux内存管理复习总结

首先来看一张图:这张图就是Linux分配内存的大致流程。下面我来总结一下。分页首先Linux是基于内存管理采用分页机制,内核代码中它将所有段基址都设置为0,Linux采用这样的方法直接避过了分段机制。仅仅用分段来控制用户态和用户态的访问权限。内核内存分配内核对于大块内存的分配基于伙伴算法,用来解决外部碎片的问题。伙伴算法最低分配的单位是一页。在物理内存的每个Zone中都有一个free_area[]数

2017-02-28 12:20:52 1127

原创 mmap内核源码分析

对于mmap函数,我之前的理解太单一了。这几天好好复习了一下以前学过的知识,重新对该函数有了新的认识。之前我的认识是,mmap是用来映射内存的,它映射的内存来自磁盘上文件。所以我以为malloc函数底层也映射文件内存。后来一直想不通。实际上,mmap函数再malloc底层实现中采用了匿名映射(就是这个匿名映射,我之前一直概念不清)。先说下malloc调用mmap一般的形式://原型//mmap(v

2017-02-27 22:47:35 3238 2

原创 学习目录

惊群”,看看nginx是怎么解决它的。

2017-02-27 14:06:32 517

转载 Linux 2.6 中的页面回收与反向映射

引用网址:http://rritw.com/a/caozuoxitong/Linux/20110617/89155.html为什么要进行页面回收操作系统管理内存中的物理页面,同时也担任着内存分配的职责。应用程序可以通过内存分配函数向操作系统申请物理页面;在使用完这些物理页面之后,应用程序可以通过相应的内存释放函数释放这些物理页面。但是,对于内存中的某些物理页面来说,页面的使用者

2017-02-26 11:38:47 445

转载 Manacher算法总结

Manacher算法算法总结第三弹 manacher算法,前面讲了两个字符串相算法——kmp和拓展kmp,这次来还是来总结一个字符串算法,manacher算法,我习惯叫他 “马拉车”算法。相对于前面介绍的两个算法,Manacher算法的应用范围要狭窄得多,但是它的思想和拓展kmp算法有很多共通支出,所以在这里介绍一下。Manacher算法是查找一个字符串的最长回文子串的线性算法

2017-02-22 18:50:43 335

原创 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.Determine if you are

2017-02-22 15:41:31 352

原创 111. Minimum Depth of Binary Tree

Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.解法一:BFSclass Solution {public: int min

2017-02-22 12:24:41 299

原创 208. Implement Trie (Prefix Tree)--Trie树

Implement a trie with insert, search, and startsWith methods.Note:You may assume that all inputs are consist of lowercase letters a-z.我的解法如下:const int MAX_NODE = 26;struct TrieNode { long count;

2017-02-22 11:08:30 399

原创 51. N-Queens/52. N-Queens II

八皇后问题参考这张图片: 51The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens p

2017-02-22 00:15:36 378

原创 24. Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head.For example,Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. You may not

2017-02-21 17:40:33 494

原创 147. Insertion Sort List(插入排序)

Sort a linked list using insertion sort.单链表的插入排序:class Solution {public: ListNode* insertionSortList(ListNode* head) { ListNode* new_head = NULL; while(head != NULL){ L

2017-02-21 16:52:51 390

原创 19. Remove Nth Node From End of List

Given a linked list, remove the nth node from the end of list and return its head.For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked l

2017-02-21 16:06:21 321

原创 92. Reverse Linked List II(链表局部逆序**)

Reverse a linked list from position m to n. Do it in-place and in one-pass.For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4,return 1->4->3->2->5->NULL.此问题看似简单,实际很麻烦,如果不使用二级指针,那么如果链表仅有两项,并且要求m=1,

2017-02-21 15:32:51 488

原创 83. Remove Duplicates from Sorted List

Given a sorted linked list, delete all duplicates such that each element appear only once.For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3.class Solution {public: ListN

2017-02-21 10:41:50 315

原创 82. Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.For example,Given 1->2->3->3->4->4->5, return 1->2->5.Given 1->1->1->2->

2017-02-20 23:45:01 412

原创 86. Partition List

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.You should preserve the original relative order of the nodes in each of the

2017-02-20 21:49:04 283

原创 148. Sort List(快排、归并)

Sort a linked list in O(n log n) time using constant space complexity.首先给出快排解法:class Solution {public: ListNode *sortList(ListNode *head) { if(head == NULL) return NULL;

2017-02-20 20:34:33 463

原创 143. Reorder List(逆序一半再合成)

Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values.For example,Given {1,2,3,4}, reorder it to {1,4,2,3}.S

2017-02-20 11:17:06 413

转载 epoll内核实现分析

注:之前写过两篇关于epoll实现的文章,但是感觉懂得了实现原理并不一定会使用,所以又决定写这一系列文章,希望能够对epoll有比较清楚的认识。是请大家转载务必注明出处,算是对我劳动成果的一点点尊重吧。另外,文中如果有不全面或者不正确的地方还请大家指出。也可以私信或者发邮件:lvyilong316@163.com1. ET模式实现分析1.1 ET和LT的实现区别    首先给出下面

2017-02-19 19:04:25 1778

原创 200. Number of Islands+130. Surrounded Regions(并查集/DFS)

首先看200题:Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may

2017-02-10 20:42:50 523

原创 235.236:Lowest Common Ancestor of a Binary Search Tree/Tree(LCA问题)

连续两道LCA问题,一道是BST树的LCA求解,另外一道是普通二叉树的LCA求解。235:Total Accepted: 119152Total Submissions: 311598Difficulty: EasyContributors: AdminGiven a binary search tree (BST), find the lowest common ancestor (LCA

2017-02-10 20:33:16 286

原创 单源最短路径复习--Dijkstra算法和Floyd算法

昨天复习了一下单源最短路径问题,今天总结一下。解决单源最短路径问题,我们熟知的算法首先就是Dijkstra算法了。Dijkstra算法的核心就是贪心思想。我在以前的博客中也写过这个算法:图的拓扑排序、关键路径、最短路径算法 – C++实现,现在看以前的博客,我的代码思路还是很清晰的。Dijkstra算法可以求出某一点到其他所有点的最短路径,本文还将介绍一种可求出所有点对的最短路径的算法——Floyd

2017-02-09 12:06:32 1148

原创 多进程、共享内存的网络聊天室

好久没写网络聊天室了,去年暑假可以说写了一暑假,最近复习这些,又因为我一直偏向于多线程,就用多进程复习一下。下面给出昨天写的基于多进程、共享内存的网络聊天室代码。每个进程负责一个连接,多个进程之间仅共享读,不共享写,因此无需信号量来同步。分配的一段内存中,以数组的方式,分配给每个client一段buffer,每个clilent对应的buffer的索引就是connfd。当一个子进程收到客户端数据后,通

2017-02-08 12:14:30 2164 2

原创 信号量、消息队列、共享内存复习

信号量代码使用信号量实现父子进程间同步:#include <sys/sem.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/wait.h>union semun { int val; /* Value for SETVAL */ struct sem

2017-02-08 11:13:55 615

原创 网络编程定时器三:使用最小堆

前面讨论的定时方案都是以固定频率调用心搏函数tick,并在其中一次检测到期的定时器,然后执行到期定时器上的回调函数。设计定时器的另一中思路是,将所有定器超时时间最小的一个定时器的超时值作为心搏间隔。这样,一旦心搏函数tick执行,超时时间最小的定时器必然到期。我们就可以从剩余定时器中选出超时时间最小的一个,并将这个时间设为下一次心搏间隔。如此反复,就实现了较为精确的定时。最小堆适合这种解决方案,下面

2017-02-06 21:59:58 1439 1

原创 网络编程定时器二:使用时间轮

上次说到,基于排序链表的定时器存在一个问题:添加定时器的效率偏低。这次我们用时间轮来解决该问题。如图就是一个时间轮:在时间轮内,指针指向轮子上的一个槽。它以恒定的速率顺时针转动。没转动一步就指向下一个槽,每次转动称之为一个tick。一个滴答的时间称为时间轮的槽间隔si(slot interval),它实际上就是心搏时间。时间轮共有N个槽,因此它运转一周的时间是N*si。每个槽指向一个定时器链表,每条

2017-02-06 21:32:24 814

原创 123. Best Time to Buy and Sell Stock III(同小米风口的猪)

Say you have an array for which the ith element is the price of a given stock on day i.Design an algorithm to find the maximum profit. You may complete at most two transactions.Note:You may not engage

2017-02-06 10:42:50 282

原创 网络编程定时器一:使用升序链表

之前一直对定时器这块不熟,今天来练练手。首先我们来看实现定时器的第一种方式,升序链表。网络编程中应用层的定时器是很有必要的,这可以让服务端主动关闭时间很久的非活跃连接。另外一种解决方案是TCP的keepalive,但它只能检测真正的死连接,即客端主机断电,或者网线被拔掉这种情况。如果客端连接上,但什么都不做,keepalive是毫无办法的,它只能一定时间后不断的向客户端发送心跳包。定时器通常至少要包

2017-02-05 23:09:49 1881

原创 257. Binary Tree Paths(打印二叉树所有路径)

Given a binary tree, return all root-to-leaf paths.For example, given the following binary tree: 1 / \2 3 \ 5All root-to-leaf paths are:["1->2->5", "1->3"]首先我采用了dfs,但是我的方法有点麻烦。方法一:dfs/**

2017-02-05 15:11:25 769

原创 98. Validate Binary Search Tree(判断合法二叉搜索树)

Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The left subtree of a node contains only nodes with keys less than the node's key.The right

2017-02-05 11:57:19 1528

原创 347. Top K Frequent Elements

Given a non-empty array of integers, return the k most frequent elements.For example,Given [1,1,1,2,2,3] and k = 2, return [1,2].Note: You may assume k is always valid, 1 ≤ k ≤ number of unique elem

2017-02-05 09:46:51 245

原创 116. Populating Next Right Pointers in Each Node

Given a binary treestruct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next;}Populate each next pointer to point to its next right node. If there is no next right node,

2017-02-05 09:00:42 324

原创 41. First Missing Positive(找到数组中未出现的最小正整数)

Total Accepted: 87074 Total Submissions: 348588 Difficulty: Hard Contributors: Admin Given an unsorted integer array, find the first missing positive integer. For example, Given [1,

2017-02-04 23:28:04 470

转载 Linux堆内存管理深入分析

Linux堆内存管理深入分析https://jaq.alibaba.com/community/art/show?articleid=315http://www.cnblogs.com/alisecurity/p/5520847.html0 前言近年来,漏洞挖掘越来越火,各种漏洞挖掘、利用的分析文章层出不穷。从大方向来看,主要有基于栈

2017-02-02 13:34:59 1388

原创 最近一段时间的总结

最近一段时间,我主要在牛客网刷题,所以大部分时间都没有写博客。不过我原本打算打过年那一天写个年终总结的,后来也没有写。寒假这段时间,我开始在学校呆了十几天,然后在这外面小宾馆包了一个月住着。实际上回家了两天,大年三十回的家,本来计划初一下午就来。结果家人一再说服我,我改成初二一大早才来的。原本我计划寒假不回家的,一直待在租的房子这里。不过我终究不舍得,原因有很多。过年前几天我奶奶还住院了,我妈也给我

2017-02-02 13:15:15 1538 2

原创 腾讯笔试题--微信红包

本来这题没什么难度,不值得我写博客的,谁知道一个失误花了半小时才做出来。写下来告诫自己不要再犯错。 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。 给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。 若没有金额超过总数的一半,

2017-02-01 20:36:15 2899 2

转载 深入理解哈希表(JAVA和Redis哈希表实现)

有两个字典,分别存有 100 条数据和 10000 条数据,如果用一个不存在的 key 去查找数据,在哪个字典中速度更快?有些计算机常识的读者都会立刻回答: “一样快,底层都用了哈希表,查找的时间复杂度为 O(1)”。然而实际情况真的是这样么?答案是否定的,存在少部分情况两者速度不一致,本文首先对哈希表做一个简短的总结,然后思考 Java 和 Redis 中对哈希表的实现,最后

2017-02-01 16:17:45 3670

转载 谈谈面试--哈希表系列

前言:  我以前在百度的mentor, 在面试时特喜欢考察哈希表. 那时的我满是疑惑和不解, 觉得这东西很基础, 不就的分桶理念(以空间换时间)和散列函数选择吗? 最多再考察点冲突解决方案. 为何不考察类似跳跃表, LSM树等高级数据结构呢?  随着工程实践的积累, 慢慢发现了自己当初的肤浅. 面试的切入点, 最好是大家所熟悉的, 但又能从中深度挖掘/剖析和具有区分度的.   本文结合

2017-02-01 16:10:44 4830 1

原创 数据结构复习一:哈希表的总结

昨天复习了一下哈希表,今天来总结一下。哈希表概述哈希表,是根据关键码值(key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录。由于可以根据哈希函数直接得到对应位置,哈希表的查找时间复杂度为O(1)。这是一种以空间换时间的做法。通常哈希表的做法是采用数组实现,利用哈希函数把key转化成整形数字,然后将该数字对数组长度进行取余,取余结果当作数组的下标,将v

2017-02-01 16:06:26 2638

转载 memcached源码分析-----哈希表基本操作以及扩容过程

转载请注明出处:http://blog.csdn.net/luotuo44/article/details/42773231         温馨提示:本文用到了一些可以在启动memcached设置的全局变量。关于这些全局变量的含义可以参考《memcached启动参数详解》。对于这些全局变量,处理方式就像《如何阅读memcached源代码》所说的那样直接取其默认值。

2017-02-01 11:03:30 701

muduo网络库

如果你用其他的编译不通过,就用这个吧。

2016-12-01

MySQL-python-1.2.5.win64-py2.7.exe

有效解决安装mysql-python时遇到的error: Unable to find vcvarsall.bat问题,以及 %1 win 32 问题

2016-09-20

valgrind-3.10.1

Linux内存泄漏检测工具

2016-08-11

空空如也

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

TA关注的人

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