自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 如何查看linux当前shell

1.查看当前正在使用的shellecho $SHELL/bin/bash2.查看系统中安装了哪些shellcat /etc/shells /bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/bin/csh

2018-06-17 12:00:00 18259

原创 python的闭包与decorator 的关系

python的闭包例子:def makebold(fn): def wrapped(): #print "makebold " , fn return "" + fn() + "" return wrappeddef makeitalic(fn): def wrapped(): #print "makeitalic

2015-06-03 16:29:05 513

转载 C++中static的用法总结

不管是C,C++,还是JAVA,它们中都包含static。当然这其中的用法及作用也是不一样的。下面主要介绍static在C++中的用法:要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量:

2014-09-25 10:16:38 666

转载 C语言中的static 详细分析

来自 http://blog.csdn.net/keyeagle/article/details/6708077C语言中的static 详细分析分类: C2011-08-22 12:04 5836人阅读 评论(9) 收藏 举报语言cfileserver编译器reference          google了近三页的关于C语言中static的内容,发现可

2014-09-25 09:37:08 650

原创 __attribute__ 关键字学习

。__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化

2014-09-24 11:30:52 1671

原创 linux 网桥学习(一)

中继器,网桥,路由器的区别:中继器是按位复制。多端口的中继器称为Hub(集线器)

2014-09-23 10:52:20 806

转载 C++类的成员函数指针

//A类与B类的定义class A{public:    void Test()    {        cout     }};class B : public A{public:    void Test()    {        cout     }};//定义类的成员函数指针typedef void

2014-08-26 09:58:53 757

原创 c++ override 关键字介绍

描述:override保留字表示当前函数重写了基类的虚函数。目的:1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的);2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。用法:在类的成员函数参数列表后面添加该关键字既可。例子:class Base {virtual void f();};class D

2014-08-26 09:47:09 2402

原创 c++ 11 for range

#include #include #include using namespace std;int main(){ vector v1; v1.push_back(100); v1.push_back(200); v1.push_back(300); v1.push_back(400); v1.push_back(500); v1

2014-08-25 16:38:53 795

原创 c++ 引用学习

#include using namespace std;void change(int &a,int num){ cout<<&a<<endl; a= num;}int main(){ int a = 1; int &b = a; cout<< b << endl; a = 2; cout<< b << endl;

2014-07-23 18:05:57 680

原创 STL学习(七)remove_if 学习

#include #include #include #include using namespace std;int MaxThan0(int a){ if(a>0) return true; else return false;}class maxThan : public unary_function{ public: resul

2014-07-22 18:35:56 636

原创 STL学习(六)heap学习

make_heap

2014-07-17 17:36:23 633

原创 STL学习(五)queue容器学习

queue 是在一端存数据,在另一端取数据。

2014-07-17 15:04:59 702

原创 STL学习(四)stack容器学习

STL中栈一共有5个常用操作函数:top()、push()、pop()、 size()、empty()

2014-07-17 11:54:38 625

原创 STL学习(三)deque容器学习

deque的操作函数构造函数和析构函数:  非变动性操作:  变动性操作:

2014-07-17 11:29:26 738

原创 STL学习(三)vector容器学习

#include #include using namespace std;class person{ public: int health; int magic; int power;};void printVector(vector::iterator it1,vector::iterator it2){ for(it1;it1!=it2;it1++

2014-07-16 15:53:21 628

原创 STL学习(二)set容器学习(二)-自定义比较函数

#include#includeusing namespace std;typedef struct{ int a,b; char s;}newtype;struct compare{ bool operator()(const newtype &a, const newtype &b) const { return a.s<b.s; }};se

2014-07-16 10:52:13 804

原创 STL学习(一)map容器学习(三)-multimap

#include #include using namespace std;void printMap(multimap person){ multimap::iterator iter = person.begin(); for(;iter != person.end();iter++) { cout first second << endl; }}vo

2014-07-14 16:48:49 708

原创 STL学习(二)set容器学习

#include #include using namespace std;int main(){ set person; person.insert("power"); int count = person.count("power"); if(count == 1) { cout << "person has power" << endl; }

2014-07-14 15:26:51 657

原创 STL学习(一)map容器学习(二)

#include #include int main( ) { using namespace std; map person; person.insert(make_pair("strength",200)); pair::iterator, bool> ret = person.insert(make_pair("stren

2014-07-14 11:36:52 585

原创 STL学习(一)map容器学习

#include#include #include #include using namespace std;void main(){map word_count;/*insert-1*/word_count["strength"] = 100;cout /*insert-2*/pair enchanter("magic po

2014-07-10 07:45:07 644

转载 dlopen 与dlsym 学习

Dynamically Loaded (DL)共享对象通过dlopen动态打开动态库的加载完成后,返回一个句柄,通过dlsym定位到你需要执行的函数指针然后可以在程序中使用 dlopen -- open a dynamically linked library dlsym -- get the address of a symbol in a dynamically l

2014-07-07 10:02:24 679

原创 线程私有数据的个人理解

函数 int pthread_setspecific(pthread_key_t key, const void *value); 一般是在线程中调用,它的作用是使本线程的key(每个线程各有一个)与指针value进行绑定,以后各个线程执行void *pthread_getspecific(pthread_key_t key)时(相同的key),pthread_getspecific返回的便是

2014-01-07 15:31:36 811

转载 POSIX多线程--条件变量

原文来自:此处POSIX多线程--条件变量  2011-12-28 20:33:46|  分类: 网络|字号 订阅一、什么是条件变量       与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。       条件变量使我们可以睡眠等待某种条件

2013-12-24 11:12:51 609

转载 syslog(),openlog(),closelog()函数介绍

转载至http://blog.sina.com.cn/s/blog_5f70c7060100i4j5.html    这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。    通常,syslog守护进程读取三种格式的记录消息。此守护进程在启动时读一个配置文件。一般来说,其文件名为

2013-12-19 10:21:52 854

转载 通俗易懂的“僵死进程与孤儿进程”讲解

原文来自:http://blog.chinaunix.net/uid-7897183-id-75583.html在Unix系统编程中,常常会碰到两个概念:僵死进程和孤儿进程。话说我以前曾经把这两个概念弄混淆过。什么是僵死进程?我们知道,在Unix进程模型中,进程是按照父进程产生子进程,子进程产生子子进程这样的方式创建出完成各项相互协作功能的进程的。当一个进程完成它的工作终止之后

2013-12-10 09:56:36 688

转载 父子进程数据共享问题

1、fork[cpp] view plaincopy#include   #include   pid_t fork (void );  正确返回:父进程中返回子进程的进程号;子进程中返回0错误返回:-1;       子进程是父进程的一个拷贝。子进程从父进程那得到了数据段和堆栈段,但不是与父进程共享而是单

2013-12-10 09:31:41 2785

转载 数据挖掘,数据分析好书

深入浅出数据分析 (豆瓣) 这书挺简单的,基本的内容都涉及了,说得也比较清楚,最后谈到了R是大加分。难易程度:非常易。啤酒与尿布 (豆瓣) 通过案例来说事情,而且是最经典的例子。难易程度:非常易。数据之美 (豆瓣) 一本介绍性的书籍,每章都解决一个具体的问题,甚至还有代码,对理解数据分析的应用领域和做法非常有帮助。难易程度:易。集体智慧编程 (豆瓣) 学习数据分析、数据挖掘、机器学习人

2013-12-07 07:23:19 1152

转载 浅谈原始套接字

原文来自 http://dev.yesky.com/43/2663043.shtml大多数程序员所接触到的套接字(Socket)为两类:  (1)流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的TCP服务应用;  (2)数据报式套接字(SOCK_DGRAM):一种无连接的Socket,对应于无连接的UDP服务应用。  从用户的角度来看,

2013-12-06 11:05:49 862

转载 编写简单Makefile

原文来自:http://blog.csdn.net/livelylittlefish/article/details/3854220编写Makefile1. 一个例子 假设我们有下面这样的一个程序,源代码如下:/* filename: main.c */#include "mytool1.h"#include "mytool2.h"int ma

2013-12-03 14:29:53 666

转载 一句话说明sync, fsync, fdatasync的区别

原话来自此处调用系统函数write时 有写延迟,write负责把东西写到缓存区上,sync负责把缓存区上的东西排到写队列中(缓冲区->写队列),在由守护进程负责把队列里的东西写到磁盘上,而sync函数在把缓存区上的东西排到写队列后不管写队列中的内容是否写到磁盘上都立即返回。fsync函数则是对指定文件的操作,而且必须等到写队列中的内容都写到磁盘后才返回,并且更新文件inode结点里的内

2013-11-20 22:48:38 1658

转载 linux中文件描述符fd和文件指针flip的理解

linux中文件描述符fd和文件指针flip的理解 原文来自此处简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用; 而流(

2013-11-20 22:40:52 1380

转载 通过 ulimit 改善系统性能

概述系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制。本文将在后面的章节中详细说明 ulimit 的功能,使用以及它的影响,并以具体的

2013-11-20 18:27:23 770

原创 C语言实现atoi函数

atoi函数:把字符串转换为数字(int型)int atoi_my(char *str){ int flag = 1; int number = 0; //判断是否为空 if(str == NULL) { return 0; } //如果前面有连续空格,跳过 while(*str==' ') { str++; } //若有负号,则负数标志位置1 if(*

2013-11-18 15:33:20 940

转载 32位和64位下的sizeof

转载出自 此处 和 此处今早在网上偶然看到一篇文章《32位程序移植到64位平台前的准备工作》,文中介绍了32位平台的程序向64位平台进行移植需要注意的一些事项和操作建议。自己对于64位平台上各种数据类型分别占用多少字节,存在一些疑问,所以用C/C++中的sizeof分别在这两种平台上进行了测试。运行结果如下:(分别用蓝色和红色标记了两者的差异)———————

2013-11-18 14:09:01 1415

转载 C语言结构体--对齐说明

C语言结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。内容虽然很基础,但一不小心就会弄错。写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?开始学的时候,也被此类问题困扰很久。其实相关的文章很多,感觉说清楚的不多。结构体到底怎样对齐?有人给对齐原则做过总结,具体在哪里看到现在已记不起来,这里引用一下

2013-11-18 13:59:17 954

原创 python函数说明

写程序中常常会遇到不熟悉的函数,遇到便记录一下:1 string.strip(rm)string为字符串,rm为要删除的字符序列s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符 当rm为空时,默认删除空白

2013-11-17 22:19:04 897

原创 kmeans算法的个人理解

1 kmeans算法是一种什么样的算法?答:kmeans算法是一种聚类算法,在使用kmeans算法时并不需要事先构建模型(如决策树判断需事先构建决策树,knn判断需事先构建kd树等),而是直接进行聚类。       它的基本过程是:1. 对于N个n维空间的待分类点,选出K个点作为初始质心(初始中心点)2. 对于空间中的N-K个剩余点,若它离初始质心X的(欧几里得距离/余弦相似度)最

2013-11-17 19:31:10 1799

原创 pymining中的词频矩阵的生成过程

最近在看pymining开源项目,对其词频矩阵的生成过程有些模糊,现在过一遍。首先,pymining中所定义词频矩阵是一个什么样的矩阵?它是一个行 为 文章编号,列为单词的矩阵,而矩阵中的元素是该列单词在该行文章中出现的次数。例如:文章1: 小明爱上学。小明爱吃青菜 。 文章2:小明今天去上学了,小明讨厌吃萝卜生成的词频矩阵可以是: 小明上学青菜

2013-11-16 18:06:18 2854

原创 KNN算法的个人理解

KNN算法被称为 lazy 算法,只有在判断未知类别的元素时才会建立模型进行计算。KNN算法可以分为以下三步:1 存储已知类别的元素。2 来了一个新的元素后,计算所有已知元素与它的欧式距离。可以采用加权欧氏距离来计算。3 取出与待分类元素最近的k个类型已知的元素,这个k个元素中大多数元素属于哪个类别,那么待分类元素就属于哪个类别。怎样存储?怎样使第二步的计算量最少?

2013-11-15 09:35:19 880

空空如也

空空如也

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

TA关注的人

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