rm -rf 血的教训
摘要:rm -rf 慎用命令敲得多了,常在河边走,难免会湿鞋昨天,一个手误,敲错了命令,把原本想要留的文件夹给rm -rf掉了几天心血全木有了,靠,死的心都有了经百度,google以及尝试无果,哎,这个以后再研究怎么找回吧几点教训:1.rm 特别是rm -rf之前,小心,三思,或者直接将命令改写掉2.做好备份,有便捷的备份脚本3.做好定时备份,有个前辈搞定时脚本,每天定时自个执行,即使删错了也不会那么悲催首先,搞个回收站在~下 .bashrc或者.bash_profile加入mkdir -p ~/.trashalias rm=trashalias r=trashalias rl='ls ~/
阅读全文
posted @
2012-08-17 11:42
kkmm
阅读(69342)
推荐(4) 编辑
通俗解释WIndows上的CRITICAL SECTION
摘要:通俗解释就像上厕所:门锁了,就等着,等到别人出来了,进去锁上,然后该干什么干什么,干完了,把门打开门没锁,就进去,锁上,然后该干什么干什么,干完了,把门打开--------------------------------------------------多线程中用来确保同一时刻只有一个线程操作被保护的数据InitializeCriticalSection(&cs);//初始化临界区EnterCriticalSection(&cs);//进入临界区//操作数据MyMoney*=10;//所有访问MyMoney变量的程序都需要这样写Enter.. Leave...LeaveCri
阅读全文
posted @
2012-08-17 11:12
kkmm
阅读(1001)
推荐(0) 编辑
一则简单的Windows共享内存IPC代码
摘要:Windows共享内存可以让两个进程对同一块内存进行读写。以下有2个进程,a.cpp生成A进程,b.cpp生成b进程。那么a进程将不停地读名为"Global\\MyFileMappingObject"的共享内存块,而b进程不停地写名为"Global\\MyFileMappingObject"的共享内存块。从而实现IPC。//a.cpp#include <windows.h>#include <string.h>#include <string>#include <iostream>#include <
阅读全文
posted @
2012-08-14 14:52
kkmm
阅读(15766)
推荐(1) 编辑
一个简单但详细的解释Windows文件映射读取数据文件的例子
摘要:#include <windows.h>#include <string.h>#include <string>#include <iostream>using namespace std;int main(int argc, char *argv[]){ // 步骤1 打开文件FILE_FLAG_WRITE_THROUGH HANDLE hFile = CreateFile( "demo.txt", GENERIC_WRITE | GENERIC_READ,// 如果要映射文件:此处必设置为只读(GENERIC_READ)或
阅读全文
posted @
2012-08-10 12:07
kkmm
阅读(5059)
推荐(0) 编辑
MSDN中几个关于event(windows事件)的链接
摘要:createevent 等同级别的函数仅列举了一个,其他的可以从createvent该链接去找。system error code也仅列举了0-499,其他的编号的也可以进去找。WaitForSingleObjecthttp://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspxevent objechttp://msdn.microsoft.com/en-us/library/windows/desktop/ms682655(v=vs.85).aspxCreateEventhttp://msdn.mi
阅读全文
posted @
2012-08-09 14:30
kkmm
阅读(545)
推荐(2) 编辑
linux下Makefile中包含有shared library动态链接库文件时候的简单例子
摘要:如果不知道什么是makefile,可以首先看我的另一篇博客:linux下Makefile的简单例子及解释http://www.cnblogs.com/lihaozy/archive/2012/08/09/2629706.html其实,包含有shared library动态链接库文件的编译链接过程,和不包含的在dependency关系的处理上完全一样,没什么区别,只是g++编译链接含有shared library文件的时候,命令加上相对应的参数(-shared -fPIC -L. -ltest等)即可。这里有2个文件,一个是test.cpp(中包含有一个test()函数),要编译成libtest
阅读全文
posted @
2012-08-09 10:37
kkmm
阅读(6130)
推荐(0) 编辑
linux下Makefile的简单例子及解释
摘要:对于大一点的项目,Makefile都是不可或缺的,这里记录一个自己弄的简单的例子。有3个file: main.cpp main2.cpp main2.hmain.cpp -- main函数所在,调用main2.cpp中的一个外部函数test()main2.cpp-- test函数所在main2.h--test的函数声明看一下三个文件://main.cpp#include <iostream>#include "main2.h"using namespace std;void test();int main(){ int a = 1; test();}//main
阅读全文
posted @
2012-08-09 09:58
kkmm
阅读(4967)
推荐(0) 编辑
转载 如何用vc编写dll文件
摘要:如何用vc编写dll文件动态连接库最大的特点就是能节省磁盘空间.当多个进程共享同一个DLL的时候,内存中只有一个DLL的代码.通过映射来使各个进程得以调用.1.用VC建立一个WIN32 DLL我们利用VC编写DLL有几种方法.如果用VC建立一个WIN32 DLL 工程.那这个工程就应该只导出C++的类或全局变量.和全局函数.方法就是在CPP文件中编写你的代码,为每个需要导出的元素进行导出办法是增加如下语句:_declspec(dllexport)你当然可以把它定义成宏例如,如果是一个类STUDENT需要导出,那么声明时应该是这样写 class _declspec{dllexport) stud
阅读全文
posted @
2012-08-08 15:50
kkmm
阅读(3698)
推荐(0) 编辑
linux下的posix有名信号量的几个要点
摘要:本文是自己总结的。首先,linux下的信号量,分为很多种。首先分为内核信号量和用户态信号量。用户态信号量又分为posix信号量和system v信号量。(system v比较复杂,头文件为#include <sys/sem.h>;posix信号量比较简单,#include <semaphore.h>)然后posix信号量又分为有名和无名信号量。这里我们讨论有名信号量:sem_open();sem_wait(); //如果信号量来了(要么是sem_open()中的value大于等于1,要么别的进程sem_post()了)信号量-1,并且可以继续执行(也就是进入mutex区
阅读全文
posted @
2012-08-08 14:51
kkmm
阅读(2240)
推荐(0) 编辑
__GNUC__ _MSC_VER _POSIX_SEMAPHORES 宏
摘要:几个比较有用有趣的predefine预定义的宏,用于跨平台,记录一下,学习#include <unistd.h>#if defined __GNUC__#define a "__GNUC__ defined"#else#define a "__GNUC__ not defined"#endif#if defined _MSC_VER#define b "_MSC_VER defined"#else#define b "_MSC_VER not defined"#endif#ifdef _POSIX_SE
阅读全文
posted @
2012-08-08 14:11
kkmm
阅读(740)
推荐(0) 编辑
自己写平方根squareroot函数
摘要:今日做一面试题目,写一平方根squareroot函数,函数接口为:unsigned int squareroot(unsigned int input); //不考虑float情况经过思考,用位移的方法,一个整数32bits,那么平方根最多16bits,那么对于这16个bits,从最大权重的bit开始,看是置1还是置0,一步一步往后走,到最后一个bit被置完之后,平方根也就求出了。那么如何判断后16bits中,某一个特定的bit是0还是1呢?这样判断,因为从most significant到least significant,那么首先将当前需要判断的bit置1,然后平方,看比input是...
阅读全文
posted @
2012-08-08 11:20
kkmm
阅读(1902)
推荐(0) 编辑
key_t键和ftok函数(转)
摘要:其实更加应该提醒我们的是,可以使用grep等工具去自己search the answer!key_t键System V IPC使用key_t值作为它们的名字,在Redhat linux(后续验证默认都在该平台下)下key_t被定义为int类型,追溯如下:/usr/include/sys/ipc.h#ifndef __key_t_definedtypedef __key_t key_t;#define __key_t_defined#endif/usr/include/bits/types.htypedef __DADDR_T_TYPE __daddr_t; /* The type of a d
阅读全文
posted @
2012-08-07 11:21
kkmm
阅读(8095)
推荐(0) 编辑
跨平台的EVENT事件 windows linux
摘要:#ifndef _HIK_EVENT_H_ #define _HIK_EVENT_H_#ifdef _MSC_VER#include <Windows.h>#define hik_event_handle HANDLE#else#include <pthread.h>typedef struct { bool state; bool manual_reset; pthread_mutex_t mutex; pthread_cond_t cond;}event_t;#define event_handle event_t*#endif//返回值:NULL 出错event.
阅读全文
posted @
2012-08-06 15:16
kkmm
阅读(3888)
推荐(0) 编辑
linux 下创建并动态加载.so 文件
摘要:最简单的生成, 动态加载.so 文件的例子//test.cpp #ifndef _TEST_H #define _TEST_H #include <iostream> using namespace std; void showMessage() { cout << "test..." << endl; } #endifgcc -shared -fPIC test.cpp -o libtest.so.1.0//创建链接ln -fs $PWD/libtest.so.1.0 $PWD/libtest.so //要使用绝对路径 // test.
阅读全文
posted @
2012-08-06 14:34
kkmm
阅读(3082)
推荐(0) 编辑
Vi经典插件ctags(转)
摘要:(为了提高工作效率,必须学会使用一些工具). 查看 key 相关信息说明的命令 :help keycodes==============================================================================================================2. ctags(1). 帮助手册查看:help usr_29(2). 功能ctags的功能, 只要在unix/linux环境编程过的人都知道它的历害! 我在这也作个小小介绍吧: 对浏览代码非常的方便, 可以在函数, 变量之间跳来跳去等等.(注意: 我这里说到的仅是小小的
阅读全文
posted @
2012-08-06 12:08
kkmm
阅读(5286)
推荐(0) 编辑
typedef 函数指针
摘要:typedef int (*MYFUN)(int, int); 这种用法一般用在给函数定义别名的时候上面的例子定义MYFUN 是一个函数指针, 函数类型是带两个int 参数, 返回一个int 在分析这种形式的定义的时候可以用下面的方法: 先去掉typedef 和别名, 剩下的就是原变量的类型. 去掉typedef和MYFUN以后就剩: int (*)(int, int)
阅读全文
posted @
2012-08-06 10:08
kkmm
阅读(168)
推荐(0) 编辑
[转载] Intel C++编译器的预定义宏(Windows版、Linux版)
摘要:转载自:http://www.cnblogs.com/zyl910/archive/2012/07/06/intel_predefined_macros.html 网上有很多介绍VC与GCC预定义宏的帖子,例如《C\C++宏大全》。 而对于Intel C++编译器的预定义宏,似乎没人介绍。 我Google了很久,发现Intel官网上有,但是很奇怪,很多链接都失效了,报告404错误。反复调整搜索关键字,一个一个的尝试链接,最后终于找到了有效的页面了。为了怕以后链接失效,赶紧记录下载。 该手册的名字是《Intel® C++ Compiler XE 12.1 User and Refere
阅读全文
posted @
2012-08-03 15:00
kkmm
阅读(715)
推荐(0) 编辑
VC\GCC宏一览
摘要:C\C++宏大全一、标准预定义宏The standard predefined macros are specified by the relevant language standards, so they are available with all compilers that implement those standards. Older compilers may not provide all of them. Their names all start with double underscores. __FILE__ This macro expands to the nam
阅读全文
posted @
2012-08-03 14:43
kkmm
阅读(411)
推荐(0) 编辑
c++之EXTERN详细讲解
摘要:为什么用EXTERN?全局变量(外部变量)是在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为本文件中各个函数所引用。编译时将全局变量分配在静态存储区。有时需要用extern来声明全局变量,以扩展全局变量的作用域。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字 extern对该变量作外部变量声明,表示该变量是一个将在下面定义的全局变量。有了此声明,就可以从声明处起,合法地引用该全局变量,这种声明称为提前引用声明。extern关键字告诉编译器,"这
阅读全文
posted @
2012-08-03 10:53
kkmm
阅读(1598)
推荐(0) 编辑
Notepad++命令行参数
摘要:Notepad++.exe [-multiInst] [-noPlugin] [-ro] [-nosession] [-notabbar] [-n##] [-l$$$] [FILES]Notepad++ 支持命令行参数。以下就是 Notepad++ 支持的命令行选项(区分大小写): p>-n行号文件打开后光标所在的行号.-c启动列编辑模式.--help显示命令行帮助,比如命令行的格式-loadingTime显示 Notepad++ 打开所有文件所消耗的时间.结果以对话框形式显示,时间精确到0.01秒。-multiInst允许多个 Notepad++ 同时运行。默认情况下,如果 Notep
阅读全文
posted @
2012-08-03 09:39
kkmm
阅读(13971)
推荐(0) 编辑
Windows Event 的各个相关函数解释 及 简单例子一个
摘要:SetEvent 是设置信号为 有信号状态ReSetEvent 是设置信号为 无信号状态CreateEvent的第二个参数如果是TRUE,意思是你必须用SetEvent和ResetEvent来设置信号,如果为FALSE,则用WaitForSingleObject自动进入无信号状态。结束后用SetEvent重置为信号状态。OpenEvent可以打开一个先前已经创建好的Event,只要名字对,就可以打开该event。Event事件分 人工事件和自动事件。当使用人工事件方式时,需要手动设置ResetEvent 为无信号状态,及表示资源被占用中。当释放资源时,用SetEvent 设置为有信号状态。当使
阅读全文
posted @
2012-08-02 16:01
kkmm
阅读(3960)
推荐(0) 编辑
如何在g++中添加include文件的目录
摘要:问题描述:例如,我的cpp和h文件不在同一个目录下,分别在 "src/" 和 "include/" 下,名字分别为 main.cpp 和 main.h,但是我在main.cpp中只想写 #include "main.h" 这样,不写相对路径 #include "../include/main.h"。解决办法:那么可以通过 g++ 的编译选项来控制。g++ src/main.cpp -o main -I include/附录:结构.├── include│ └── main.h├── main //最终生成的可执行文
阅读全文
posted @
2012-08-02 11:10
kkmm
阅读(9985)
推荐(2) 编辑
在vim中设置将tab自动转化为4个空格
摘要:我们写代码的时候,一个好的习惯是将tab转化成4个空格来进行缩进。从个人经验来看,在多人一起开发项目时,为了使代码风格尽量保持一致,一般不允许在代码使用TAB符,而以4个空格代之。这个已经成为很多公司的标准(为啥编辑器不采用这个标准呢??)。在vim中,我们只需要简单配置一下就ok了,打开~/.vimrc加上下面的几行(如果已经有了,修改一下数值就行了)。set tabstop=4set softtabstop=4set shiftwidth=4set expandtab事实上要搞清楚这几个值的具体含义是比较难的。因此我就懒得去整明白了。
阅读全文
posted @
2012-08-01 17:02
kkmm
阅读(3685)
推荐(0) 编辑