在计算机科学中,排序是一个非常基础的算法。不同的排序算法有不同的时间和空间开销。在这么多的排序算法中,根据在排序的最终结果中,各元素的次序是否依赖于它们之间的比较,可以将排序算法分为两大类:基于比较的排序和非基于比较的排序。
从BlockingQueue再探线程同步
BlockingQueue(阻塞队列)在程序中被大量使用,特别是在多线程程序中,譬如需要提高吞吐量时采用将请求直接扔到阻塞队列中,然后返回,由其他线程从阻塞队列中获取请求再进一步处理。而经典的生产者-消费者模型,正是阻塞队列大放光彩之处。
单例模式
单例(Singleton)模式可能是被使用最广泛的一个设计模式之一,也可能是面试中被问到或被要求书写最多的一个设计模式了。该设计模式的主要目的是要求在整个系统中只出现一个类的实例。
下面采用Java语言描述单例模式的几种实现方式。
shared_ptr的注意事项
前面在浅谈C++值语义和对象语义一文中简要的阐述了一下智能指针shared_ptr的作用和用法,作为C++11中最为广泛使用的智能指针,shared_ptr虽然解决了裸指针的诸多问题,但是它并非完美、无懈可击,所以,本文就shared_ptr使用过程中需要注意的一些问题做一下总结。
epoll总结
在现如今的并发网络服务器程序开发中,我们都会见到IO多路复用(Linux下的epoll、Windows下的IOCP等)的影子,它们是各种服务器并发方案(常见并发网络服务程序设计方案)的基础,而我们知道,绝大部分服务器都是运行在Linux系统下,所以,本文就现如今Linux下用的最多的epoll的原理、用法进行一个简单总结。
2015-2016年互联网公司校招编程题汇总
本文收录了近两年的各大互联网公司校招(实习)笔试的编程题,并提供了自己的思路和解法。希望能对自己和备战互联网校招的同学提供一些帮助。
muduo源码阅读之Thread和ThreadPool
在muduo的one loop per thread + thread pool模型中,线程和线程池应该是其中最基础也是最重要的两个组件了。所以,本文深入代码,学习Thread和ThreadPool两个类的结构和实现。
muduo源码阅读之线程同步
前面的四篇“muduo源码阅读”文章都是从总体上(Reactor模式)出发把握muduo库的一些设计思想和架构,从这篇开始,将更深入细节、更贴近代码地阅读muduo网络库。
首先,是多线程编程中重中之重的线程同步问题。