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文件,只用了类图、文件包含图和类继承体系图。
dllimport与dllexport。。
之前写过模块化编程的练习,里面定义导出符号的时候使用了形如下文的代码。
-
#ifdef SYSTEM_EXPORTS
-
#define SYSTEM_API __declspec(dllexport)
-
#else
-
#define SYSTEM_API __declspec(dllimport)
-
#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写,结果报这个错误,源代码如下:
-
CREATE PROCEDURE QueryDate()
-
BEGIN
-
SELECT CURDATE();
-
END;
google了下,原来在Navicat里面不需要写头,直接从BEGIN开始即可。
过程名将在保存的时候填写,参数则可以填在代码定义框下面的参数输入框中,如果要使用返回值,则可以设定类型为FUNCTION,回传框即可填写。
FJNU ACM OnlineJudge 题库分类^^
由于拥有某种特殊权限,于是决定整理下FJNU OJ上的题目分类~
目前记录了100题 = =,大部分是简单题。其他待有空继续更新。
- 【Volume 1】1000
- 【Volume 2】1111 1131
- 【Volume 3】1202 1203 1236 1241 1251 1274 1291
- 【Volume 4】无内容
- 【Volume 5】1437 1438 1441 1444 1459 1474
- 【Volume 6】1509 1514 1579
- 【Volume 7】无内容
- 【Volume 8】1708-1715
- 【Volume 9】无内容
- 【Volume 10】1902 1903 1908 1911 1912 1937 1945 1946 1963-1987 1989 1992-1995
- 【Volume 11】2017 2020 2021 2025 2026 2032 2033 2035 2037 2038 2043 2095
- 【Volume 12】2101
- 【Volume 21】3000-3018
使用MySQL++提示找不到mysql_version.h
= _ = 在mysql的include目录下找到了。
可以直接拷过去,但貌似还需要其他文件,
因此可以将mysql的include目录设为附加包含目录。