让我帮你google你要的东西!
不知道是干什么的? 点这里就知道了
这个网站,安现在的话来说就是够雷的,http://lmgtfy.com/,就是它,let me google that for you!看见最下面的介绍了没:
献给所有喜欢问他人问题而不是自己去搜索的人.
呵呵,这网站我都不知道说什么好了,不过这个网站很有创意阿,现在需要的就是创意,可以去看看这个网站的这个链接,很有技术和意思,http://live.lmgtfy.com/.
Technology, Life, Code, OpenSource, *nix, Mac and iphone, Mobile development
Archive for 二月 2009
不知道是干什么的? 点这里就知道了
这个网站,安现在的话来说就是够雷的,http://lmgtfy.com/,就是它,let me google that for you!看见最下面的介绍了没:
献给所有喜欢问他人问题而不是自己去搜索的人.
呵呵,这网站我都不知道说什么好了,不过这个网站很有创意阿,现在需要的就是创意,可以去看看这个网站的这个链接,很有技术和意思,http://live.lmgtfy.com/.
Mysql,是开源界很有名的数据库,LAMP这种组合也是在web服务器领域很流行.也就是说,我们经常用的API都是一些web编程语言如:php,java,pyhton这些语言来和mysql通信,但是要是用c语言呢,我也就小小的研究一下.
query = "select * from test";
mysql_query(query);
为什么要用预处理?
答:MySQL客户端/服务器协议提供了预处理语句。该功能采用了由mysql_stmt_init()初始化函数返回的MYSQL_STMT语句处理程序数据结构。对于多次执行的语句,预处理执行是一种有效的方式。首先对语句进行解析,为执行作好准备。接下来,在以后使用初始化函数返回的语句句柄执行一次或多次。
对于多次执行的语句,预处理执行比直接执行快,主要原因在于,仅对查询执行一次解析操作。在直接执行的情况下,每次执行语句时,均将进行查询。此外,由于每次执行预处理语句时仅需发送参数的数据,从而减少了网络通信量。
预处理语句的另一个优点是,它采用了二进制协议,从而使得客户端和服务器之间的数据传输更有效率。
下述语句可用作预处理语句:CREATE TABLE、DELETE、DO、INSERT、REPLACE、SELECT、SET、UPDATE、以及大多数SHOW语句。在MySQL 5.1中,不支持其他语句。
下面就把我的测试程序贴出来,是完成数据库的插入一条记录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | +------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+--------------+------+-----+---------+----------------+ | USER_ID | int(11) | NO | PRI | NULL | auto_increment | | USERNAME | varchar(25) | NO | | NULL | | | PASSWORD | varchar(25) | NO | | NULL | | | ARK_GROUP_ID | int(11) | NO | | NULL | | | PURVIWE_GROUP_ID | int(11) | NO | | NULL | | | DESCRIPT | varchar(200) | YES | | | | | USER_POLICY | int(11) | YES | | 0 | | | MAIL | varchar(50) | YES | | | | | PHONE | varchar(15) | YES | | | | | LEVEL | int(1) | NO | | 0 | | +------------------+--------------+------+-----+---------+----------------+ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | /************************************************************************************* * * Filename: mysqltest.h * Description: * * Version: 1.0 * Created: 2009年02月16日 16时15分20秒 * Revision: * Compiler: gcc * * Author: cyher (), cyher.net@gmail.com * Company: cyher.NET * **************************************************************************************/ #ifndef MYSQLTEST_H #define MYSQLTEST_H #define OK 0 #define ERROR -1 struct user_info { int ark_grp; int puv_grp; int level; char name[25]; char pswd[25]; }; int init_datebase(void); int my_insert(struct user_info * user); #endif |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | ********************************************************** * * Filename: mysqltest.c * Description: mysql * * Version: 1.0 * Created: 2009年02月16日 15时19分39秒 * Revision: * Compiler: gcc * * Author: cyher (), cyher.net@gmail.com * Company: cyher.NET * ***********************************************************/ #include /* mysql库 */ #include #include #include #include "mysqltest.h" MYSQL my_sql; int init_datebase(void) { my_bool on = 1; mysql_init(&my_sql); /* MYSQL_OPT_RECONNECT如果发现连接丢失,启动或禁止与服务器的自动再连接。从MySQL 5.0.3 * 开始,默认情况下禁止再连接,这是5.0.13中的新选项, * 提供了一种以显式方式设置再连接行为的方法。 */ if ( 0 != mysql_options(&my_sql, MYSQL_OPT_RECONNECT, &on)) { printf( "Error set mysql_options for MYSOL_OPT_RECONNECT:%s\n", mysql_error(&my_sql) ); return (OK); } if (!mysql_real_connect(&my_sql,"localhost", "root", "123456789", "Grandi_Power",0,NULL,0)) { printf( "Error connecting to database: %s\n",mysql_error(&my_sql)); return(ERROR); } return(OK); } int my_insert(struct user_info * user) { MYSQL_STMT *stmt; MYSQL_BIND bind[5]; int user_name_len, user_pswd_len; my_ulonglong affected_rows; char *sql="insert into user (USERNAME,PASSWORD,ARK_GROUP_ID,PURVIWE_GROUP_ID,LEVEL) values(?,?,?,?,?)"; if (!(stmt = mysql_stmt_init(&my_sql))) return; memset(bind,0,sizeof(bind)); if(mysql_stmt_prepare(stmt, sql, strlen(sql))) { mysql_stmt_close(stmt); return ERROR; } user_name_len = strlen(user->name); user_pswd_len = strlen(user->pswd); bind[0].buffer_type = MYSQL_TYPE_VAR_STRING; bind[0].buffer = &(user->name); bind[0].buffer_length = 25; /* 最大长度 */ bind[0].is_null = 0; bind[0].length= (unsigned long *)&user_name_len; /* 实际长度的地址 */ bind[1].buffer_type = MYSQL_TYPE_VAR_STRING; bind[1].buffer = &(user->pswd); bind[1].buffer_length = 25; /* 最大长度 */ bind[1].is_null = 0; bind[1].length= (unsigned long *)&user_pswd_len; /* 实际长度的地址 */ bind[2].buffer_type = MYSQL_TYPE_LONG; bind[2].buffer = (char*)&(user->ark_grp); bind[2].is_null = 0; bind[2].length = 0; bind[3].buffer_type = MYSQL_TYPE_LONG; bind[3].buffer = (char*)&(user->puv_grp); bind[3].is_null = 0; bind[3].length = 0; bind[4].buffer_type = MYSQL_TYPE_LONG; bind[4].buffer = (char*)&(user->level); bind[4].is_null= 0; bind[4].length= 0; if (mysql_stmt_bind_param(stmt, bind)) { mysql_stmt_close(stmt); return ERROR; } if (mysql_stmt_execute(stmt)) { mysql_stmt_close(stmt); return ERROR; } affected_rows = mysql_stmt_affected_rows(stmt); if(1!=affected_rows) { mysql_stmt_close(stmt); return ERROR; } printf("INSERT SUCCEESFUL\n"); mysql_stmt_close(stmt); } int main(int argc, char **argv) { struct user_info user; strcpy(user.name,"haha"); strcpy(user.pswd,"ninini"); user.level = 4; user.ark_grp = 88822; user.puv_grp = 333; init_datebase(); my_insert(&user); return OK; } |
1 2 | mytest: mysqltest.c mysqltest.h gcc -o mytest mysqltest.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient |
好几年了,情人节都是一个人过,今年干脆不过.这不去找了一个小M陪我!废话先不说,上图:
情人节这样过,还不错吧,我本来是想买467+touch的,但是看见470以后真得走不动了,这里提醒大家理性消费.不过说句实话,apple的东西不需要理性的,因为不管你买了哪一款她总是最好的,你总能找到你买她的理由,要不怎么那么多人在好几款机子中犹豫呢.言归正传,我对macbook pro写一些感受把.
1.工业设计&工业制造
apple的这两项绝对是首屈一指,没啥说的,给人的美感确实不是一般产品能给的.一体成型全铝的机身,镜面屏幕(专业作图的可能不怎么看好),从上面dell d610, thinkpad t61,的比较图来看,也不用我多说了.再说说本来我是想买macbook的但是,当我把467和470放在一起的时候,我就知道大屏的魅力,macbook pro和macbook比的话,只能说是更完美.但是更重了,还好我不怎么追求移动性.由于我的摄影水平很烂,相机也很烂,所以好多细节我都没有敢拍,有macbook 的同志都知道,想买的同志希望能去三里屯体验一下, 科技应该是让你更轻松.
2.硬件
参数我就不多说了,我只说说我的感受,15.4的led真的不是吹的,咱不是专业作图的,这个也就是咱能看见最好的屏幕了.p8600对我来说绝对够用了,开了10多个网页,装软件,自动升级,qq,msn,fetion都开开,itunes,iphoto ,这不是我刻意开的,我只是开了就没有关,但是我丝毫没有感觉一点的迟钝,当我用4指向下一画的时候我才发现.总之,我不知道她的极限是什么样的,回来给加到4G估计能更爽.(我说我应该买macbook吧)浪费了……..关于散热的问题,如果不开独立显卡,还是很不错的,这几天天冷,家里的温度也就15度,机子没有什么感觉,但是开了独立显卡,左手就有点热了,不敢想夏天是什么样的.
3.Mac OS X
这个是我最看中的地方,我是一个linux上的程序员,我喜欢类unix的东西,这就是我选择macbook初衷.至于mac os到底有多强,暂时我不能用技术的语言说,我只能说,从我的感受来说,macos是我用过最强的,最好用的OS.关于我对linux和macos的理解这里有说.我曾经在我的dell本子上装了linux和mac os对比下来,在图形方面linux还有很久的路要走,虽然界面已经很绚丽,但是稳定性和易用性有待提高.很喜欢mac系统的简介高效,你不必为一些琐事而浪费你的时间,如果你是diyer我觉得装个linux来满足自己.关于windows我这里也说两句,我对这个系统没有什么好感,在我的世界里,它只是一个工具,不想linux和mac os是一种信仰,如果大家买了mac希望大家不要装双系统,最多弄个虚拟机偶尔运行一下windows弄个网银什么的就完了,因为我们正在为windows的低效操作浪费时间,图形没有mac好,cli没有linux强,对于windows的性能和效率我觉得我还没有资格评论,但是事实能告诉大家.让mac带你走进,你本来应该有的世界,当你用过macos的时候你能感觉到什么叫简约而不简单…….
4.iphone&ipod touch
大家都看见我上面的图片了,有一个iphone和一个touch,touch是同学和我一起去买的,我本来也想买一个的.这两个手持设备,现在已经家喻户晓了,我也就不用多介绍了,再说也是上面的那一套,但是我也要感叹一下apple的做事风格,简简单单的产品线,不能和任何一个大公司的产品线的数量比,但是这就体现了专注的好处!记得jobs说过,我们把精力专注于我们的一种产品,我们就能做出更完美的产品.
5.apple是一种文化
这个大家都明白,我也是apple的fans.这种文化,让我们的生活多了几分情趣,让我们的视野开阔了许多.应了apple store里面的一个导购说的话:”apple正在改变你的生活!”.