Long time no write blog here, just write in Emacs Wiki; It is a good method to organize personal information! I like Emacs very much, although there are still some properties I can't use, I will try my best to use it with my pleasure.
引言
Microsoft .NET Framework Data Provider for Oracle(以下简称为.NET for Oracle)是一个.NET Framework的组件。这个组件为我们使用.NET访问Oracle数据库提供了极大的方便。那些使用.NET和Oracle的开发人员,相信会乐的手舞足蹈,因为他们再也不必使用那个并不十分“专业="的OLEDB来访问Oracle数据库了。这个组件的设计非常类似.NET中内置的Microsoft .NET Framework Data Provider for SQL Server和OLEDB。如果读者非常熟悉这两个内置的组件,那么相信您学习这个组件也是轻车熟路的。
查看全文刚刚开始正常工作,突然norton冒出病毒提示;上网上下载了一个Nod32杀毒软件,评价还不错;结果原先的CVS不能用了,有些东西还得用;没办法了,卸载吧,结果出问题了;可能破坏了windows的上网部分功能,网上邻居,ping通,但就是无法上网;无奈,重新安装了一下。
以后少折腾杀毒软件,感觉每个杀毒软件本身就是一个病毒,呵呵;弄不好,就是自找麻烦;还是回到常规的软件ZoneAlarm和Norton。
昨天和今天是考研的日子。挥手间已经是恍然如梦的四五年时间。人们仍然在忙碌着奋斗着为着各自的目标。19号20号是组内总结的日子,总结会开完也就代表年前工作的结束。
查看全文以前老犯愁,呵呵,因为老觉得自己的艺术修养不够;今天没办法硬着头皮学了一上午,问了一下师弟,好歹也能做点东西了,呵呵,还不错感觉。许多事情做了就是做了,也没有那么复杂,关键就是开始行动。
今年所里可以在1月21日到24日回家,到时候再看了,希望回家时候车不要太拥挤。
一周的时间遇上两个国际会议,而且我们组都要负责一些具体的事情,早出晚归,所以没有写博客了。中午也没地方休息,呵呵,虽然估计比较累,还是要长胖了,自助餐吃着吃着就会吃多了:)
Yesterday, I have found a very good A very good computer science study and research website. It teaches us how to study and learn computer science and mathematics. I love it very much!
The URL is http://williamstallings.com/StudentSupport.html
查看全文今天晚上无意间发现的。
在几个blog页面都有lala的留言,就是没看过lala的blog,于是输入http://blog.itpub.net/lala, 奇怪的事情出现了,竟然进入了老虎的写字本;刚开始还以为眼花了,重新输入以后还是哪个。
嘿,原先还以为lala是哪位大姐呢,原来是老虎的马甲,^_^
1. 将彻底屏蔽鼠标右键
oncontextmenu="window.event.returnValue=false"<table border oncontextmenu=return(false)><td>no</table> 可用于Table
前两天看了一篇文章,特此摘录做为笔记。
以目前中国市场薪资给付能力来看,需要具备以下几点能力:
第一个相关专业经验已经具备到管理层级,不仅仅能够自己做好工作,还能管好团队一起来工作,并且有这方面的经验。 查看全文
Next weekend, there will be an display for the inspection of Chinese Academy of Sciences. The vice header of CAS will visit our institute. And our group will display two project fruits. 查看全文
一个寓言-瞎子摸象 很久以前,有几个瞎子想知道大象长得什么样,于是就相约去摸象。摸到鼻子的说大象像一根管子,摸到耳朵的说像一把扇子,摸到牙的说像一根萝卜,摸到象身的说像一堵墙,摸到腿的说像一根柱子,摸到尾巴的说像一条绳子。象到底是什么样,明眼人自然很清楚,但是对于瞎子来说,却不容易明白。
[寓言寓意] 我们认识事物,一定要从多个角度来多方面去考察,才能得到最全面的了解。如果只知道个局部就以为自己已经全明白了,从而片面地看待事物,就不免会闹出瞎子摸象这样的笑话。 查看全文
用Jdom解析XML文件时候出现如下错误:
class file has wrong version 49.0, should be 48.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
import java.io.File;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; 查看全文
The Oracle XML JavaBeans are a set of XML components for Java applications or applets that make adding XML support to an application easy. These Java components can be integrated into Oracle JDeveloper to enable developers to create and deploy XML-based database applications quickly. The following beans are provided:
- DOMBuilder bean
- XSLTransformer bean
- DBAccess bean
- XMLDBAccess bean
- XMLDiff bean
- XMLCompress bean
When mapping XML documents associated with an XML DTD or an XSD to a database schema for the purpose of storing XML in Oracle, three basic strategies exist:
(1) Map the complete XML document as a single, intact object, such as an XMLType CLOB.
(2) Store the data in relational or object-relational tables and create XMLType views over the data to present it as an XML document.
(3) Map XML documents to an Oracle Native XMLType.
默认的时候,当我们安装完tomcat后,输入网址:http://localhost:8080/admin/
会提示“TOMCAT web Server Administrator"下面是要输入用户和密码,因为默认的时候是没有管理用户的权限的用户,所以我们要创建一个:
查看全文jdbc连接access的方法
第一种:
你用下面的代码试试 (强烈建议也是only可以建议的方法)
con = DriverManager.getConnection("jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=C:/data/Access/test1.mdb","dba","sql");
后面的代码一样。这样你就可以访问access数据库了。
第二个:
用sun的jdbcodbc桥,数据源(个人主页不适用)
第三个:
用access的JDBC驱动程序,到http://industry.java.sun.com/products/jdbc/drivers这个网站上查找并下在access的jdbc驱动程序。 (这个没有试过,各位有兴趣可以试试看)
活学巧用<A>链接
超链接<A>语句代表一个链接点,它是英文 Anchor(锚点)的缩写。<A>语句在 HTML 语言中的主要作用是把当前位置的文本或图片连接到其他的页面、文本或图像,但对于它一些巧妙用法可能朋友们就不是很熟悉了。所以,在这篇教程中,我就来讲解一下。当然你也可以按此链接直接进入实例部分。 查看全文
1:安装jdk,以j2sdk1.4.2_03为例,假设装到d盘根目录下,即c:j2sdk1.4.2_03;
2: 我的电脑 -〉属性--〉高级--〉环境变量-〉系统变量,添加 java_home ,值 c:j2sdk1.4.2_03;
3: 添加 classpath, 值 :.;D:j2sdk1.4.2_03libdt.jar;D:j2sdk1.4.2_03libtools.jar;
4: 安装tomcat5到路径c:tomcat5,一般解压缩即可;
5: 添加CATALINA_HOME,值c:tomcat5;
6: 到c:tomcat5bin下运行startup.bat即可启动;
上面讲了这么多,到现在还没有看到具体应用,那好,现在我们看看具体的JavaServer Pages+JavaBean的例子吧,首先让我们看看一个简单的计数器程序。
本例程共包含3个文件
JavaBean--counter.java文件,JavaServer Page-- counter.jsp文件, counter1.jsp文件其中,counter.java主要用来进行计数器的计数操作,counter.jsp和counter1.jsp文件主要用来显示网页的计数。
查看全文
数据库连接:
~~MYSQL
//设置数据库的URL
String url = "jdbc:mysql://localhost:3306/jspsky";
try
//加载驱动程序
Class.forname("org.gjt.mm.mysql.Driver").newInstance();
//建立连接
java.sql.Connection connection = java.sql.DriverManager.getConnection(url);
java.sql.Statement statement = connection.createStatement();
//SQL语句
String sqlStringi ="insert into commu(name,tel,mobile,oicq,email)values(‘"+name+"’,‘"+tel+"’,‘"+mobile+"’,‘"+oicq+"’,‘"+email+"’)";
文件操作
~~将一个字符串写到一个指定的文件中,如果该文件不存在,则新建一个文件,并完成写入;如果存在,则用此字符串覆盖原文件的所有内容
import java.io.*;
String str = "print me 雪峰!";
//定义好打印的目标文件名
//取得当前主机存放WEB页面的绝对路径
String hostdir = System.getProperty("user.dir");
//取得当前主机所采用的路径分隔符
String fileBar = System.getProperty("file.separator");
//书写完整的目标文件存放路径
String nameOfFile=hostdir+fileBar+"test.html";
Integer count = null;
synchronized (application)
count =(Integer) application.getAttribute("d");
if (count ==null)
count =new Integer("0");
count = new Integer(count.intValue()+1);
application.setAttribute("d",count);
{}
out.println(count);
// 首先定义一个整形对象,并初始化为:NULL,
// 取回APPLICATION对像的属性D的值,并强制转化为整形对象,赋给COUNT
// 判断COUNT是否为空,为空时,将O赋给COUNT对象,
// 否则,通过COUNT。INTVALUE()方法,实现COUNT对象加1,并赋值给COUNT
// 最后,将COUNT对象保存在APPLICATION对象的D变量中。
首先制作svg:
drawCircle.jsp:
-------------------------------------------------
<?xml version="1.0"?>
<%@ page contentType="text/xml" %>
<svg>
<circle cx="<%=request.getParameter("x")%>" cy="<%=request.getParameter("y")%>" r="<%=request.getParameter("r")%>" />
</svg>
-------------------------------------------------
一、数据库设计过程
数据库技术是信息资源管理最有效的手段。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。
数据库设计中需求分析阶段综合各个用户的应用需求(现实世界的需求),在概念设计阶段形成独立于机器特点、独立于各个DBMS产品的概念模式(信息世界模型),用E-R图来描述。在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型如关系模型,形成数据库逻辑模式。然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图(VIEW)形成数据的外模式。在物理设计阶段根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。
2.在菜单server->target server->(ERwin3.5.2)或database->choose database...(ERwin4.0)选择sql server 然后选择相应的版本 查看全文
分布推理技术 <-->数据库<--> 分布式数据库系统
并行处理技术 <-->数据库<--> 并行数据库系统
人工智能技术 <-->数据库<--> 知识库系统,主动数据库系统
多媒体技术 <-->数据库<--> 多媒体数据库系统
模糊技术 <-->数据库<--> 模糊数据库系统
企业信息系统/决策支持系统 <-->数据库<--> 数据仓库
CAD/CAM/CIM <-->数据库<--> 工程数据库>
计划/统计 <-->数据库<--> 统计数据库
地理信息系统 <-->数据库<--> 空间数据库
2.jdbc出先错误,可能是由于Oracle的jdbc驱动,最好用classes12.zip来处理大对象,用classes11.zip可能会出现一些问题;出现问题是Oracle8.1.7.
3. 驱动程序在jbuilder中在tools,菜单下面的enterprise setup中设置;
package blobtest;
import javax.swing.*;
import java.io.*;
import java.sql.*;
//import DriverData;
import oracle.jdbc.driver.*;
import oracle.sql.*;
//import oracle.ord.im.*;
// Package for JDBC classes
import java.sql.Connection;
import java.sql.Clob;
import java.sql.ResultSet;
import java.sql.Blob;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import oracle.jdbc.pool.OracleDataSource;
public class ReadAudioFromDB {
Connection conn;
Statement stmt;
ResultSet rs;
int bufferSize;
public ReadAudioFromDB()
throws SQLException, ClassNotFoundException {
String connectString;
Class.forName("oracle.jdbc.driver.OracleDriver");
connectString = "jdbc:oracle:oci8:@";
conn = (OracleConnection)
DriverManager.getConnection(connectString, "blobtest",
"1234");
stmt = conn.createStatement();
}
public void readFromDB() {
String pathname, name;
int amount = 0;
InputStream in = null;
BufferedOutputStream out = null;
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
pathname = chooser.getSelectedFile().getAbsolutePath();
name = chooser.getSelectedFile().getName();
chooser = null;
}
else {
System.out.println("没有找到文件!");
System.out.println("程序非正常结束...");
return;
}
try {
rs = stmt.executeQuery(
"select BlobFile from audio where cavern_no='285' and document_id=1");
if (rs.next()) {
Blob blob = rs.getBlob(1);
in = blob.getBinaryStream();
bufferSize = ( (oracle.sql.BLOB) blob).getBufferSize();
out = new BufferedOutputStream(new FileOutputStream(pathname),
(int) bufferSize);
byte[] b = new byte[ (int) bufferSize];
int count = in.read(b, 0, (int) bufferSize);
while (count != -1) {
out.write(b, 0, count);
amount += count;
System.out.println("已经处理了" + amount + "字节.");
count = in.read(b, 0, (int) bufferSize);
}
System.out.println("成功处理完毕字节数:" + amount);
out.close();
out = null;
in.close();
in = null;
}
else {
System.out.println("文档:" + name + "未找到.");
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (out != null) {
try {
out.close();
}
catch (Exception ignored) {}
}
if (in != null) {
try {
in.close();
}
catch (Exception ignored) {}
}
}
}
}
=======
package blobtest;
import javax.swing.*;
import java.io.*;
import java.sql.*;
//import DriverData;
import oracle.jdbc.driver.*;
import oracle.sql.*;
//import oracle.ord.im.*;
// Package for JDBC classes
import java.sql.Connection;
import java.sql.Clob;
import java.sql.ResultSet;
import java.sql.Blob;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import oracle.jdbc.pool.OracleDataSource;
public class WriteAudioToDB {
Connection conn;
Statement stmt;
ResultSet rs;
int bufferSize;
public WriteAudioToDB() throws SQLException, ClassNotFoundException {
String connectString;
Class.forName("oracle.jdbc.driver.OracleDriver");
connectString = "jdbc:oracle:oci8:@";
conn = (OracleConnection)
DriverManager.getConnection(connectString, "blobtest",
"1234");
stmt = conn.createStatement();
}
public void sendToDb() {
String pathname, name;
int amount = 0;
OutputStream out = null;
BufferedInputStream in = null;
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
pathname = chooser.getSelectedFile().getAbsolutePath();
name = chooser.getSelectedFile().getName();
chooser = null;
}
else {
System.out.println("没有找到文件!");
System.out.println("程序非正常结束...");
return;
}
try {
conn.setAutoCommit(false);
stmt.executeUpdate("insert into document(cavern_no,audio_id,TITLE ,
ARCHITECTURE_ATTR_VAL ,PAINTED_SCULPTURE_ATTR_VAL,
FRESCO_ATTR_VAL,FOKAN_ATTR_VAL,BLOBFILE )
values("+"'285',2,'"+name+"','1111','111101','10101','10001',empty_blob())");
rs = stmt.executeQuery(
"select BlobFile from document where cavern_no='285' and document_id=1");
if (rs.next()) {
Blob blob = rs.getBlob("BlobFile");
out = ( (oracle.sql.BLOB) blob).getBinaryOutputStream();
bufferSize = ( (oracle.sql.BLOB) blob).getBufferSize();
in = new BufferedInputStream(new FileInputStream(pathname), bufferSize);
byte[] b = new byte[bufferSize];
int count = in.read(b, 0, bufferSize);
while (count != -1) {
out.write(b, 0, count);
amount += count;
System.out.println("处理了" + amount + "字节.");
count = in.read(b, 0, bufferSize);
System.out.println("处理了" + amount + "字节,成功.");
}
out.close();
out = null;
in.close();
in = null;
conn.commit();
}
}
catch (Exception e) {
e.printStackTrace();
try {
conn.rollback();
}
catch (Exception ignored) {}
}
finally {
if (out!=null) try{out.close();} catch(Exception igored){}
if (in!=null) try{in.close();} catch(Exception igored){}
}
}
}
===========================
1)动手去解决问题之前,好好想想问题的来源;
2)如何站在各个角度来看待面临的问题,以能够知道其真正所在;如何去尝试那个最能解决真
正问题的方法,并且时刻保持警惕心;
3)为什么不要把人们的解决方法误认为是问题的定义,更不要把某个问题的解决方法误认为是问题的定义,特别是这个解决方法是你自己所使用
的;
4)永远都不要肯定自己已经有了一个正确的定义,即使是在问题好像已经解决之后。
5)每一种解决方法都会带来新的问题;
6)问题最难以处理的
部分恰恰是去意识到它们的存在;
7)在理解问题之前,至少要做好准备接受三种可能的出错情况;
8)或许还可以改变问题的表述来获得不同的解决方法;
9)当你沉迷于寻找问题定义和解决方法时,不要忘记随时都回头看看,看看自己是不是已经迷路了..
当别人能够很好地解决自己问题的时候,千万不要越俎代庖;
11)如果某人能够解决这个问题,但是他本人却并不会遇到这一问题时,那么你首先要做的就是让他也感受到这一问题;12)不管看上去如何,人们很少知道他们要什么,直
到你给了他们所需要的东西;
13)甚至,事实上,并没有多少人真的希望他们的问题被解决。
=========================================
真正的问题所在可能并不是您现在的所想,换个角度分析,或许您已经找到了问题的真谛。
软件的合理安排是:
1/3的时间计划,1/6的时间编码,1/4的时间单元测试,1/4的时间系统测试;
阻止类的任意实例更改变量的值的方法:public static final int varname=3;
使用this的两种常见情况:
1. 有一个局部变量往往是变元,使用相同的名字作为实例变元;
2. 需要以变元的形式给另外一个类中的方法传递当前对象的引用;
1.
loadjava -user username/password -verbose *.class
可以把class文件加载到oracle数据库中;
调用方法:
在sql×plus下
create or replace procedure proc_name
as language java
name "javaclassname.method()";
set serveroutput on size 5000
call dbms_java.set_output(5000)
execute proc_name;
2.
另外可以直接加载java文件:
create or replace and complie java source named ClassName
as
public class ...{
...
}
create or replace procedure proc_name
as language java
name "javaclassname.method()";
set serveroutput on size 5000
call dbms_java.set_output(5000)
execute proc_name;
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@orcl","system","manager");
Statement stmt=conn.createStatement();
ResultSet rset=stmt.executeQuery("select * from bfiletable");
while(rset.next()){
//获取bfile
BFILE bfile=((OracleResultSet)rset).getBFILE("pic");
//打开bfile
bfile.openFile();
int length=(int)bfile.length();
InputStream instream=bfile.getBinaryStream();
byte[] buffer=new byte[lengh];
//从instream中读到buffer中
instream.read(buffer);
//把buffer中的数据显示在button上
button =new JButton(new ImageIcon(buffer));
instream.close();
bfile.close();
}
//关闭数据库的连接
rset.close();
stmt.close();
conn.close();
CallableStatement cstmt=conn.prepareCall("{CALL 存储过程名字(参数1,参数2..)}");
cstmt.execute();
共享数据在web中的应用范围
1. page:当前jsp页面;
2. request:用户请求访问的当前web组建,以及合当前web组件共享同一个用户请求的其他web组建。Jsp include和forward包含的jsp文件也能访问共享数据。request范围内的数据实际上存放在HttpServletRequest对象中。
3. Session:存在于整个Http会话中,同一个http会话的web组件共享它。共享数据存储在httpsession中。
4. application:共享数据存在于整个web应用的生命周期,web应用中的所有web组件都能应用它。存在于ServletContext对象中。
一个session的资源释放:
1. 客户端关闭浏览器
2. 会话过期
3. 服务器端调用了invalidate()方法
session与request相比占用更多的资源;
Jsp和JavaBean搭配使用时,jsp可以侧重生成动态网页,javabean则侧重数据或者逻辑。
在Struts框架中,ActionForm Bean是一种典型的JavaBean,范围有两种:request和session。
重定向的方法:
1. <jsp:forward page="hello.jsp>
2. response.sendRedirect(URL)








