关闭
当前搜索:

LRU缓存策略设计

一、什么是LRU缓存策略 LRU(Least Recently Used)近期最少使用算法。它的原理就是,缓存一定量的数据,当缓存数量超过设置的阈值时就删除一部分旧的数据。 那么我们怎样判定旧数据呢???根据局部性原理,距离当前最久没有被访问过的数据应该被淘汰。二、LRU缓存策略实现原理 1、使用双向链表记录数据的被使用的时间 因为我们要删除最久没有被访问的数据...
阅读(898) 评论(2)

大数运算

一、为什么要有大数运算 在C/C++编程语言中,整型的最大存储类型是long long类型,大小是8个字节,一但超出这个范围,则就无法用编程语言的内置类型存储。因为编程语言的存储范围有限,所以它不能满足较大规模的高精度的计算,于是就产生了大数运算这种方法。二、大数运算原理 由于内置类型的存储范围有限,所以我们可以将大数转换成字符串存储在数组里面,然后再对每一位做单独的加减乘除运...
阅读(684) 评论(0)

半同步/半反应堆线程池

一、什么是线程池 线程池是服务器预先创建的一组线程,这些线程运行着相同的代码,并具有相同的属性。当有新的任务到来的时候,主线程通过某种方式选择线程池中的某一个线程来为之服务,服务完之后又放回线程池中。二、为什么要有线程池 相比于动态创建线程来说,线程池可以提高速度。因为线程的创建和销毁是需要时间的,如果我们预先创建好,用完之后再回收的话,则会节省不少时间。一般线程池中线程的数量...
阅读(707) 评论(0)

两种高效的并发模式

并发编程的目的是让程序”同时”执行多个任务。如果程序是计算密集型的,并发编程并没有什么优势,反而由于任务的切换使效率降低。但如果程序是I/O密集型的,那就不同了。 I/O操作通常分为两个阶段,即等待和数据搬迁,通常等待所花费的时间比较多。而I/O操作的速度远远低于CPU的计算速度,所以让程序阻塞在I/O操作将浪费大量的时间。如果程序有多个执行线程,则当前被I/O操作阻塞的线程可以放弃CP...
阅读(611) 评论(0)

Reactor模式和Proactor模式

一、Reactor模式(反应器模式) 1、Reactor模式的特点 Reactor用于同步I/O,同步是指用户进程触发IO操作并等待或去轮询的查看I/O操作是否就绪,如果事件就绪的话需要应用程序自己读取或写入数据。(Reactor模式需要用户自己进行I/O操作)。 并发系统常用Reactor模式代替常用的多线程的处理方式,节省系统的资源,提高系统吞吐量。 2、使用同步I/O模...
阅读(571) 评论(0)

网络畅聊系统

1、网络聊天系统简介 简单来说,这个聊天系统可以达到群聊的目的。客户端向服务器发送消息,服务器对这条消息进行转发。由于使用的是udp协议,所以服务器会维护一张用户列表,这个列表记录了所有向服务器发送过消息的客户地址。当某个客户端退出的时候,会向服务器发送一条特殊的指令,然后服务器将该客户地址从用户列表中删除。2、Udp聊天系统原理图 从上图可以看到,服务器端使用生产者消费者模型...
阅读(843) 评论(0)

天气推送服务器

1、主要功能 用户通过天气推送服务器暴露出来的接口进行注册,注册完毕之后用户可以添加一些自己的亲朋好友的信息。每天定时爬取全国的天气,然后推送给用户的亲朋好友。 2、服务器 服务器使用的是一个协程版本的web服务器,支持get和post方法,底层用CGI方法处理带参数的请求。服务器对外暴露两个接口,用来进行注册和登录。 要登录的话,必须要有一个账号和密码,可以通过注册...
阅读(1038) 评论(0)

Scrapy框架学习

最开始学习爬虫的时候,我用的是urllib2和BeautifulSoup这两个库,使用这两个库的时候,所有爬虫的框架都要自己写,一开始还觉得没什么,到最后写的越来越多的时候就觉得很麻烦,因为我的重点是爬取数据分析数据啊,不是浪费时间去写什么爬虫框架。 后来了解到scrapy这个框架,用这个框架写爬虫的话感觉真的非常爽,因为它真的很高效。比如原来你用urllib2和BeautifulSou...
阅读(969) 评论(1)

diff和patch

一、diff和patch diff命令是linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方,常用于svn和git中。diff会在命令行中打印每一个行的改动。diff程序的输出称为补丁(patch),patch命令可以根据diff的输出将a.c的内容更新为b.c的内容,或者是将b.c的内容还原成a.c的内容。二、diff命令介绍 1、命令格式:di...
阅读(593) 评论(0)

uniq命令

uniq这个命令用于读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多的重复的行将被删除。行比较是根据所用字符集的排序序列进行的。命令格式: uniq option 文件 常用option: -c:显示输出中,在每行行首加上本行在文件中出现的次数(注意是连续出现的行)。 -d:只显示重复的行。 -u:只显示不重复的行。例:...
阅读(624) 评论(0)

sort命令

一、sort将文件的每一行作为一个单位,相互比较,比较的原则是从首字符向后,依次按ASCII码进行比较。 例: 二、命令格式 命令格式: sort option 文件 常用option:1、-u:去除重复行 例1:取出重复行 2、-r:默认是升序,加-r选项变为降序 例2:去重并降序排列 3、-o:sort默认将结果输出到标准输出,所以要使用重定向才能将结果写入文件,但是要将排序结...
阅读(627) 评论(0)

shell知识体系框图

grep工具:sed工具:cut工具:awk工具:sort工具uniq工具diff和patch...
阅读(1490) 评论(5)

cut工具

1、cut工具 cut命令可以从一个文本文件或文本流中提取文本列。cut是以每一行为一个处理对象的。2、命令格式 cut option 范围 option: -b:按照字节截取。 -c:按照字符截取。 -d:指定域分隔符 -f:指定要截取那几个域。例1: 例2: 例3: 可以看到用cut和awk都能对列进行截取。...
阅读(905) 评论(0)

awk工具

一、什么是awk awk也是文本处理工具,与sed相比,awk不仅能以行为单位处理文件,还可以以列为单位处理文件。awk的缺省行分隔符是”\n”,缺省列分隔符是空格或tab,但是行分隔符和列分隔符都是可以自定义。awk还是一门很复杂的脚本语言,具有像C语言一样的分支和循环结构。二、awk命令格式 awk option ‘编辑命令’ file1 file2 … awk option -f...
阅读(1149) 评论(3)

sed工具

一、什么是sed sed叫做流编辑器,在shell脚本和Makefile中作为过滤一使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换成为另一种格式输出。sed是一种在线编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为”模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到...
阅读(1871) 评论(6)
282条 共19页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    博客专栏
    文章分类
    最新评论