- 博客(74)
- 资源 (4)
- 收藏
- 关注
原创 mysql数据库该路径后没办法启动的问题
修改mysql数据库存储路径之后,一直没法启动,百思不得其解,后来ls -Z查看,原来是selinux的缘故,chcon -t mysqld_db_t /home/mysqlData 即可。附上更改数据库的位置的方法: 1、home目录下建立data目录 cd /
2011-10-10 16:01:31
1446
原创 mysql安装之后没有mysql数据库的原因
mysql安装完之后,登陆后发现只有两个数据库:mysql> show databases;+--------------------+| Database |+--------------------+| information_schema
2011-10-09 15:52:21
2000
原创 createfile 中生成的文件如何清空?
很简单:SetFilePointer(h_Log, 0, FILE_BEGIN);SetEndOfFile(h_Log);
2011-07-07 10:47:08
1885
原创 IOCP 中WSARecvFrom返回10045的问题
<br />今天在编写IOCP程序时,遇到了这个问题,在VS2008上调试时返回10045,但是让它不调试执行的时候却正常。在网上查找,发现相应的资料不多。后来我把perhandle和pIOdata的弄成全局变量,还是不行;真是弄的我百思不得其解。<br /> 后来我在MSDN上发现这一句话:The lpFlags parameter is both an input and an output parameter, allowing applications to sense the output
2011-04-12 13:39:00
2978
原创 程序中的人类社会学
<br /><br />我们在写函数的时候为了保证程序的健壮性,一般都会做参数检查,但是同时又降低了一些程序的执行效率(虽然计算机有转移预测);但是很多时候,这些检查都不是必要的,只是为了应付调用者偶尔的错误使用方法。但是我们可以通过要求调用者遵循规则来避免这些检查。但是由于我们的趋利心理,为了避免在发生事故时避免自己的责任,还是会做参数检查。<br /> 在现实社会中,很多情况也是如此,一些人在工作或者生活中,为了应付一些可能出现的意外(虽然有些看起来不可能发生);做了大量的重复工作,造成了物资或者
2011-04-09 15:47:00
919
1
原创 alarm(0)函数的作用
<br />alarm也称为闹钟函数,它可以再进程中设置一个定时器,当定时器指定的时间到时,它向进城发送SIGALARM信号。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替。<br /><br />当在调用alarm()前已经设置了一个闹钟,那么我们可以调用alarm(0)来取消此闹钟,并返回剩余时间。<br />函数原型<br /> unsigned int alarm(unsigned int seconds)函数参数<br />
2011-03-23 10:30:00
11208
原创 close_on_exec标志位的作用
<br />lose_on_exec 是一个进程所有文件描述符(文件句柄)的位图标志,每个比特位代表一个打开的文件描述符,用于确定在调用系统调用execve()时需要关闭的文件句柄(参见include/fcntl.h)。当一个程序使用fork()函数创建了一个子进程时,通常会在该子进程中调用execve()函数加载执行另一个新程序。此时子进程将完全被新程序替换掉,并在子进程中开始执行新程序。若一个文件描述符在close_on_exec中的对应比特位被设置,那么在执行execve()时该描述符将被关闭,否则该
2011-03-23 10:30:00
8023
1
原创 C语言的一种老式写法
<br />今天在看程序时,发现一个地方很令我费解:<br />void ring_init(ring)<br />RING *ring;<br />{<br /> ring->pred = ring->succ = ring;<br />}<br />后来注意到,ring的声明放在了函数的后面,而参数中并没有ring类型的声明,问了问别人才知道,这是一种C语言老式函数的写法。跟void ring_init(RING* ring){...} 一个意思。<br /> <br />孤陋寡闻了。
2011-03-22 15:38:00
2291
原创 geteuid()和getuid()的区别
<br />geteuid():返回有效用户的ID。<br />getuid():返回实际用户的ID。<br />有效用户ID(EUID)是你最初执行程序时所用的ID <br /> 表示该ID是程序的所有者 <br /> 真实用户ID(UID)是程序执行过程中采用的ID <br /> 该ID表明当前运行位置程序的执行者 <br /> 举个例子 <br /> 程序myprogram的所有者为501/anna <br /> 以501运行该程序此时UID和EUID都是501
2011-03-01 11:41:00
15383
原创 const 在C++中的主要作用
<br />1、如果放在函数前面,表示该返回变量不能被修改。<br /> 如果给以“指针传递”方式的函数返回值加const 修饰,那么函数返回值(即指针)<br />的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。<br />例如函数<br />const char * GetString(void);<br />如下语句将出现编译错误:<br />char *str = GetString();<br />正确的用法是<br />const char *str = GetStr
2011-02-24 11:16:00
734
原创 什么是函数对象?
<br />刚开始看到这个名字,还以为是函数呢,谁知道大错特错!<br /> 顾名思义,就是在某种方式上表现得象一个函数的对象。典型地,它是指一个类的实例,这<br />个类定义了应用操作符operator()。 <br /> <br />函数对象是比函数更加通用的概念,因为函数对象可以定义跨越多次调用的可持久的部分<br />(类似静态局部变量),同时又能够从对象的外面进行初始化和检查(和静态局部变量不同)。<br />例如: <br /> <br />class Sum { <br />
2011-02-23 17:31:00
9474
2
原创 友元函数模板问题
<br />今天下午写了一个友元函数的模板,其中在编译的时候碰到了一些问题。首先在编译的时候提示“note: (if this is not what you intended, make sure the function template has already been declared and add <> after the function name here)”,<br />查了一下网页才知道,原来友元函数在类内声明时按照国际标准是:<br />friend ostream& operator
2011-02-22 16:57:00
4383
原创 关于线程库pthread_cond_signal丢失的问题
<br />这两天写了一个关于C++的线程库,刚开始老是出现信号丢失的问题,百思不得其解。后来才发现原来要pthrea_cond_wait和pthread_cond_signal之间要用一个条件变量来控制。例如:while(count==0)pthread_cond_wait();count--;<br />在pthread_cond_signal处,要用if(count==0)pthread_cond_signal();count++.<br />下面是我写的线程池代码:<br />.h文件:<br />
2010-12-08 17:03:00
5406
原创 mysql的多线程安全问题:在mysql_real_connect时出现段错误。
<br /> 问题简化重现19 #include<br />20 #include 21<br />22 void* func(void* arg)<br />23 {<br />24 MYSQL* mysql = (MYSQL *)arg;<br />26 mysql_real_connect(mysql, “127.0.0.1″, “root”, “213456″, “FC_word”, 3344, NULL, 0);<br />27 mysql_close(mysql);<br />29 return
2010-09-30 09:50:00
13496
原创 当mysql中指定的socket路径改变时如何通过ODBC进行访问?
<br />困扰我一下午的问题,现在终于明朗了。<br />我们都知道,mysql安装的时候客户端和服务端连接的时候在默认的情况下都是通过/tmp/mysql.sock这个链接来完成的。但是由于我们为了改变数据库的存放路径,我们也改变了这个默认的路径,可以通过my.cnf这个配置文件来修改,具体的参见我的另外一篇博文。<br /> <br />但是在 在改了这个sock之后,我用odbc连的时候却发现总是连不上,提示“[08S01][unixODBC][MySQL][ODBC 5.1 Driver]Can'
2010-09-27 17:52:00
4086
原创 在虚拟机上如何配置apache?
<br />这个问题,让我弄了很长时间,把过程记下来吧!<br />1、安装apache:make,make install。<br />2、把虚拟机配置成桥接模式。<br />3、把虚拟机防火墙关掉。<br />4、把虚拟机和客户机设置成同一个网段内。<br />5、启动apache:/usr/local/apache2/bin/apachectl start<br />6、配置apache 的conf目录下面的http.conf:<br /> ServerName: 主机地址和端口<br />
2010-09-17 10:38:00
3857
原创 bash的基本用法
<br />这两天写makefile需要用到bash语句,就学到了一些基本用法,其中有一些要点纪录如下:<br />1、在编写bash命令时,需要在刚开始加上@标识符,并且所有命令都需要写在一行,另外每个关键字都需要用空格格开。<br />2、在for语句中引用变量之后,在if语句中如果需要引用该变量,则需要加上双引号。<br />下面举个例子:<br /><br />INCLUDEPATH=./include<br />LIBPATH=./lib<br />LIBS=$(LIBPAHT) -lmysql<
2010-09-03 10:42:00
1015
原创 mysql 的c++程序的编译与连接
<br />这个问题几乎困扰了我一天,终于得到解决。<br /> 第一首先下载mysql-server、mysql-client、mysql-connector,把mysql-connector解压之后,把头文件考到/usr/include下面,把库文件拷到/usr/lib下面。<br /> 然后编写一个C++程序,我的例子如下:<br /> #ifndef __MYSQL_JOB_H<br />#define __MYSQL_JOB_H<br />//#ifdef _cpluspl
2010-09-02 11:05:00
1988
原创 mysql的使用
<br /> [转贴自http://homepage.qdcatv.com.cn/antonio/mysql/mysql.htm] <br /> <br /> 执行一个查询有以下几个步骤要做。首先执行一个查询,然后保存结果, <br /> 得到的是一个子集。这里是一个小例子: <br /> <br /> #include <br /> #include <br /> #include "mysql.h" <br /> <br /> MYSQL
2010-09-01 16:46:00
1114
原创 mysql的备份
<br />mysql备份命令 <br />关键字: mysql <br />还原或者导入数据库命令: <br /><br />mysql -u root --password=root <br /><br />备份数据库命令: <br /><br />mysqldump -u root --password=root --database helloworld >helloworld_backup.sql <br /><br /><br />其他用法: <br /><br />1.导出整个数据库 <br
2010-09-01 16:46:00
579
原创 mysql基本命令
<br /><br />1、下载MySQL的安装文件<br /> 安装MySQL需要下面两个文件:<br /> MySQL-server-4.0.16-0.i386.rpm <br /> MySQL-client-4.0.16-0.i386.rpm<br /> 下载地址为:www.mysql.com/downloads/mysql-4.0.html,打开此网页,下拉网页找到“Linux x86 RPM downloads”项,找到“Server”和“Client programs”项,下
2010-09-01 11:57:00
502
原创 用init命令玩转linux运行级别
<br />也许大家偶然会发现/sbin里有个init命令。你知道它是如何使用的吗? <br /> 如果你不喜欢使用图形登录方式,如何能够让用户在控制台下运行startx命令呢? <br /> 有时你要维护服务器,暂时不希望别的用户登录系统,但自己仍对网络有访问权,又该怎么办呢? <br /> 其实,如果你知道了三个问题之间的关系,它们就不成问题了。让我们这里入手了解一下Linux的运行级别(runlevel)吧! <br /> 其实init是Linux系统里的根进程,是系统所有进程的祖先。它的主要
2010-09-01 10:15:00
897
原创 linux 的运行级别
<br />标准的linux运行级为3或者5,如果是3的话,系统就在多用户状态。如果是5的话,则是运行着X Window 系统。如果目前正在3或5,而你把运行级降低到2的话,init就会执行K45named脚本。<br /> 不同的运行级定义如下:(可以参考Red Hat linux里面的/etc/inittab)<br /> # 缺省的运行级,RHS用到的级别如下:<br /> # 0 - 停机(千万不要把initdefault设置为0 )<br /> # 1 - 单用户模式<br /> # 2
2010-09-01 10:14:00
565
原创 linux和windows如何添加路由
<br />1、添加一条路由表<br />Route add 60.232.142.40 mask 255.255.255.248 192.168.100.250 metric 3 if 2<br />添加一条路由记录,所有到60.232.142.40/29网段的数据包,都通过2号接口卡(网卡)走192.168.100.250的网关,优先级为3。(结果会怎样?)<br />Route add –p 60.232.142.40 mask 255.255.255.248 192.168.100.25
2010-08-31 10:54:00
6499
原创 如何给linux添加IP?
<br />转自:http://iminmin.blog.51cto.com/689308/205774<br />在我们用Linux来架设Web服务器和FTP服务器的时候有可能会遇到在一台服务其上实现多个站点的需要(虚拟主机),这种情况下我们可以通过增加物理网卡,来解决。但是我们的服务器上会有多少多余的扩展槽呢? 那么我们可以通过给一个网卡绑定多个IP地址来实现这一功能,下面我们就来看看如何给一个网络卡绑定多个IP地址。 (IIS的多虚拟主机架设,Apache下基于IP的虚拟主机都是通过这个来
2010-08-31 10:52:00
2342
原创 linux 内核调试
<br /><br />1:<br />linux-2.6.15.5-kgdb-2.4.tar.bz2,linux-2.6.15.tar.gz<br />2:<br />patch -p1 < ../linux-2.6.15.5-kgdb-2.4/core-lite.patch<br />patch -p1 < ../linux-2.6.15.5-kgdb-2.4/i386-lite.patch<br />patch -p1 < ../linux-2.6.15.5-kgdb-2.4/8250.patch<b
2010-08-30 10:40:00
555
原创 string::size_type - what is this?
It's a type. A datatype. Like int or long or size_t or unsigned char.You know how in C, size_t is an unsigned integer large enough to represent any array size possible? The C++ std::string class provides string::size_type as an integer datatype large enoug
2010-08-20 17:19:00
1242
原创 如何远程登陆VM虚拟机
<br />1、选择VM中的桥接模式。<br />2、进入虚拟机linux,vi /etc/sysconfig/network-scripts/ifcfg-eth0,进行一下配置:<br /> DEVICE=eth0<br />BOOTPROTO=none<br />IPADDR=192.168.11.204<br />NETMASK=255.255.255.0<br />GATEWAY=192.168.11.1<br />ONBOOT=yes<br />#HWADDR=00:0c:29:e4:7b
2010-08-20 17:18:00
4273
原创 如何远程登陆VM虚拟机
<br />1、选择VM中的桥接模式。<br />2、进入虚拟机linux,vi /etc/sysconfig/network-scripts/ifcfg-eth0,进行一下配置:<br /> DEVICE=eth0<br />BOOTPROTO=none<br />IPADDR=192.168.11.204<br />NETMASK=255.255.255.0<br />GATEWAY=192.168.11.1<br />ONBOOT=yes<br />#HWADDR=00:0c:29:e4:7b
2010-08-20 17:18:00
2243
原创 如何用SSH连接虚拟机linux(不在同一个主机上)
<br />1、选择VM中的桥接模式。<br />2、进入虚拟机linux,vi /etc/sysconfig/network-scripts/ifcfg-eth0,进行一下配置:<br /> DEVICE=eth0<br />BOOTPROTO=none<br />IPADDR=192.168.11.204<br />NETMASK=255.255.255.0<br />GATEWAY=192.168.11.1<br />ONBOOT=yes<br />#HWADDR=00:0c:29:e4:7b
2010-08-17 10:13:00
1932
原创 !!redhat配置freetds和unixodbc的方法
<br /><br />前言:在linux中,由于历史原因,是没有办法直接访问MSsqlserver的,好在国外有人专门写了unix odbc和unix freetds驱动。下面就主要介绍他们的安装方法。<br />1、 首先安装unix odbc。这个rpm包在linux的安装盘里面都有。<br />首先我们mount –o loop *.iso /mnt/cdrom.<br />在到Server目录下面安装相应的ODBCrpm包。<br />2. 安装 unix freetds。到http://
2010-07-20 17:08:00
2386
原创 !!redhat配置freetds和unixodbc的方法
<br /><br />前言:在linux中,由于历史原因,是没有办法直接访问MSsqlserver的,好在国外有人专门写了unix odbc和unix freetds驱动。下面就主要介绍他们的安装方法。<br />1、 首先安装unix odbc。这个rpm包在linux的安装盘里面都有。<br />首先我们mount –o loop *.iso /mnt/cdrom.<br />在到Server目录下面安装相应的ODBCrpm包。<br />2. 安装 unix freetds。到http://
2010-07-20 17:08:00
850
原创 skinmagic 编译错误的问题
<br />我在编译skinmagic的时候出现了样的错误,后来在网上查找试了几种方法,都不行。最后发现是字符集设置的问题。<br />我原先是在项目中设置的是unicode字符集,后来我把它改成multibyte字符集之后,编译通过。<br /> <br /> <br /> <br />错误描述:
2010-07-20 11:14:00
578
原创 .bin安装文件制作
<br />Linux常见的安装为tar,zip,gz,rpm,deb,bin等。我们可以简单的分为三类,<br />第一:打包或压缩文件tar,zip,gz等,一般解压后即可,或者解压后运行sh文件;<br />第二:对应的有管理工具的deb,rpm等,通常的这类安装文件可以通过第三方的命令行或UI来简单的安装,例如Ubuntu中的apt来安装deb,Redhat中的yum来安装rpm;<br />第三:像.bin类,其实就是把sh和zip打包为bin,或把sh和rpm打包为bin等,当在命令行运行bin
2010-07-13 09:34:00
1527
原创 automake 的使用
<br />automake 所产生的 Makefile 除了可以做到程序的自动编译和链接外,还可以用来生成各种文档(如manual page、info文件),可以将源代码文件包装起来以供发布。所以程序源代码所存放的目录结构最好符合GNU的标准惯例。下面以hello.c程序生成Makefile文件作为例子。<br />1,在当前目录下创建一个名为hello的子目录。hello这个目录用于存放 hello.c这个程序及相关文件。新建一个源程序文件hello.c#include <stdio.h><br /><
2010-07-13 09:28:00
706
原创 C++中指针与引用的区别?
困惑我已久的问题,先解释如下:从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的:指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递
2010-07-07 12:32:00
602
原创 如何在ctrllist控件上改变制定的颜色?
<br />这个问题困扰了我几天,终于搞出来了,方法如下。<br />增加NM_CUSTOMDRAW消息。至于为什么要使用以及如何使用这个消息,请看下面的解释:<br />http://hi.baidu.com/winnyang/blog/item/4f0e29511e9cc2858d543026.html<br />如何使用:<br />http://blog.youkuaiyun.com/songsu/archive/2009/11/12/4802459.aspx<br /> <br />下面说我如何解决的:<br
2010-07-06 10:58:00
1601
原创 C++技巧:理解inline的使用和避免
<br />本文来自编程界www.ibiancheng.cn<br />inline语句——多么棒的主意啊!它们看起来像函数,它们产生的效果也像函数,它们在各方面都比宏好得太多太多,而你却可以在调用它们时不招致函数调用的成本。你还有什么更多的要求呢? <br /> 实际上你得到的可能比你想的更多,因为避免函数调用的成本只是故事的一部分。在典型情况下,编译器的优化是为了一段连续的没有函数调用的代码设计的,所以当你 inline 化一个函数,你可能就使得编译器能够对函数体实行上下文相关的特殊优化。大多数编译器
2010-06-30 17:33:00
701
原创 C语言的inline
本文来自http://blog.pfan.cn/vfdff/36003.html本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:<br />inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。 <br />从inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translation unit(可以简单理解为C源码文件)内的编译
2010-06-30 17:31:00
401
原创 inline 函数的使用以及注意事项
<br />在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 <br /><br /> 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。 <br /> 下面我们来看一个例子:<br />#include <iostream> <br
2010-06-30 17:21:00
1753
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人