- 博客(26)
- 资源 (23)
- 收藏
- 关注
原创 nginx学习——建立hash表的前提条件
在前面两篇博文中分别介绍了nginx中普通hash表和带有通配符的hash表的建立和查找。今天主要是介绍建立普通hash表和带通配符hash表的前提条件:哈希key数组的初始化以及key-value对的添加。
2016-08-31 22:59:27
1367
原创 nginx学习——从基本hash表到支持通配符的hash表(下)
在上一篇博文介绍了nginx中基本hash表的实现,今天主要是来介绍nginx是如何实现支持通配符的hash表。话说在看支持通配符的hash表源码时我惊奇地发现它的设计思路居然和我之前设计的中文字典树基本一致,觉得nginx的设计也不过如此,但是看完hash表源码后我才发现我还是too young too simple,nginx的hash表考虑到的问题我想的要多得多!
2016-08-29 23:55:20
1995
原创 nginx学习——从基本hash表到支持通配符的hash表(上)
hash表示典型的空间换时间的数据结构,对元素进行查找、插入速度的时间复杂度为O(1),这种高效地方式非常适合频繁读取、插入、删除元素,在nginx服务器中,hash表也得到了广泛应用。在nginx基本hash表中,关键字一般是字符串(URL域名),但是如果要让hash表支持统配符,比如”*.test.com“,就需要用到nginx中特有的支持通配符的hash表。
2016-08-28 23:09:32
2088
原创 nginx学习——nginx中的内存池技术(与STL内存池对比分析)
所有的内存池都有一个共同的特点,那就是一开始就将申请大块内存,避免重复申请释放小区块造成内存碎片。nginx也不例外,我们来看看nginx是怎样管理内存吧!
2016-08-27 23:00:19
3889
3
原创 每日一练——两个单链表相交的一系列问题
题意描述:单链表可能有环,也可能无环。给定两个单链表的头节点head1和head2,这两个链表可能相交,也可能不相交。请实现一个函数,如果两个链表相交,请返回相交的第一个节点;如果不相交,返回null。要求:如果链表1的长度为N,链表2的长度为M,时间复杂度请达到O(N+M),额外空间复杂度请达到O(1)。
2016-08-25 22:54:44
1191
原创 linux基础——linux下多路IO复用接口之select/poll
函数select和poll用于IO复用,它们都是监视一个或多个文件描述符集合,可以进行IO操作的时候就返回。一、函数select()select允许内核等待多个事件中的任何一个发生,并且只要有一个或多个事件发生或者经历了一段指定的时间后才唤醒它。函数原形如下:#include #include #include #include int select(
2016-08-23 23:51:56
1286
原创 STL学习——STL中的内存池管理技术
当我们new一个对象时,实际做了两件事情:(1)使用malloc申请了一块内存。(2)执行构造函数。
2016-08-18 23:08:53
16659
3
原创 计算机网络——TCP协议中的三次握手四次挥手以及11种状态转换
TCP的传输连接分为3个阶段:连接建立(三次握手)、数据传送和连接释放(四次挥手)。TCP传输连接的管理就是使传输连接的建立和释放都能正常地进行。
2016-08-14 20:37:19
27294
1
原创 linux基础——linux下五种IO模型小结(阻塞IO、非阻塞IO、IO复用、信号驱动式IO、异步IO)
一、阻塞IO模型 (同步I/O)阻塞IO是指进程进行IO操作的时候,因为数据没准备好或者缓冲区里没有空间而无法进行IO操作会进入睡眠,直到数据准备或者缓冲区有空间才回被唤醒的行为。阻塞IO是最通用的IO类型,所有套接字默认情况下都是阻塞的。输入操作:read、readv、recv、recvfrom和recvmsg,调用这些输入函数之一,如果缓冲区没有数据可读,该进程会投入睡眠,直到
2016-08-13 19:50:32
3173
原创 每日一练——用两个栈实现队列&用两个队列实现栈
题目一由两个栈组成的队列【题目】编写一个类,用两个栈实现队列,支持队列的基本操作(push、pop、front)。注意点:1、如果stack_push要往stack_pop中压入数据,必须一次性把stack_push中的数据全部压入。2、如果stack_pop不为空,stack_push绝对不能向stack_pop中压入数据。templateclass queue{
2016-08-10 22:52:41
710
原创 数据结构——从英文字典树到中文字典树
昨天面试电话中的一道题,题目如下:给你一个姓名的集合,查找你的名字是否在里面出现,比如搜索姓氏为叶的人,那么会出现所有姓为叶的人,应该如何设计?当时的回答是,姓为key,名为value,存放到multimap中,使用multimap中的count函数统计key为叶的个数,然后用find函数找到第一个key为叶的指针,使用迭代器从该指针向后查找count个元素,判断这count个元素中是否有姓名
2016-08-09 23:08:09
9468
原创 设计模式——单例模式(Singleton Pattern)实现
什么是单例模式?单例模式(Singleton Parttern)保证一个类仅有一个实例,并提供一个访问它的全局访问点。类似于全局变量,但是效果比全局变量更优,全局变量必须在程序开始就创建,如果后面没有用到,会造成资源的浪费。
2016-08-07 23:01:26
772
5
原创 每日一练——大数加减乘除运算实现(网易笔试题)
前几天做网易笔试题时最后一道题是设计一个大数类,实现加减运算,因为做这道题时只有5分钟,结果我刚把类写出来,考试时间就结束了。其实在去年12月我写过一个RSA的加解密程序,其中就用到了大数的加减乘除运算(当然这只是RSA用到的一小部分),后面顺便附上面试时经常会让手写的加、减、乘代码。
2016-08-06 23:05:53
4719
原创 STL学习——STL中的关联式容器总结(RB-tree、set、map、hashtable、hash_set、hash_map)
所谓关联式容器,观念上类似于关联式数据库:每个元素都有一个键值(key)和一个实值(value)。当元素被插入到关联式容器中时,容器内部结构便依照其键值大小,以某种特定规则将这个元素放置到适当位置。关联式容器没有所谓的头尾(只有最大或最小元素),所以不会有所谓push_back()、push_front()等操作行为。
2016-08-05 22:56:16
1713
原创 STL学习——STL中的序列式容器及适配器总结(vector、list、deque、stack、queue)
所谓序列式容器、其中的元素都可序,但未必有序。STL提供了vector,list,deque,stack,queue,priority-queue等等序列式容器。其中stack和queue由于只是将deque改头换面,技术上被归类为一种配接器(adapter),以下总结了序列式容器。
2016-08-04 22:56:29
881
原创 每日一练——求一个只包含0、1的矩阵中只包含1的最大子矩阵大小
题目描述:给定一个无序矩阵,其中只有1和0两种值,求只含有1的最大正方形的大小。例如给定如下矩阵:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0Return 4int max_square(vector>& matrix) { int row = matrix.size(); int col = matrix[0
2016-08-03 22:56:20
7829
原创 每日一练——轮询调度算法和短作业优先调度算法的平均等待时间
今天做亚信的笔试题遇到的轮询调度算法,和春招做的百度笔试题短作业优先调度算法很相似,但是难度要UPUP。做题的过程中,因为没有正确地处理迭代器失效的问题浪费了好多时间(>﹏轮询调度算法如果一个系统可以在单个CPU上运行多个并发作业,那么就该系统而言,“调度”是指:系统选择运行哪些任务,何时运行,何时中断以及以何种方式运行或中断。轮询调度规则是指:每个作业运行时间固定,该作业结束后,切换
2016-08-01 22:58:06
7468
原创 linux基础——经典线程同步问题解析及编程实现
前两天写了个简单的线程池,结果在处理线程的同步互斥上花了不少时间,觉得有必要把以前学习的知识再过一遍,这次主要复习的是几个非常经典的同步互斥问题:生产者-消费者问题、读者-写者问题、哲学家进餐问题以及吸烟者问题
2016-07-31 23:47:32
2680
原创 linux基础——linux进程与线程的区别与联系
进程和线程的区别与联系:1、从属:一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。1、调度:在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程的切换。在不同进程中进行线程切换,如从一个进程内的线程切换到另一个进程的线程时,会引起进程切换。
2016-07-28 14:18:18
962
原创 linux基础——linux线程间通信及同步机制总结
线程间的通信有两种情况:1、一个进程中的线程与另外一个进程中的线程通信,由于两个线程只能访问自己所属进程的地址空间和资源,故等同于进程间的通信。2、同一个进程中的两个线程进行通信。本文说的就是第二种情况。关于进程间通信(IPC)可以看我的另一篇博文http://blog.youkuaiyun.com/a987073381/article/details/52006729
2016-07-25 22:45:16
45727
9
原创 每日一练——从长度为n的数组里选出m个数使和为固定值sum
这个问题是我从leetcode上一道问题所想到的,原题:如果是从数组中选出2个数相加使之成为固定的数sum,这当然很简单,把数组中的数字遍历一遍,判断另一个数字是否也在数组中即可。代码如下。 vector twoSum(vector& nums, int target) { vector result; map cache;//第一个为数字,第二个为下标
2016-07-24 22:47:19
27028
原创 linux基础——linux进程间通信(IPC)机制总结
在linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法。在linux下有多种进程间通信的方法:半双工管道、命名管道、消息队列、信号、信号量、共享内存、内存映射文件,套接字等等。使用这些机制可以为linux下的网络服务器开发提供灵活而又坚固的框架。
2016-07-23 21:33:12
54234
11
原创 数据结构——二叉树的四种遍历方式(非递归)
二叉树遍历: 前序遍历:根左右(栈实现)中序遍历:左根右(栈实现)后序遍历:左右根(栈实现)层次遍历:从上往下遍历(队列实现)结构体如下:struct CTreeNode{ int m_Data; CTreeNode *m_lpLeft; CTreeNode *m_lpRight;};对于先序遍历,我们参考先序遍历的递归方式,先访问当前节点,递
2016-07-18 20:50:26
806
原创 linux基础——epoll学习笔记
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序
2016-07-14 22:46:42
862
原创 每日一练——判断两序列是否为同一二叉搜索树序列
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路: sequence中从start到end,可以看成三个部分,最后一个是根节点,第一部分的所有数据均小于根节点,第二部分的所有数据均大于根节点。注意第一部分可能为空,第二部分也可能为空。先找到第一部分和第二部分的分割点,从分割
2016-07-12 14:02:49
1316
1
原创 每日一练——矩阵中的最大递增路径
题目描述:Given an integer matrix, find the length of the longest increasing path.From each cell, you can either move to four directions: left, right, up or down. You may NOT move diagonally or move
2016-07-11 16:16:47
2682
SM2椭圆曲线公钥密码算法行业标准文档
2016-11-09
祖冲之序列密码算法行业标准文档(含代码和测试数据)
2015-10-23
扫描防范技术的研究(含源码)
2014-03-13
漏洞扫描器的设计(含源码)
2014-03-13
服务发现扫描器的设计(含源码)
2014-03-13
第9章 命名管道扫描器的设计
2014-03-13
第8章 基于应用的服务扫描器的设计
2014-03-13
基于协议的服务扫描器的设计(含源码)
2013-10-18
ICMP扫描器的设计(含源码)
2013-10-07
SNMP扫描器的设计(含源码)
2013-10-07
NetBIOS扫描器的设计(含源码)
2013-10-07
TCP/UDP端口扫描器的设计(含源码)
2013-10-07
网络协议和网络编程例程
2013-10-07
计算机网络实验指导书(详细版)
2013-10-07
《数据库系统概论》实验指导书
2013-05-22
《汇编语言程序设计》实验指导书
2013-05-22
Sniffer使用教程
2013-05-22
《网络管理与维护》实验指导书
2013-05-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人