
计算机
文章平均质量分 69
Honkee
希望希望可以成真
展开
-
重装windows后覆盖掉ubuntu的引导的恢复
重装windows后覆盖掉ubuntu的引导的恢复原创 2014-10-09 16:39:57 · 2177 阅读 · 0 评论 -
Memcache源码阅读(2)---命令行使用
我看的源码版本是1.2.4使用方法编译安装,运行memcached➜ memcached-1.2.4 ./memcachedtelnet 到memcached监听的端口,通过命令行访问memcache➜ ~ telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.1原创 2016-12-17 15:44:21 · 689 阅读 · 0 评论 -
Memcache源码阅读(3)---处理用户输入
我看的源码版本是1.2.4从main函数开始,看看作者怎么初始化,然后再看作者怎么监听连接,怎么接受用户的输入,怎么处理用户的输入。主程序main函数里的一些操作自定义中断处理函数从命令行中获取用户打开memcached的指令值设置core文件初始化资源,统计资源,分配内存屏蔽SIGPIPE信号,因为SIGPIPE的默认处理是中断程序,客户端断开连接后,memcached再往客户端写数据就原创 2016-12-17 15:45:10 · 557 阅读 · 0 评论 -
Memcache源码阅读(6)---数据存储
我看的源码版本是1.2.4前面第4篇讲到了memcached怎么去管理内存的,memcached将内存分为不同大小的chunk,不同大小的数据就放到能装下那个数据的最小chunk中。现在我来讲讲数据是以怎样的形式存储在内存中的。item的结构体#define ITEM_key(item) ((char*)&((item)->end[0])) //获得这个item的key#define ITEM_s原创 2016-12-21 20:02:08 · 958 阅读 · 0 评论 -
Memcache源码阅读(4)---内存管理
我看的源码版本是1.2.4memcached的存储memcached拥有一个内存池,内存池中的内存分成多种大小的chunk,chunk的大小有一个基础大小(最小的chunk大小,base chunk size),然后后面大小的是以settings.factor为因子不断的增大。比如说base chunk size为64byte, setting.factor = 1.5,那么memcached拥有的原创 2016-12-18 15:06:35 · 939 阅读 · 0 评论 -
Memcache源码阅读(5)---哈希表管理
我看的源码版本是1.2.4memcached使用的哈希函数是用Dr Dobbs的Hash方法,哈希函数的原理我就不说了,它可以将一个k个字节的数据通过转换,变为一个32位的二进制数。它有那样的特性,这k个字节的二进制稍微有一点变动,得到的32为二进制数就会有很大区别。这也就是哈希函数的作用。虽然说他哈希之后是32位,也就是可以分为2^32这么多个哈希桶,如果我们不需要这么大的哈希桶,可以对得到这32原创 2016-12-18 22:09:18 · 700 阅读 · 0 评论 -
Memcache源码阅读(7)---用户输入的处理
我看的源码版本是1.2.4前面我已经说了数据存储,哈希表的管理,内存的管理。还有第二章说到用户的请求时如何到达memcached的,从用户的输入到memcached如何接受到这些输入。那现在我们来分析一下接收到这些输入后,memcached是怎么操作的。要看这部分代码就需要知道memcached有多少个命令。 我从process_command()这个函数里看到的命令有:get,bget,add,原创 2016-12-25 20:22:26 · 621 阅读 · 0 评论 -
Memcache源码阅读(8)---多线程
我看的源码版本是1.2.4前面已经将memcached的主要内容讨论完了。这里来说说memcached怎么使用多线程的吧。memcached的线程分为两种,一个主线程,另外的是工作线程。一个主线程负责接收用户的请求,接收到请求后将这个请求递交给多个工作线程的其中一个。每个工作线程都有一个连接队列管理着主线程递交的连接。线程初始化还是从线程的初始化开始。初始化一些锁,然后初始化工作线程,在主线程和工作原创 2016-12-25 21:06:49 · 594 阅读 · 0 评论 -
Memcache的分布式
memcached是不支持分布式的,要实现分布式的memcached是需要在客户端那边实现的。就是我运行多个memcached实例,在客户端那边注册多个memcached实例,key->value对具体保存在哪个memcached实例由客户端的哈希算法决定。对于固定的memcached实例,任何hash函数都可以比较好的定位到固定的memcached实例,但是现实中,memcached实例有可能由于原创 2016-12-26 16:41:52 · 822 阅读 · 2 评论 -
Memcache源码阅读(1)---看源码的心得
心得我这是第一次看源码。说不上什么心得,不过也总结一下~我觉得阅读一个项目的源码,应该是先知道这个项目具体怎么用之后,先估计一下作者的实现,然后再看源码来验证自己的想法。我这次阅读源码是在没有用过这个项目的前提下阅读的,一开始的时候不知道从何读起,于是就去网上找别人的博客,跟着别人的博文一篇一篇的看,然后自己对着源码看。慢慢的自己就开始知道要看什么了,就不再跟着别人的博文的步骤来,自己想知道那个功能原创 2016-12-17 15:43:18 · 1297 阅读 · 0 评论 -
动态链接与静态链接
静态链接静态链接是将程序需要调用到的符号(函数,变量)都拷贝到可执行文件。 链接器解析符号的时候是这么解释的:扫描一次传入链接器的文件(文件可以是目标文件,可以是归档文件,通过命令行的方式传入,从左到右扫描一遍)。扫描的时候修改三个集合(可重定位目标文件集合E,未解析的符号集合U,已定义的符号集合D)。扫描目标文件的时候,修改集合U和集合D,扫描归档文件就会尝试匹配U中的未定义符号,匹配成功修改U原创 2016-11-09 10:24:51 · 731 阅读 · 0 评论 -
修改grub默认启动顺序
修改grub默认启动顺序原创 2014-10-09 17:10:38 · 24048 阅读 · 2 评论 -
Ubuntu14.04 + opencv2.4.11 + python环境配置
先到opencv的官网下载你需要的opencv版本,下载linux版本的。然后在本机编译,编译对gcc cmake 的版本都是有需求的。根据上面的教程,编译出来并没有cv2.so,那是因为编译的时候cmake的选项没有弄对。cd opencvmkdir releasecd releasecmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE原创 2015-05-27 20:44:18 · 6286 阅读 · 1 评论 -
参加微软黑客马拉松经历
这次参加黑客马拉松,队伍一共三人,一个是微软俱乐部部长,另一个是一个女生。 我来总结下我的工作吧。我们的作品是一个VS的插件,主要功能是为C++生成Get,Set方法。 VS插件有两种,一个是AddIn,另一个是VSPackage。我使用的是前者,前者是一种旧的技术,微软推荐VS2008以后开发VS插件都使用VS SDK开发VSPackage,由于我看过C++做AddIn的,对AddIn有了一定原创 2015-11-08 20:20:14 · 1759 阅读 · 0 评论 -
VS插件-GetSet生成器
Java,C#都有GetSet生成器的方法,而C++却没有这样的工具,即使是现在是有插件做到相应的功能,但是 这个要查一下!!!!!! 现有的插件做得不够方便,所以我们就做了这个插件。 现在来讲讲这个插件的具体思路。从选择文本中选择变量生成其GetSet方法文本分割先将选中的文本分行,我们可以以‘\r\n’来分割。然后对每行进行分割。 我们一般定义变量都是每一行定义一个变量,以分号结束,所以原创 2015-11-08 20:21:38 · 2494 阅读 · 0 评论 -
获取网页中的视频下载地址(利用proxy_server)
昨天想着在网上下载一个稍微小一点的MP4的视频文件,但是在网上找了半天没找着,现在很多视频网站上的视频都是仅支持在线播放,不提供下载链接的。网上也有一些工具来实现这样的功能,不过我现在没有找到一个好用的。思路我在打开一个MV的时候,我想着去找视频的地址,于是打开了FireFox的Firebug,然后看了一下,发现有一个请求耗时特别长,大小特别大,仔细一看,就是一个mp4文件,当然这个并不是我们所需要原创 2016-07-13 21:16:06 · 4459 阅读 · 0 评论 -
获取网页中的视频下载地址(利用抓包)
根据上篇文章的思路,我用了监听网卡流量的方式来改进了我的程序。速度得到了大大的提升。思路下图是我用wireshark做的实验。把请求路径中带.mp4, .flv的请求留下来,得到的就是请求的视频资源了。 在wireshark的试验下,我确定了抓包这个方法是可以行得通了,我开始用python编写抓包代码。我用python的pcap和dpkt这两个包来对网卡流量进行了分析。首先就是用pcap来对我的网原创 2016-07-17 18:43:01 · 29456 阅读 · 8 评论 -
获取网页中的视频下载地址(用headless browser)
介绍前面通过两篇文章讲了怎么去抓取HTTP的请求包,包括用代理服务器和抓包的方法。正因为现在的视频网站的视频地址都不是直接在html页面上获取的,视频的获取是通过浏览器动态解释js脚本,再向视频服务器发去视频请求。所以我们通过获取浏览器产生的HTTP请求来获得视频的下载地址。思路直接用firefox我们想到了可以用动态渲染js脚本的程序,最常见的是浏览器。我们通过命令运行firefox http:/原创 2016-08-02 23:10:20 · 12726 阅读 · 0 评论 -
为slimerjs添加flash plugins
slimerjs是支持flash插件的。slimerjs的Feature文档。但是slimerjs默认是没有安装flash插件的,需要为火狐浏览器安装flash插件,可是新版的火狐浏览器(49.0)的插件可以安装地址在/usr/lib/firefox-addons/plugins,我是安装到这个位置, 用slimerjs打开优酷视频的时候显示如下: 网上找到的安装方法 slimerjs的f原创 2016-10-27 11:05:12 · 1550 阅读 · 0 评论 -
C++的标准输入
从一个简单的问题谈起昨天做题的时候,遇到一个输入是这样的3 4aaaa aaaa aaaabbbbbbb bbbbccc cccccccc^D第一行输入一个整数n,表示接下来句子的数量,和另外一个整数(这里没有作用,只是用来说明下面的一个情况),接下来就是n个句子,每个句子以回车结束。 我的想法是int i, j;cin >> i >> j;while(i--){ string s;原创 2017-03-31 09:30:47 · 892 阅读 · 0 评论