自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

物我相依,物我相望

do one thing,do it best!

  • 博客(52)
  • 收藏
  • 关注

原创 打破束缚你的那几个圈

语言圈何为语言圈?就是你对一种语言情有独钟,你会用它去搞定所有项目(至少你心里是这么想的),你是它的铁粉。当你刚开始接触编程的时候,你一定会接触到一种编程语言。这种编程语言给你的感觉就像初恋的感觉。它能做很多,你从未做过的事情,它有很多特性,让你欲罢不能,慢慢地你就会喜欢上它,同时慢慢地,你也开始排斥其他的语言,就像你爱上了初恋,眼里容不下其他女孩一样,只有你面前的这个女孩是全世界最好的。随着...

2018-10-05 10:59:57 404

原创 Centos 搭建DNS服务

背景 为了方便记忆,我们的线上服务器都按照一定规则定义了hostname,这样就不用记忆ip了,之前机器很少,直接在每台机器上配置了host(/etc/hosts)就行了,

2017-01-16 12:08:36 666

原创 scrapy实战二

背景 运营需求是需要爬取好大夫的数据,爬取路径如下: 第一级:抓取所有科室: 第二级:每个科室对应的好评科室 第三级:科室推荐专家第四级:推荐专家 第五级:专家信息 总结一下,就是最后要抓取的数据有: 科室 子科室 医院 科室介绍 专家 专家头像 职位 擅长 专家介绍 需求分析确定爬取路径: 1、首先抓取http://www.haodf.com/keshi

2016-01-15 12:11:16 1805 4

原创 scrapy实战一

scrapy是什么? “Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。”–官方说法。 个人理解:爬取网页数据,并将抓到的数据结构化,你只需关心你自己的爬取逻辑和页面数据的提取逻辑,其他的事情,框架都帮你做了。安装scrapyyum -y updateyum groupinstall -y developme

2016-01-15 12:04:51 2766

原创 给虚拟机磁盘扩容

背景我用的虚拟机是virtualbox,安装boot2docker时,给我分配的磁盘空间是20G,但是当我提交我的镜像时,却告诉没有空间了。 报错如下:FATA[0064] Failed to generate layer archive: mkdir /mnt/sda1/var/lib/docker/graph/_tmp/fdd05bbb8e84067bea595da8343e6143306c

2015-04-22 19:40:35 1238 2

原创 mac+virtualbox+centos7+docker搭建lnmp环境

1.安装virtualbox 下载地址 https://www.virtualbox.org/wiki/Downloads2.通过virtualbox安装centos7 下载地址 http://mirrors.aliyun.com/centos/7.1.1503/isos/x86_64/CentOS-7-x86_64-DVD-1503-01.iso 选择你下载的centos的镜

2015-04-15 00:54:45 4431 2

原创 修改hostname

比如将我的主机名改成MAC sudo scutil –set HostName MAC[centos] cat /etc/hostname centos7.localdomain 点号前面的centos7就是我修改后的主机名,你可以修改/etc/hostname文件来自定义; 但是这个时候不会立马生效,需要重启服务器,想立马生效可以这样 sudo hostname centos7

2015-04-11 17:36:36 1110

转载 开源搜集

类别 名称 官网 备注 查询引擎 Phoenix http://phoenix.incubator.apache.org Salesforce公司出品,Apache HBase之上的一个SQL中间层,完全使用Java编写 查询引擎 Stinger http://hortonworks.com/labs/stinger/ http://tez.incubator.

2015-04-07 15:58:18 1092

原创 mac下端口转发

sudo vim /etc/pf.conf在rdr-anchor “com.apple/*”后面加上如下这一行rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080意思是把发到80端口的数据转发到8080端口然后重新加载配置sudo pfctl -f /etc/pf.conf启动sudo pfctl

2015-02-15 20:00:15 4602

原创 枚举

public enum TestEnum { A, B, C, D; public static void main(String[] args) { //枚举类型转变成字符串 System.out.println(TestEnum.C.name()); //字符串变枚举 System.out.println(TestEn

2015-02-15 19:47:06 554

原创 mac下查看端口占用

mac : lsof -i:8080

2015-02-15 15:07:16 594

原创 让svn diff 的效果和vim diff效果一样

首先到你自己的home目录vim  .subversion/config找到下面这一行 # diff-cmd = diff_program (diff, gdiff, etc.) 增加如下这一行,这个路径你可以自己安排,这个是我的路径 diff-cmd=/Users/bornli/diffwrap.shdiffwrap.sh文件的内容如下

2015-02-02 10:46:10 934

原创 velocity使用经验积累

html内容被转义场景hello world!其实想要的效果是helloworld解决方案#noescape()$!{msg}#end     这样就可以防止内容被转义

2015-01-09 15:19:49 869

原创 说服的艺术

在程序员的工作中经常会遇到的工作场景,就是与别人PK技术方案,往往双方都想说服对方,今天我想说说关于说服力的一些理解和心得。我平时很喜欢和别人PK方案,因为我觉得PK的结果一定是双赢的,何乐而不为呢?为什么说PK是双赢的?PK的结果无非只有如下几种:1、自己获胜--好处是肯定自己的方案,同时也帮助了别人2、对方获胜-- 好处和上面刚好相反3、双方都是部分说的有道理--双

2015-01-08 17:40:33 825

原创 PHP compiled with build ID=API20090626,TS

php  -vPHP    compiled with build ID=API20090626,TS

2014-07-31 17:10:24 2485

原创 程序后台执行总结

【场景】有时候我们需要执行临时的脚本,即脚本跑完就结束,但是脚本跑的时间比较久,并且可能因为其他的事情,需要离开终端去干其他的事情,如果离开终端,一般情况下,程序就会终止,如何离开终端,程序任然可以继续执行呢?这个时候可以使用如下一些工具。【screen】screen  -m    脚本       //新建一个会话窗口,执行程序ctrl +  ad  

2014-02-07 15:29:16 692

原创 undefined symbol: compiler_globals in Unknown

先记下来,有时间再写

2014-01-24 14:56:51 5065

原创 Block-levelDB源码解析

类介绍Block主要负责解析sstable文件中的block;数据成员介绍 30 const char* data_; //对应整个block块数据 31 size_t size_; //对应整个block的大小 32 uint32_t restart_offset_; // 相对于data_的,重

2014-01-06 06:55:23 1239

原创 linux下以16进制方式查看文件

最近有个需求是从MP3文件中提取cover,怎么提取,后续会专门写篇文章,所以需要研究MP3文件样本,这个时候得看MP3文件的数据格式,我知道UltraEdit是可以看的,可惜这个是要花钱买的,在网上找了几个序列号,也不好使。后来在网上查了下,用xxd在linux 下就可以看;xxd -g 1 -c 16  a.mp30000000: 49 44 33 04 00 00

2013-12-30 10:42:40 1722

原创 BlockBuilder-levelDB源码解析

对象介绍BlockBuilder主要负责构造sstable文件中的block;首先看下block的数据结构:

2013-12-29 17:48:21 1435

原创 WriteBatch-levelDB源码解析

【数据成员介绍】rep_:格式如下图所示,【方法成员介绍】

2013-12-22 13:26:17 2014

原创 log format-levelDB源码解析

基本概念:逻辑记录:用户输入的key value,进行包装后,可以形成一条记录,我们把它称为逻辑记录;物理记录:一条或多条物理记录组成一个逻辑记录。block:一条逻辑记录,包含了一个或多个block,kBlockSize = 32768;即每个block的大小为32K;当然一个block里面也可以有多个record;关系示意图:一个逻辑记录

2013-12-15 14:53:05 1270

原创 log::Reader-levelDB源码解析

要想理解reader,需要理解两个概念,即逻辑记录,物理记录,这个log format有讲【数据成员介绍】blocking_store_:read以block为单位去从磁盘取数据,取完数据就是存在blocking_store_里面,其实就是读取数据的buffer;buffer_:指向blocking_store_的slice对象,方便对blocking_store_的操作;

2013-12-15 14:52:08 1792

原创 log::Writer-levelDB源码解析

writer的工作就是将上层拼装好的数据,按照log format的格式,进行二次拼装,然后写进文件里面。【数据成员介绍】block_offset_:当前block的偏移位,通过它就能知道目前数据写到这一块的什么位置了;dest_:增加记录,就是将数据追加到dest_;type_crc_:因为每个record都会有一个header,而header里面就会有che

2013-12-15 14:50:57 1233

原创 memtable-levelDB源码解析

当写数据的时候,写完log,再写内存,内存指的就是这里的MemTable,整个MemTable是一个skip list结构;【数据成员介绍】arena_:一个管理内存的对象;comparator_:比较器;refs_:引用次数;table_:skip  list表,数据就是存在这里面;【方法成员介绍】void MemTable::

2013-12-15 14:49:51 1348

原创 Fiddler抓包中显示服务器ip

Rules->Customize rules(或者直接ctrl+R)  这个时候会弹出一个文本,找到如下这个函数,对比如下函数和你搜到的函数,将你没有的行拷贝过去,保存即可。static function Main(){  var today: Date = new Date();FiddlerObject.StatusText = " Cu

2013-12-15 14:48:57 3061

原创 Skip List

什么是skip list?“Skip lists are a data structure that can be used in place ofbalanced trees. Skip lists use probabilistic balancing rather than strictlyenforced balancing and as a result the algori

2013-12-15 14:47:17 1110

原创 VersionEdit-levelDB源码解析

VersionEdit记录的是版本变化的增量。【数据成员介绍】compact_pointers_:这是一个vector,里面的每项是一个由level,internalkey组成的pair,也就是说里面记录的是,compact到哪一层的,哪个key了;comparator_:比较器的名称;deleted_files_:这是一个set,里面的每一项是一个由level,s

2013-12-15 14:44:53 1560

原创 Version-levelDB源码解析

【数据成员介绍】compaction_level_:下一个需要做compact的层级;compaction_score_:比分,如果比分小于1,就代表没有那么紧急去需要做compact;那么比分的规则是什么呢?void VersionSet::Finalize(Version* v) {    int best_level = -1;    doub

2013-12-15 14:44:05 1355

原创 VersionSet-levelDB源码解析

VersionSet的作用是记录各个版本,这些版本的组织形式是一个环形的双向链表。【数据成员介绍】compact_pointer_:记录每层下次做compact的开始的key;string型数组,index-->level, value-->internal key,current_:指向当前版本;dbname_:数据库的名称;descriptor_fi

2013-12-15 14:43:11 2329

原创 access

#include #include //R_OK 4 /* Test for read permission.  *///W_OK 2 /* Test for write permission.  *///X_OK 1 /* Test for execute permission.  *///F_OK 0 /* Test for existence.  */

2013-12-15 14:41:59 983

原创 win7 自动重启本地连接

将下面的代码放在一个bat文件里面netsh interface set interface name="本地连接 2" admin=DISABLEDnetsh interface set interface name="本地连接 2" admin=ENABLED //注意,”本地连接 2“是我的本地连接名,你可以根据需要改。然后win菜

2013-12-13 11:56:59 1036

原创 opendir 取目录下的子节点

#include #include #include using std::cout;using std::cin;using std::endl;using std::string;int main(){    const size_t buf_size = 1024;    char dir

2013-12-13 11:56:00 692

原创 stat 获取文件对应的属性

#include #include int main() {    using std::cout;    using std::endl;    struct stat sbuf;    if (stat(__FILE__, &sbuf) == 0) {   //__FILE__代表当前文件名        cout

2013-12-13 11:55:26 970

原创 varint-levelDB源码解析

【什么是变长整型?】大家知道,int整型一般是4个字节,那变长整型所需要的空间在1-5个字节之间,因为长度是不固定的,所以称之为变长整型。其特点就是只要数值小于2^21,那么就会节省空间。【编码原理】如图所示为300,编码后的字节图,只占了2个字节。这是怎么实现的呢?请看下面的详解:300的二进制编码为00000000 00000000 00000001 0

2013-12-13 11:54:38 1222

原创 Status-levelDB源码解析

//status封装了操作结果,当出错的时候,可以用来指明一个错误,还有对应的错误信息//多线程下const方法可以在非外部同步的情况下调用,但是非const方法,一定要在外部同步的情况下调用class Status {    public:        //构造函数,初始为NULL,即为OK状态        Status() : state_(NULL

2013-12-13 11:53:15 1107

原创 Slice-levelDB源码解析

//slice是level中很基础的一个类型,是对key , value的封装,里面的数据成员很简单,只有两个,一个是const char* data_,size_t size_,所以它其实是key或value的一个引用,非常节省内存,同时也提供了非常方便的操作接口。class Slice {     public:        //创建一个空的slice

2013-12-13 11:52:20 1147

原创 option-levelDB源码解析

//控制数据库的行为struct Options{    //比较器    //默认:lexicographic byte-wise ordering    const Comparator* comparator;    //如果为true,当数据库不存在时,就新建    //默认:false    bool creat

2013-12-13 11:51:20 1292

原创 C++学习笔记

数组的元素个数在编译期就要决定,所以只能为宏定义,或const常量;数组初始化只能发生在定义的时候,以后不能初始化;也不能将一个数组赋值给另一个数组;struct关键字可以省略掉

2013-12-13 11:50:23 708

原创 友元类、友元函数

#include #include #include using namespace std;class A;class C{    public:        int getA(A a);};class A{    public:        int a

2013-12-13 11:49:26 790

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除