自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

可乐小浣熊

菜鸟小白

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

原创 并查集实现(c++)

1.何为并查集? 并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题,简单的说就是对集合操作的一种数据结构。2.做什么用: 考虑这样一个问题—— 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x...

2018-09-27 15:41:12 3877

原创 epoll+线程池实现高并发

      epoll模型是linux实现高并发的一种方法,基于事件驱动模型,相比于select/poll  模型具有更高的效率,本人对epoll模型做了一个简易的封装,更多的功能还在完善中,在这里仅做学习参考用。     在epoll编程中,有三个非常重要的函数:      1. int epoll_create(int size)     :创建epoll 句柄, 入参是表示监听的数...

2018-09-27 10:40:29 5853

原创 c++最大堆的实现

     在看一些开源组件的源码时,会发现很多的底层地方都会使用到最大堆(最小堆)的数据结构,如 在libevent中维护超时事件就用到了最小堆的结构,可见,这种数据结构的重要性。     最大堆:根结点的键值是所有堆结点键值中最大者。     最小堆:根结点的键值是所有堆结点键值中最小者。     堆,最重要的一个过程就是重建的过程,当有新的数据加进来或者移除时,都会对堆进行一次重建...

2018-08-29 18:44:32 1202

原创 经典算法之浅析kmp算法

         KMP算法,也就是字符串匹配算法,是很多场合都会用到的算法,这个算法想要解决什么样的问题呢?举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?         传统的求解,我想很多人都已经想到了,遍历源字符串的每一位嘛,依次和要匹配的字符串比较,code很easy,但效率较为低下,可以想到,时间复杂度...

2018-08-05 19:12:27 477

原创 Leetcode: SingleNumber I & II 数组中只出现一次的数

     题目:I:Given a non-empty array of integers, every element appears two times except for one, which appears exactly once. Find that single one.       Note:  Your algorithm should have a linear runti...

2018-08-02 20:25:51 477

原创 LRU缓存算法c++实现

    在如今的项目开发中,缓存是一种必不可少的存储方式,目前在各种后台开发中,比较常见的一种缓存算法就是LRU了,LRU名为最近最少使用算法。它会将最近不常用的缓存数据淘汰掉,是一种Cache替换算法。     本文通过c++简单的实现这种算法,代码不长,但能很好的体现这种思想     思路:  map  存储数据 ,实现查找效率O(1),双向链表实现算法逻辑     算法逻辑: 1....

2018-07-26 14:09:58 10182 6

原创 c++多线程模式下的socket编程(线程池实现)

     socket 编程可以说是一个基本的技术掌握,而多个客户端向服务端发送请求又是一个非常常见的场景,因此多线程模式下的socket编程则显得尤为常见与重要。    本文主要利用线程池的技术,来实现多线程的模式,线程池的优点就不多述了,相信大家都能理解,就是减少了线程创建于销毁的时间,提高多线程的性能。    首先,先写个线程池:    下面分别是头文件 和cpp文件#ifnd...

2018-07-20 18:33:33 16289 2

原创 一步一步学linux之进程间通信——消息队列

一、什么是消息队列:消息队列提供了一种进程与进程间发送数据块的一种方法,每个数据块含有一个类型,接收进程可以独立地接收含有不同类型的数据结构,可以通过发送消息来避免同步和阻塞问题。消息队列有最大长度限制       在分布式计算环境下,消息队列是为了对异构网络环境下的分布式应用提供有效的通信机制,主要为应用解耦、异步处理、信息交换等来实现高性能、高可用的一致性架构。二、MQ的通信模式1.点对点通讯...

2018-05-10 10:15:21 465

原创 一步一步学linux之进程的资源管理

1.什么是进程:    进程是操作系统基本的资源管理单位,进程又是执行的代码片段(一个程序创建一个或多个进程,一个进程又可执行多个程序代码,将一个代码片段加载到内存中并让其执行也就创建了一个进程),它有生命周期:包含了创建、执行、等待、退出等状态。    一个进程不仅仅只是占用了加载代码段的内存,也有其他资源集合,在Linux内核中 task_struct完整描述了一个进程所有的资源信息。   t...

2018-04-24 16:44:33 598

原创 数据库内联、左联和外联的区别

在关系型数据库中,数据分布在许多相关的表中,所以有时候的查询会涉及到多表查询。INNER JOIN(内联):两个表a,b 相连接,取出符合连接条件的字段LEFT JOIN(左联):先返回左表的所有行,再加上符合连接条件的匹配行RIGHT JOIN(右联):先返回右表的所有行,再加上符合连接条件的匹配行...

2018-04-19 09:57:52 2940

原创 算法题:计算一年中的第几天

题目:给出年月日的日期,算出该天是这年的第几天需要考虑闰年的情况,也需要考虑大月、小月、以及二月;题目不难,只需考虑周全即可代码如下:@author xionglei @date 2018/03/04 #include<iostream>using namespace std;int solution(int year,int month,int day) { ...

2018-03-05 20:50:30 2734

原创 求链表中倒数第k个结点

struct ListNode //定义结点{ int m_Value; ListNode* m_pNext;};思路:一个很自然的想法是从链表的尾端开始回溯k步,即可得到结果,但一般这种题目会限制链表为单向链表,所以这种思路行不通。    一个可行的思路是:用两个指针都指向头结点,第一个指针先往前走k-1步,然后两指针同步向前走,直到第一个到达尾结点。    考虑代码的鲁棒性...

2018-03-05 16:44:35 225

原创 从一道错误的阿里面试题浅谈函数

2016年阿里有一道关于c++的面试题(错题):#include<iostream> void func(const int &v1,const int &v2) { std::cout<<v1<<” ”; std::cout<<v2 <<” ”;}int  main(int argc ,char * argv[...

2018-03-03 21:09:58 361

原创 实模式与保护模式

实模式:CPU刚刚启动的时候是实模式阶段,实模式被特殊定义为20位地址内存可访问空间   因此实模式只能访问地址在1M以下的内存(这个内存把它叫做常规内存,地址在1M以上的叫扩展内存)工作机理:x86下的cpu 地址总线:20根,因为实模式下的寻址是寻的实际物理地址,因此最大的寻址范围就是2^20字节=1M内存,但是对于x86下的内部寄存器都是16位的,能表示的地址范围只有64k,因此在cpu内部...

2018-03-03 21:01:57 355

空空如也

空空如也

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

TA关注的人

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