Liny_@NotePad

沉迷ACG中

DZ 上传图片提示"无效的图片文件"

百度之,得:修改IE安全设置 即可,详细步骤

工具 - Internet选项 - 安全 - 自定义级别 ,找到 将文件上传至服务器时包含本地路径 ,此时应该是禁用的,将之启用即可。

文档生成工具doxygen+图像生成工具GraphViz

虽然jdk自带的javadoc也很好用,不过使用doxygen+GraphViz的组合可以生成许多强大的图(类图、协作图、文件包含/被包含图、函数调用/被调用图、类继承体系图等),另外,doxygen支持直接生成chm文档,支持LaTeX公式,如果你有一个支持php的服务器,生成的html还可以加入一个搜索框。

doxygen是开源的C语言软体,可以在它的官方网站上下载到软体和源码:
http://www.stack.nl/~dimitri/doxygen

使用它的doxyWizard很是方便^^ 具体用法我写在了附件的文档中(不过注释是C++版,doxygen是可以使用默认的javadoc注释的,你只需要将设定改成output for Java)。
它还可以自定义css/head/foot,由于用于内部交流于是就没有设定,可以在Export的HTML选项卡中修改,传说中MySQL的文档就是doxygen生成的。。。

doxygen内置了生成类图的功能,只需要设定Diagram的项。
要生成更多图的请下载GraphViz。
它是一款强大的可以生成很多种图像的软件,同样也是开源的:http://www.graphviz.org/
它还提供了Java支持,有一个纯java编写的子项目Grappa。按照上面的说明,似乎java程序可以通过Grappa库来实现GraphViz的功能(Grappa调用GraphViz的接口)。

大家有兴趣可以尝试一下 挺好玩的说^^
附件是一个Doxygen使用简介.docx,里面包含了我这几天玩得doxyWizard的简单使用说明。
以及 一个使用doxyWizard生成的chm文件,只用了类图、文件包含图和类继承体系图。

Doxygen使用简介.docx】 【DBOp.chm

dllimport与dllexport。。

之前写过模块化编程的练习,里面定义导出符号的时候使用了形如下文的代码。

  1. #ifdef SYSTEM_EXPORTS
  2. #define SYSTEM_API __declspec(dllexport)
  3. #else
  4. #define SYSTEM_API __declspec(dllimport)
  5. #endif

今天同学问是啥意思。。不明。。于是经过同桌指点 终于大概晓得了。。

上面这段代码通常写在.h文件中,我们编译有导出函数的dll时,就用dllexport,这时我们一般在预处理器中已经输入了SYSTEM_EXPORTS,使SYSTEM_API替换成export,
在exe使用的时候应该是import的,此时我们包含这个.h文件,而exe的预处理器中不会包含SYSTEM_EXPORTS,SYSTEM_API就变成import了。

= = 更详细一点来说,我们写dll的时候 需要声明和定义dllexport的函数/类。
而我们用exe来调用dll的时候,必须包含一个带有上述函数/类的dllimport的声明。如果使用这种写法,就可以使用一个.h文件,在dll的时候做export作用,在exe的时候做import作用了。

空指针也能调用对象成员函数。。

这段代码能运行吗?

///////////////////////////////////////////////////////
//	CopyRight(c) 2009, YOYO, All Rights Reserved.
//	Author: LIN YiQian
//	Created: 2009/10/14
//	Describe: For Test ^^
///////////////////////////////////////////////////////
#include <iostream>
using namespace std;

class CTest
{
public:
	void print(const char* const pszMsg)
	{
		cout << pszMsg << endl;
	}
};

int main(void)
{
	CTest* pTest = NULL;
	pTest->print("hello world");

	return 0;
}

MySQL++调用存储过程

其实与普通调用SQL没有什么区别,只是连接方式必须使用CLIENT_MULTI_STATEMENTS(多行语句)。样例代码如下:

//////////////////////////////////////////////////////////////////////////
//	CopyRight(c) 2009, YOYO, All Rights Reserved.
//	Author: LIN YiQian
//	Created: 2009/10/14
//	Describe: MySQL++调用存储过程
//////////////////////////////////////////////////////////////////////////
#ifdef _DEBUG
#pragma comment(lib, "mysqlpp_d.lib")
#else
#pragma comment(lib, "mysqlpp.lib")
#endif

#include <mysql++.h>
#include <string>
#include <iostream>

using namespace mysqlpp;
using namespace std;

int main(void)
{
	Connection conn(false);

	conn.set_option(new mysqlpp::MultiStatementsOption(CLIENT_MULTI_STATEMENTS));

	if (conn.connect("test", "localhost", "root", "root", 3306))
	{
		Query query = conn.query();
		char* pszSQL = "call querydate()";
		StoreQueryResult pResult = query.store(pszSQL, strlen(pszSQL));

		cout << pResult[0][0] << endl;
	}
	else
	{
		cout << "连接失败!" << endl;
	}

	system("pause");

	return 0;
}

Navicat: Can't create a procedure from within another stored routine

测试调用mysql的存储过程,于是用Navicat写,结果报这个错误,源代码如下:

  1. CREATE PROCEDURE QueryDate()
  2. BEGIN
  3.       SELECT CURDATE();
  4. END;

google了下,原来在Navicat里面不需要写头,直接从BEGIN开始即可。

过程名将在保存的时候填写,参数则可以填在代码定义框下面的参数输入框中,如果要使用返回值,则可以设定类型为FUNCTION,回传框即可填写。

FJNU ACM OnlineJudge 题库分类^^

由于拥有某种特殊权限,于是决定整理下FJNU OJ上的题目分类~

目前记录了100题 = =,大部分是简单题。其他待有空继续更新。

>>快速跳转至

使用MySQL++提示找不到mysql_version.h

= _ = 在mysql的include目录下找到了。

可以直接拷过去,但貌似还需要其他文件,

因此可以将mysql的include目录设为附加包含目录。