自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不积跬步无以至千里

不积跬步无以至千里

  • 博客(39)
  • 收藏
  • 关注

转载 ★★★★★背包问题——“01背包”"完全背包"详解及实现(包含背包中具体物品的求解)

01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,…,Cn,与之相对应的价值为W1,W2,…,Wn.求解将那些物品装入背包可使总价值最大。        动态规划(DP):        1) 子问题定义:F[i][j]表示前i件物品中选取若干件物品放入剩余空间为j的背包中所能得到的最大价值。        2) 根据第i件物品放或不放进行决策

2017-04-27 09:11:54 669

转载 用户态和内核态的转换 (转)

1)用户态切换到内核态的3种方式  a. 系统调用  这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如前例中fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。 系统调用实质上是一个中断,而汇编指令int 就可以实

2017-04-26 21:24:59 4527

转载 Linux中gcc,g++常用编译选项

gcc/g++ 在执行编译时,需要4步  1.预处理,生成.i的文件[使用-E参数]  2.将预处理后的文件不转换成汇编语言,生成文件.s[使用-S参数]  3.有汇编变为目标代码(机器代码)生成.o的文件[使用-c参数]  4.连接目标代码,生成可执行程序[使用-o参数] -x language filename  设定文件所使用的语言,使后缀

2017-04-26 20:40:14 388

转载 linux内核中常见的内存分配方法

常用知识——linux内核中常见的内存分配方法Linux内核中常见内存分配函数1.    原理说明Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示。四级页表分别为:    页全局目录(Page Global Directory)    页上级目录

2017-04-26 20:36:34 924

转载 实例介绍利用valgrind定位内存泄漏问题

在前面的文章中, 我们简单了解了valgrind工具的用途以及安装, 以便大家能进行实际操作。 在本文中, 我们通过实例来看看如何利用valgrind来定位内存泄漏问题。 先看程序:[cpp] view plain copy #include   #include   char* getMemory()  {      char 

2017-04-26 20:32:16 284

转载 有36匹马,六个跑道。没有记时器等设备,用最少的比赛次数算出跑的最快的前3匹马

36匹马分6个组,分别为A、B、C、D、E、F组。第一轮,每个组各跑一次,取每组前三名,标识为A1、A2、A3,B1、B2、B3,以此类推。第二轮,每个组的第一名(A1——F1)拉出来跑一次,假设名次是:A1第一名,B1第二名,C1第三名。则:1.后三名及其所在组的其余组员均被淘汰(小组头名都没能进前三,当然是全部淘汰啦)2.两战全胜的A1已经提前夺冠了。3.由于A1已经占去了

2017-04-26 19:47:51 6941 1

转载 Linux网络编程中EAGAIN错误和EINTR错误

在linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。    从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读。此时程序不会阻塞起

2017-04-26 11:00:11 611

转载 数据库索引的实现原理

强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向

2017-04-24 16:03:39 179

转载 函数调用栈

作者:李根链接:https://www.zhihu.com/question/22444939/answer/22200552来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。<img src="https://pic4.zhimg.com/247487dfbaf1ec956441e9e5e2f85817_b.jpg&qu

2017-04-23 17:03:57 323

转载 scanf、gets、getchar、cin、cin.get、cin.getline、getline总结

一、scanf scanf一般可用于读取数字、字符、字符串; 结论: (1)当 scanf 从缓冲区中读取单个字符(%c)时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,scanf 不会将其忽略,会读取并清除。 (2)当 scanf 从缓冲区中读取数字或字符串(非单个字符)时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,scanf 会将其忽略并清除,继续读取下一

2017-04-23 14:32:40 530

转载 mysql索引最左匹配原则的理解?

作者:沈杰链接:https://www.zhihu.com/question/36996520/answer/93256153来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。这是你的表结构,有三个字段,分别是id,name,cid CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_I

2017-04-23 14:10:21 5111 2

转载 TCP15问答

作者:初识微夏链接:https://www.zhihu.com/question/28943943/answer/155660761来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1、A进程通过TCP向另一台机器上的B进程发送了一个字符串“hello”,TCP返回对方成功接收的确认信息,请问,现在进程A是否可以肯定地说进程B收到了它发送的字符串

2017-04-23 09:27:59 400

转载 关于在 Linux 下多个不相干的进程互斥访问同一片共享内存的问题,记录锁,好文章

http://segmentfault.com/a/1190000000630435http://blog.csdn.net/luansxx/article/details/7736618 这里的“不相干”,定义为:这几个进程没有父子关系,也没有 Server/Client 关系这一片共享内存一开始不存在,第一个要访问它的进程负责新建也没有额外的 daemon 进程

2017-04-20 09:50:38 2124

转载 二叉树怎样序列化才能重建

「序列化」(serialization),指的是把复杂的数据结构转化为线性结构,以方便存储的过程。序列化得到的线性结构必须能重建出原有的结构,才有意义。  对于二叉树,常用的序列化方法是在树上进行某种遍历(如先序、中序、后序、层序),用一种或两种遍历结果作为序列化结果。但并不是随便选一种或两种遍历结果,都能把二叉树重建出来。本文将给出二叉树序列化能够重建的一个充分条件,并且在实用中,这个条

2017-04-19 20:30:04 771

转载 排序数组构造AVL树

题目大意:假设排序数组中没有重复的元素,利用数组的元素构建一颗平衡二叉树。思路分析:如果直接构造一颗平衡二叉树,代码量会比较大,而且也不容易实现。注意题目的意思,是利用排序数组来构建平衡二叉树。所以,需要好好利用排序的特点。再来看看,一颗平衡二叉树最基本的要求是树种的结点均匀分布,我们可以利用二分查找来解决这个问题。1)取数组的中间位置的元素,作为根节点2)在中间位置元素的左边部分的中

2017-04-19 12:04:12 2119

转载 去除字符串首尾空格,中间多个空格只保留一个

要求:这是本人参加美团校招在线考试笔试题,如果此行为违反了美团校招笔试题商业保密性,请与本人联系。思路:用一个while循环扫描整个字符串,用pStart字符指针指向整个字符串首地址,如果遇到首部空格,则pStart+1,即让pStart始终指向整个字符串的首个非空格字符,用字符指针pIndex指向当前处理的字符,若*pIndex==' '&&*(pIndex+1)==' '(即中

2017-04-18 12:20:02 4216

转载 如何生成[0, N)中的随机数

写程序的时候,经常会遇到这样的需求:已知rand函数,生成一个范围在[0, N)的随机数。 比如我们有15个球,随机选择一个,则此时N等于15。 在这个问题中,我们通常希望这个随机数是满足均匀分布(uniform distribution)的,即每个数字出现的概率是一样的。 还有一类随机数生成问题,是要求实现rand这个函数本身的,这类问题已经被广泛过,这篇文章不会讨论这类的问题。之前看到

2017-04-17 19:22:21 1413

转载 子集生成

生成n个元素的子集,我认为可以这样理解:有n个不同的桶,编号1~n,每个桶最多放置一个球。遍历一遍桶,可以将球放入也可以不放入,这样,在遍历结束后,收集放置元素的桶,打印其编号,即得到一个子集。而放与不放有2种选择,所以共有2^n个子集,这样,可以采用二进制的形式。示例:3个元素000  3个桶都不放球,空集001  第一个放球,{1}010  第二

2017-04-14 20:17:41 312

转载 内存池作用

1.什么是内存池技术及为什么要设计自己的内存池?    通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。C/C++的内存分配(通过malloc或new)可能需要花费很多时。更糟糕的是,随着时间的流逝,内存(memory)将形成碎片,所以一个应用程序的运行会越来越慢当它运行了很长时间和

2017-04-14 14:23:32 1504

转载 C实现C++类

1.实例:下面先从一个小例子看起#ifndef C_Class#define C_Class struct#endifC_Class A {C_Class A *A_this;void (*Foo)(C_Class A *A_this);int a;int b;};C_Class B{

2017-04-14 13:41:25 1106

转载 [珠玑之椟]字符串和序列:左移、哈希、最长重复子序列的后缀数组解法、最大连续子序列

字符串和数组在存储上是类似的,把它们归为同一主题之下。本文主要介绍三大类问题和它们衍生的问题,以及相应算法。  本文主要介绍和讨论的问题和介绍的算法(点击跳转):字符串循环移位(左旋转)问题算法1:“杂技”代码算法2:块交换算法3:求逆(推荐)以字符串散列为例的哈希表最长重复子序列问题的后缀数组解法最大连续子序列基本问题直接解法O(n2):优化解法与累加

2017-04-09 15:29:39 341

转载 EPOLL在ET模式下会被触发多次么?

前几天和同学一起讨论EPOLLONESHOT的作用,它的功能是这样的:对于注册了EPOLLONESHOT事件的文件描述符,操作系统最多触发其上注册的包括可读,可写,错误中的一个,且只触发一次刚一看感觉EPOLLONESHOT咋么就是ET模式相对于LT模式的区别,反复理解之后发现原来ET和ONESHOT的区别是ET只是可读可写或错误类的某一种事件类型只能被触发一次,而不同种类的事件类型

2017-04-09 15:05:03 738

转载 Epoll在LT和ET模式下的读写方式

在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂

2017-04-09 15:04:30 382

转载 用递归方法建立二叉树

假设二叉树为:                                        a                              b                 c                                   d                 e                因为程序中要知道叶子结点(终点),所以要将上面

2017-04-09 15:00:08 483

转载 MGW——美团点评高性能四层负载均衡

本文整理自美团点评技术沙龙第14期:美团背后的故事-你不知道的美团云。美团点评技术沙龙由美团点评技术团队主办,每月一期。每期沙龙邀请美团点评及其他互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。目前沙龙会分别在北京、上海和厦门等地举行,要参加下一次最新沙龙活动?赶快关注微信公众号“美团点评技术团队”。本期沙龙包括三场讲座:美团云Docker平台、美团云对象存

2017-04-08 21:49:17 2356

转载 搞懂树状数组

引用请注明出处:http://blog.csdn.net/int64ago/article/details/7429868      写下这个标题,其实心里还是没底的,与其说是写博帖,不如说是做总结。第一个接触树状数组还是两年前,用什么语言来形容当时的感觉呢?……太神奇了!真的,无法表达出那种感觉,她是那么的优雅,10行不到的代码,却把事情干的如此出色!没有了解她原理的前提下即使把

2017-04-08 17:47:21 222

转载 多线程还是多进程的选择及区别

原文:http://blog.csdn.net/lishenglong666/article/details/8557215鱼还是熊掌:浅谈多进程多线程的选择关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。经

2017-04-07 14:15:25 188

转载 循环队列详解

生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题;从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构。队列分为链式队列和静态队列;静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费;链式队列是用链表来实现队列的。这里讲的是循环队列,首先我们必须明白下面几个问题一、循环队列的基础知识

2017-04-07 12:57:31 2388

转载 算法 图中求最小环路径 最小环个数 最大平均环 求简单无向图中环的个数

最小环问题:求个图中环路径代价最小的回路。如何求最小环?假如有 路径1->3->2,如果此时已经知道2-1的最短路径就好了。 回想下floyed的更新过程,就会发现更新第k次时,比k小的点之间都是最短距离的(要是点是联通的话)。所以给出解法:第k次更新图时,枚举和k相连的两条边。如 环路代价 = dist[i][k] + dist[k][j] + dist[j][i];求无向图中最

2017-04-06 16:15:39 1443

转载 转成有序数组的最少交换次数

问题描述:有一个1~n的数列的排列,但是这个数列已经被打乱了排列顺序,如果我们只是通过“交换任意两个元素”,那么,要实现元素从1~n的有序排列,“最少的交换次数是多少?”解答过程:首先我们纸上可以先写写简单的情况试试,比如排列:4 3 1 2, 交换次数=3;我们可以在多组测试中,边测试边想,真正的实现需要满足:4本该到2处, 2本该到3处, 3本该到1处, 1本该到4处,刚好一个循环

2017-04-06 15:09:29 11649 1

转载 剑指offer-面试题36-数组中的逆序对(O(n)复杂度)

题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例: 在数组{7,5,6,4}中,一共存在5个逆序对,分别是(7,6),(7,5),(7,4),(6,4),和(5,4)剑指offer中提供了一种O(nlogn)的解法,此处提供一种O(n)的解法[java] view p

2017-04-03 21:16:33 498

转载 自旋锁和互斥锁区别

POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机

2017-04-03 15:08:35 439

转载 cookie 和session 的区别详解

本文主要是参考了原作者:lemrose   http://blog.csdn.net/axin66ok/article/details/6175522 1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。  2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Se

2017-04-03 12:23:30 263

转载 面向对象三大基本特性,五大基本原则

透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大特性是:封装,继承,多态  所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有

2017-04-02 20:58:00 186

转载 加快C++代码的编译速度方法

C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速度,却只有低调的份了。比如我现在工作的源代码,哪怕使用Incredibuild调动近百台机子,一个完整的build也需要四个小时,恐怖!!!虽然平时开发一般不需要在本地做完整的build,但编译几个相关的工程就够你等上好一段时间的了(老外管这个叫monkey around,相当形象)。想想若干年在一台单核2.8GHZ上工作时的场景 -

2017-04-02 19:56:01 1059

转载 单链表的快速排序与三向切分数组快排

单链表的特点是:单向。设头结点位head,则最后一个节点的next指向NULL。如果只知道头结点head,请问怎么将该链表排序?               设结点结构为[cpp] view plain copystruct Node{      int key;      Node* next;  };     

2017-04-02 18:52:16 360

转载 C++利用反射和简单工厂模式实现业务模块解耦

1. 业务说明为了便于说明,举一个简单的例子。假设现在有一个项目需要建立一个和银行交互的平台,目前只接入工商银行,后续接入其他银行,每个银行的业务都有差异,报文格式可能也不一致。这里只列举几个简要的流程,仅包括拼报文,发送报文,接收报文,解析报文,其余整体架构以及后续处理等内容省略。2. 初步设计创建一个银行交互类 BankOpt,包括四个函数:int setM

2017-04-02 13:23:56 589

转载 四大非关系型数据库类型

四大非关系型数据库类型,你知道多少http://www.onmpw.com/tm/xwzj/sjk_88.html这篇文章的内容是摘自《Introducing Data Science》,我们在这里将要想大家介绍四种NoSQL数据库的类型,坚持读下去你会获得更多有用的信息。目前对于非关系型数据库主要有四种数据存储类型:键值对存储(key-value),文档存储(document s

2017-04-02 13:18:34 2598

转载 快排的递归和非递归实现

[cpp] view plain copy//快排的递归  void quickSort1(int* root,int low,int high)  {      int pat=root[low];      if(low    {          int i=low,j=high;          while(i       

2017-04-01 22:39:08 1534 2

空空如也

空空如也

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

TA关注的人

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