自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(80)
  • 资源 (13)
  • 收藏
  • 关注

原创 Spark作业执行流程

Spark作业执行流程Local模式运行Spark最简单的方法是通过Local模式(即伪分布式模式)。    运行命令为:./bin/run-example org.apache.spark.examples.SparkPi local基于standalone的Spark架构与作业执行流程Standalone模式下,集群启动时包括Master与Worker,

2015-09-21 19:54:01 1339

原创 Spark TaskScheduler和DagScheduler介绍

开始研究神奇的spark。会陆续将研究的心得放上来。 在Spark中一个核心的是模块就是调度器(Scheduler),在spark中Scheduler有两种TaskScheduler(是低级的调度器接口),DagScheduler(是高级的调度) 我们在创建SparkContext对象的时候,sparkcontext内部就会创建TaskScheduler和DagScheduler,

2015-09-02 13:50:37 484

原创 数据挖掘的几个基本概念

True Positive (真正, TP)被模型预测为正的正样本;True Negative(真负 , TN)被模型预测为负的负样本 ;False Positive (假正, FP)被模型预测为正的负样本;False Negative(假负 , FN)被模型预测为负的正样本;True Positive Rate(真正率 , TPR)或灵敏度(sensitivi

2015-08-26 18:28:27 1424

原创 C++虚函数实现原理详解

前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我

2015-07-17 15:21:45 923

原创 字符串比较函数汇总

字符串比较函数汇总char *strchr(const char *string, int c);查找字符c在字符串string中首次出现的位置, NULL结束符也包含在查找中.返回一个指针, 指向字符c在字符串string中首次出现的位置, 如果没有找到, 则返回NULL.char *strrchr(const char *string, int c);查找字符c

2015-06-16 11:26:17 2026

原创 epoll网络编程实例

在前面已经经过了PPC、TPC、select之类( TPC就是使用进程处理data,TPC就是使用线程处理 ),前面两个的缺点大家应该都是知道的是吧,对于select( 其实poll和他差不多 ),缺点是能同时连接的fd是在是不多,在linux中一般是1024/2048,对于很大的服务器来说是不够的!当然我们可以自己修改其值!但是效率上就会下降!       对于改进poll的epoll来

2015-04-23 14:46:20 947

原创 __attribute__((packed))的作用

__attribute__((packed))的作用  在结构体变量的声明中,经常可以看到__attribute__((packed))修饰符。这是做什么用的呢?请看一下程序:#define u8 unsigned char#define u16 unsigned short#define u32 unsigned intint main(){ struct {

2014-05-12 17:45:55 6398 1

原创 linuxIO刷新机制fsync和fdatasync详解

前言:        Linux,unix在内核中设有 缓冲区高速缓冲或页面高速缓冲,大多数磁盘I/O都通过缓冲进行,采用延迟写技术。sync:将所有修改过的快缓存区排入写队列,然后返回,并不等待实际写磁盘操作结束fsync:只对有文件描述符制定的单一文件起作用,并且等待些磁盘操作结束,然后返回。fdatasync:类似fsync,但它只影响文件的数据部分。fsync还会同步更

2014-05-12 11:26:19 4075

原创 C++匿名命名空间

C++匿名命名空间今天得到来自google的老大的指点,学习了一个新的用法:匿名命名空间。C++另外有一种匿名的命名空间,来保证生成的符号是局部的,这样对于匿名空间中的变量等,外部都是不可见的.//test3.cppstatic void bar(){}namespace //匿名的命名空间{ float bar2; int foo;}//tes

2013-12-26 16:37:28 2302

原创 mysql链接多线程安全问题

如果你用线程的编程,你应该用--with-thread-safe-client编译MySQL C API,这将使C API线程对每个连接更安全。你可以让2个线程共享相同的连接,只要如果你做下列事情:两个线程不能同时在同一个连接上发送查询到MySQL。特别是你必须保证在一个mysql_query()和mysql_store_result()之间没有其他线程正在使用同一个连接。许多线程

2013-11-20 10:41:34 5388 1

原创 深入理解C++的动态绑定和静态绑定

为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误,需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。关于对象的静态类型和动态类型,看一个示例:class B{}class

2013-09-12 11:00:07 971

转载 如何写mysql存储引擎

在MySQL 5.1中开发一个存储引擎已经是比较方便了。所谓存储引擎实际上是按照MySQL的约定,提供某些接口的实现而已,如MySQL插入一条记录时将调用write_row方法,通过索引检索时将调用index_read和index_next方法等。MySQL与存储引擎之间的接口主要由两个类/结构约定,分别是在sql/handler.h中定义的handlerton结构和handler类。handle

2013-08-09 15:01:56 1426

原创 数据库中DDL、DML、DCL和TCP概念

1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema.DDL是SQL语言的四大功能之一。用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束DDL不需要commit.CR

2013-08-09 10:28:58 10272 1

转载 tcp_tw_recycle和tcp_timestamps导致connect失败问题

近来线上陆续出现了一些connect失败的问题,经过分析试验,最终确认和proc参数tcp_tw_recycle/tcp_timestamps相关; 1. 现象     第一个现象:模块A通过NAT网关访问服务S成功,而模块B通过NAT网关访问服务S经常性出现connect失败,抓包发现:服务S端已经收到了syn包,但没有回复synack;另外,模块A关闭了tcp timestamp,而模

2013-07-18 19:30:08 2096

原创 如何设计一个LRU cache

如何设计一个LRU Cache?Google和百度的面试题都出现了设计一个Cache的题目,什么是Cache,如何设计简单的Cache,通过搜集资料,本文给出个总结。 通常的问题描述可以是这样:Question:[1] Design a layer in front of a system which cache the last n requests and th

2013-07-03 17:32:38 1327 1

原创 linux下安装MySQLdb模块

linux下安装MySQLdb模块1,查看是否已安装MySQLdb模块   进入python的命令行,输入 import MySQLdb 如果没有报错,证明此模块已经安装,可以跳过以下步骤。2,下载最新的MySQLdb安装包:   wget -O python-1.2.3c1.tar.gz  http://cdnetworks-kr-1.dl.sourcefor

2013-06-28 17:19:50 6485

原创 std::map::erase的用法及陷阱

方法一:[cpp] view plaincopystd::map mapTest;  bool TestVal(const std::string & val);    ......  std::map::iterator it = mapTest.begin();  while(it != mapTest.end())

2013-06-25 10:22:17 25360 1

原创 vector的内存分配行为

/* 结论:    vector的存在可以使开发者不必关心内存的申请和释放。但是,vector背后的内存分配是按照2的倍数分配内存的。当当前容量对插入元素不够时,分配一块新的内存,这块内存的容量是原vector容量的2倍大小,然后复制旧内存,释放旧内存,可能多次涉及拷贝构造函数和析构函数,而这也正是vector的劣势所在。*/在使用cocos2d-x引擎的时候,多次调用cc

2013-05-17 14:01:01 899

原创 MySQL Create Table语句的应用与语法

MySQL Create Table语句的应用与语法以下的文章主要介绍的是MySQL Create Table语句的实际用法与MySQL Create Table语句的基本语法的介绍,如果你对其具体的操作步骤感兴趣的话,你就可以对以下的文章来一个“大阅兵”。MySQL中create table语句的基本语法是:CREATE [TEMPORARY]

2013-05-08 17:38:36 5706

原创 Boost智能指针——shared_ptr

Boost智能指针——shared_ptrboost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include #include #include c

2013-05-07 20:14:40 913

原创 mysql 联合索引详解

mysql 联合索引详解联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。两个或更多个列上的索引被称作复合索引。利用

2013-05-03 14:01:10 51640 6

原创 把C++类成员方法直接作为线程回调函数

我以前写线程时要么老老实实照着声明写,要么使用C++类的静态成员函数来作为回调函数,经常会因为线程代码而破坏封装.之前虽然知道类成员函数的展开形式,但从没想过利用过它,昨天看深入ATL时无意中学会了这一招:) 类成员方法是一个比较特殊的函数,它在编译时会被转化成普通函数,比如有TMyClass类:class TMyClass{    void Func();};

2013-01-14 11:39:13 2144 2

原创 linuxthreads管理线程原理详解

linuxthreads管理线程原理详解为什么A程序创建了10个线程, 但是ps时却会出现11个A进程了. 因为linuxthreads自动创建了一个管理线程. 当程序开始运行时, 并没有管理线程存在(因为尽管程序已经链接了pthread库, 但是未必会使用多线程). 程序第一次调用pthread_create时, linuxthreads发现管理线程不存在, 于是创建这个管理线程

2013-01-13 15:42:09 1657 2

原创 面相对象设计中组合与聚合详解

聚合与组合的概念相信不用我在此赘述大家就已经了解了 下面直接上例子程老师的《大话》里举大那个大雁的例子很贴切 在此我就借用一下 大雁喜欢热闹害怕孤独 所以它们一直过着群居的生活 这样就有了雁群 每一只大雁都有自己的雁群 每个雁群都有好多大雁 大雁与雁群的这种关系就可以称之为聚合 另外每只大雁都有两只翅膀 大雁与雁翅的关系就叫做组合 有此可见 聚合的关系明显没有组合紧密 大雁不会因为它们的群

2013-01-04 19:33:56 1036

原创 SIGPIPE信号详解

SIGPIPE信号详解当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试.  但是服务器总是莫名退出,没有cor

2013-01-01 20:03:53 14888 1

原创 改变vim中tab键的特性

来到熊掌,发现这里开发全部是vim,我当时直接被汗到了....很惊讶为什么不用IDE...没办法入乡随俗吧~关于tab键不同环境下被解释的长度是不一样的,所以在开发时大家都避免使用tab,而是用空格代替,但是在vim下每次分段都敲好几个空格岂不是很麻烦,于是请教旁边的达人,他告诉我可以将tab在vim中的解释变成四个空格,爽哉!方法如下:两条命令即可:set tabstop

2012-12-31 14:07:33 1825

原创 pthread_key_t和pthread_key_create()详解

pthread_key_t和pthread_key_create()详解下面说一下线程中特有的线程存储, Thread Specific Data 。线程存储有什么用了?他是什么意思了?大家都知道,在多线程程序中,所有线程共享程序中的变量。现在有一全局变量,所有线程都可以使用它,改变它的值。而如果每个线程希望能单独拥有它,那么就需要使用线程存储了。表面上看起来这是一个全局变量,所有

2012-12-30 14:31:45 25611 4

原创 pthread_once()函数详解

pthread_once()函数详解在多线程环境中,有些事仅需要执行一次。通常当初始化应用程序时,可以比较容易地将其放在main函数中。但当你写一个库时,就不能在main里面初始化了,你可以用静态初始化,但使用一次初始化(pthread_once)会比较容易些。int pthread_once(pthread_once_t *once_control, void (*i

2012-12-30 14:05:39 19381 1

转载 pthread_once()函数详解

pthread_once()函数详解在多线程环境中,有些事仅需要执行一次。通常当初始化应用程序时,可以比较容易地将其放在main函数中。但当你写一个库时,就不能在main里面初始化了,你可以用静态初始化,但使用一次初始化(pthread_once)会比较容易些。int pthread_once(pthread_once_t *once_control, void (*i

2012-12-30 13:42:08 67

原创 C++中 vector、list、deque、set、map的底层实现

stl容器区别: vector list deque set map-底层实现stl容器区别: vector list deque set map (转)在STL中基本容器有: vector、list、deque、set、mapset 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问set:集合, 用来判断某一个元素是不是在一个组里面,使

2012-12-27 19:41:36 15916 2

原创 struct linger结构体作用详解

struct linger结构体作用详解TCP连接断开的时候调用closesocket函数,有优雅的断开和强制断开两种方式.那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。linger结构体数据结构如下:  struct linger  {   int l_onoff;   int l_linger;

2012-11-29 11:15:09 2017

原创 2013腾讯校招笔试题

前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?1234567891011121314

2012-09-26 13:00:34 2854 2

原创 求一个字符串中连续出现次数最多的子串

求一个字符串中连续出现次数最多的子串这里要注意的是, 字符串必须要连续出现, 不是出现次数最多的最长子串!首先来分析基于子串的算法。这些算法使用一种直观的思想:枚举可能的子串,然后与原串进行串匹配,在所有解中找到最优的。串匹配有很多算法,包括著名的 Knuth-Morris-Pratt、稍微不那么著名的Boyer-Moore,还有基于自动机的算法。其中KMP以及BM的一个变种的

2012-09-13 22:41:32 1840

原创 后缀数组原理及应用详解

后缀数组原理及应用详解     在pongba的讨论组上看到一道Amazon的面试题:找出给定字符串里的最长回文。例子:输入XMADAMYX。则输出MADAM。这道题的流行解法是用后缀树(Suffix Tree)。这坨数据结构最酷的地方是用它能高效解决一大票复杂的字符串编程问题: 1.在文本T里查询T是否包含子串P(复杂度同流行的KMP相当)。2.文本T里找出最长重复子串。比如ab

2012-09-13 16:22:11 5247 3

原创 后缀树组原理及应用详解

后缀数组——处理字符串的有力工具作者:罗穗骞2009年1月  【摘要】  后缀数组是处理字符串的有力工具。后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也并不逊色,而且它比后缀树所占用的内存空间小很多。可以说,在信息学竞赛中后缀数组比后缀树要更为实用。本文分两部分。第一部分介绍两种构造后缀数组的方法,重点介绍如何

2012-09-13 15:20:11 158

原创 经典数据结构-块状链表详解

经典数据结构-块状链表详解1、 概述在进行算法设计时,我们常用的两种线性数据结构是数组和链表。它们各有优缺点。数组特点是元素在内存中紧挨着存储,因而优点是定位快(O(1)),缺点是插入删除慢(O(n));而链表则不同,它通过指针将不同位置的元素链接起来,因而优缺点与数组正好相反:定位慢(O(n)),插入删除快(O(1))。本文介绍一种新的数据结构:块状链表,它将数组和链表的优点

2012-09-06 16:34:54 1679

原创 redis详解

什么是redis?redis 是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正) Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每

2012-08-26 13:14:53 9258 2

原创 写时复制原理分析

写时复制页面保护机制是一种优化,内存管理器利用它可以节约内存。当进程为一个包含读/写页面的内存区对象映射了一份写时视图,而并非在映射该视图时创建一份进程私有的拷贝(Hewlett  Packard  OpenVMS操作系统就是这样做的)时,内存管理器将页面拷贝的动作推迟到页面被写入数据的时候。所有现代的UNIX系统也都使用了这项技术。如:2个进程正在共享3个页面,每个页面都被标记为写时复制

2012-08-26 11:30:45 1751

原创 C++ protected成员访问权限详解

C++ protected成员访问权限关于C++中protected的访问权限的讨论已经是一个很陈旧的话题了,陈旧到大家都不愿意去讨论。我再次读《C++ Primer》的时候,其中关于protected 成员的描述是这样的:protected MembersThe protected access label can be thought of as a blend of priv

2012-08-22 13:25:44 1155

原创 C++protected成员访问权限详解

C++ protected成员访问权限关于C++中protected的访问权限的讨论已经是一个很陈旧的话题了,陈旧到大家都不愿意去讨论。我再次读《C++ Primer》的时候,其中关于protected 成员的描述是这样的:protected MembersThe protected access label can be thought of as a blend of priv

2012-08-22 13:20:00 139

编译原理 龙书 第2版 高清 pdf

编译原理 龙书 第2版 高清 pdf 编译原理 龙书 第2版 高清 pdf 编译原理 龙书 第2版 高清 pdf

2011-09-13

UNIX环境高级编程第二版(高清).pdf

UNIX环境高级编程第二版(高清)pdf UNIX环境高级编程第二版(高清)pdf UNIX环境高级编程第二版(高清)pdf

2011-08-05

中兴捧月之密码传情(小型聊天软件)

中兴捧月大赛 聊天软件,密码传情,加密算法

2011-07-14

lex与yacc学习笔记(词法分析,语法分析)(适合初学)

详细全面介绍了lex和yacc,给初学者一个很好的教材。不但是你全面了解lex和yacc,而且给你很多例子。

2011-07-13

深入浅出正则表达式(非常精辟)

深入浅出正则表达式深入浅出正则表达式深入浅出正则表达式

2011-07-13

《C和指针》课后题答案(完整准确版)

C和指针,课后题答案,完整准确版 C和指针,课后题答案,完整准确版

2011-07-12

c可变参数原理及实现

详细介绍了c可变参数原理及实现,并有鲜明的例子,printf,scanf的实现。

2011-07-12

AWK用法详解(非常精辟)

AWK用法详解(非常精辟) AWK用法详解(非常精辟)

2011-06-29

RMI文档RMI小程序

rmi小程序,RMI文档,为RMI初学者使用

2011-01-15

空空如也

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

TA关注的人

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