- 博客(50)
- 资源 (8)
- 收藏
- 关注
原创 linux shell git+golang的几个简洁函数备忘一下
function gm() { git status | grep -w "modified:" | awk '{print $3}' | while read line;do git add $line;done}export -f gmfunction findg(){ if [ $# -ne 1 -a $# -ne 2 ];then echo "findg onl...
2018-09-12 16:27:57 206
原创 rm with backup
function mvpath(){ if [ $# -ne 2 ];then echo "mvpath requires 2 paths, but are '$*'" && return 1 fi src="$1" dst="$2" if [ -d "$dst" ];then empty=`ls -A "$dst 2>/dev/nu
2018-07-20 15:11:12 189
原创 vim 基本配置
set nocompatible " be improved, required"disable popup preview window while auto-completingset completeopt-=previewfiletype off " required" set the runtime path to includ...
2018-02-28 17:24:34 230
原创 html的table中rowspan colspan实现跨行或者跨列
rowspan是单元格跨行,colspan是单元格跨列。原则:1. 第一个tr单元格的colspan总数(如果没有colspan属性就按照colspan=1计数)表示整个table的列的个数(比如第一个tr的colspan总数为3,那么第二个tr里面可以有三个无colspan属性的td,或者, 有1个td包含colspan=2,一个无colspan的td)。2. rowspan最大只能
2017-11-18 17:13:20 2458
原创 循环队列算法之快速实现--shell
#!/bin/bashread_index=-1write_index=-1n=3readable=0writeable=nread_one(){ echo "start to read...." if [ $readable -le 0 ];then echo "Cannot read anymore"
2017-02-06 19:00:42 447
原创 一行代码为vim增加自动翻译单词功能 使用有道词典
1. 在 ~/.bash_profile最后增加如下:translate(){ word=$1 [ "x$word" = "x" ] && return 1 start=0; wget -q --dns-timeout 6 -O - "http://fanyi.youdao.com/openapi.do?keyfrom=youdao111&key=60638690&
2016-11-25 18:20:38 1535
转载 感谢“http://it.oyksoft.com/” 关于安装yum 于redhatEL4上的办法
http://it.oyksoft.com/howto-install-yum-on-rhel-4/
2016-01-18 10:52:57 560
原创 解析xml
#include #define ch_not_spec(x) ((x) != '/' && (x) != '')struct XML_NODE{char name[64];char* property_start;char* property_end;int over_type;int type;std::vector child_list;
2015-08-01 18:43:01 661
翻译 一句话说明浮点数为何不能直接 if(f== 0.0)这样判断
float f = 0.33f * 0.2f;if(f - 0.066f == 0.0f)f = 0;这个是来自csdn论坛的一个帖子,说的比较简单明了。这里是不会走到f=0这个地方的,因为浮点数是底数+指数的存储,计算机并不能连续存储指定精度宽度内的所有浮点数。上述例子中,f第一次计算结果不是0.066,是比0.066稍大的一个数f = 0.066000007,傻眼了吧,呵呵。当然,
2015-07-23 22:20:11 4390
原创 反向查找字符串
char* strrstr(const char* src, const char* substr){if(src == NULL || substr == NULL)return NULL;int n = strlen(substr);const char* ret = src + strlen(src)- n;while(ret >= src){
2015-07-02 16:22:30 1552
原创 fwrite 返回值是实参count的写入个数
fwrite (char* buf, size_t size, size_t count, FILE* fp)函数返回值是 完整的size的个数 所以, 如果size = 4 count=3 那么 返回值可能是0,1,2,3 表示完整写入了几个size。如下写法是错误的if( count != fwrite(buf, cout, 1 , fp)) do-somethi
2015-07-02 10:11:56 1059
原创 itoa不是c语言标准函数
今天在写一个跨平台功能时, 发现itoa在vc++下可以编译过,但是linux下面的g++就不行。后来发现原来itoa不是c标准函数,atoi是标准函数,所以就只好自己写了一个 利用sprintf就好了
2015-07-01 10:13:04 804
原创 批处理--工作当中获取本机ip地址然后执行一个循环启动脚本
goto :mainrem +++++++获取本机ip++++++++++++++++++++++++++++++++++++:get_local_iprem 注意 不要照搬某些人的文章,如果你把函数写成setlocal dosomething endlocal 这种结构,那么在这段代码中返回值无法赋值,你得到的返回ip为""@echo offecho 开始获取本机ip....
2015-04-14 17:00:32 3167
原创 看似小事,却极易写错
今天写个txt文章转换为html段落的小代码,结果一个地方搞了好一会才发现是哪个地方写错了:#include #include void main(int argc, char** argv){ if(argc < 2) { printf("file name failed!!!\n"); char k; scanf("%c", &k); return; }
2015-04-07 21:13:00 458
原创 修复界面bug并增加了自动提示是否输赢的 关于之前博客"html5 canvas 绘制象棋(将持续改进)"
象棋canvas.middle{border:1px solid #dddddd;cursor:crosshair;var mycanvas = document.getElementById("middle");var stepCount = 0;ctx = mycanvas.getContext("2d");var
2015-01-11 19:19:07 855
原创 关于一个求最小交换次数的算法的一个严格证明,是严格证明,不是想当然
问题描述:有一个1~n的数列的排列,但是这个数列已经被打乱了排列顺序,如果我们只是通过“交换任意两个元素”,那么,要实现元素从1~n的有序排列,“最少的交换次数是多少?”解答过程:首先我们纸上可以先写写简单的情况试试,比如排列:4 3 1 2, 交换次数=3;我们可以在多组测试中,边测试边想,真正的实现需要满足:4本该到2处, 2本该到3处, 3本该到1处, 1本该到4处,刚好一个循环
2015-01-06 10:33:21 4779
原创 从n个数中选择随机选择m个, m个数互不重复
/////////*从n个数中选择随机选择m个, m个数互不重复******************//////////////////int g_seed = 0; void srand_quick(int seed){ g_seed = seed;} inline intrand_quick(){ return ( ((g_s
2014-11-14 11:54:56 3601
原创 几句话说明boost库的编译(windows下面)-备忘
1.在 boost安装目录下面,进入到 tools/build/v2/engine 双击执行build.bat, 会在当前目录下面出现新的目录:bin.ntx862. 复制bin.ntx86下面的bjam.exe到boost安装目录下面3.开始执行编译boost的操作,bjam.exe --help可以查看帮助例如:E:\boost_1_55_0>bjam.exe --toolse
2014-11-05 15:20:45 595
转载 关于vc 链接时提示转换coff文件失败的【备忘-转载-来自百度知道】
wuweiwusi| 四级不知怎么本来编译好好的VS2010环境,忽然出现“转换到 COFF 期间失败: 文件无效或损坏”的链接错误。花了好多天,试了好多方法,最终解决了这个问题。现在罗列一下这几种解决方案:方案1: 点击“项目”-->“属性” --> “清单工具”, 然后选择"输入和输出’ --> ‘嵌入清单’,将后面的‘是’改成‘否’就可以了
2014-10-11 13:48:39 540
原创 vsvim--今天突然发现有个vs插件vsvim,仿真linux vim的各种键盘编辑文件
可以使用跟vim几乎完全一样的功能,比如快速定位到文件某个位置,删除单词,不用在点鼠标啦
2013-06-28 18:09:59 1330
原创 严格的二分查找算法,返回第一个相等的数,而不是返回任意一个相等的
int index(int * arry, int count, int val){ int start , mid, end; start = 0; end = count - 1; int ret = -1; while( start { mid = (start + end)/2; if(val > arry[mid] ) { star
2013-06-28 17:34:35 1160
原创 求结构体内成员的偏移和size的宏
#define MEMB_OFFSET(tp, mb) ((unsigned int) (&((tp*)0)->mb))#define MEMB_SIZE(tp, mb) ((unsigned int) (sizeof( ((tp*)0)->mb ) ) )
2013-06-25 10:17:29 714
转载 c++ explicit
网上找的解释http://www.thinkcode.cn/post/441.html在C++中explicit修饰一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),explicit构造函数是用来防止隐式转换的。
2013-06-19 15:20:14 645
原创 dll文件和lib文件
参考了这篇文章http://www.cppblog.com/amazon/archive/2009/09/04/95318.html,http://wenku.baidu.com/view/d9a6520e7cd184254b3535b4.html做个简明总结。我们在程序中使用“pragma comment(lib, "a.lib")这个不一定是静态链接,这个只是告诉编译器,a.lib中包含我
2013-06-16 12:05:13 798
原创 判断四个扑克是否能算出24点
int can24(double * data, int count, double shouldVal){ #define fabs(x) ((x) /*判断4个数按照两个两个分组,分别计算出两个值,然后再根据两个值计算一下看看能不能构成shouldVal,这个x表示其中两个构成的一对计算出的值,然后pairshould判断另外两对计算的值能否跟之前计算的x算得shoul
2013-06-15 18:38:00 2724
原创 快速排序一趟分割,单循环
template void quickPartition(T * arry, int len){ T* bigPoint = arry + len - 1; T tmp; while(arry if(*arry >= *(arry + 1)){ tmp = *arry, *arry = *(arry + 1), *(arry + 1) = tmp; arry
2013-06-09 12:18:43 852
原创 c++的全局变量和size_type
全局变量的使用不使用任何修饰符:这样的情况就是定义全局的变量,注意,是定义,这意味着,其他地方不能再出现声明式或者定义式了。所以,如果你是在头文件使用这种方式,那么这个头文件只能被一个cpp文件包含,否则多个cpp文件包含它,就会在链接时报符号重定义错误,因为每个cpp都自己给自己的obj中定义了这个符号。这时,就要考虑使用extern方式了。使用extern方式:1.
2013-05-16 13:55:09 928
原创 惊叹,交换操作竟然可以不借助第三个中间数
今天在读《程序员的自我修养》时,第四章讲静态链接的开头,给出的实例程序中,有一个函数swap函数这样写的:void swap(int * a, int* b){ *a ^= *b ^= *a ^= *b;}叹为观止啊,我们通常想,先把a=b赋值,如果不借助第三方数,此时剩余信息已经只是关于原先的b的信息了,而上述代码则相当于:a = a' # b', b = (a'
2013-05-08 10:29:54 805 3
原创 递归处理正则表达式
/*这个小程序实现的是,匹配所有的子串。*表示重复>=0次 .表示匹配任意字符?表示重复0或1次+表示重复>=1次\加在上述字符前表示视作普通字符而非重复模式字符*/struct POS{ char * startIndex;//存放匹配子串在源串中起始索引 char * endIndex;//匹配子串在源串中下一次匹配的起始位置,
2013-05-07 13:26:29 779
原创 可变参数的函数的原理及其简单模仿
可变参数的定义是类似这样的:void _cdecl myfun(char * fmt, ...){...}这里的fmt主要是为了能够识别后面到底有几个参数及其类型的,否则编译器是无法判断函数参数个数的。由于参数的个数可变,所以也只有c调用风格的函数可以实现它,因为只有c调用风格的函数,参数的传递是由调用者负责的,而stdcall是由函数自身负责的。win32 api都是stdc
2013-05-07 12:43:50 645
原创 循环删除报数问题
给定n个排成一圈的人,他们依次循环报数:1,2,。。。,m;当报到m时,这个人就被踢出队伍。比如:n=6,m=3;那么将依次踢出:3,6,4,2,5,1算法:输入n,m输出:按被踢出顺序输出踢出的人思路:利用链表,指针p每次删除元素前调用p=p->next m-1次,利用循环链表表示“圈” void circleDelete(int n, int m){ struct myl
2013-04-22 18:32:00 886
原创 关于strcpy的面试问题
这个简单的函数可能是c/c++面试中被问到最多的了,网上有很多说明是不全面的,甚至是最核心的没有点到。以下看法仅仅是自己个人看法。1.为何strcpy要返回指针?可以方便级联调用,而且可以用于判断函数是否成功。比如if(!strcpy(dst,src){....},或者 strcpy(dst,src)[strlen(dst)]='a'等等2.strcpy实现的注意点有哪些?(1
2013-04-12 13:57:30 981
原创 sizeof运算求结构体大小
首先有几条规则:1. 结构体的成员相对于结构体的偏移量,是该成员所包含的最大简单类型(指占用内存数)的整数倍(如果该成员本身又是一个结构体,就要递归查找其简单类型,简单类型就是char short int float double,long) 比如struct a1{ char a[5]; int b; }aa; struct a2{
2013-04-09 15:50:51 3452
原创 从1-n中选择m个数的组合个数
给定1,2,3,。。。,n(n>=1), 从n个数中选择m(m递归实现:var data = [1,2,3,4,5];var output = [];function outputAll(start, count){ console.log(start + "," + count); //跟踪调用过程 if(start data.length || data
2013-03-22 11:34:19 1297
原创 html5 canvas 绘制象棋(将持续改进)
象棋canvas.middle{border:1px solid #dddddd;cursor:crosshair; var mycanvas = document.getElementById("middle");ctx = mycanvas.getContext("2d");var layout={offsetWidth:
2013-03-16 18:27:03 3042
原创 linux 脚本 之 简化工作
#!/bin/bash####调用另一个命令,生成0-23点的不同时间的报告,之前都是在前台要进行24个报告的添加,点击量挺多的,尤其是每次测试时都要重复点击。str1='{"action": "add", "data": {"start_day": 0, "object": "Reports", "name": "'str2='", "start_hour":' str3='
2013-02-25 20:08:28 515
原创 利用constructor 统一判断 类对象的具体类型(包括自定义类型的对象)
function getFunType(para){// para 是 传入的对象 var pattern = /function\s+([\w]+)/ ; // 正则表达式 \w 表示匹配数字或者字母或者下划线, \s 表示匹配空白符 result = []; if( para.constructor && typeof para.constructor.toStr
2013-02-20 20:08:59 899
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人