自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Much effort, much prosperity.

记录一个小白的成长之路

  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 剑指offer-剑指offer——栈的压入弹出顺序 (两种不错的的解法)

//剑指offer——栈的压入弹出顺序//输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。//假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,//序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。//(注意:这两个序列的长度是相等的)//方法一:使用一个hash表记录

2017-09-19 00:20:53 858

转载 读写锁的几种实现方式-互斥量,信号量,条件变量

对于某个临界资源的访问,读操作和写操作是要区别对待的。读操作可以多个线程同时进行,写操作必须互斥进行。读写锁:当已经被加了读锁时,其他的读模式锁请求仍然可以访问,但是写模式锁不能访问;当写模式锁加锁时,其他的请求都不能访问。本文尝试用四种方法来完成读写锁的操作,都包含有写模式和读模式各自所要做的事情。1、直接使用POSIX提供的读写锁2、用条件变量实现读写锁3、用互斥量

2017-09-18 00:56:28 3649

原创 网易互娱游戏研发工程师笔试

//第二题 流量统计问题,二分查找区间#include #include #include #include using namespace std;int main(){ int n,m; cin >> n; vector time(n); vector flow(n); string a, b, c, d; int k; for (int i = 0; i<n; i

2017-09-17 08:53:52 4404

原创 01背包问题——经典DP问题,优化与未优化

#include #include #include using namespace std;int main(){ int n,m; vector w(n),v(n); for (int i=0;i<n;i++) cin>>w[i]>>v[i]; //v为容量数组,W为价值数组,m为总容量 //优化的01背包问题,使用一维数组

2017-09-12 10:41:26 1110

原创 有序数组转成平衡二叉树,平衡二叉树转成双端链表

#include #include using namespace std;//二叉树的树结构struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(char t) :val(t), left(0), right(0){};};//有序数组转成平衡二叉树//也是一个递归的过程,每次都把数组分

2017-09-11 16:46:39 811

原创 剑指offer-16.反转链表

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { //注意初始判断是不是nul

2017-09-11 16:01:51 286

原创 Leetcode——146. LRU Cache 一个优雅的LRU的C++实现

//使用hash_map和list实现的LRU。 实现了get和put操作//get 得到对用的value,并且前移。//put 如果不存在,加入,此时可能会挤掉尾元素。存在:移动到队列首。//改进点在于如果发生缺页需要重新加入,这时候可以添加一个//hash_map存储key-value,并改写一下put函数即可。class LRUCache {public: LRUCache

2017-09-11 10:51:19 6710 3

转载 NGINX原理 之 SLAB分配机制

1 引言  众所周知,操作系统使用伙伴系统管理内存,不仅会造成大量的内存碎片,同时处理效率也较低下。SLAB是一种内存管理机制,其拥有较高的处理效率,同时也有效的避免内存碎片的产生,其核心思想是预分配。其按照SIZE对内存进行分类管理的,当申请一块大小为SIZE的内存时,分配器就从SIZE集合中分配一个内存块(BLOCK)出去,当释放一个大小为SIZE的内存时,则将该内存块放回到原有集合,而不

2017-09-08 10:40:15 455

原创 Leetcode——208. Implement Trie (Prefix Tree) C++语言实现Tire

//slower than recursive versionclass Trie {private: static constexpr int R = 26; struct Node { bool is_word = false; Node *next = nullptr; };public: //~Trie(); How t

2017-09-06 16:25:10 468

原创 leetocd---207. Course Schedule

There are a total of n courses you have to take, labeled from 0 to n - 1.Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as

2017-09-06 15:38:50 220

原创 Leetcode-236. Lowest Common Ancestor of a Binary Tree 最小公共祖先

Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two node

2017-09-05 16:44:49 267

原创 二叉树的前序遍历非递归形式

//二叉树的遍历,所谓的前中后,其实就是根节点相对于左右节点的//访问时间,前就是根左右,中就是左根右,后就是左右根//递归形式的前序遍历void PreSearch(TreeNode* head){ if (head){ cout val; PreSearch(head->left); PreSearch(head->right); }}//非递归形式的前序遍历,用v

2017-09-05 10:11:07 463

原创 快速排序的非递归算法实现

//快速排序算法的非递归实现,这种方法应该说是尾递归//的非递归快速排序算法,它只把>1的右区间放入栈中,//减少了出栈入栈的次数。templatevoid NoQuickSort(vector& a, int s, int t){ vector> p(a.size()); p[0] = { s, t }; int k = 1, i = 0, j = 0; while (k ||

2017-09-04 20:18:00 745

原创 两个栈实现队列,两个队列实现栈

#include #include #include using namespace std;//使用两个栈实现队列,实现了push,pop,front操作//其中栈s2是辅助栈,push直接在s1中插入//pop从s2中出栈,如果s2是空的,将s1倒进s2,然后再出栈,这样减少了倒栈次数,比较高效。//front就是s2的top,跟pop类似。template class My

2017-08-30 17:16:37 238

转载 TCMalloc : Thread-Caching Malloc高性能的内存分配器(C/C++) 英文原版

TCMalloc : Thread-Caching MallocSanjay Ghemawat, Paul Menage MotivationTCMalloc is faster than the glibc 2.3 malloc (available as a separate library called ptmalloc2) and other mallocs that

2017-08-30 10:56:41 381

原创 Kolakoski序列——搜狐笔试

//Kolakoski序列是一个仅由1和2组成的无限数列,是一种通过“自描述”来定义的数列。//他的前几项为1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,//如果相同数字是一组,则每一组的个数为1,2,2,1,1,2,1,2,2,1,2,2,1,1//a(n)等于第n组数的长度,因此是自描述的。目前没有递推公式,只能用自描述方式给出//这道题是Kola

2017-08-30 09:28:31 473

原创 C++编程输入数组的处理——不给数组长度,直接给一行数组

正常情况下,我们要从键盘读一个数组,一般会先告诉你一个数组大小size,然后可以创建相应的数组a[size](注:C++11允许变量作为数组长度)或者建立vector(size). 然后就可以用一个size次的循环正好把size个数组元素存进去。但是如果不给数组长度怎么办?直接扔给你一个行数组元素,怎么把他们存到对应整数数组中呢?intmain(){       i

2017-08-28 10:27:56 21131

转载 RIP协议&&OSPF协议详解——基于TCP/IP详解卷书籍

动态选路、RIP协议&&OSPF协议详解概念当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路。路由器之间必须采用选路协议进行通信,这样的选路协议有很多种。路由器上有一个进程称为路由守护程序( routing daemon),它运行选路协议,并与其相邻的一些路由器进行通信。路由守护程序根据它从相邻路由器接收到的信息,更新内核中的路由表路

2017-08-18 20:57:31 2579

转载 一个Linux下C线程池的实现

1.线程池基本原理  在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线程极大地占用了系统的资源。而且在大量用户的情况下, 系统为了开辟和销毁线程将浪费大量的时间和资源。线程池提

2017-08-18 20:51:44 204

转载 linux进程状态浅析

众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中“同时”运行。linux内核对进程的这种管理分两个方面:进程状态管理,和进程调度。本文主要介绍进程状态管理,进程调度见《linux进程调度浅析》。

2017-08-18 17:23:40 223

转载 Tcp服务端一直sleep,客户端不断发送数据产生的问题

问题:“一个tcp服务端和一个tcp客户端,客户端和服务端建立连接后,服务端一直sleep,然后客户端一直发送数据会是什么现象”。回答这个问题前我们先想一想tcp的特征和tcp发送数据的大体过程:首先,tcp是有链接的可靠传输协议,所谓可靠也就是说保证客户端发送的数据服务端都能够收到,并且是按序收到。那么对于上面的问题就不可能存在数据的丢弃。那么客户端一直发送数据越来越多怎

2017-08-18 10:37:27 596

转载 线程的概念和多线程模型

线程的基本概念引入进程的目的,是为了使多道程序并发执行,以提高资源利用率和系统吞吐量;而引入线程,则是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资

2017-08-17 23:26:12 239

转载 MMU和TLB

MMU和TLB记得那家芯片公司给我电话面试的时候,别的都还好,可是他问我什么是MMU,我只能干瞪眼。今天在看《Linux内核源码(陈莉君)》的时候,无意中看到第二章内存地址这一节,学习如下:在任何一台计算机上,都存在一个程序能产生的内存地址的集合。当程序执行这样一条指令时:MOVE REG,ADDR它把地址为ADDR(假设为10000)的内存单元的内容复制到REG中,地址A

2017-08-16 11:31:24 436

原创 Linux下如何用/proc命令查找进程状态信息——当前目录,内存占用,描述符等

参加阿里的面试,问到一个问题,如何在Linux下使用命令行查询进程的状态信息,比如进程的当前目录,进程的内存占用等情况。当时的第一反应是使用top命令能够得到所有的进程信息。但是面试官好像不是很满意,因此我回去之后查阅了相关的资料,发现可能他想问的/proc目录,我这里整理一下:我自己写了一个简单的程序,就是一个while死循环。如下所示:#include #include int

2017-08-15 16:51:05 30812 2

原创 Libevent源码剖析——事件event

Libevent 是基于事件驱动(event-driven)的,从名字也可以看到 event 是整个库的核心。event 就是 Reactor 框架中的事件处理程序组件;它提供了函数接口,供 Reactor 在事件发生时调用,以执行相应的事件处理,通常它会绑定一个有效的句柄。首先给出 event 结构体的声明,它位于 event.h 文件中,我直接给出带注释的代码://一个event管理三种事件,

2017-08-02 23:57:11 240

原创 Libevent源码剖析基础篇——双向链表队列TAILQ

工作的主要内容是tcp/ip,平台是FreeBSD,而且在内核态开发,所以很多情况下会涉及内核的一些数据结构和宏,比如说mbuf和TAILQ等。 TAILQ是FreeBSD/linux内核对双向队列操作的一种抽象,抽象程度不亚于C++,能实现操作队列需要的各种操作:插入元素,删除元素,遍历队列等。这个队列的优点是插入元素很快。 这里先回顾一下队列的特点(来自维基百科 http://zh.wik

2017-08-02 21:25:19 3319 1

原创 Libevent源码剖析一——引子

引子:八月开始找工作的日子了,作为985高校二流计算机学院某渣硕,回顾下自己的硕士生活,基本都在写论文中度过了,由于各种原因不想再继续搞论文,一心决定找工作。硕士期间项目做得也不是很多,因此想找一些开源项目进行学习,提高自己的编程能力。Libevent是第一个开始看的开源项目,这里我参考了CSDN大牛张亮的博客,http://blog.csdn.net/sparkliang/article/c

2017-08-02 17:28:28 211

原创 完美洗牌算法

题目有个长度为2n的数组{a1,a2,a3,…,an,b1,b2,b3,…,bn},希望排序后{a1,b1,a2,b2,….,an,bn},请考虑有无时间复杂度o(n),空间复杂度0(1)的解法。来源2013年UC的校招笔试题思路一第①步、确定b1的位置,即让b1跟它前面的a2,a3,a4交换:a1,b1,a2,a3,a4,b2,b3,b4第②步、接着确定b2

2017-08-02 00:08:11 14933 2

原创 Leetcode—174. Dungeon Game 倒序DP

问题描述:The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. The dungeon consists of M x N rooms laid out in a 2D grid. Our valiant knight (K) was

2017-07-25 21:05:53 374

原创 Leetcode—200.Number of Islands

问题描述: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. Y

2017-07-25 15:57:06 249

原创 Leetcode—221.Maximal Square 最大正方形

Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's and return its area.For example, given the following matrix:1 0 1 0 01 0 1 1 11 1 1 1 1

2017-07-25 01:26:34 1796 5

原创 Leetcode—139. Word Break

问题描述:Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can be segmented into a space-separated sequence of one or more dictionary wo

2017-07-23 09:45:22 217

原创 Leetcode—154. Find Minimum in Rotated Sorted Array II

问题描述:Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed?Would this affect the run-time complexity? How and why?Suppose an array sorted in ascending o

2017-07-22 08:54:23 186

原创 leetcode—153. Find Minimum in Rotated Sorted Array 在翻转数组寻找最小值

问题描述:Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).Find the minimum element.You may a

2017-07-22 08:43:02 246

原创 Leetcode—152. Maximum Product Subarray 最小乘积子串

问题描述:Find the contiguous subarray within an array (containing at least one number) which has the largest product.For example, given the array [2,3,-2,4],the contiguous subarray [2,3] has t

2017-07-21 20:50:35 308

转载 类对象切割对虚函数调用的影响

背景现在有CFish和CAnimal两个类,并且CFish类继承于CAnimal类,它们都有breath这样的接口,只是表现形式不同,所以用虚函数来定义,类关系如下图所示;图一 类图关系其代码实现如下://基类class CAnimal{public: CAnimal() { //构造函数 cout "CAnimal

2017-07-19 09:59:56 229

转载 csdn如何转载别人的文章

转载于:http://blog.csdn.NET/jiangping_zhu/article/details/18044109作者:包心菜加糯米饭1、找到要转载的文章,用chrome浏览器打开,右键选择审查元素2、在chrome中下方的框里找到对应的内容,html脚本中找到对应的节点,选中节点,网页上被选中内容会被高亮显示,然后右键菜单选中 Copy as HTML

2017-07-19 09:52:08 301

转载 从内存布局看C++虚继承的实现原理

原创作品,转载请标明:http://blog.csdn.NET/xiejingfa/article/details/48028491准备工作1、VS2012使用命令行选项查看对象的内存布局微软的Visual Studio提供给用户显示C++对象在内存中的布局的选项:/d1reportSingleClassLayout。使用方法很简单,直接在[工具(T)]选项下找到“Visu

2017-07-19 09:36:48 2046 1

原创 Quicksort 快速排序—注意点以及代码实现(笔试手写代码)

Quicksort排序是一种不稳定的平均时间复杂度O(nlogn)的比较排序。 但是快速排序是十几排序应用中最好的选择。因为他O(nlogn)隐含的常数因子非常小。 原址排序:不需要额外的空间,在原空间进行排序。 不稳定排序:是因为Partition过程中会把key值相等的元素打乱顺序。 最坏情况:两个子递归的元素划分严重不平衡,比如一个是n-1,一个1.此时时间复杂度为O(n^2

2017-07-19 09:01:29 1216

原创 Leetcode——639.Decode Ways II

题目描述:A message containing letters from A-Z is being encoded to numbers using the following mapping way:'A' -> 1'B' -> 2...'Z' -> 26Beyond that, now the encoded string can also contai

2017-07-11 18:58:00 1051

背包九讲--超经典背包问题(dd engi)讲解

超经典背包问题(dd engi)讲解

2017-03-27

空空如也

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

TA关注的人

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