- 博客(15)
- 资源 (20)
- 收藏
- 关注
原创 数据结构与算法学习--排序总结
排序算法已经学习完了,但是在项目开发过程中如果去选择一个高效的排序算法;下面是对前面几种算法的总结。如何实现一个通用的、高效率的排序函数线性排序算法(计数、桶、计数排序)的时间复杂度比较低,但是适用的场景也比较特殊。如果针对小规模的数据进行排序,可以选择时间复杂度0(n^2)的算法;如果针对大规模的排序,时间复杂度0(nlogn)的算法更加高效。所以为了兼顾任意规模数据的排序,一般都会首选时...
2018-10-31 16:25:50 643
原创 数据结构与算法学习--排序(桶排序,计数排序,基数排序)
基数排序和计数排序可以参照链接桶排序:桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限...
2018-10-30 22:31:11 613
原创 数据结构与算法学习--排序(归并排序,快排序)
1、归并排序归并排序使用时分治思想,就是将大问题分解成子问题,一般都是通过递归来实现。下面是归并排序的代码实现。void merge_sort(int a[],int left,int right){ int middle = 0; /*递归结束条件*/ if(left >= right) { return; } middle = (left + rig...
2018-10-29 11:29:23 418
原创 数据结构与算法学习--排序(冒泡排序,插入排序,选择排序)
排序是最基本的算法,在项目开发中经常遇到,也是面试环节中考察最多的。1、冒泡、插入、选择三种排序的比较及代码实现“有序度”和“逆序度”:对于一个不完全有序的数组,如4,5,6,3,2,1,有序元素对为3个(4,5),(4,6),(5,6),有序度为3,逆序度为12;对于一个完全有序的数组,如1,2,3,4,5,6,有序度就是n*(n-1)/2,也就是15,称作满有序度;逆序度=满有序度-有序...
2018-10-28 11:42:11 917
原创 简单的线程池的实现及多线程面试题
第一题:线程的基本概念、线程的基本状态及状态之间的关系?线程,有时称为轻量级进程,是CPU使用的基本单元;它由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源(如打开文件和信号)。线程有四种状态:新生状态、可运行状态、被阻塞状态、死亡状态。状态之间的转换如下图所示:第二题:线程与进程的区别?1、 线程是进程的一部分,所以线程有的时...
2018-10-27 00:43:49 2214
原创 数据结构与算法学习--递归
今天简单了解一下递归,递归对我来说还是比较难理解的一种算法;关键因素是如何找到递推的公式。下面就简单的来了解一下满足递归的条件,及递归的弊端,递归的关键因素。递归的弊端:1、堆栈溢出问题函数调用都会讲临时数据变量进行压栈处理,等函数调用结束才出栈;如果递归调用深度太大,就会导致栈溢出。linux系统栈的大小一般是1K大小,可以在代码中增加判断,调用深度大于1K时,直接返回。只是简单的避免...
2018-10-17 23:13:34 494
原创 数据结构与算法学习--队列
今天我们开始学习队列的;队列在实际项目开发中使用的很广泛,比如我们经常说的线程池,在处理大部分资源不足的情况下,都会考虑使用队列来缓存请求数据。1、阻塞队列阻塞队列时一种典型的“生产者–消费者”模型,就在队列的基础上增加的阻塞的功能(其实就是一种同步机制)。当队列为空时,出队阻塞;当队列满时,入队阻塞。还有下面多消费者–单生产者模式。上面的就是我们线程池的基本架构,在多个线程同时操作队...
2018-10-15 23:40:07 397
转载 pthread_sigmask 控制线程的信号掩码
实例1:屏蔽信号SIGINT/* 示例一:屏蔽信号SIGINT 来源:http://www.leoox.com/?p=321 编译:gcc pthread_sigmask1.c -lpthread 运行后,你发现你按下CTRL+C(触发SIGINT信号),这个程序根本停不下来。因为SIGINT信号已经如我们所愿被屏蔽掉了。*/ #include <pthread.h...
2018-10-14 20:51:45 6915 1
原创 数据结构与算法学习--栈
1、顺序栈的实现:/************************************************************************* > File Name: arrayStack.h > Author: jinshaohui > Mail: jinshaohui789@163.com > Time: 18-10-..
2018-10-13 16:26:51 484
原创 linux使用back trace打印函数调用栈,捕捉段错误
在大型项目开发过程中,经常遇到一些段错误问题或者查询是哪个函数调用了当前函数。通过代码排查手段太费时了,下面利用函数库打印出段错误时刻的函数调用栈,很容易找到代码异常之处。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈int backtrace(void **buffer,int size) 该函数用于获取当前线程的调用堆栈,获取的信息将会被存放...
2018-10-13 12:52:47 3970
转载 select、poll、epoll之间的区别总结
select、poll、epoll都是IO多路复用的机制,先是监听多个文件描述符FD,一旦某个FD就绪,就可以进行相应的读写操作。但是select、poll、epoll本质都是同步I/O,他们都需要在读写事件就绪之后自己负责读写,即这个读写过程是阻塞的1 select/pollselect缺点:【1】每次调用select都需要把fd从用户态拷贝到内核态,开销比较大【2】每次都需要在内核遍历...
2018-10-13 11:46:17 766
原创 数据结构与算法学习--链表二
单链表反转链表中环的检测两个有序的链表合并/************************************************************************* > File Name: lisklist.c > Author: jinshaohui > Mail: jinshaohui789@163.com > Time...
2018-10-13 01:04:49 346
redis设计与实现 第二版 高清 带标签 PDF文档.zip
2019-07-22
linux VIM 配置文件
2014-12-02
live555项目Vs2010编译环境搭建及源码
2014-09-06
ubuntu apt-get 软件源局域网或公网设置
2014-06-25
易宝支付PHP代码
2013-09-07
XPath基础教程
2013-08-31
PJSIP 开源代码及文档
2013-01-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人