Author: David

MySQL 插入错误

MySQL insert error。。。。。。。。   一条简单的SQL语句,竟然插入错误: INSERT INTO USER (id, describe) VALUES (‘David’, ‘diudiu’); 咋一看确实没错啊,瞅半天才发现,是由于table中有字段名是MySQL的保留字。这里就是‘describe’,报错也就理所当然了。 解决办法: 在关键字的地方加上反引号”`”,就是键盘1旁边的那个字符。 MySQL就是通过添加反引号来区别保留字。 上述修改为 INSERT INTO USER (id, `describe`) VALUES (‘David’, ‘diudiu’); 即可。    

Linux 下 C++ 连接 Mysql

——国外有一篇博客写得挺好,有一些小错误,改正以后翻译过来,发这里了。 C++是一个效率非常高的编程语言 Linux 是一个类Unix操作系统,它促进了开源软件社区的发展,并且用这些开源软件就几乎足以构建一个复杂精妙的企业系统。 MySQL是一个流行的多线程、多用户的数据库管理系统,全球有超过1000万的安装量。   这篇文章将演示如何在Linux下用C++连接MySQL。 首先我们需要将所需要的头文件和库全部包含进来 #include <stdio.h> #include <mysql.h> 然后我们来定义一下main函数 int main() { // code  return 0; }; 然后我们定义一下需要用到的变量,你应该将这些写到main函数里去。 MYSQL_RES *result; MYSQL_ROW row; MYSQL *connection, mysql; int state; 既然要使用MySQL数据库,我们首先就得连上它,使用下面的代码即可: mysql_init(&mysql); connection = mysql_real_connect(&mysql,host,usr,pswd,database,0,0,0); 其中 host – 数据库所在主机的名字,比如 “localhost” 或者 “192.168.250.100” usr – 连接数据库时使用的用户名 pswd – 连接数据库时使用的密码 database – 数据库的名称 如果有错误发生,如用户名/密码不匹配,我们可以通过以下代码获取到错误信息: if (connection == NULL) { printf(“%s\n”, […]

Paper things

在线考试系统功能需求以及数据库定义 由于是技术说明文档,就不再叙述背景以及国内外现状等。 在线考试系统模块需要实现的功能在这里分传统题目考试、程序题目在线判定(Online Judgement)两大部分叙述。 一:传统题目部分 对于题库: 1. 能够添加多种题型(单选、多选、判断、填空、简单等) 2. 能够添加多种题目分类(如“计算机基础“,“管理“),并支持子类父类(如”C语言” 属于 “计算机基础”) 3. 对于每一种题型,能够添加试题 4. 对于每一道试题,有正确率统计,便于出题的时候进行难度判断 5. 对于每一道试题,能够指定属于哪一分类 6. 对于每一道试题,除了设置答案以外,还需有答案解析,便于实现以后某些功能需求(如某些考生看不懂答案)。 对于试卷: 1. 能够设置试卷的名称、分类等(分类参考题库模块的分类) 2. 能够直接从题库里提取试题,组成试卷 3. 组卷选题过程中支持重复性检测,以及难度提示(根据题库中题目的正确率等作为参考) 4. 支持相同题型不同分数(即可根据难度设置分数,参考高考理综考试) 5. 能够查询某一时间段里出的试卷(如今年期末考试出题想参考1999年的试卷) 对于考卷: 1. 能够将试卷的题目乱序以后组成考卷 2. 维护考卷的基本信息 3. 记录考卷中每一道题的正误(题库中题目的正确率来源于此) 4. 支持缓冲。由于对于每一次考试,有多少考生参加就有多少张考卷,如果对每一道题都访问数据库,会由于频繁反问造成系统效率不高,所以需要提供缓冲机制。 5. 支持到时间收卷 对于考生: 1. 维护考生的基本信息 2. 考生作为与外界系统的主要接口,将其他系统的用户与在线考试系统联系起来,所以在该系统中,考生参加考试一律只使用考生编号。 总体草图 对于数据库: 1.  由于在该系统中会涉及到较多的事务处理,所以讲数据库引擎采取ENGINE = InnoDB模式 2.  数据库表如下图所示。 具体每个字段代表什么,以及具体的SQL创建语句已经在“数据库创建语句.sql”里详细列出,这里给出对于某些数据库表的解释: […]

PHP调用C/C++动态链接库

摘要 有时候,单纯依靠 PHP “本身”是不行的。尽管普通用户很少遇到这种情况,但一些专业性的应用则经常需要将 PHP 的性能发挥到极致(这里的性能是指速度或功能)。由于受到 PHP 语言本身的限制,同时还可能不得不把庞大的库文件包含到每个脚本当中。因此,某些新功能并不是总能被顺利实现,所以我们必须另外寻找一些方法来克服 PHP 的这些缺点。 了解到了这一点,我们就到了应该接触一下 PHP 的心脏并探究一下它的内核——可以编译成 PHP 并让之工作的 C 代码——的时候了。 概述: PHP调用动态链接库几个必要步骤为: 1. C/C++编写动态链接库,编译打包成.so文件 2. 初始化一个新的PHP扩展 3. 配置、编写PHP扩展内容,在扩展中使用C/C++调用.so 4. 编译并添加PHP扩展 5. 在PHP应用中直接调用PHP扩展里暴露出来的API 为了从能运行的最简单的例子开始,所以下面的叙述可能不会严格按照上面列的步骤来写,也有可能会重复穿插着写。但总体顺序是一致的。 一. C/C++编写动态链接库,编译打包成.so文件 如果还不会用C++调用自己写的.so库,请参考我的这篇文章: http://keping.me/cpp_invoke_so/ 文中从什么是Name Mangling开始,到如何用调用一个包含简单函数的so库,再到如何从so中加载类,都有详细叙述,并附有可运行示例代码。 二. 初始化PHP扩展 本文中,我们将创建一个叫“vehicle”的PHP扩展,其中包含一个“Car”类。 将要创建的扩展会涉及到以下文件需要修改,这些文件将会出现在vehicle目录下。后面会一一叙述这些文件是怎么来的,现在只是大致了解一下。 car.h —— 包含了C++写的类,即Car的定义 car.cc —— Car类的具体实现 php_vehicle.h —— 包含了PHP创建扩展所需要的一些头文件,外部变量定义等。 vehicle.cc —— 扩展的主要源码文件,这里面会调用到Car类 config.m4 —— PHP扩展的配置文件 1. […]

觀其所誅殛,要可以鑒矣

古有国泰借银填仓,今有配电箱短路烧粮——历史果然惊人的相似! 国泰,和珅的干女婿,乾隆时期臭名昭著的贪官之一。 据记载,刘国泰任山东巡抚之时,贪纵营松,征赂诸州县,致使国库亏空。虽遇到连年受灾,却依然上报丰收,要求朝廷拨款新修粮仓。钱拨下来了,既然无仓可修,那这笔不小的费用,自然也就落到了他手里,日子过得很是舒畅。 直至有一天东窗事发,监察御史钱洋弹劾国泰贪得无厌,乾隆帝派和珅、刘墉与钱沣一起审办此案。国泰本是和珅党羽,早也就收到了消息通知,立马从各商户那里凑借银两,以填充国库。待到三人前去查看时,自然数目能对上,但被发现库银成色不一(当时官银好像为50两一锭)。后经过仔细走访调查识破了国泰“借银充数”的伎俩。 和珅自保,国泰自尽。 近日炒得沸沸扬扬的中储粮大火事件,又是那么巧的赶在了中央巡视小组进驻地方的这个时间点,于是乎大家就联想到了《天下粮仓》中的火龙烧仓。当他们把起火原因归结为配电箱导线短路起火以后,就更容易联想了。。。。 虽然不懂配电箱的构成,但导线外面那一圈圈的绝缘皮还是见过的。所以当看到网友说即使你老婆绝经了,那东西也不该磨破。我也就信了。

丢丢girl 与 小王子

从某些方面来说,丢丢girl和小王子是很相似的。 小王子认为漂亮的房子是红砖墙,窗前种着天竺葵,屋顶上停着鸽子…;Girl想要以后的房子外的墙上趴着爬山虎,想要有一个大花园种着她喜欢吃的苹果,想要有小动物经常跑来光顾… 小王子很孤单,大概是从他离开他的星球,离开他的玫瑰开始。他问蛇,人们在哪里,他有一些孤单,蛇却告诉他”it’s also lonely with people.”;Girl是一个看似开心的人,其实她只是喜欢看着人们热闹,在角落看着就好。 小王子会呱啦呱啦不依不饶的问下去,只要他开始问了一个问题;Girl会用“因为花儿是绿的”来回答“为什么你比我高呢”,接着会用“因为我比你高~”来回答“为什么花儿是绿的”,然后就一直然后了… Girl喜欢大自然,喜欢的永远是大自然的亲近和随性。 。。。。。。 回想起来,开始读这本书,好像是在五一节,大家都出去玩了。丢丢girl拉着我,跑到天台,找了一个角落,吹着风,呼吸呼吸,晒晒太阳,看看书,慵懒却舒适。 饿了就去吃午饭,然后小睡了一会儿,起来发了会儿呆。下午她说外面天气很好,我们去看书吧!于是到了某课树下,阳光果然充沛, 这个是不是可以叫斑驳的树影了?挺好看的光影效果呢。 如果不是中途接到郭坨坨的电话,说服务器down掉了,让我去看看,估计那天下午就把小王子读完啦。 所以~~又是在某一天的地铁上看完的。 看完,看完当然就不想还啦 (◕ܫ◕),还书这种事情肿么可能发生!!!于是当她确定我不会还给她了以后,就这幅表情对着我了。。。 不过,,还是不还,哈哈。 睡觉,晚安。 2013-5-22 01:53:12

PHP与C++性能比较

PHP是速度很快的脚本语言,但是用了框架以后好像感觉挺慢的。于是猜测会不会PHP本身也不是很快。如果不是很快,能否采用PHP调用本地动态链接库的形式来提升速度。 于是有了下面的对比实验。 测试环境 1. 硬件环境如下图所示。 2. 软件环境 系统: Ubuntu 12.10 gcc版本: Thread model: posix gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) php版本: PHP 5.3.22 (cli) (built: Mar 14 2013 20:37:16) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies php开发环境: LAMP,所有安装包均是通过源码编译安装而成,编译过程中会自动根据本机各项参数进行最优配置。性能比apt-get install命令直接安装好。 关于以源码包方式搭建LAMP请参考文章:http://keping.me/linux-php-dev-by-source-style/ 测试方法 由于冒泡排序在时间复杂度上相当稳定——O(n2),在最大程度上减少了数据可能带来的影响,故采取计算冒泡排序的运行时间的方法来进行此次实验。 对比测试分组 分组1: C++直接调用程序内的函数 分组2: C++调用打包好的动态链接库文件(.so文件,该文件也是自己写好并打包) 分组3: PHP直接调用程序内的函数 […]