把sql脚本导入powerdesigner
前几天研究wordpress的数据库设计,直接看sql导出的sql语句不直观,于是使用了powerdesigner的导入sql脚本功能,这样分析数据库的设计就更直观了。
1.安装wordpress后,程序就自动创建好了表(这个功能很人性化),我们要做的就是把创建表的sql语句导出,使用mysqldump命令导出
D:\>mysqldump -uroot -proot wpblog > wpblog.sql D:\>
那么在D盘就生成了wordpress的数据库脚本,然后删掉注释和插入数据的语句(注释和插入数据挨着,所以删除很简单),不删除一些数据,powerdesigner可能会没响应
2.打开powerdesigner,选择File –> Reverse Engineer –> Database……
Model name随便写,我填的是wpblog,DBMS选MySQL 5.0
然后确定
在Selection选项卡中选:Using scripts files:添加刚才的导出的sql脚本(wpblog.sql)
Options选项卡中的File Encoding 选择:UTF8+QuickDetect
然后确定,一切OK
看来用powerdesigner设计数据库,导出SQL(右击空白处–>Properties–>Preview),用sql脚本看数据库的设计真的很方便。
–EOF–
xp下apache+php的环境的安装
想看一下php,在xp下配置了一个apache+php环境。
软件版本:
以上软件都在官方网站下载。
1、安装apache
直接安装(我安装的目录是D:\tools\Apache2.2)
中间有个填写服务器名的地方,可直接填写自己的计算机名,邮件填写自己的邮件。
在浏览器输入http://127.0.0.1/如果输出:
It works!
那么apache服务器就安装成功了。
2、安装php
直接解压即可,我解压到了D:\tools\php-5.2.11-Win32
3、配置
将php目录(D:\tools\php-5.2.11-Win32)下的php.ini-recommended另存为php.ini保存到C:\WINDOWS下(以后配置php就需要修改这个文件)
libmysql.dll(支持MySQL数据库),
php5ts.dll(apache服务器支持php)
复制到C:\WINDOWS\system32(在win2k,nt复制到C:\WINNT\system32下)
剩下的就是修改配置文件了。
开始-》所有程序-》Apache Server 2.2-》Configure Apache Server-》Edit the Apache httpd.conf Configuration File
或者直接用文本编辑器打开:D:\tools\Apache2.2\conf(apache安装目录下conf文件夹)下的httpd.conf
搜索LoadModule,按对应的方式添加上:
LoadModule php5_module D:\tools\php-5.2.11-Win32\php5apache2_2.dll
然后搜索 AddType,在
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
后面添上
AddType application/x-httpd-php .php AddType application/x-httpd-php .htm
重启一下服务器,这样服务器就支持php了
4、测试
新建一个文本文件,内容如下
<?php phpinfo(); ?>
保存到apache安装目录下的htdocs文件夹下(我的D:\tools\Apache2.2\htdocs),保存名为:test.php
打开浏览器,输入http://127.0.0.1/test.php
如果成功,就输出一些系统信息,如果失败,应该就原样输出
我也是第一次安装(接触)php,如有问题,请留言,大家共同探讨。
<!–今天(10月19号)做连接MySQL数据库是发现没有成功,下面是解决方法,有问题大家讨论–>
今天发现数据库还是连接不上,一连数据库出现下面的错误(要有错误显示,需要修改c:\windows下php.ini的display_errors = Off改为display_errors = On,负责不显示数据):
Fatal error: Call to undefined function mysql_connect() in D:\tools\Apache2.2\htdocs\connsql.php on line 8
然后Google,最后终于发现了问题的所在,既然apache连接php成功
php连接不上MySQL,那问题出现在php的配置上,而不是apache的配置上,所以继续修改php.ini
在C:\Windows\php.ini下搜索:extension_dir,原来的配置是”.\”,你修改为你php解压到的路径,我的是修改为
extension_dir = "D:\tools\php-5.2.11-Win32\ext"
然后继续搜索extension,把
extension=php_curl.dll extension=php_dba.dll …… extension=php_imap.dll …… extension=php_mysql.dll extension=php_mysqli.dll
之前的分号去,重启apache服务器,问题解决。
<!– 10月20日更新 WordPress显示问题 –>
今天研究博客数据库的设计,下载了大名鼎鼎的WordPress中文版,安装一切正常,管理界面也正常,但是一访问主页就显示文件列表
修改了一下apache的配置文件(开始-》所有程序-》Apache Server 2.2-》Configure Apache Server-》Edit the Apache httpd.conf Configuration File)
搜索index.html,修改为index.php 问题解决,修改后如下
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>
重启apache,问题解决
–EOF–
jdk1.5新特性总结
面试的时候面试官问我jdk1.5的新特性,居然只回答上两个(泛型,增强for循环),回来一查,其实都接触过,而且好几个特性自己还经常用。
下面就总结一下:1.泛型(Generic) 2.增强for循环(For-Each循环) 3.自动装箱与拆箱(Autoboxing/unboxing) 4.静态导入(static import) 5.格式化打印(formatted print) 6.枚举(Enum) 7.可变参数(varargs)
1、泛型(Generic)
可以在编译的时候检测出类型错误,编译后和没有使用泛型的效果是相同的,但是使用泛型可以让你在编译时就发现错误,例如:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class GenericTest {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add(new Integer(1));
c.add("123");
for(Iterator i=c.iterator();i.hasNext();){
String s = (String) i.next();
System.out.println(s);
}
}
}
运行结果:
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at GenericTest.main(GenericTest.java:12)
Collection应该只存放String对象,但是我们“不小心”添加了一个Integer类型的对象,编译正常进行,程序在运行时才发现错误。
下面是使用了泛型后的程序
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class GenericTest {
public static void main(String[] args) {
Collection<String> c = new ArrayList<String>();
c.add(new Integer(1));
c.add("123");
for(Iterator<String> i=c.iterator();i.hasNext();){
String s = i.next();
System.out.println(s);
}
}
}
运行结果
D:\test>javac GenericTest.java
GenericTest.java:8: 无法将 java.util.Collection<java.lang.String> 中的 add(java.lang.String) 应用于 (java.lang.Integer)
c.add(new Integer(1));
^
1 错误
D:\test>
使用了泛型之后在编译时就发现了错误,可以增强程序的健壮性,而其i.next();也不用使用强制类型转换了。
2、增强for循环(For-Each)
For-Each的内部是用Iterator实现的,但是使用起来更简单,例如使用For-Each实现1-2如下
import java.util.ArrayList;
import java.util.Collection;
public class GenericTest {
public static void main(String[] args) {
Collection<String> c = new ArrayList<String>();
c.add("aa");
c.add("bb");
for(String s:c){
System.out.println(s);
}
}
}
运行结果:
aa
bb
比Integer方便多了吧?可以使程序员更加注重逻辑,而不是代码本身。
3、自动装箱拆箱(Autoboxing/unboxing)
Integer i = new Integer(2); //i自动拆箱为int类型 System.out.println(i==2); //3自动装箱为Integer类型 System.out.println(i.equals(3));
4、静态导入(static import)
//静态导入Math的random方法
import static java.lang.Math.random;
public class StaticImportTest {
public static void main(String[] args){
//类中生成随机数数可以直接使用静态引入的random方法了,而不用Math.random()这样调用了
System.out.println(random());
}
}
5、格式化打印(formatted print)
C语言中printf()风格的格式化输出。
这里只举一个thinking in java的一个例子:
public class SimpleFormat {
public static void main(String[] args) {
int x = 5;
double y = 5.332542;
//The old way
System.out.println("Row 1: ["+x+" "+y+"]");
//The new way
System.out.format("Row 1: [%d %f]\n", x,y);
//or
System.out.printf("Row 1: [%d %f]\n", x, y);
}
}
运行结果:
Row 1: [5 5.332542]
Row 1: [5 5.332542]
Row 1: [5 5.332542]
可以看到,format和printf是等价的,他们只需要一个简单的格式化字符串,加上一串参数即可,每个参数对应一个格式修饰符
6、枚举(Enum)
当每一类型可取值范围是有限的时候,可以使用枚举,例如每个学生登记只能用ABCD表示,如果直接用E的话,那么编译不会出错,但是却不符合输入要求,而使用枚举增加程序的易读性和健壮性?
public class GradeTest {
public static void main(String[] args) {
Student stu = new Student();
stu.setName("wasw100");
stu.setGrade(Grade.A);
//输出学生信息
System.out.println(stu);
}
}
/**
* 枚举:Grader 学生考试等级
* @author wasw100
*/
enum Grade{
A,B,C,D
}
class Student {
private String name;
private Grade grade;
//重写toString()方法
public String toString(){
return "name:+"+name+"\ngrader:"+grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
}
7、可变长参数(varargs)
方法的参数是不固定的我们一般会使用重载或者使用数组参数。重载需要些更多写更多的方法,数组需要在使用时先声明。
可能参数是一个不错的解决方案。
下面是网上一个 唐僧 给 悟空 将佛经的例子
public class VarargsTest {
public void speak(String name, Object... arguments) {
System.out.print(name+": ");
for (Object object : arguments) {
System.out.print(object);
}
System.out.println();
}
public static void main(String[] args) {
VarargsTest vt = new VarargsTest();
vt.speak("悟空", "人和妖精都是妈生的,");
vt.speak("悟空", "不同的人是人他妈生的,", "妖是妖他妈生的,");
}
}
运行结果:
悟空: 人和妖精都是妈生的,
悟空: 不同的人是人他妈生的,妖是妖他妈生的,
可变长参数只能作为最后一个参数。