08 2012 档案

Linux下Mysql增加用户,设置用户权限及修改密码的方法
摘要:增加用户与设置用户权限:语句grantselect,insert,update,deleteon*.*touser1@”%”Identifiedby“123”表示增加一个用户user1密码为123,可在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。语句grantselect,insert,update,deleteondfg.*touser2@localhostidentifiedby“123”表示增加用户user2密码为123,只可以在localhost上登录,并可以对数据库dfg进行查询、插入、修改和删除的操作(localhost既mysql所在的主机)。语句grantcr 阅读全文

posted @ 2012-08-31 16:02 Chris-Lin 阅读(747) 评论(0) 推荐(0)

GDB学习笔记(一):GDB的常用命令(部分)
摘要:GDB主要用来调试C/C++程序。首先,编译时,需要把调试信息加到可执行文件中。可使用编译器的-g参数来实现这一点。如:gcc-g-ohellohello.c编译成功后,启动GDB进行调试。启动GDB的方法:1.gdb<program> program是编译后的可执行文件。2.gdb<program>PID PID为正在运行的程序进程号,可能根用户才有此权限3.先用gdb<program>运行,在GDB环境中用attach命令来挂接进程PID,用detach命令可取消挂接的程序启动GDB后,可用help查看GDB命令(gdb)helpListofclasse 阅读全文

posted @ 2012-08-31 16:00 Chris-Lin 阅读(342) 评论(0) 推荐(0)

C语言连接Mysql实例(一)
摘要:首先先介绍以下代码会用到的Mysql C API(http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c)(1)MYSQL *mysql_init(MYSQL *mysql)分配或初始化与mysql_real_connect()相适应的MYSQL对象。如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。返回值:初始化的MYSQL*句柄。如果无足够内存以分配新的对象,返回NULL。错误:在内存不足 阅读全文

posted @ 2012-08-28 22:13 Chris-Lin 阅读(7654) 评论(0) 推荐(0)

I/O多路复用(二):epoll模型详解
摘要:epoll的优点1.支持一个进程打开大数目的socket描述符(FD)select中一个进程所打开的FD是有一定限制的,由FD_SETSIZE设置,默认值是1024。在usr/include/linux/posix_types.h头文件有这样的声明:#define__FD_SETSIZE1024对于那些需要支持的上万连接数目的服务器来说显然太少了。这时候可以选择修改这个宏,但似乎治标不治本,二是可以选择多进程的解决方案,虽然linux上面创建进程的代价比较小,但仍旧是不可忽视的,加上进程间数据同步远比不上线程间同步的高效,所以也不是一种完美的方案。epoll则没有这个限制,它所支持的FD上限是 阅读全文

posted @ 2012-08-25 20:42 Chris-Lin 阅读(549) 评论(0) 推荐(0)

I/O多路复用(一):用select实现的多客户聊天的服务器
摘要:以下例子为用select实现的多客户聊天的服务器,客户端成功连接服务器之后,可以和其他客户进行群聊。服务器代码:#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <strings.h>#include <arpa/inet.h>#include <string.h>#include <sys/ioctl.h>#include <fcntl.h>voi 阅读全文

posted @ 2012-08-23 20:57 Chris-Lin 阅读(578) 评论(0) 推荐(0)

用inetd装载应用程序
摘要:inetd是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。它可以为多种服务管理连接,当 inetd 接到连接时,它能够确定连接所需的程序,启动相应的进程,并把socket交给它 (服务 socket 会作为程序的标准输入、 输出和错误输出描述符)。使用 inetd 来运行那些负载不重的服务有助于降低系统负载,因为它不需要为每个服务都启动独立的服务程序。使用inetd可以减免编写连接代码的过程,而且基本上可以把处理程序当成普通程序来编写。下面先介绍inetd下的TCP服务器:首先,编写处理程序testd.c(这里用《TCP/IP高效编程 改善网络程序的44个技巧》 阅读全文

posted @ 2012-08-20 18:09 Chris-Lin 阅读(330) 评论(0) 推荐(0)

Linux下fcntl函数简单用法
摘要:#include <unistd.h> #include <fcntl.h>int fcntl(int fd , int cmd,...);fcntl()用来操作文件描述符的一些特性。针对cmd的值,fcntl能够接受第三个参数int argfcntl的返回值与命令有关。如果出错,所有命令都返回-1,如果成功则返回某个其他值。下列命令有特定返回值:F_DUPFD,F_GETFD,F_GETFL以及F_GETOWN。第一个返回新的文件描述符,第二、三个返回相应标志,最后一个返回一个正的进程ID或负的进程组ID。fcntl函数有5种功能:1.复制一个现有的描述符(F_DUP 阅读全文

posted @ 2012-08-19 17:59 Chris-Lin 阅读(1594) 评论(0) 推荐(1)

设置非阻塞socket及使connect调用超时
摘要:一般TCP建立连接过程中需要“三次握手”。在socket阻塞的情况下,connect要花一个往返时间完成,从几毫秒到几百毫秒,如果网络拥塞,或者连接的主机还没启动,则要花费更长的时间,默认时间(典型值为75秒,也可能需要更长的时间)。可以通过将socket设置为非阻塞再用select来实现connect调用超时,步骤如下:1.创建socket2.设置socket为非阻塞3.利用connect()返回值判断connect的状态(此时connect不阻塞)4.利用select()返回值判断connect的状态void main(void){ int fd; int flags;... 阅读全文

posted @ 2012-08-19 17:33 Chris-Lin 阅读(1832) 评论(0) 推荐(0)

JDBC连接SQL Server 2000
摘要:下载三个jar包:msbase.jar,mssqlserver.jar,msutil.jar,加入此project的库中。引入java.sql.* 包。//Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=Table","A","password");localhost为本 阅读全文

posted @ 2012-08-17 21:36 Chris-Lin 阅读(710) 评论(0) 推荐(0)

Linux系统调用列表
摘要:简介:本文列出了大部分常见的Linux系统调用,并附有简要中文说明。以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改,并对所有列出的系统调用附上简要注释。其中有一些函数的作用完全相同,只是参数不同。(可能很多熟悉C 阅读全文

posted @ 2012-08-17 21:33 Chris-Lin 阅读(376) 评论(0) 推荐(0)

让C程序更高效的10种方法
摘要:代码之美,不仅在于为一个给定问题找到解决方案,而且还在代码的简单性、有效性、紧凑性和效率(内存)。代码设计比实际执行更难 。因此,每一个程序员当用C语言编程时,都应该记着这些东西。本文向你介绍规范你的C代码的10种方法。 0. 避免不必要的函数调用考虑下面的2个函数:代码:void str_print( char *str ) { int i; for ( i = 0; i < strlen ( str ); i++ ) { printf("%c",str[ i ] ); } } void str_print1 ( char *str ) { int le... 阅读全文

posted @ 2012-08-17 21:31 Chris-Lin 阅读(121) 评论(0) 推荐(0)

在网络程序中尽可能使用大规模的写操作
摘要:提出此建议主要有两个原因:(1)对于write(),send()等写函数,每次调用这些函数时会有一定的开销。(2)Nagle算法的影响。由于最小的TCP报文是40字节(没包括数据),一个报文发送一个字节与发送多个字节,相比之下,发送一个字节的开销会大很多。而Nagle算法通过减少必须发送包的个数来增加网络软件系统的效率。在默认情况下,socket程序中是启用Nagle算法来提高网络效率,但也有一些程序需要禁用Nagle算法(通过setsockopt函数)。一般来说大部分应用程序是不需要关闭Nagle算法的。可通过将写操作合并来实现大规模的写操作。#include <sys/uio.h&g 阅读全文

posted @ 2012-08-17 20:47 Chris-Lin 阅读(253) 评论(0) 推荐(0)

几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
摘要:选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。/************************************************************* 选择排序* 参数:array为需要排序数的数组, num为数组的长度************************************************************/int select(int array[], int num){ int i; int j; int temp; ... 阅读全文

posted @ 2012-08-15 21:46 Chris-Lin 阅读(502) 评论(0) 推荐(0)

导航