- 博客(105)
- 资源 (14)
- 问答 (1)
- 收藏
- 关注

原创 他山之石(链接集锦)
一:博客相关1 如何在github上面写博客? 1.1 http://beiyuu.com/github-pages/ 1.2 http://www.cnblogs.com/P_Chou/archive/2013/01/20/build-github-blog-page-07.html 1.3 http://luchanghong.com/web/2012/09/01/sta
2014-07-18 21:06:21
915

原创 英语学习
为了成为一个高级码农,良好的英语写作,阅读,口语表达能力,三者缺一不可。抽点时间学习英语,将来一定受益终身。此文将列举常用的口语,不间断的更新。收获在于积累!Let's go***********************************************************************************************1 这是一个相当宽泛的问
2014-07-18 21:06:19
843
原创 前向声明可能引起的new崩溃
试试:a.h#pragma oncestruct RandomData;class A{public: A(); ~A(); bool Run();private: RandomData *m_pData;};a.cpp#include #include "a.h"struct RandomData{ int n;};A::A() :m_
2015-12-09 21:24:49
697
转载 boost条件变量和互斥使用例子
看看:#include #include #include const int BUF_SIZE = 10;const int ITERS = 100;boost::mutex io_mutex;class buffer{public: typedef boost::mutex::scoped_lock scoped_lock;
2015-08-24 20:49:10
736
转载 Linux文件特殊权限
SUID属性passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码。但是保存用户密码的/etc/shadow文件的权限是644, 也就是说只有文件的所有者root用户可以写入,那为什么其他用户也可以修改自己的密码呢?这是由于passwd这个可执行文件有SUID属性。[root@srv ~]# ll /etc/shadow-rw-r--r--. 1 root root 19
2015-07-07 12:31:31
841
原创 获取进程打开的文件句柄数
今天,碰到一个问题,如何获取进程打开的文件句柄数?搜素发现,一般需要调用命令lsof,然后用grep过滤出指定进程的结果,然后统计一下。完整的命令是:lsof -n|awk '{print $2}'|grep -e pid1 -e pid2|uniq -c 这个命令是结果是得到进程号为pid1和pid2的两个进程,各自打开的文件数。注意这里说的文件数,不是文件句柄数。这有区别吗?有。如果要
2015-06-29 20:09:39
7671
转载 Linux下RPM软件包的安装及卸载
转自:http://os.51cto.com/art/201001/177866.htm在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。RPM
2015-06-28 16:37:08
691
转载 system和popen的用法和区别
转自:http://blog.youkuaiyun.com/shanzhizi/article/details/9054009linux下使用system需要谨慎,那么代替它的方法是什么呢?标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。popen函数还创建
2015-06-12 12:37:38
13488
原创 32位操作系统和64位操作系统的数据类型大小
如题,测试如下:代码:#include using namespace std;int main(int argc, char *argv[]){ cout << "char:" << sizeof(char) << endl; cout << "pointer:" << sizeof(char *) << endl; cout << "int:" << s
2015-06-11 19:54:50
773
转载 Makefile常用语法及例子
原文:http://www.cnblogs.com/tianyajuanke/archive/2013/02/16/2610276.html一个简单的例子:ab.out : a.o b.o g++ -o ab.out o/a.o o/b.oa.o : a.cpp g++ -c a.cpp -o o/a.ob.o : b.cpp g++
2015-05-14 20:24:33
621
转载 柔性数组
(我的旁白:什么是柔性数组?其实就是0长度数组,听起来高大上,玩起来还真是高大上啊,哈哈,以前没注意这些,今天用到,特意搜索了一下,学习了。)转载的:首先,我们要知道,0长度的数组在ISO C和C++的规格说明书中是不允许的。这也就是为什么在VC++2012下编译你会得到一个警告:“warning C4200: 使用了非标准扩展 : 结构/联合中的零大小数组”。那么为什么gcc
2015-05-09 12:05:24
630
转载 vim插件配置
vim_cheat_sheet_for_programmers.png常言道:工欲善其事,必先利其器 ,作为一个程序员,一个常用的工具就是编辑器,我选择一个能极大提高自己开发效率的编辑器vim(有些人可能选择emacs)。而vim编辑器方面具有以下几种特性:跨平台及统一环境无论是在windows还是在*nix,vim是一个很完美的跨平台文本编辑器,甚至可以直接在服务
2015-05-06 12:51:00
602
原创 进程锁实现-有名信号量
说明:Linux平台代码:/** @file processlock.h* @brief 进程锁实现* @date 2015-4-15* @note 用有名信号量实现*/#pragma once#include using std::string;class CProcessLock{public: CProcessLock();
2015-04-15 13:01:12
945
转载 gdb调试(1)-查看内存
用gdb查看内存格式: x /nfu 说明x 是 examine 的缩写n表示要显示的内存单元的个数f表示显示方式, 可取如下值x 按十六进制格式显示变量。d 按十进制格式显示变量。u 按十进制格式显示无符号整型。o 按八进制格式显示变量。t 按二进制格式显示变量。a 按十六进制格式显示变量。i 指令地址格式c 按字符格式显示变量。
2015-04-11 12:48:00
777
原创 面试小记:关于数组和指针的一个笑话
面试题目:请问运行下面的程序会出现什么结果:char* getMemory(){ char a[] = "hello,world"; return a;}int main(int argc, char **argv){ char *str = NULL; str = getMemory(); printf("%s\n", str); return 0;}我乍一
2015-03-19 16:56:43
1147
转载 子网掩码,网络地址,广播地址
IP地址是一个由二进制的“0”和“1”组成的4字节共32位字符串。IP地址是由网络地址+主机地址组成那么可以得出网络位+主机位=32位如何知道一个IP地址里有多少个网络位和主机位呢,那么这个由子网掩码决定。举例一个iP地址10.158.79.53,子网掩码位255.255.248.0,这里面网络位,主机位是多少?主机数是多少?网络地址和广播地址是多少?说下我个人
2015-03-18 11:33:02
1716
转载 Android学习之路
欢迎转载,但请务必在明确位置注明出处!http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/QQ交流群:入群理由请正确填写我的GitHub账号* 383323653 (Android学习之路1群,已满)* 187252236 (Android学习之路2群,已满)* 416618703 (Android学习之路
2015-02-11 17:52:43
715
转载 Android SDK Download List
转自:http://www.cnblogs.com/wanqieddy/p/3545368.html#commentformfrom://http://sofire.iteye.com/blog/1961552Android SDK Download List!通过分析SDK Manager里要用到的repository文件,解析出各个组件的下载地址,方便使用迅雷下载等
2015-02-10 14:26:56
615
转载 在GitHub上管理项目
转自:http://www.cnblogs.com/mengdd/p/3447464.html新建repository 本地目录下,在命令行里新建一个代码仓库(repository) 里面只有一个README.md 命令如下: touch README.md git init 初始化repository git add RE
2015-02-03 18:06:30
541
转载 android的surfaceflinger原理讲解
转载自:http://blog.chinaunix.net/uid-20564848-id-96788.htmlSurfaceFlinger是Android multimedia的一个部分,在Android 的实现中它是一个service,提供系统 范围内的surface composer功能,它能够将各种应用 程序的2D、3D surface进行组合。在具体讲SurfaceFling
2014-12-15 15:33:09
761
转载 关于Linux静态库和动态库的分析
转自:1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。2.库的种类linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。静态库的代
2014-11-15 22:43:20
543
转载 用 C 语言编写一个简单的垃圾回收器
人们似乎认为编写垃圾回收机制是很难的,是一种只有少数智者和Hans Boehm(et al)才能理解的高深魔法。我认为编写垃圾回收最难的地方就是内存分配,这和阅读K&R所写的malloc样例难度是相当的。在开始之前有一些重要的事情需要说明一下:第一,我们所写的代码是基于Linux Kernel的,注意是Linux Kernel而不是GNU/Linux。第二,我们的代码是32bit的。第三,请不
2014-09-24 09:10:07
606
原创 dos脚本示例1
@echo off::::::::::::: 1,先处理文本::::::::::set conv_list=list.txtset indir=ui:: 切换到脚本所在目录cd /d %~dp0if "%1"=="" echo "usage: %0 替换列表文件 所在目录 [新替换文件] [输出目录]" & goto endrunif "%2"=="" echo "us
2014-08-22 17:51:42
830
原创 说说内存对齐吧
说说内存对齐为什么要内存对齐?因为CPU为了提高指令提取效率,对数据的存放地址有要求。如果不对齐,会导致效率低下,甚至错误。如何对齐?既然CPU已经作了规范,剩下的事情就交给编译器了。对于程序员,可以告诉编译器按照怎么的方式去对齐。不同的编译器指令不一样:(1) windows的编译器cl #pragma pack(n) //n表示按多少字节对齐 #pragma p
2014-08-20 15:51:39
686
原创 UTC时间转本地日期时间的实现
//gps日期和时间struct DATETIME{ hw_uint16 year; hw_uint8 month; hw_uint8 day; hw_uint8 hours; hw_uint8 minute; hw_uint8 seconds; hw_uint8 microsecond; DATETIME() { clear(); } hw_void clear
2014-07-25 15:45:07
1063
原创 数组和指针
记录整理一些在阅读《征服C指针》过程中的感想。1 关于数组和数组指针char array1[2]; //定义一个数组,包含了2个char元素char (*array2)[2]; //定义一个数组指针,这个指针指向的数组是一个包含了2个元素的数组另外:(1)数组名称array其实代表了数组首元素的地址,即&array[0],而&array代表
2014-07-19 09:45:53
622
原创 排序算法2
前面讲了冒泡排序和插入排序,今天讲的排序算法是shell排序shell排序命名来自于Donald Shell,该算法被证明为有亚二次时间界。是插入排序的一种改进,舍弃了插入排序逐一比较的不足之处,而是设定一个增量,间隔比较。然后逐渐缩小这个增量,最终达到排序目的,所以shell排序也叫缩减增量排序。首先,需要设定一组增量序列,h1,h2,...hk。然后先从h1开始,以此增量为步长
2014-07-19 09:45:35
584
原创 bat批处理脚本编程之清理系统垃圾
@echo offecho 正在清除系统垃圾文件,请稍等......del /f /s /q %systemdrive%\*.tmpdel /f /s /q %systemdrive%\*._mpdel /f /s /q %systemdrive%\*.logdel /f /s /q %systemdrive%\*.giddel /f /s /q %systemdrive%
2014-07-19 09:43:42
700
原创 typedef声明数组及在二维数组申请中的应用
基础知识练习,随便写写,关于指针,数组,typedef的应用. #define MAXLINE 1024typedef char Pom[MAXLINE];int main(){ char *pTest[10] = {"abcd","defg"};//指针数组初始化 char MyArray[MAXLINE] = {"hello,world!"}; char
2014-07-19 09:42:38
879
原创 排序算法1
整理一下比较主流的几种排序算法,这篇介绍的排序算法有:1) 冒泡排序,2) 插入排序。一:冒泡排序这已经成为了教科书式的排序算法了。很容易实现,且对部分已经排好序的数据进行排序时,具有比较好的效率。它的最坏情形是O(N2)。算法思路:以从小到大排序为例,每次从数组最后一个元素开始,比较相邻的两个元素,如果array[j] 1 void BubbleSort(int arr
2014-07-19 09:42:35
618
原创 HTK代码中的log-add算法实现
在语音识别处理中,一般采用基于高斯混合模型的HMM框架。在模型的训练中(如htk的代码),涉及到大量的概率值计算,这些概率值往往是很小的浮点数。而且概率值相乘后会越变越小,计算起来会损失精度,为了保持准确度,统一将这些概率值进行log处理,再参与运算。也就是说,在代码中处理的概率是对数域的值,即:p1' = logp1p2' = logp2在对数域中,乘法和除法变换为:lo
2014-07-19 09:41:26
1199
1
转载 批处理setlocal与变量延迟
以下内容转自:http://www.hackbase.com/tech/2009-08-18/55046.html要想进阶,变量延迟是必过的一关!所以这一部分希望你能认真看。为了更好的说明问题,我们先引入一个例子。例1: @echo off set a=4 set a=5 & echo %a% pause结果:4解说:为什么是4而不是5呢?在echo之前明明已经
2014-07-19 09:40:39
1324
原创 三种数据队列的实现
1 /** 2 * 文件名称:dataqueue.h 3 * 摘 要:本文件实现了三种数据队列:简单队列,单队列类和双数据队列类。 4 1) 简单队列:使用List库,动态分配内存,使用临界区保证互斥 5 2)单队列:采用链表实现,一次性分配内存。减少频繁内存申请开销,同样采用临界区保存互斥。 6 3
2014-07-19 09:37:30
799
原创 排序算法3
前面介绍的冒泡排序,插入排序,shell排序都是基于两两元素比较,然后移动的排序算法,有着O(N2)的复杂度,今天讲三种比较牛的排序算法,可以将复杂度降低为O(n*lgn)。分别是:1) 堆排序。2)归并排序。3)快速排序。1、堆排序算法:利用二叉堆(binary heap)的数据结构形式,及其性质对数据进行排序。首先看下什么是二叉堆,wiki解释:二叉堆是一种特殊
2014-07-18 23:02:48
664
原创 排序算法4
今天讲两种比较诡异的排序算法,之所以诡异是因为这两种排序算法与之前介绍的几种不太一样(见排序算法前三篇)。之前的排序算法都是基于元素比较来得到的,它们中间,像堆排序,快排等都有着比较理想的时间复杂度下界O(nlgn)。那么有没有更快的排序算法?有!下面的这两种排序算法的最好时间复杂度是O(n)。是不是很诱惑?一起来看看。1)桶排序桶排序实际上是先定义m个单元,每个单元满足一定的条件
2014-07-18 23:00:51
662
原创 字符编码及文件读取的基础知识
这是以前写的一点笔记,把它转过来。1、二进制文件和文本文件首先看二段代码:生成一个二进制文件和一个文本文件。打开一个二进制文件:test.dat,写入整数1234,其对应的十六进制为04 D2。 FILE *pfile; int ntest = 1234; if(NULL == (pfile=fopen("test.dat","wb")))
2014-07-18 22:58:57
882
原创 BP神经网络算法推导
前言:自己动手推导了一下经典的前向反馈神经网络的算法公式,记录一下。由于暂时没有数据可以用作测试,程序没有实现并验证。以后找到比较好的数据,再进行实现。一:算法推导 神经网络通过模拟人的神经元活动,来构造分类器。它的基本组成单元称为”神经元”,离线情况下如果输入大于某值时,设定神经元处于兴奋状态,产生输出,否则不响应。而这个输入来自于所有其它的神经元。而神经元的响应函数有多种(需
2014-07-18 22:58:48
1883
原创 闭包
举个例子 perl: use strict;my $add_sub = add_function_generator();my $sum = &$add_sub(4,5);print $sum;sub add_function_generator{return sub{$_[0]+$_[1]};}
2014-07-18 22:57:18
529
gcc的编译选项有顺序吗?
2015-06-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人