konhon

忘掉過去,展望未來。找回自我,超越自我。
逃避不一定躲的过, 面对不一定最难过, 孤单不一定不快乐, 得到不一定能长久, 失去不一定不再拥有, 可能因为某个理由而伤心难过, 但我却能找个理由让自己快乐.

Google

BlogJava 首页 新随笔 联系 聚合 管理
  203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks

#

连接oracle数据库的各种oracle jdbc驱动程序的细节。
这些细节包括:
1、导入jdbc包
2、注册oracle jdbc驱动程序
3、打开数据库连接
4、执行sql dml语句在数据库表中获取、添加、修改和删除行

一、jdbc驱动程序
共有有4种
1、thin驱动程序
thin驱动程序是所有驱动程序中资源消耗最小的,而且完全用java编写的。
该驱动程序只使用tcp/ip且要求oracle net。被称为第4类驱动程序。
它使用ttc协议与oracle数据库进行通信。能够在applet、application中使用。
2、oci驱动程序
oci驱动比thin需要资源要多,但性能通常好一点。oci驱动适合于部署在
中间层的软件,如web服务器。不能在applet中使用oci驱动。是第2类驱动程序。
不完全用java写的,还包含了c代码。该驱动有许多附加的性能增强特性,
包括高级的连接缓冲功能。
注意:oci驱动要求在客户计算机上安装它。
3、服务器内部驱动程序
服务器内部驱动程序提供对数据库的直接访问,oracle jvm使用它与数据库进行通信。
oracle jvm是与数据库集成的java virtual machine,可以使用oracle jvm将
java类装载进数据库,然后公布和运行这个类中包含的方法。
4、服务器thin驱动程序
服务器端thin驱动程序也是由oracle jvm使用的,它提供对远程数据库的访问。
也是完全用java编写的。


二、导入jdbc包
三、注册oracle jdbc驱动程序
必须先向java程序注册oracle jdbc驱动程序,然后才能打开数据库连接。
有两种注册oracle jdbc驱动程序的办法。
1、使用java.lang.class的forname()方法
例子:class.forname(oracle.jdbc.oracledriver);
2、使用jdbc drivermanager类的registerdriver()方法。
例子:drivermanager.registerdriver(new oracle.jdbc.oracledriver());
如果使用oracle8i jdbc驱动程序,那么需要导入oracle.jdbc.driver.oracledriver类,
然后注册这个类的实例。
例子:
import oracle.jdbc.driver.oracledriver;
drivermanager.registerdriver(new oracle.jdbc.oracledriver());
注意:从jdbc2.0开始,只用jdbc驱动程序的更标准办法是通过数据源。
四、打开数据库连接
必须先打开数据库连接,然后才能在java程序中执行sql语句。打开数据库连接
的主要办法。
1、drivermanager类的getconnection()方法。
drivermanager.getconnection(url,username,passwrod);
url:程序要连接的数据库,以及要使用的jdbc驱动程序
url的结构依赖于jdbc驱动程序的生产商。对于oracle jdbc驱动程序,数据库url的结构:

driver_name是程序使用的oracle jdbc驱动程序的名称。如:
jdbc:oracle:thin oracle jdbc thin驱动程序
jdbc:oracle:oci oracle jdbc oci驱动程序
jdbc:oracle:oci8 oracle jdbc oci驱动程序
driver_information是连接数据库所需的驱动程序特有的信息。这依赖于使用的驱动程序。
对于oracle jdbc thin驱动程序,可以用
host_name:port:database_sid 或者 oracle net关键字-值对
(description=(address=(host=host_name)(protocol=tcp)(port=port()
(connect_data=(sid=database_sid)))
host_name: 运行数据库的机器的名称
port: net数据库监听器等待这个端口上的请求,默认是1521
database_sid: 要连接的数据库实例的oracle sid。
username: 程序连接数据库时使用的数据库用户名
passwrod: 用户名的口令
例子:
connection myconnection=drivermanager.getconnection(
jdbc:oracle:thin:@localhost:1521:orcl,
store_user,
store_password);
connection myconnection=drivermanager.getconnection(
jdbc:oracle:oci:@(description=(address=(host=localhost)
(protocol=tcp)(port=1521))(connect_data=(sid=orcl))),
store_user,
store_password);
2、使用oracle数据源对象,必须先创建这个对象,然后连接它。使用这种方法
采用了一种设置数据库连接信息的标准化方式,oracle数据源对象可以与
java naming and directory interface(java名字与目录接口,jndi)一起使用。

posted @ 2006-03-21 07:18 konhon 优华 阅读(927) | 评论 (0)编辑 收藏

需要在你的web.xml中定义如下:

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsm</url-pattern>
    </servlet-mapping>

posted @ 2006-03-21 05:37 konhon 优华 阅读(638) | 评论 (0)编辑 收藏

我的主页在自设的目录里如  e:/mysite/  
我想用tomcat作为服务器  
键入http://127.0.0.1就显示我在  e:/mysite/  下的index.jsp文件  
而不是诸如  http://127.0.0.1/site/  
请问如何设置  
---------------------------------------------------------------  
 
分2步:  
   1  把你的tomcat端口改为80  
   2。把你的文件放到webapps目录下的ROOT目录下,最好先把原来的文件备份一下,再删除  
         或者做个在tomcat上做虚拟主机,目录就可以随便设  
---------------------------------------------------------------  
 
修改  
tomcat_home/conf/server.xml  
 
將  
<Connector  className="org.apache.coyote.tomcat4.CoyoteConnector"  port="8080"  minProcessors="5"  maxProcessors="75"  enableLookups="true"  redirectPort="8443"  acceptCount="100"  debug="0"  connectionTimeout="20000"  useURIValidationHack="false"  disableUploadTimeout="true"/>  
 
這裡面的8080改成80  
 
 
添加  
<Context  path=""  docBase="e:/mysite/"  
               debug="0"  privileged="true">  
</Context>到  
</host>  
之前。  
posted @ 2006-03-20 22:42 konhon 优华 阅读(683) | 评论 (0)编辑 收藏

/**
 * By metaphy 2005-11-12
 * Version: 0.01
 * 注:题目答案来源于metaphy过去的知识或网络,metaphy不能保证其正确或完整性,仅供参考
**/

一、基础问答

  1.下面哪些类可以被继承?

   java.lang.Thread (T)
   java.lang.Number (T)
   java.lang.Double (F)
   java.lang.Math  (F)
   java.lang.Void  (F)
   java.lang.Class  (F)
   java.lang.ClassLoader (T)

  2.抽象类和接口的区别

  (1)接口可以被多重implements,抽象类只能被单一extends
  (2)接口只有定义,抽象类可以有定义和实现
  (3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)

  3.Hashtable的原理,并说出HashMap与Hashtable的区别

  HashTable的原理:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址.
HashMap 与Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null为关键码的.

  4.forward和redirect的区别

  forward: an internal transfer in servlet
  redirect: 重定向,有2次request,第2次request将丢失第一次的attributs/parameters等

  5.什么是Web容器?

  实现J2EE规范中web协议的应用.该协议定义了web程序的运行时环境,包括:并发性,安全性,生命周期管理等等.

  6.解释下面关于J2EE的名词

  (1)JNDI:Java Naming & Directory Interface,JAVA命名目录服务.主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能.
  (2)JMS:Java Message Service,JAVA消息服务.主要实现各个应用程序之间的通讯.包括点对点和广播.
  (3)JTA:Java Transaction API,JAVA事务服务.提供各种分布式事务服务.应用程序只需调用其提供的接口即可.
  (4)JAF: Java Action FrameWork,JAVA安全认证框架.提供一些安全控制方面的框架.让开发者通过各种部署和自定义实现自己的个性安全控制策略.
  (5)RMI:Remote Method Interface,远程方法调用

  7.EJB是基于哪些技术实现的?并说 出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别.

  EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现.

  SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件.EntityBean被用来代表应用系统中用到的数据.对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑;EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体.

  Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean .这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体.Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method.换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行.从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态.

  8.XML的解析方法

  Sax,DOM,JDOM

  9.什么是Web Service?

  Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。
Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。

  注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。

  优势:

  (1).跨平台。
  (2).SOAP协议是基于XML和HTTP这些业界的标准的,得到了所有的重要公司的支持。
  (3).由于使用了SOAP,数据是以ASCII文本的方式而非二进制传输,调试很方便;并且由于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个“漏洞”。
  (4).此外,WebService实现的技术难度要比CORBA和DCOM小得多。
  (5).要实现B2B集成,EDI比较完善与比较复杂;而用WebService则可以低成本的实现,小公司也可以用上。
  (6).在C/S的程序中,WebService可以实现网页无整体刷新的与服务器打交道并取数。

  缺点:

  (1).WebService使用了XML对数据封装,会造成大量的数据要在网络中传输。
  (2).WebService规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点,它不如CORBA。

  10.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

  答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
  同步的实现方面有两种,分别是synchronized,wait与notify

  11.JSP中动态INCLUDE与静态INCLUDE的区别?

  动态INCLUDE用jsp:include动作实现

<jsp:include page="included.jsp" flush="true"/>

  它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数

  静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面

  <%@ include file="included.htm" %>

posted @ 2006-03-13 19:35 konhon 优华 阅读(2202) | 评论 (0)编辑 收藏

本文示范了如何用一个Java Servlet、一个JSP页面和一个静态Java类构造出一个SQL网关应用。利用这个应用,你可以直接在浏览器内执行SQL命令,浏览器将把SQL命令提交给远程服务器上的数据库系统,然后返回结果。

  如果你正在使用ISP(Internet Service Provider)提供的数据库,可能已经熟悉SQL网关应用的概念了。有的ISP会提供一个操作数据库的HTML页面,就象本文提供的网关应用一样。如果ISP没有提供这样的界面,你可以把本文的程序上载到服务器,以后要访问ISP服务器上的数据库就很方便了。

  SQL网关应用不仅可以用于开发过程,而且还可以直接提供给比较熟悉系统的最终用户使用。当然,允许最终用户直接在数据库上运行SQL命令会带来一些安全隐患,应当慎重考虑。

  本文要求读者具备一定的Java、Servlet、JSP和数据库的基础知识,如果要运行本文的程序,还要有一个Servlet/JSP服务器和数据库服务器。在下面的说明中,我们要使用的是Tomcat 4.0和MySQL,但它应该也能在其他JSP/Servlet容器中运行;如果你要改用MySQL之外的其他数据库,只要提供一个适当的驱动程序,然后修改数据库连接字符串就可以了。

  一、用户界面

  图1就是本文SQL网关的用户界面。在这个界面中,SQL网关已经执行了一条SQL命令并返回了结果。



图1:SQL网关的用户界面


  从图1可以看出,页面底部的一条信息显示出最近执行的SQL命令影响的行数。如果SQL命令是一个SELECT语句,当SELECT语句执行成功,页面底部将用HTML表格显示出查询结果,如图二所示。



图2:HTML表格显示出查询结果集


  当然,如果SQL命令执行失败,SQL网关将返回异常信息。

  二、设计JSP页面

  在JSP页面中,我们首先放入一个Scriptlet,它的功能是从session对象提取两个属性:

<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<% 
   String sqlStatement=(String)session.getAttribute("sqlStatement");
   if (sqlStatement == null)    sqlStatement = "";
   String message =  (String) session.getAttribute("message");
   if (message == null)  message = "";
%>


  第一个属性sqlStatement 表示SQL命令字符串,第二个属性message 是包含结果信息的字符串。如果这两个属性的值是null,则表示它们尚未被设置,我们把sqlStatement和message变量设置成空字符串。

  JSP页面还有一个HTML表单,HTML表单包含一个文本区域(TEXTAREA)和一个“执行”按钮。

<form action="../servlet/test.SQLGatewayServlet" method="post">
<b>SQL命令:</b><br>
<textarea name="sqlStatement" cols=60 rows=8>
<%=sqlStatement%></textarea><br>
<br>
<input type="submit" value="执行">
</form>


  表单中的文本区域用来输入SQL命令。我们将sqlStatement变量的值作为文本区域的默认内容,文本区域的大小是宽60字符、高8行。当JSP页面第一次运行时,这个文本区域的内容为空。如果用户点击文本区域下面的“执行”按钮,JSP页面把表单内容提交给SQLGatewayServlet(稍后再详细介绍)。

  JSP页面底部的表格显示出message字符串的内容。如前所述,message的内容是运行SQL命令的结果。

<b>SQL命令执行结果:</b><br>
<table cellpadding="5" border="1">
<%=message%>
</table>


  三、编写Servlet

  SQLGatewayServlet首先导入java.sql包以便使用JDBC类。另外,它还要声明一个Connection对象,以便Servlet之内的所有方法都可以使用数据库连接。

package test;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class SQLGatewayServlet extends HttpServlet{

    private Connection connection;


  当Servlet引擎开始运行这个Servlet,Servlet的init方法就打开一个数据库连接:

public void init() throws ServletException{
    try{
        Class.forName("org.gjt.mm.mysql.Driver");
        String dbURL = "jdbc:mysql://localhost/murach";
        String username = "root";
        String password = "";
        connection = DriverManager.getConnection
	(dbURL, username, password);
    }
    catch(ClassNotFoundException e){
        System.out.println("找不到数据库驱动程序.");
    }
    catch(SQLException e){
        System.out.println("不能打开数据库连接: "
                           + e.getMessage());
    }
}


  在这个例子中,Servlet利用一个MysQL数据库的驱动程序打开murach数据库的连接,数据库和Servlet运行在同一个服务器上。此外,Servlet使用MySQL的默认用户名字root,密码为空。不过,你可以修改这里的代码,只要有适当的驱动程序,就可以让Servlet连接到任何服务器上的任何数据库(有关MySQL数据库的更多信息,请参见www.mysql.com)。

  Servlet引擎关闭Servlet之前,调用destroy方法关闭数据库连接,释放连接资源:

public void destroy() {
    try{
        connection.close();
    }
    catch(SQLException e){
        System.out.println("不能关闭数据库连接: " + e.getMessage());
    }
}


  前面介绍的JSP页面要调用Servlet的doPost方法,doPost方法调用doGet方法:

public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
                   throws IOException, ServletException{
     doGet(request, response);
 }


  在doGet方法之中,第一个语句首先获取用户在JSP页面中输入的SQL命令,第二个语句声明message变量:

public void doGet(HttpServletRequest request,
                   HttpServletResponse response)
                   throws IOException, ServletException{

     String sqlStatement = request.getParameter("sqlStatement");
     String message = "";


  然后,在try块之内,第一个语句利用Connection对象创建Statement对象,接下来的两个语句利用String对象的trim方法和substring方法返回用户输入的SQL命令的前六个字符。

try{
     Statement statement = connection.createStatement();
     sqlStatement = sqlStatement.trim();
     String sqlType = sqlStatement.substring(0, 6);


  如果SQL命令的前六个字符是“select”,则利用Statement的executeQuery方法执行SQL语句,获得一个ResultSet对象,把这个对象传递给SQLUtil类(稍后详细说明)的getHtmlRows方法,getHtmlRows方法将把记录集中的记录格式化成HTML表格并返回。

if  (sqlType.equalsIgnoreCase("select")){
     ResultSet resultSet = statement.executeQuery(sqlStatement);
     // 构造一个String,其中包含HTML表格形式的结果集数据
     message = SQLUtil.getHtmlRows(resultSet);
 }


  如果SQL语句的前六个字符不是“select”,则我们调用Statement对象的executeUpdate方法,executeUpdate方法返回当前操作影响的行数——如果这个数字是0,则该SQL命令是一个DDL命令,例如DROP TABLE或CREATE TABLE等;否则,则表明SQL命令可能是DML命令,如INSERT、UPDATE或DELETE命令。无论是哪一种SQL命令,我们都把message变量设置成相应的消息。

else
     {
         int i = statement.executeUpdate(sqlStatement);
         if (i == 0) // 这是一个DDL命令
           message =
             "<tr><td>" +
               "命令执行成功." +
             "</td></tr>";
         else // 这是一个INSERT、UPDATE或DELETE命令
             message =
               "<tr><td>" +
                 "SQL命令执行成功。<br>" +
                 "已更改" + i + " 行。" +
                "</td></tr>";
     }
     statement.close();
 }


  如果try块里面的任何一个语句抛出一个SQLException,catch块就设置message变量,使其包含有关该SQLException的信息。例如,如果在表单中输入的SQL命令语法错误,下面设置的message变量值将帮助你排解错误。

catch(SQLException e){
    message = "<tr><td>执行SQL命令时遇到错误:<br>"
            + e.getMessage() + "</tr></td>";
}


  在catch块之后,接下来的三个语句获得session对象,把sqlStatement和message变量设置为session的属性:

HttpSession session = request.getSession();
 session.setAttribute("message", message);
 session.setAttribute("sqlStatement", sqlStatement);


  接下来,最后两个语句创建一个RequestDispatcher,并转发request和response对象给前文介绍的JSP页面:

RequestDispatcher dispatcher =
     getServletContext().getRequestDispatcher(
         "/sql/sql_gateway.jsp");
 dispatcher.forward(request, response);


  四、编写工具类

  下面来看看工具类SQLUtil的代码:

package test;
import java.sql.*;
public class SQLUtil{


  SQLUtil类包含一个getHtmlRows静态方法,前面的Servlet正是通过调用该方法将结果集格式化成HTML表格。getHtmlRows的输入参数是一个ResultSet对象,其返回值是一个String对象,这个String对象的内容是记录集的所有列表题和行的HTML代码。为了构造出这样一个String对象,getHtmlRows声明了一个名为htmlRows的StringBuffer对象,然后在方法执行过程中向这个StringBuffer对象追加数据。在getHtmlRows方法的末尾,我们用toString方法将StringBuffer的内容转换成String,最后将这个String返回给Servlet:

public static synchronized String getHtmlRows(ResultSet results)
throws SQLException{
    StringBuffer htmlRows = new StringBuffer();
    ResultSetMetaData metaData = results.getMetaData();
    int columnCount = metaData.getColumnCount();
    // 将记录集中列的名称作为HTML表格列的标题
    htmlRows.append("<tr>");
    for (int i = 1; i <= columnCount; i++)
        htmlRows.append("<td><b>" + metaData.getColumnName(i) + "</td>");
    htmlRows.append("</tr>");
    // 对于结果集中的每一行...
    while (results.next()){
        htmlRows.append("<tr>");
        // 将该行中的每一个列转换成一个表格单元
        for (int i = 1; i <= columnCount; i++)
            htmlRows.append("<td>" + results.getString(i) + "</td>");
    }
    htmlRows.append("</tr>");
    return htmlRows.toString();
}


  为了获得记录集对象的列标题,getHtmlRows方法利用ResultSet的getMetaData方法来创建一个ResultSetMetaData对象,ResultSetMetaData对象包含了有关记录集的描述信息,例如列的数量、列的名称可以分别调用ResultSetMetaData的getColumnCount和getColumnName方法获得。

  为了提取记录集的数据,getHtmlRows方法利用一个嵌套的循环,即while循环里面嵌套的for循环,来提取每一个行里面每一个列的值。在循环之内,我们用记录集的getString方法来获取各个字段的值,不管字段值原来的类型是什么,getString方法都会将它转换成String。

  请注意这个方法的声明中带有synchronized关键词,这是为了避免两个或两个以上的Servlet线程同时执行该方法。
posted @ 2006-03-13 02:30 konhon 优华 阅读(611) | 评论 (0)编辑 收藏

实现论坛树型结构的算法很多,我现在的JSP论坛采用的也是当中的一种:不用递归实现树型结构的算法,现在我将论坛树型结构的具体算法和大家介绍一下,和大家一起交流。

 

1、演示表的结构:

   表名:mybbslist
   字段     数据类型  说明
   BBSID    自动编号  
   RootID    Int     根帖ID,本身为根帖则RootID = ID
   FID     Int     父帖ID,上一层帖子的ID,如是根帖则FID = 0
   DEPTH    Int     根帖Level=0,其他依据回复的深度递增
   BBSSubject  Char    主题


2。创建表:


create table mybbslist (
 forumID int(20) not null,
 bbsID int auto_increment primary key,
 rootid int(20) not null,
 fid int(20) not null,
 depth int(20) not null,
 userID int(20) not null,
 bbsUser varchar(24) not null,
 bbsSubject varchar(100) not null,
 bbsContent text,
 bbsTime varchar(30),
 bbsRead int(20),
 bbsReply int(20),
INDEX forumID (forumID)) 

3、连接MYSQL数据库的BEAN


package netzero;
import java.sql.*;
public class mydb
{
String driverName = "org.gjt.mm.mysql.Driver";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String connURL= "jdbc:mysql://localhost/mybbs?user=root&password=how&useUnicode=true&characterEncode=8859_1";
//String connURL= "jdbc:mysql://localhost/netzerobbs?user=root&password=how";
public mydb()
{
try
{
Class.forName(driverName);
}
catch (java.lang.ClassNotFoundException e)
{
System.err.println("netzero(String): " + e.getMessage());
}
}


public ResultSet executeQuery(String sql) throws SQLException
{
conn = DriverManager.getConnection(connURL);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
return rs;
}


public boolean closeConn()
{
try
{
if (rs!=null) rs.close();
if (stmt!=null) stmt.close();
if (conn!=null) conn.close();
return true;
}
catch ( SQLException ex )
{
System.err.println("closeConn: " + ex.getMessage());
return false;
}
}


}
 

4、显示论坛的JSP程序


<jsp:useBean id="mybbs" scope="session" class="netzero.mydb" />
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%
int intRowCount;
out.print("显示论坛树形结构");
out.print("<br><br>");
try {
String sql="select * from mybbslist order by rootid desc,depth,fid,bbsid";
ResultSet rs = mybbs.executeQuery(sql);
if (rs.next())
{
rs.last();
intRowCount=rs.getRow();
out.print("论坛树中有");
out.print(intRowCount);
out.print("个叶子节点");
rs.first();
int j=0;
int Depth = 0;
out.print("<ul>");
while(j<intRowCount)
{
int rsDepth=rs.getInt("Depth");
if (rsDepth<Depth)
{
for(int i=1;i<Depth+1;i=i+1)
{
out.print("</ul>");
}
}
rsDepth=rs.getInt("Depth");
if (rsDepth>Depth)
{
out.print("<ul>");
}
out.print("<li>");


String bbssubject=rs.getString("bbssubject");
out.print(bbssubject);
out.print("</li>");
Depth = rs.getInt("Depth");
j=j+1;
rs.next();
}
out.print("</ul>");
}
else
{
out.print("数据库中无记录");
}
}catch (SQLException E) {
out.println("SQLException: " + E.getMessage());
out.println("SQLState: " + E.getSQLState());
out.println("VendorError: " + E.getErrorCode());
}
%>
<% //关闭mysql连接
try {
if(!mybbs.closeConn());
} catch (Exception ex) {
System.err.println("closeConn: " + ex.getMessage());
}
%>
 

posted @ 2006-03-13 02:26 konhon 优华 阅读(373) | 评论 (0)编辑 收藏

Imaging_ToWeb.jsp

<%@ page autoFlush="false"  import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*"%>
<%
    String ImageStr = request.getParameter("ID_Text");
    if(ImageStr==null || ImageStr.equals(""))
    {
        response.setContentType("text/html; charset=gb2312");
 %>
<HTML>
 <HEAD>
  <title>Http://www.lionsky.net</title>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 </HEAD>
 <body>
  <form id="Form1" method="post">
    <input type="text" id="ID_Text" name=ID_Text>
    <input type=submit value="GO">
  </form>
 </body>
</HTML>

<%
       }
       else
       {
        out.clear();
        response.setContentType("image/jpeg");
        response.addHeader("pragma","NO-cache");
        response.addHeader("Cache-Control","no-cache");
        response.addDateHeader("Expries",0);
        int width=300, height=100;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        //以下填充背景颜色
        g.setColor(Color.lightGray);
        g.fillRect(0, 0, width, height);
        String random="random";
        //以下设置前景色
        g.setColor(Color.BLACK);
        g.drawString("Http://www.knowsky.com",10,20);
        g.drawString("Author:Lion[lion-a@sohu.com]",10,40);
        g.drawLine(10,50,290,50);
        g.drawString(ImageStr,10,70);
        g.dispose();
        ServletOutputStream outStream = response.getOutputStream();
        JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
        encoder.encode(image);
        outStream.close();
    }

%>

posted @ 2006-03-13 02:23 konhon 优华 阅读(352) | 评论 (0)编辑 收藏

import java.io.File;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.image.AffineTransformOp;
import javax.imageio.ImageIO;
import java.awt.geom.AffineTransform;

public class UploadImg {
    
    String fromdir;            
// fromdir 图片的原始目录
    String todir;            // todir 处理后的图片存放目录
    String imgfile;            // imgfile 原始图片
    String sysimgfile;        // sysimgfile 处理后的图片文件名前缀

    UploadImg( String fromdirNow, String todirNow, String imgfileNow, String sysimgfileNow )
{
        fromdir 
= fromdirNow;
        todir 
= todirNow;
        imgfile 
= imgfileNow;
        sysimgfile 
= sysimgfileNow;
    }


    
public boolean CreateThumbnail() throws Exception
        
{
        
// fileExtNmae是图片的格式 gif JPG 或png
        
// String fileExtNmae="";
        double Ratio = 0.0;
        File F 
= new File(fromdir,imgfile);
        
if ( !F.isFile() )
            
throw new Exception(F+" is not image file error in CreateThumbnail!");
        
        
//首先判断上传的图片是gif还是JPG ImageIO只能将gif转换为png
        
// if (isJpg(imgfile)){
        
//    fileExtNmae="jpg";
        
//    }
        
//else{
        
//    fileExtNmae="png"; 
        
//    }
        File ThF = new File( todir, sysimgfile + ".jpg" );
        
        BufferedImage Bi 
= ImageIO.read(F);
        
//假设图片宽 高 最大为120 120
        Image Itemp = Bi.getScaledInstance (120,120,Bi.SCALE_SMOOTH);
        
        
if ((Bi.getHeight()>120|| (Bi.getWidth()>120)){
            
if (Bi.getHeight()>Bi.getWidth())
                Ratio 
= 120.0/Bi.getHeight();
            
else
                Ratio 
= 120.0/Bi.getWidth();
            }

        
        AffineTransformOp op 
= new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null);
        Itemp 
= op.filter(Bi, null);
        
try {
            ImageIO.write((BufferedImage)Itemp, 
"jpg", ThF);
            }

        
catch (Exception ex) {
            
throw new Exception(" ImageIo.write error in CreatThum.: "+ex.getMessage()); 
            }

        
return (true);
    }


    
public static void main(String[] args) 
    
{
        UploadImg UI;
        
boolean ss = false;

        
try{
            UI 
= new UploadImg( "d:\\javalearn""d:\\javalearn""ps_high.jpg""ps_low" );
            ss 
= UI.CreateThumbnail();
            
if ( ss ) {
                System.out.println( 
"Success" );
                }

            
else{
                System.out.println( 
"Error" );
                }

        }

        
catch(Exception e){
            System.out.print(e.toString());
        }

    }

}
 
posted @ 2006-03-13 01:29 konhon 优华 阅读(377) | 评论 (0)编辑 收藏

一个优秀的程序员必须熟悉自己使用的编辑器,以前UNIX程序员十分熟悉VI,后来的Linux促进了Emacs的发展,这两种编辑器都是不需要鼠标的支持,而鼠标的出现很大程度上影响了编辑的速度,很多在window下写程序的程序员更慢了,因为更多的依赖鼠标,来回的切换鼠标与键盘浪费了许多时间。
以下是我使用JBuilder的一种模式,希望大家能够给我提出一些其他更好的模式和方便的快捷键。

首先我选择在Preferences里设置KeyMapping为Emacs,因为Emacs有更多方便的功能。我们一般使用CUA,最常用的就是CTRL+C功能了,但是我们有理由舍弃它。


首先说编辑Java最常用的快捷键,这几个在几种Keymapping下是一样的。
Ctrl+h : member-insight,就是我们输了一半代码时,敲这个,编辑器生成提示,也可以在“.”号之后用,然后选择回车。这时候如果选择了Emacs我们就可以用更方便的上下选择,而不用去找上下键。在Emacs里向下是Ctrl+n,向上时Ctrl+p,n代表Next,P代表Previos。在出现member-insight,这两个快捷键还好用,大大方便了输入。
Ctrl+j :expand-template,我们写程序经常要写System.out.println("");,在Jbuilder里我们只需要这样输入Ctrl+j out,然后回车,还有许多其他的,包括main就写Ctrl+j main,这两个个快捷键在两种模式下都可用,在选择的时候也可以用上面说的快捷键上下选择。在Preferences->template中我们还可以订制自己的模版,比如写一段常用版权声明,然后赋一个值.
Ctrl+Shift+j:enter-sync-edit-mode,选中一段代码,然后按下这个键,就进入了sync-edit-mode,这时对这段代码的一个变量的更改,所有这段代码对应的部分都会改变,很有用,这样不会因为做的乱了,漏了改变某个变量名.
Ctrl+Enter:find-definition,Ctrl+Shift+Enter:find-references,对于第一个,如果光标在变量上,这样按会跑到变量生命的地方,如果是方法且有源代码会跑到方法定义处,若是类且有源代码则跑到类定义处.第二个类似,他是找引用的地方。这两个的好处很明显,尤其面对一个不熟悉的系统时,只有这样去查看代码。
Ctrl+Shift+space.光标移到方法的括号里,然后输入,这时会显示参数的提示。
有一个功能通常很有用,就是注释掉一段代码,在CUA里才有,是Ctrl+/,由于Emacs里有别的用处,所以默认的没有设置,所以我通常在设置里改为Ctrl+Shife+/。


以上是最常用的了,然后是emacs特有的内容。
移动光标。上面已经提到了几个,还有以下很有用。
Ctrl+b 后退光标
Ctrl+f 前进光标
Ctrl+v 下一屏
Alt+v 上一屏
Ctrl+e 一行的结尾
Ctrl+a 一行的开头
Alt+m 一行第一个非空格字符之前。
Ctrl+x g 移到指定行。
相信有了这些键之后,手就不很需要移到END,HOME和鼠标上了。

还有是拷贝粘贴,毕竟Ctrl+c,Ctrl+v,Ctrl+x用的太多了,不用总是觉得麻烦,所以我定义了这几个,只是加上了Shift。Emacs本身也有很多类似的功能。
Ctrl+k:剪切一行,Ctrl+y:粘贴回来,而且如果你用了多次Ctrl+k,点Ctrl+y之后可以再选Alt+y,这样可以把以前剪切的内容粘贴回来。
结合这两种模式的拷贝粘贴,可以实现更加灵活的编辑。

再就是查询,先按Ctrl+s,然后输入查询内容,你会发现这是增量查询,你可以马上看到结果。再按Ctrl+s,可以找下一个,Ctrl+r可以找前一个,如果不输入内容,输入两遍Ctrl+s,会查找上一词的内容.


其他的还有的比较需要,像Ctrl+z没有了,要用Ctrl+shift+-。保存要Ctrl+x Ctrl+s,注意,是分别按,按Ctrl+x之后Jbulider左下角会显示,然后再按后一个。Ctrl+x 1,Ctrl+x 2,Ctrl+x 3,看看是干什么的。还有一个就是Ctrl+x Ctrl+u这样可以将选中的代码全部转化为大写。

常用就这些了,还有很多记不住了,看JBuilder设置就知道了。希望大家不要怕麻烦练习一下,以后就会发现提高效率很高,说不定以后用Emacs会更快上手。
posted @ 2006-03-09 01:36 konhon 优华 阅读(324) | 评论 (0)编辑 收藏


  先介绍零三年之前的组织。
  安全焦点
  http://www.xfocus.net/
  1999年8月26日由xundi创立,创始人还有quack和casper。后来stardust,isno,glacier,alert7,benjurry,blackhole,eyas,flashsky,funnywei,refdom,tombkeeper,watercloud,wollf等人也加入了近来。站点主页风格一向是很简单。而该组织目前已经成为国内最权威的信息安全站点,也是最接近世界的一个国内组织。
  目前国内一些技术性比较强的文章都由作者亲自提交到该网站,而国内一些知名的技术属一属二的高手都会去这里的论坛。讨论技术的氛围还可以。而且一些网络安全公司也关注这里的论坛。现在流行的著名扫描工具x-scan的作者就是该组织的成员。
  从2002年开始,每年都举办一次信息安全峰会,吸引了国内外众多知名网络安全专家关注参加。会议涉及众多领域,备受关注。创造了良好的学术交流氛围。在此祝愿这个组织越走越好。
  
  中国红客联盟(以解散)
  http://www.cnhonker.com/
  借这个机会要说明一下,只有这个红客联盟才配的上是真正的红客联盟,并不是因为他申请了什么专利,而是在大家的眼中,只有他才只真正的红客联盟。
  这个组织是由lion在2000年12月组建的。曾再2001年带领众多会员参与中美黑客大战,而名震“江湖”。不过这个时代早已逝去,激情的往事也跟着逝去,留给人们的只有回忆。在2005年的最后一天,lion在主页上宣布正式解散。或许很多人难以理解吧。不过这也自有人家的道理。现在外面有N个红盟,我不屑于去关注他们。在此祝福lion,bkbll等人。对sharpwinner我就懒的说什么了。
  
  中国鹰派
  http://www.chinawill.com/
  与红客联盟一样,都是2000年末创立,并且在2001年参与了中美黑客大战。站长万涛也是早期的绿色兵团成员。并且也参与了在2000年前的几次网络战争。至尽这个组织依然没有倒下。近几年中并没有什么大的事件发生。所以很多人对他都已经没有了什么印象。希望他们越走越好。
  
  邪恶八进制
  http://www.eviloctal.com/
  2002年由冰血封情创立,当时是以小组模式运营的,而发展到现在已经成为一个30多人的信息安全团队。主页做的很简单,但论坛内容非常丰富,涉及领域众多,在下经常去那里下载学术资料,论坛管理的是我所见过的论坛中最好的。而且讨论氛围也很不错。鄙人与那里的几个核心成员有所接触,都是比较热心的,而且技术都是比较强的。祝愿这个组织越办越好。我对这个团队的发展充满期望。
  
  幻影旅团
  http://www.ph4nt0m.org/
  2001年创立,发展到现在组织成员已经达到20人,近期组织推出了WIKI平台(http://www.secwiki.com),内容涉及无线网络,病毒与反病毒,以及黑客技术等众多领域。所有的朋友都可以到那里去涂鸦。2002年开放了论坛,目前论坛的技术讨论氛围还是可以的,而且热心人也是很多的。相信这个组织也能走下去。
  
  白细胞(whitecell)
  http://www.whitecell.org/
  2001年创立的一个纯技术交流站点。当时核心成员有sinister,无花果等人,都是国内著名的高手。在2002年后就关闭了,而最近它由回来了。主页与论坛依然都很简单。希望这次回归会带给大家新的气象。
  
  中华安全网
  http://www.safechina.net/
  2001年4月创立,经过了几次改版后,队伍也发展的比较大,我所熟悉的有yellow,Phoenix等人。到现在,这个网站还在改版中,不过论坛依然开放,在这里还是有讨论空间的。组织内的人技术也都是不错的。希望这次改版后会有大的变化:)。
  
  第八军团
  2000年左右由陈三公子组织成立,后经过多次改版。成为了一个VIP制的站点,资源收集量还是不错的。鄙人经常去那里找代理服务器,更新的速度还是可以的。论坛里讨论气氛不是很热烈。希望今后发展的会更好。
  
  
  
  来说说这两年成立的黑客组织
  BCT
  http://www.cnbct.org/
  2004年底成立的一个专门挖掘脚本漏洞的组织。已经发展了一年了。在下与H4K_B4N,fpx到是有些接触。感觉这个组织是不错的,虽然没有做什么影响力大的事情,但是这种默默研究技术的精神还是值得发扬的,与那些招摇的比,要好多了。网站上收集了一些漏洞资料,这点到是做的比较好。希望继续努力,发展的越来越好。
  
  火狐技术联盟
  http://www.wrsky.com/
  2004年建立的一个组织,致力于破解软件的组织。对于他们组织现在很有争议,也曾经一度遭受到猛烈的拒绝服务攻击,造成网站瘫痪长大数月,到现在是一个论坛系统。对于这个组织,到目前为止还是有争议。希望能早日平息。
  
  黑客技术
  http://www.hackart.org/
  2003年成立的组织,之前使用的是乔客的整站程序,后来就关闭了。也是最近重开的站点,使用的是论坛系统,在下与那里的版主风般的男人和Jambalaya 是好朋友。他们的技术还是不错的。现在论坛人气虽然不怎么高,但显然是老站重开,知道的人还不多,希望日后可以恢复元气,继续发展下去。
  
  
  国内三大商业黑客站点。
  黑客基地
  http://www.hackbase.com/
  2003年成立。站长龙哥。
  
  黑鹰基地
  http://www.3800cc.com/
  由米特创立的商业黑客站点。
  
  华夏黑客同盟
  http://www.77169.com/
  2004年由怪狗创立的站点。
  
  其实黑客组织多的数不胜数,我也只是举几个著名的而已。
  下面来说说人物吧,现在的黑客越来越多,我重点介绍那些专著于系统与漏洞的高手,当然他们对入侵也是有所造诣的。注意,这并不是排名,不是第一个就是最厉害,而最后一个是这里面技术最差的,如果这样想就错了。
  因为有时候想着费劲所以就进入一下牛人的BLOG以及一些论坛去看,这样就可以容易记起来,知道写谁。
  先从这里找http://www.0x557.org/~kkqq/ 然后在从安全焦点的文章和论坛里还有绿盟去找。
  
  
  alert7
  QQ:415451
  email:alert7@xfocus.org
  http://blog.xfocus.net/index.php?blogId=12
  安全焦点核心成员,曾经在补天的。精通linux操作系统,对于linux下的漏洞很有研究。
  
  baozi(fatb)
  QQ:48448355
  http://blog.xfocus.net/index.php?blogId=3
  对windows与linux下的入侵很精通。
  
  CoolQ
  QQ:49462335
  http://coolq.blogdriver.com/coolq/index.html
  email:qufuping@ercist.iscas.ac.cn
  我也是在安全焦点05年的峰会上认识的他,是中科院软件研究所的学生,对于linux非常有研究。在最后一期的Phrack杂志上有他的文章《Hacking Grub for fun and profit》也是在这期杂志中发表文章的三位中国人之一。另外著作还有《ways to hide files in ext2/3 filesystem》
  
  bkbll(dumplogin)
  email:bkbll@cnhonker.com
  http://blog.0x557.org/dumplogin/
  原中国红客联盟核心成员,与lion曾经一起参加过中美黑客大战。对windows与linux都很有研究。著作有《POSIX子系统权限提升漏洞的分析》
  
  flashsky
  QQ:16202253
  email:flashsky@xfocus.org
  http://www.qjclub.net/blog/user1/497/index.html
  安全焦点核心成员。精通windows操作系统上的缓冲区溢出,当年就是他一连公布了微软的N个漏洞,微软就此还谴责过安全焦点。现就职于启明星辰。
  
  Flier Lu
  email:flier@nsfocus.com
  http://flier_lu.blogcn.com/
  绿盟的高手,精通windows操作系统内核,著作有《MS.Net CLR扩展PE结构分》《自动验证 Windows NT 系统服务描述表》《CLR 中代码访问安全检测实现原理》等等。
  
  funnywei
  QQ:25044885
  email:funnywei@xfocus.org
  http://blog.xfocus.net/index.php?blogId=28
  安全焦点核心成员,熟悉windows操作系统。著作有《WindowsXpSp2溢出保护》
  
  glacier
  QQ:1937435
  email:glacier@xfocus.org
  http://blog.xfocus.net/index.php?blogId=15
  安全焦点核心成员,精通windows编程,网络编程,delphi等等。是冰河木马以及著名扫描软件x-scan的作者。
  
  icbm
  email:icbm@0x557.org
  http://blog.0x557.org/icbm/
  精通linux操作系统内核以及漏洞。就职于启明星辰。翻译过文章《Building ptrace injecting shellcodes》是《浅析Linux内核漏洞》的作者。
  
  killer
  QQ:6362602
  email:killer@xfocus.org
  http://blog.xfocus.net/index.php?blogId=2
  安全焦点灌水区版主。精通逆向工程,程序破解。
  
  pjf
  QQ:85863144
  http://pjf.blogcn.com/
  著名的检测工具icesword(冰刃)的作者。很多程序员以及编写rootkit的高手以绕过它的检测工具为目标。熟悉windows操作系统内核。
  
  refdom
  email:refdom@xfocus.org
  http://blog.xfocus.net/index.php?blogId=11
  安全焦点核心成员,《反垃圾邮件技术解析》的作者。似乎曾经是红客联盟的人。
  
  stardust
  QQ:6269692
  email:stardust@xfocus.org
  http://blog.xfocus.net/index.php?blogId=7
  安全焦点核心成员。熟悉linux,精通IDS。著作有《从漏洞及攻击分析到NIDS规则设计》《Bro NIDS的规则》《Snort 2.x数据区搜索规则选项的改进》《Bro NIDS的安装与配置》
  
  sunwear
  QQ:47347
  email:shellcoder@163.com
  http://blog.csdn.net/sunwear/
  邪恶八进制核心成员。精通windows操作系统内核。著作有《利用NTLDR进入RING0的方法及MGF病毒技术分析笔记》《浅析本机API》《智能ABC输入法溢出分析》
  
  swan
  email:swan@xfocus.org
  http://blog.0x557.org/swan/
  对缓冲区溢出漏洞很有研究。最近的ms05051 Microsoft Windows DTC 漏洞的exploit作者就是他。
  
  tombkeeper
  QQ:644909
  http://blog.xfocus.net/index.php?blogId=9
  安全焦点核心成员。精通windows操作系统内核。著作有〈用Bochs调试NTLDR〉〈修改Windows SMB相关服务的默认端口〉等等。在焦点峰会上见到过他,很帅。
  
  watercloud
  http://blog.xfocus.net/index.php?blogId=6
  安全焦点核心成员。精通windows,linux操作系统。著作有〈手工打造微型Win32可执行文件〉〈溢出利用程序和编程语言大杂烩〉〈RSA算法基础->实践〉
  
  zwell
  email:suei8423@163.com
  http://blog.donews.com/zwell
  NB联盟核心成员。精通windows操作系统,著作有〈安全稳定的实现进线程监控〉〈一种新的穿透防火墙的数据传输技术〉
  
  zzzevazzz
  QQ:49322630
  http://zzzevazzz.bokee.com/index.html
  幻影旅团核心成员。原灰色轨迹的人。精通windows操作系统内核。著作有〈Do All in Cmd Shell〉〈无驱动执行ring0代码〉等等。
  
  小榕
  http://www.netxeyes.org
  流光,乱刀,溺雪及命令行SQL注入工具的作者。中国第二代黑客。
  
  lion
  QQ:21509
  email:lion@cnhonker.com
  http://www.cnhonker.com
  原中国红客联盟站长,对缓冲区溢出很有研究。精通linux.windows.
  
  isno
  QQ:1070681
  email:isno@xfocus.org
  安全焦点核心成员,精通缓冲区溢出漏洞。webdav溢出程序的作者。写过IDQ,IDA漏洞溢出的分析等等。
  
  sinister
  QQ:3350124
  email:sinister@whitecell.org
  白细胞成员。精通windows内核,AIX。著作有〈NT 内核的进程调度分析笔记〉〈NT 下动态切换进程分析笔记〉〈AIX 内核的虚拟文件系统框架〉〈AIX 内核的文件操作流程〉
  
  袁哥
  email:yuange@nsfocus.com
  现就职于中联绿盟公司。精通windows操作系统内核以及漏洞利用。
  
  warning3
  email:warning3@nsfocus.com
  msn:warning3@hotmail.com
  精通linux unix内核及漏洞。现就职于中联绿盟公司。著作有〈Heap/BSS 溢出机理分析〉
  
  SoBeIt
  QQ:27324838
  email:kinvis@hotmail.com
  精通windows编程以及系统内核还有溢出。著作有《Windows内核调试器原理浅析》,《挂钩Windows API》等等翻译过《在NT系列操作系统里让自己“消失”》
  
  xhacker
  QQ:66680800
  精通渗透入侵以及脚本入侵。著作有〈详述虚拟网站的权限突破及防范〉,〈如何利用黑客技术跟踪并分析一名目标人物〉
  
  eyas
  QQ:320236
  email:eyas@xfocus.org
  安全焦点核心成员,熟悉windows操作系统,windows编程。著作有《NT平台拨号连接密码恢复原理》,《WS_FTP FTPD STAT命令远程溢出分析》
  
  孤独剑客
  QQ:5385757
  email:Janker@Hackbase.Com
  Http://Www.Janker.Org
  精通编程。以及入侵技术。winshell的作者。中国第二代黑客。
  
  sunx
  QQ:239670
  http://www.sunx.org
  对溢出有研究,写过IDA漏洞和printer漏洞的溢出程序。精通汇编。著作很多。
  
  analysist
  QQ:20116789
  精通数据库与脚本入侵。早年对跨站脚本以及很多脚本漏洞很有研究。著作有《跨站脚本执行漏洞详解》,《BBS2000和BBS3000所存在的安全隐患》
  
  Frankie
  http://cnns.net
  精通windows操作系统,与linux。中国第一代黑客。
  
  rootshell(fzk)
  QQ:1734398
  http://www.ns-one.com
  精通windows操作系统,熟悉缓冲区溢出漏洞。老一代的黑客。著作有〈最近发现的一个Distributed File System服务远程溢出问题〉。
  
  PP
  QQ:82928
  精通windows操作系统。名言:如果想飞得高,就该把地平线忘掉。
  
  tianxing
  OICQ:911189
  网站:http://www.tianxing.org/
  精通windows操作系统与漏洞利用。RPC漏洞利用程序以及网络刺客,网络卫兵的作者。
  
  grip2
  QQ:1007270
  精通linux操作系统。著作有〈一个Linux病毒原型分析〉
  
  san
  QQ:56941
  精通windows操作系统以及linux。而且对windows CE很有研究。phrack最后一期的杂志中,刊登过他的文章。
  
  hume
  QQ:8709369
  精通汇编以及windows操作系统。著作有《SEH in ASM 的研究》
  
  backend
  email:backend@antionline.org
  精通linux操作系统。翻译过很多文章,是绿盟的高手。不过已经几年没见在网络上游走了。到是现实中偶尔看到他。
  
  Adam
  QQ:15898
  email:adam@nsfocus.com
  绿盟的高手,windows安全版版主。精通windows操作系统。
  
  ipxodi
  QQ:16175535
  email:ipxodi@nsfocus.com
  很长时间没看见他了。精通windows操作系统以及缓冲区溢出。著作有〈window系统下的堆栈溢出〉〈Windows 2000缓冲区溢出入门〉。这些文章都是造福了很多后辈的。
  
  zer9
  QQ:573369
  email:zer9@21cn.com
  也是很长时间没见到了。早期写过不少文章和工具。也是老一辈的革命家。
  
  whg
  QQ:312016
  email:whg0001@163.com
  http://WWW.CNASM.COM
  不知道算不算白细胞的成员,呵呵。病毒高手。精通汇编。写过不少软件,例如lan下sniff QQ的工具以及sniff工具等等,可以到他的主页上去看。
  
  lg_wu
  email:lgwu2000@sina.com
  在绿盟论坛和安全焦点都见过,对linux精通的很。技术不一般的说。
  
  wowocock
  QQ:37803144
  精通windows操作系统内核,汇编。在驱动开发网以及cvc 轻描淡写见过,技术不一般。著作很多,但是见到的很少。不知道为什么这么好的文章没人转!
  
  baiyuanfan
  QQ:51449276
  这小子在峰会上给我的印象很深。在技术上很下工夫。对windows也算有研究了。著作当然是byshell了。
  
  vxk
  QQ:355852911
  汇编技术很硬,精通windows内核。经常在cvc论坛看到他。
  
  冰血封情
  QQ:124839278
  邪恶八进制的创始人。中国第四代黑客。感觉这个人很不错。对他的组织比较认可。技术上面还可以。
  
  Polymorphours(shadow3)
  QQ:120974745
  白细胞成员。以前叫shadow3.好象换名字了。熟悉windows操作系统,以及缓冲区溢出。著作有〈MS05-010许可证记录服务漏洞允许执行代码的分析〉〈Media Player 8.0 vulnerability〉等等。
  
  e4gle
  QQ:1949479
  白细胞成员。老一代的黑客。精通linux系统内核以及病毒技术,缓冲区溢出。著作有〈程序攻击原理〉〈Unix系统病毒概述〉〈高级缓冲溢出的使用〉
  
  bingle
  QQ:45671342
  很早就认识的一个兄弟了。著作不少,很多都很实用。
  
  wollf
  QQ:228095
  glacier的老婆。一定不能让他知道我是谁,要不我就死定了。她是黑客 ;) 美女黑客!
  
  goodwell
  中国早期著名黑客组织-绿色兵团 创始人之一。
  
  yellow
  QQ:12398890
  中华安全网核心成员。熟悉缓冲区溢出与windows编程。
  
  江海客
  QQ:741534
  曾经参加某个会议的时候见过他,聊的还可以,后来在焦点峰会时又碰了面。此人是反病毒方面的高手。
  
  icmb
  启明星辰linux方面的高手。对于漏洞方面很有研究。不带眼睛更漂亮……
posted @ 2005-12-23 03:58 konhon 优华 阅读(4051) | 评论 (0)编辑 收藏

仅列出标题
共21页: First 上一页 5 6 7 8 9 10 11 12 13 下一页 Last