??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲区不卡顿区在线观看,国产亚洲高清不卡在线观看,在线观看亚洲专区http://www.tkk7.com/kieliy/zh-cnMon, 12 May 2025 11:42:53 GMTMon, 12 May 2025 11:42:53 GMT60|吧配机Ҏ(gu)http://www.tkk7.com/kieliy/archive/2006/04/05/39430.html瘦猴瘦猴Wed, 05 Apr 2006 08:54:00 GMThttp://www.tkk7.com/kieliy/archive/2006/04/05/39430.htmlhttp://www.tkk7.com/kieliy/comments/39430.htmlhttp://www.tkk7.com/kieliy/archive/2006/04/05/39430.html#Feedback5http://www.tkk7.com/kieliy/comments/commentRss/39430.htmlhttp://www.tkk7.com/kieliy/services/trackbacks/39430.html l济型网吧整合方?/span>


: 客户?/font>
CPU: AMD 2800+
L : BIOSTAR TF6100-M7 ( 可用板载显?/font> )
内存Q?/font> 1G
|卡 : 外接 RTL8139
甉|Q?/font> 300W Q要求稳定)
?/font> :DOE 服务?/font> 一?/font> 60PCS
CPU: AMD2800+
L : BIOSTAR TF6100-M7 可用集成显?/font>
内存Q?/font> 1GB
: IDE   80G /SATA80G Q服务器pȝQ?/font>
|卡 : DOE NetDisk |络电子盘pȝ理?/font>
甉|Q?/font> 350W Q要求稳定)
键盘Q?/font> PS/2 Q不能用 USB Q?/font>
三:游戏 ( 文g ) ׃n服务?/font>
CPU: INTEL P4 506
L : BIOSTAR 945P-A7 支持 DDR2 双通道
内存Q?/font> 2G
: IDE 80G Q服务器pȝQ?/font>
SATA120G
Q?/font> 2RAID0 Q游戏)
SATA80G
Q?/font> 2RAID0 Q缓存写入)
RAID
?/font> : PROMISE TX4200
|卡 : 千兆
甉|Q?/font> 400W Q要求稳定)

?/font> : 交换机:
核心交换?/font> : 华ؓ 8 口千兆交换机 1208D
接入层交换机Q?/font>
华ؓ 1026T Q?/font> 24 口百?/font> +2 口千兆) 6PCS
或者磊U?/font> 7226NS Q?/font> 24 口百?/font> +2 口千兆) 6PCS
六类Uѝ水晶头Q?/font> AMP 、郎讯、北?/font> ( 要确保是正品 )
点评 : 攚w|比较适合较低成本的网吧解x?/font> . 使用 1G 内存 +TF6100 能够非常好的体现集成?/font> 6200TC 昑֍的性能 ! _满现网吧里游戏的需?/font> . 游戏服务器可以解军_文g , 多游戏的需?/font> . 是一ƾ性h(hun)非常高的|络整合

教育型网l整合方?/span>

: 客户?/font>
CPU: INTEL 331
L : BIOSTAR P4M800-M7A 可用板栽网?/font>
内存Q?/font> 512M
昑֍ : 使用集成昑֍
甉|Q?/font> 300W Q要求稳定)
?/font> :DOE 服务?/font> 一?/font> 60PCS
CPU: AMD2800+
L : BIOSTAR TF6100-M7 可用集成显?/font> !!
内存Q?/font> 1GB
: IDE   150G /SATA150G Q服务器pȝQ?/font>
|卡 : DOE NetDisk |络电子盘pȝ理?/font>
甉|Q?/font> 350W Q要求稳定)
键盘Q?/font> PS/2 Q不能用 USB Q?/font>
?/font> : 交换机:
核心交换?/font> : 华ؓ 8 口千兆交换机 1208D
接入层交换机Q?/font>
华ؓ 1026T Q?/font> 24 口百?/font> +2 口千兆)科 7226NS Q?/font> 24 口百?/font> +2 口千兆) 6PCS
六类Uѝ水晶头Q?/font> AMP 、郎讯、北?/font> ( 要确保是正品 )
点评 : 该网l方?/font> , 在保证运行速度和稳定性的前提?/font> , 极大的节省网l成?/font> , 同时对于学校老师的管理和l护 , 能够节省很多的时间和_֊ . 易于理和维?/font> !

 

豪华型网吧整合方?/span>


: 客户?/font>
CPU: AMD 3000+ 939
L : BIOSTAR TF4U
内存Q?/font> 1G ( 大性能好 )
昑֍ : BIOSTAR 7300GS
甉|Q?/font> 300W Q要求稳定)
?/font> :DOE 服务?/font>
CPU: INTEL 341
L : BIOSTAR 915P-A7
内存Q?/font> 1GB
: IDE   80G /SATA80G Q服务器pȝQ?/font>
|卡 : DOE NetDisk |络电子盘pȝ理?/font>
甉|Q?/font> 350W Q要求稳定)
键盘Q?/font> PS/2 Q不能用 USB Q?/font>
三:游戏׃n服务?/font>
CPU: INTEL P4 506
L : INTEL 原装 915GAV
内存Q?/font> 2G Q金士顿Q?/font>
: IDE 80G Q服务器pȝQ?/font>
SATA120G
Q?/font> 2RAID0 Q游戏) RAID ?/font> : PROMISE TX4300
SATA120G
Q?/font> 2RAID0 Q缓存写入) RAID ?/font> : PROMISE TX4300
|卡 : 千兆
甉|Q?/font> 400W Q航嘉)
?/font> : 交换机:
核心交换?/font> : 华ؓ 8 口千兆交换机 1208D
接入层交换机Q?/font>
华ؓ 1026T Q?/font> 24 口百?/font> +2 口千兆) 6PCS
或者磊U?/font> 7226NS Q?/font> 24 口百?/font> +2 口千兆) 6PCS
六类Uѝ水晶头Q?/font> AMP 、郎讯、北?/font> ( 要确保是正品 )

点评 : 该整合方案集中体现游戏服务器寚w性能客户端的支持 ! 满对视?/font> , 速度要求高的用户 .

 

 



瘦猴 2006-04-05 16:54 发表评论
]]>
有感:应聘JavaW试时可能出现问题及其答?/title><link>http://www.tkk7.com/kieliy/archive/2005/12/11/23377.html</link><dc:creator>瘦猴</dc:creator><author>瘦猴</author><pubDate>Sun, 11 Dec 2005 10:52:00 GMT</pubDate><guid>http://www.tkk7.com/kieliy/archive/2005/12/11/23377.html</guid><wfw:comment>http://www.tkk7.com/kieliy/comments/23377.html</wfw:comment><comments>http://www.tkk7.com/kieliy/archive/2005/12/11/23377.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.tkk7.com/kieliy/comments/commentRss/23377.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kieliy/services/trackbacks/23377.html</trackback:ping><description><![CDATA[前段旉因ؓ要参加一个笔试,在准备期间在|上扑ֈ了两条关于笔试题目的文章Q其中一ؓ<<有感:应聘JavaW试时可能出现问?gt;>Q还有一忘了名字,d深受启发?BR>        在寻找这些答案的q程中,我将相关{案记录下来Q就形成了以下这些东ѝ需要说明的是以下答案肯定有很多不完整甚至错误的地方Q需要各位来更正与完善它Q千万不要扔我的鸡蛋啊?BR>       希望本文能够l即奔赴笔试考场的同仁些许帮助,更希望更多的人加入到攉整理W试题与完善{案的这些工作中来,为大家更好的获得工作Z做一点A献?BR>       在此感谢前面两文的作者的对笔试题目的攉与整理?BR>       如有M意见与徏议请通过QQ:6045306,Mail:huijunzi@21cn.com与我联系?nbsp;<BR>Java基础斚w:<BR><BR>1、作用域public,private,protected,以及不写时的区别<BR>{:区别如下Q?BR>作用?nbsp;          当前c?nbsp;      同一package  子孙c?nbsp;      其他package<BR>public            ?nbsp;             ?nbsp;                 ?nbsp;            ?BR>protected        ?nbsp;             ?nbsp;                 ?nbsp;            ×<BR>friendly          ?nbsp;             ?nbsp;                  ×            ×<BR>private           ?nbsp;             ×                   ×            ×<BR>不写旉认ؓfriendly<BR><BR>2、ArrayList和Vector的区?HashMap和Hashtable的区?BR>{:ArrayList与Vector主要从二斚w来说.<BR>一.同步?Vector是线E安全的Q也是说是同步的,而ArrayList是线E序不安全的Q不是同步的<BR>?数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一?BR>HashMap与HashTable主要从三斚w来说?BR>一.历史原因:Hashtable是基于陈旧的DictionarycȝQHashMap是Java 1.2引进的Map接口的一个实?BR>?同步?Hashtable是线E安全的Q也是说是同步的,而HashMap是线E序不安全的Q不是同步的<BR>?|只有HashMap可以让你空gZ个表的条目的key或value<BR><BR>3、char型变量中能不能存贮一个中文汉?Z?<BR>{:是能够定义成Z个中文的Q因为java中以unicode~码Q一个char?6个字节,所以放一个中文是没问题的<BR><BR>4、多U程有几U实现方?都是什?同步有几U实现方?都是什?<BR>{:多线E有两种实现Ҏ(gu)Q分别是l承ThreadcM实现Runnable接口<BR>同步的实现方面有两种Q分别是synchronized,wait与notify<BR><BR>5、承时候类的执行顺序问?一般都是选择?问你会打印Z?<BR>{?父类Q?BR>package test;<BR>public class  FatherClass<BR>{<BR>    public FatherClass()<BR> {<BR>  System.out.println("FatherClass Create");<BR> }<BR>}<BR>子类:<BR>package test;<BR>import test.FatherClass;<BR>public class  ChildClass extends FatherClass<BR>{<BR> public ChildClass()<BR> {<BR>  System.out.println("ChildClass Create");<BR> }<BR> public static void main(String[] args) <BR> {<BR>  FatherClass fc = new FatherClass();<BR>  ChildClass cc = new ChildClass();<BR> }<BR>}<BR>输出l果Q?BR>C:\>java test.ChildClass<BR>FatherClass Create<BR>FatherClass Create<BR>ChildClass Create<BR><BR>6、内部类的实现方?<BR>{:CZ代码如下Q?BR>package test;<BR>public class  OuterClass<BR>{<BR> private class InterClass<BR> {<BR>  public InterClass()<BR>  {<BR>   System.out.println("InterClass Create");<BR>  }<BR> }<BR> public OuterClass()<BR> {<BR>  InterClass ic = new InterClass();<BR>  System.out.println("OuterClass Create");<BR> }<BR> public static void main(String[] args) <BR> {<BR>  OuterClass oc = new OuterClass();<BR> }<BR>}<BR>输出l果:<BR>C:\>java test/OuterClass<BR>InterClass Create<BR>OuterClass Create<BR>再一个例题:<BR>public class OuterClass { <BR>  private double d1 = 1.0; <BR>    //insert code here <BR>} <BR>You need to insert an inner class declaration at line 3. Which two inner class declarations are <BR><BR>valid?(Choose two.) <BR>A. class InnerOne{<BR>     public static double methoda() {return d1;}<BR>   } <BR>B. public class InnerOne{<BR>     static double methoda() {return d1;}<BR>   } <BR>C. private class InnerOne{<BR>     double methoda() {return d1;}<BR>   } <BR>D. static class InnerOne{<BR>     protected double methoda() {return d1;}<BR>   } <BR>E. abstract class InnerOne{<BR>     public abstract double methoda();<BR>   } <BR>说明如下Q?BR>一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员?nbsp;?nbsp;A、B ?BR>?静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错?nbsp;<BR><BR>?nbsp;D ?BR>?非静态内部类的非静态成员可以访问外部类的非静态变量?nbsp;?nbsp;C 正确<BR>?{案为C、E<BR><BR>7、垃圑֛收机?如何优化E序?<BR>希望大家补上Q谢?BR><BR>8、float型float f=3.4是否正确?<BR>{?不正。精度不准确,应该用强制类型{换,如下所C:float f=(float)3.4<BR><BR>9、介lJAVA中的Collection FrameWork(包括如何写自q数据l构)? <BR>{:Collection FrameWork如下Q?BR>Collection<BR>├List<BR>│├LinkedList<BR>│├ArrayList<BR>│└Vector<BR>│ └Stack<BR>└Set<BR>Map<BR>├Hashtable<BR>├HashMap<BR>└WeakHashMap<BR>Collection是最基本的集合接口,一个Collection代表一lObjectQ即Collection的元素(ElementsQ?BR>Map提供key到value的映?BR><BR>10、Java中异常处理机Ӟ事g机制Q?BR><BR>11、JAVA中的多Ş与承?<BR>希望大家补上Q谢?BR><BR>12、抽象类与接口?<BR>{:抽象cM接口都用于抽象,但是抽象c?JAVA?可以有自q部分实现Q而接口则完全是一个标?同时有多重承的功能)?nbsp;<BR><BR>13、Java 的通信~程Q编E题(或问{?Q用JAVA SOCKET~程Q读服务器几个字W,再写入本地显C? <BR>{?Server端程?<BR>package test;<BR>import java.net.*;<BR>import java.io.*;<BR><BR>public class Server<BR>{<BR> private ServerSocket ss;<BR> private Socket socket;<BR> private BufferedReader in;<BR> private PrintWriter out;<BR> public Server()<BR> {<BR>  try<BR>  {<BR>   ss=new ServerSocket(10000);<BR>   while(true)<BR>   {<BR>    socket = ss.accept();<BR>    String RemoteIP = socket.getInetAddress().getHostAddress();<BR>    String RemotePort = ":"+socket.getLocalPort();<BR>    System.out.println("A client come in!IP:"+RemoteIP+RemotePort);<BR>    in = new BufferedReader(new <BR><BR>InputStreamReader(socket.getInputStream()));<BR>    String line = in.readLine();<BR>    System.out.println("Cleint send is :" + line);<BR>    out = new PrintWriter(socket.getOutputStream(),true);<BR>    out.println("Your Message Received!");<BR>    out.close();<BR>    in.close();<BR>    socket.close();<BR>   }<BR>  }catch (IOException e)<BR>  {<BR>   out.println("wrong");<BR>  }<BR> }<BR> public static void main(String[] args)<BR> {<BR>  new Server();<BR> }<BR>};<BR>Client端程?<BR>package test;<BR>import java.io.*;<BR>import java.net.*;<BR><BR>public class Client<BR>{<BR> Socket socket;<BR> BufferedReader in;<BR> PrintWriter out;<BR> public Client()<BR> {<BR>  try<BR>  {<BR>   System.out.println("Try to Connect to 127.0.0.1:10000");<BR>   socket = new Socket("127.0.0.1",10000);<BR>   System.out.println("The Server Connected!");<BR>   System.out.println("Please enter some Character:");<BR>   BufferedReader line = new BufferedReader(new <BR><BR>InputStreamReader(System.in));<BR>   out = new PrintWriter(socket.getOutputStream(),true);<BR>   out.println(line.readLine());<BR>   in = new BufferedReader(new InputStreamReader(socket.getInputStream()));<BR>   System.out.println(in.readLine());<BR>   out.close();<BR>   in.close();<BR>   socket.close();<BR>  }catch(IOException e)<BR>  {<BR>   out.println("Wrong");<BR>  }<BR> }<BR> public static void main(String[] args)<BR> {<BR>  new Client();<BR> }<BR>};<BR><BR>14、用JAVA实现一U排序,JAVAcd现序列化的方?二种)Q?nbsp;如在COLLECTION框架中,实现比较要实C么样的接口?<BR>{?用插入法q行排序代码如下<BR>package test;<BR>import java.util.*;<BR>class  InsertSort<BR>{<BR> ArrayList al;<BR> public InsertSort(int num,int mod)<BR> {<BR>  al = new ArrayList(num);<BR>  Random rand = new Random();<BR>  System.out.println("The ArrayList Sort Before:");<BR>  for (int i=0;i<num ;i++ )<BR>  {<BR>   al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));<BR>   System.out.println("al["+i+"]="+al.get(i));<BR>  }<BR> }<BR> public void SortIt()<BR> {<BR>  Integer tempInt;<BR>  int MaxSize=1;<BR>  for(int i=1;i<al.size();i++)<BR>  {<BR>       tempInt = (Integer)al.remove(i);<BR>    if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())<BR>    {<BR>     al.add(MaxSize,tempInt);<BR>     MaxSize++;<BR>     System.out.println(al.toString());<BR>    } else {<BR>     for (int j=0;j<MaxSize ;j++ )<BR>     {<BR>      if <BR><BR>(((Integer)al.get(j)).intValue()>=tempInt.intValue())<BR>      {<BR>       al.add(j,tempInt);<BR>       MaxSize++;<BR>       System.out.println(al.toString());<BR>       break;<BR>      }<BR>     }<BR>    }<BR>  }<BR>  System.out.println("The ArrayList Sort After:");<BR>  for(int i=0;i<al.size();i++)<BR>  {<BR>   System.out.println("al["+i+"]="+al.get(i));<BR>  }<BR> }<BR> public static void main(String[] args) <BR> {<BR>  InsertSort is = new InsertSort(10,100);<BR>  is.SortIt();<BR> }<BR>}<BR>JAVAcd现序例化的方法是实现java.io.Serializable接口<BR>Collection框架中实现比较要实现Comparable 接口?nbsp;Comparator 接口<BR><BR>15、编E:~写一个截取字W串的函敎ͼ输入Z个字W串和字节数Q输Zؓ按字节截取的字符丌Ӏ?nbsp;但是要保证汉字不被截半个Q如“我ABC?Q应该截为“我AB”,输入“我ABC汉DEF”,6Q应该输Zؓ“我ABC”而不是“我ABC+汉的半个”?nbsp;<BR>{:代码如下Q?BR>package test;<BR><BR>class  SplitString<BR>{<BR> String SplitStr;<BR> int SplitByte;<BR> public SplitString(String str,int bytes)<BR> {<BR>  SplitStr=str;<BR>  SplitByte=bytes;<BR>  System.out.println("The String is:'"+SplitStr+"';SplitBytes="+SplitByte);<BR> }<BR> public void SplitIt()<BR> {<BR>  int loopCount;<BR>  <BR><BR>loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split<BR><BR>Byte+1);<BR>  System.out.println("Will Split into "+loopCount);<BR>  for (int i=1;i<=loopCount ;i++ )<BR>  {<BR>   if (i==loopCount){<BR>    <BR><BR>System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));<BR>   } else {<BR>    <BR><BR>System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));<BR>   }<BR>  }<BR> }<BR> public static void main(String[] args) <BR> {<BR>  SplitString ss = new SplitString("test中dd文dsaf中男?443n中国43中国?BR><BR>0ewldfls=103",4);<BR>  ss.SplitIt();<BR> }<BR>}<BR><BR>16、JAVA多线E编E?nbsp;用JAVA写一个多U程E序Q如写四个线E,二个?Q二个对一个变量减一Q输出?nbsp;<BR>希望大家补上Q谢?BR><BR>17、STRING与STRINGBUFFER的区别?nbsp;<BR>{:STRING的长度是不可变的QSTRINGBUFFER的长度是可变的。如果你对字W串中的内容l常q行操作Q特别是内容要修Ҏ(gu)Q那么用StringBufferQ如果最后需要StringQ那么用StringBuffer的toString()Ҏ(gu)<BR><BR>Jsp斚w<BR><BR>1、jsp有哪些内|对?作用分别是什?<BR>{?JSP共有以下9U基本内|组Ӟ可与ASP?U内部组件相对应Q: <BR> request 用户端请求,此请求会包含来自GET/POSTh的参?nbsp;<BR>   response |页传回用户端的回应 <BR>   pageContext |页的属性是在这里管?nbsp;<BR>   session 与请求有关的会话?nbsp;<BR>   application servlet 正在执行的内?nbsp;<BR>   out 用来传送回应的输出<BR>   config servlet的构枉?nbsp;<BR>   page JSP|页本n <BR>   exception 针对错误|页Q未捕捉的例?nbsp;<BR><BR>2、jsp有哪些动?作用分别是什?<BR>{?JSP共有以下6U基本动?BR>   jsp:includeQ在面被请求的时候引入一个文件?nbsp;<BR>   jsp:useBeanQ寻找或者实例化一个JavaBean?nbsp;<BR>   jsp:setPropertyQ设|JavaBean的属性?nbsp;<BR>   jsp:getPropertyQ输出某个JavaBean的属性?nbsp;<BR>   jsp:forwardQ把h转到一个新的页面?nbsp;<BR>   jsp:pluginQ根据浏览器cd为Java插g生成OBJECT或EMBED标记<BR><BR>3、JSP中动态INCLUDE与静态INCLUDE的区别? <BR>{:动态INCLUDE用jsp:include动作实现<BR>   <jsp:include page="included.jsp" flush="true" />它L会检查所含文件中的变化,适合用于包含动态页面,q且可以带参?BR>   静态INCLUDE用include伪码实现,定不会检查所含文件的变化Q适用于包含静态页?BR>   <%@ include file="included.htm" %><BR><BR>4、两U蟩转方式分别是什?有什么区?<BR>{:有两U,分别为:<BR>  <jsp:include page="included.jsp" flush="true"><BR>  <jsp:forward page= "nextpage.jsp"/><BR>  前者页面不会{向include所指的面Q只是显C늚l果Q主面q是原来的页面。执行完后还会回来,相当于函数调用。ƈ且可以带参数.后者完全{向新面Q不会再回来。相当于go to 语句?BR><BR>Servlet斚w<BR><BR>1、说一说Servlet的生命周?<BR>{?servlet有良好的生存期的定义Q包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroyҎ(gu)表达?nbsp;<BR><BR>2、Servlet版本?忘了问的是哪两个版本?的不?<BR>希望大家补上Q谢?BR><BR>3、JAVA SERVLET API中forward() 与redirect()的区别?<BR>{?前者仅是容器中控制权的转向Q在客户端浏览器地址栏中不会昄{向后的地址Q后者则是完全的跌{Q浏览器会得到跌{的地址Qƈ重新发送请求链接。这P从浏览器的地址栏中可以看到跌{后的链接地址。所以,前者更加高效,在前者可以满需要时Q尽量用forward()Ҏ(gu)Qƈ且,q样也有助于隐藏实际的链接。在有些情况下,比如Q需要蟩转到一个其它服务器上的资源Q则必须使用sendRedirect()Ҏ(gu)?nbsp;<BR><BR>4、Servlet的基本架?BR>public class ServletName extends HttpServlet {<BR>  public void doPost(HttpServletRequest request, HttpServletResponse response) throws<BR>      ServletException, IOException  {<BR>      }<BR>  public void doGet(HttpServletRequest request, HttpServletResponse response) throws<BR>      ServletException, IOException  {<BR>      }<BR>}<BR><BR>Jdbc、Jdo斚w<BR><BR>1、可能会让你写一DJdbcqOracle的程?q实现数据查?<BR>{?E序如下Q?BR>package hello.ant;<BR>import java.sql.*;<BR>public class  jdbc<BR>{<BR> String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl";<BR> String theUser="admin";<BR> String thePw="manager";<BR> Connection c=null;<BR> Statement conn;<BR> ResultSet rs=null;<BR> public jdbc() <BR> {<BR>  try{<BR>    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <BR>          c = DriverManager.getConnection(dbUrl,theUser,thePw);<BR>    conn=c.createStatement();<BR>  }catch(Exception e){<BR>   e.printStackTrace();<BR>  }<BR> }<BR> public boolean executeUpdate(String sql)<BR> {<BR>   try<BR>   {<BR>     conn.executeUpdate(sql);<BR>     return true;<BR>   }<BR>   catch (SQLException e)<BR>   {<BR>     e.printStackTrace();<BR>     return false;<BR>   }<BR> }<BR> public ResultSet executeQuery(String sql)<BR> {<BR>   rs=null;<BR>   try<BR>   {<BR>     rs=conn.executeQuery(sql);<BR>   }<BR>   catch (SQLException e)<BR>   {<BR>     e.printStackTrace();<BR>   }<BR>   return rs;<BR> }<BR> public void close()<BR> {<BR>   try<BR>   {<BR>     conn.close();<BR>     c.close();<BR>   }<BR>   catch (Exception e)<BR>   {<BR>     e.printStackTrace();<BR>   }<BR> }<BR> public static void main(String[] args)<BR> {<BR>  ResultSet rs;<BR>  jdbc conn = new jdbc();<BR>  rs=conn.executeQuery("select * from test");<BR>  try{<BR>  while (rs.next())<BR>  {<BR>   System.out.println(rs.getString("id"));<BR>   System.out.println(rs.getString("name"));<BR>  }<BR>  }catch(Exception e)<BR>  {<BR>   e.printStackTrace();<BR>  }<BR> }<BR>}<BR><BR>2、Class.forName的作?Z么要?<BR>{:调用该访问返回一个以字符串指定类名的cȝ对象?BR><BR>3、Jdo是什?<BR>{?JDO是Java对象持久化的新的规范Qؓjava data object的简U?也是一个用于存取某U数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发h员来_存储数据对象完全不需要额外的代码Q如JDBC API的用)。这些繁琐的例行工作已经转移到JDO产品提供商n上,使开发h员解脱出来,从而集中时间和_֊在业务逻辑上。另外,JDO很灵z,因ؓ它可以在M数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用Q提供到M数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMSQ等{,使得应用可移植性更强?BR><BR>4、在ORACLE大数据量下的分页解决Ҏ(gu)。一般用截取IDҎ(gu)Q还有是三层嵌套Ҏ(gu)?nbsp;<BR>{?一U分|?BR><%<BR>  int i=1;<BR>  int numPages=14;<BR>  String pages = request.getParameter("page") ;<BR>  int currentPage = 1;<BR>  currentPage=(pages==null)?(1):{Integer.parseInt(pages)}<BR>  sql = "select count(*) from tables";<BR>  ResultSet rs = DBLink.executeQuery(sql) ;<BR>  while(rs.next()) i = rs.getInt(1) ;<BR>  int intPageCount=1;<BR>  intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);<BR>  int nextPage ;<BR>  int upPage;<BR>  nextPage = currentPage+1;<BR>  if (nextPage>=intPageCount) nextPage=intPageCount;<BR>  upPage = currentPage-1;<BR>  if (upPage<=1) upPage=1;<BR>  rs.close();<BR>  sql="select * from tables";<BR>  rs=DBLink.executeQuery(sql);<BR>  i=0;<BR>  while((i<numPages*(currentPage-1))&&rs.next()){i++;}<BR>%><BR>//输出内容<BR>//输出页q接<BR>合计:<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1">W一?lt;/a><a <BR><BR>href="List.jsp?page=<%=upPage%>">上一?lt;/a><BR><%<BR>  for(int j=1;j<=intPageCount;j++){<BR>  if(currentPage!=j){<BR>%><BR>  <a href="list.jsp?page=<%=j%>">[<%=j%>]</a> <BR><%<BR>  }else{ <BR>  out.println(j);<BR>  }<BR>  }<BR>%><BR><a href="List.jsp?page=<%=nextPage%>">下一?lt;/a><a href="List.jsp?page=<%=intPageCount%>">最后页<BR><BR></a><BR><BR><BR>Xml斚w<BR><BR>1、xml有哪些解析技?区别是什?<BR>{?有DOM,SAX,STAX{?BR>DOM:处理大型文g时其性能下降的非常厉実뀂这个问题是由DOM的树l构所造成的,q种l构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随问SAX:不现于DOM,SAX是事仉动型的XML解析方式。它序dXML文gQ不需要一ơ全部装载整个文件。当遇到像文件开_文档l束Q或者标{ּ头与标签l束Ӟ它会触发一个事Ӟ用户通过在其回调事g中写入处理代码来处理XML文gQ适合对XML的顺序访?BR>STAX:Streaming API for XML (StAX)<BR><BR>2、你在项目中用到了xml技术的哪些斚w?如何实现?<BR>{?用到了数据存贮,信息配置两方面。在做数据交换^台时Q将不能数据源的数据l装成XML文gQ然后将XML文g压羃打包加密后通过|络传送给接收者,接收解密与解压羃后再同XML文g中还原相关信息进行处理。在做Y仉|时Q利用XML可以很方便的q行QY件的各种配置参数都存贮在XML文g中?BR><BR>3、用jdom解析xml文g时如何解决中文问?如何解析?<BR>{?看如下代?用编码方式加以解?BR>package test;<BR>import java.io.*;<BR>public class DOMTest<BR>{<BR> private String inFile = "c:\\people.xml";<BR> private String outFile = "c:\\people.xml"; <BR> public static void main(String args[])<BR> {<BR>     new DOMTest();<BR>    }<BR> public DOMTest()<BR> {<BR>  try <BR>     { <BR>      javax.xml.parsers.DocumentBuilder builder = <BR>       <BR><BR>javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();<BR>      org.w3c.dom.Document doc = builder.newDocument();<BR>      org.w3c.dom.Element root = doc.createElement("老师");<BR>      org.w3c.dom.Element wang = doc.createElement("?);<BR>   org.w3c.dom.Element liu = doc.createElement("?);<BR>      wang.appendChild(doc.createTextNode("我是王老师"));<BR>      root.appendChild(wang);<BR>      doc.appendChild(root);<BR>      javax.xml.transform.Transformer transformer = <BR>       javax.xml.transform.TransformerFactory.newInstance().newTransformer();<BR>      transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312"); <BR>      transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");   <BR><BR>   <BR>      transformer.transform(new javax.xml.transform.dom.DOMSource(doc),<BR>            new <BR><BR>javax.xml.transform.stream.StreamResult(outFile));<BR>     }<BR>     catch (Exception e) <BR>     {<BR>      System.out.println (e.getMessage());<BR>     }<BR>    }<BR>}<BR><BR>4、编E用JAVA解析XML的方?<BR>{?用SAX方式解析XMLQXML文g如下Q?BR><?xml version="1.0" encoding="gb2312"?> <BR><person> <BR>  <name>王小?lt;/name> <BR>  <college>信息学院</college>   <BR>  <telephone>6258113</telephone> <BR>  <notes>?1955q生,博士Q?5q调入v南大?lt;/notes> <BR> </person> <BR> 事g回调cSAXHandler.java<BR> import java.io.*; <BR>import java.util.Hashtable; <BR>import org.xml.sax.*; <BR>public class SAXHandler extends HandlerBase <BR>  { <BR>  private Hashtable table = new Hashtable(); <BR>  private String currentElement = null; <BR>  private String currentValue = null; <BR>  public void setTable(Hashtable table) <BR>    { <BR>    this.table = table; <BR>    } <BR>  public Hashtable getTable() <BR>    { <BR>    return table; <BR>    } <BR>  public void startElement(String tag, AttributeList attrs) <BR>  throws SAXException <BR>    { <BR>    currentElement = tag; <BR>    } <BR>  public void characters(char[] ch, int start, int length) <BR>  throws SAXException <BR>    { <BR>    currentValue = new String(ch, start, length); <BR>    } <BR>  public void endElement(String name) throws SAXException <BR>    { <BR>    if (currentElement.equals(name)) <BR>      table.put(currentElement, currentValue); <BR>    } <BR>  } <BR>JSP内容昄源码,SaxXml.jsp:<BR><HTML> <BR><HEAD> <BR><TITLE>剖析XML文gpeople.xml</TITLE> <BR></HEAD> <BR><BODY> <BR><%@ page errorPage="ErrPage.jsp" <BR>contentType="text/html;charset=GB2312" %> <BR><%@ page import="java.io.*" %> <BR><%@ page import="java.util.Hashtable" %> <BR><%@ page import="org.w3c.dom.*" %> <BR><%@ page import="org.xml.sax.*" %> <BR><%@ page import="javax.xml.parsers.SAXParserFactory" %> <BR><%@ page import="javax.xml.parsers.SAXParser" %> <BR><%@ page import="SAXHandler" %> <BR><% <BR>File file = new File("c:\\people.xml"); <BR>FileReader reader = new FileReader(file); <BR>Parser parser; <BR>SAXParserFactory spf = SAXParserFactory.newInstance(); <BR>SAXParser sp = spf.newSAXParser(); <BR>SAXHandler handler = new SAXHandler(); <BR>sp.parse(new InputSource(reader), handler); <BR>Hashtable hashTable = handler.getTable(); <BR>out.println("<TABLE BORDER=2><CAPTION>教师信息?lt;/CAPTION>"); <BR>out.println("<TR><TD>姓名</TD>" + "<TD>" + <BR>  (String)hashTable.get(new String("name")) + "</TD></TR>"); <BR>out.println("<TR><TD>学院</TD>" + "<TD>" + <BR>  (String)hashTable.get(new String("college"))+"</TD></TR>"); <BR>out.println("<TR><TD>电话</TD>" + "<TD>" + <BR>  (String)hashTable.get(new String("telephone")) + "</TD></TR>"); <BR>out.println("<TR><TD>备注</TD>" + "<TD>" + <BR>  (String)hashTable.get(new String("notes")) + "</TD></TR>"); <BR>out.println("</TABLE>"); <BR>%> <BR></BODY> <BR></HTML><BR><BR>EJB斚w<BR><BR>1、EJB2.0有哪些内?分别用在什么场? EJB2.0和EJB1.1的区?<BR>{:规范内容包括Bean提供者,应用E序装配者,EJB容器QEJB配置工具QEJB服务提供者,pȝ理员。这里面QEJB容器是EJB之所以能够运行的核心。EJB容器理着EJB的创建,撤消Q激z,LQ与数据库的q接{等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS.....<BR><BR>2、EJB与JAVA BEAN的区别? <BR>{?Java Bean 是可复用的组Ӟ对Java Beanq没有严格的规范Q理ZԌM一个Javac都可以是一个Bean。但通常情况下,׃Java Bean是被容器所创徏Q如Tomcat)的,所以Java Bean应具有一个无参的构造器Q另外,通常Java Beanq要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微YCOM模型中的本地q程内COMlgQ它是不能被跨进E访问的。Enterprise Java Bean 相当于DCOMQ即分布式组件。它是基于Java的远E方法调用(RMIQ技术的Q所以EJB可以被远E访问(跨进E、跨计算机)。但EJB必须被布|在诸如Webspere、WebLogicq样的容器中QEJB客户从不直接讉K真正的EJBlgQ而是通过其容器访问。EJB容器是EJBlg的代理,EJBlg由容器所创徏和管理。客户通过容器来访问真正的EJBlg?BR><BR>3、EJB的基本架?BR>{?一个EJB包括三个部分:<BR>  Remote Interface 接口的代?BR>  package Beans;<BR>  import javax.ejb.EJBObject;<BR>  import java.rmi.RemoteException;<BR>  public interface Add extends EJBObject<BR>  {<BR>   //some method declare <BR>  }<BR>  Home Interface 接口的代?BR>  package Beans;<BR>  import java.rmi.RemoteException;<BR>  import jaax.ejb.CreateException;<BR>  import javax.ejb.EJBHome;<BR>  public interface AddHome extends EJBHome<BR>  {<BR>    //some method declare<BR>  }<BR>  EJBcȝ代码<BR>  package Beans;<BR>  import java.rmi.RemoteException;<BR>  import javax.ejb.SessionBean;<BR>  import javx.ejb.SessionContext;<BR>  public class AddBean Implements SessionBean<BR>  {<BR>    //some method declare<BR>  }  <BR><BR>J2EE,MVC斚w<BR><BR>1、MVC的各个部分都有那些技术来实现?如何实现?<BR>{?MVC是ModelQViewQController的简写?Model" 代表的是应用的业务逻辑Q通过JavaBeanQEJBlg实现Q, "View" 是应用的表示面(由JSP面产生Q,"Controller" 是提供应用的处理q程控制Q一般是一个ServletQ,通过q种设计模型把应用逻辑Q处理过E和昄逻辑分成不同的组件实现。这些组件可以进行交互和重用?BR><BR>2、应用服务器与WEB SERVER的区别? <BR>希望大家补上Q谢?BR><BR><BR>3、J2EE是什么? <BR>{?Je22是Sun公司提出的多?multi-diered),分布?distributed),Zlg(component-base)的企业应用模型(enterpriese application model).在这L一个应用系l中Q可按照功能划分Z同的lgQ这些组件又可在不同计算ZQƈ且处于相应的层次(tier)中。所属层ơ包括客户层(clietn tier)lg,web层和lg,Business层和lg,企业信息pȝ(EIS)层?BR><BR>4、WEB SERVICE名词解释。JSWDL开发包的介l。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释?BR>{:Web Service描述语言WSDL <BR>SOAP即简单对象访问协?Simple Object Access Protocol)Q它是用于交换XML~码信息的轻量协议?BR>UDDI 的目的是为电子商务徏立标准;UDDI是一套基于Web的、分布式的、ؓWeb Service提供的、信息注册中心的实现标准规范Q同时也包含一l企业能将自n提供的Web Service注册Q以使别的企业能够发现的讉K协议的实现标准?BR><BR><BR>5、BS与CS的联pM区别?BR>希望大家补上Q谢?BR><BR>6、STRUTS的应?如STRUTS架构)<BR>{:Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用E序的开放源码的framework?nbsp;采用Struts能开发出ZMVC(Model-View-Controller)设计模式的应用构架?nbsp;Struts有如下的主要功能Q?nbsp;<BR>一.包含一个controller servletQ能用Lh发送到相应的Action对象?nbsp;<BR>?JSP自由tag库,q且在controller servlet中提供关联支持,帮助开发员创徏交互式表单应用?nbsp;<BR>?提供了一pd实用对象QXML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提C和消息?nbsp;<BR><BR>设计模式斚w<BR><BR>1、开发中都用C那些设计模式?用在什么场?<BR>{:每个模式都描qC一个在我们的环境中不断出现的问题,然后描述了该问题的解x案的核心。通过q种方式Q你可以无数ơ地使用那些已有的解x案,无需在重复相同的工作。主要用CMVC的设计模式。用来开发JSP/Servlet或者J2EE的相兛_用。简单工厂模式等?BR><BR><BR>2、UML斚w<BR>{:标准建模语言UML。用例图,静态图(包括cd、对象图和包?,行ؓ?交互?序?合作?,实现?<BR><BR>JavaScript斚w<BR><BR>1、如何校验数字型?<BR>var re=/^\d{1,8}$|\.\d{1,2}$/;<BR>var str=document.form1.all(i).value;<BR>var r=str.match(re);<BR>if (r==null)<BR>{<BR>   sign=-4;<BR>   break;<BR>}<BR>else{<BR>   document.form1.all(i).value=parseFloat(str);<BR>}<BR><BR><BR>CORBA斚w<BR><BR>1、CORBA是什?用途是什? <BR>{:CORBA 标准是公共对象请求代理结?Common Object Request Broker Architecture)Q由对象理l织 (Object Management GroupQ羃写ؓ OMG)标准化。它的组成是接口定义语言(IDL), 语言l定(binding:也译~?和允许应用程序间互操作的协议?nbsp;其目的ؓQ?BR>用不同的E序设计语言书写 <BR>在不同的q程中运?nbsp;<BR>Z同的操作pȝ开?BR><BR><BR>LINUX斚w<BR><BR>1、LINUX下线E,GDIcȝ解释?BR>{:LINUX实现的就是基于核心轻量q程?一对一"U程模型Q一个线E实体对应一个核心轻量q程Q而线E之间的理在核外函数库中实现?BR>GDIcMؓ囑փ讑֤~程接口cd?BR><img src ="http://www.tkk7.com/kieliy/aggbug/23377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kieliy/" target="_blank">瘦猴</a> 2005-12-11 18:52 <a href="http://www.tkk7.com/kieliy/archive/2005/12/11/23377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中四U操作xml方式的比?/title><link>http://www.tkk7.com/kieliy/archive/2005/12/11/23376.html</link><dc:creator>瘦猴</dc:creator><author>瘦猴</author><pubDate>Sun, 11 Dec 2005 10:51:00 GMT</pubDate><guid>http://www.tkk7.com/kieliy/archive/2005/12/11/23376.html</guid><wfw:comment>http://www.tkk7.com/kieliy/comments/23376.html</wfw:comment><comments>http://www.tkk7.com/kieliy/archive/2005/12/11/23376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kieliy/comments/commentRss/23376.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kieliy/services/trackbacks/23376.html</trackback:ping><description><![CDATA[四种操作xml的方式: SAX,   DOM,   JDOM ,  DOM4J<BR><BR>1. 介绍<BR><BR>1QDOM(JAXP Crimson解析? <BR>        DOM是用与^台和语言无关的方式表CXML文档的官方W3C标准。DOM是以层次l构l织的节Ҏ(gu)信息片断的集合。这个层ơ结构允许开发h员在树中L特定信息。分析该l构通常需要加载整个文档和构造层ơ结构,然后才能做Q何工作。由于它是基于信息层ơ的Q因而DOM被认为是Z树或Z对象的。DOM以及q义的基于树的处理具有几个优炏V首先,׃树在内存中是持久的,因此可以修改它以便应用程序能Ҏ(gu)据和l构作出更改。它q可以在M时候在树中上下DQ而不是像SAX那样是一ơ性的处理。DOM使用h也要单得多?BR><BR>2QSAX<BR><BR>        SAX处理的优炚w常类g媒体的优点。分析能够立卛_始,而不是等待所有的数据被处理。而且Q由于应用程序只是在d数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优炏V事实上Q应用程序甚至不必解析整个文档;它可以在某个条g得到满时停止解析。一般来_SAXq比它的替代者DOM快许多?nbsp;<BR>   选择DOMq是选择SAXQ?nbsp;对于需要自q写代码来处理XML文档的开发h员来_  选择DOMq是SAX解析模型是一个非帔R要的设计决策?nbsp;DOM采用建立树Şl构的方式访问XML文档Q而SAX采用的事件模型?nbsp;<BR><BR>  DOM解析器把XML文档转化Z个包含其内容的树Qƈ可以Ҏ(gu)q行遍历。用DOM解析模型的优Ҏ(gu)~程Ҏ(gu)Q开发h员只需要调用徏树的指oQ然后利用navigation APIs讉K所需的树节点来完成Q务。可以很Ҏ(gu)的添加和修改树中的元素。然而由于用DOM解析器的时候需要处理整个XML文档Q所以对性能和内存的要求比较高,其是遇到很大的XML文g的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频J的改变的服务中?nbsp;<BR><BR>  SAX解析器采用了Z事g的模型,它在解析XML文档的时候可以触发一pd的事Ӟ当发现给定的tag的时候,它可以激zM个回调方法,告诉该方法制定的标签已经扑ֈ。SAX对内存的要求通常会比较低Q因为它让开发h员自己来军_所要处理的tag。特别是当开发h员只需要处理文档中所包含的部分数据时QSAXq种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难Q而且很难同时讉K同一个文档中的多处不同数据?nbsp;<BR><BR>3QJDOM           http://www.jdom.org/<BR><BR>          JDOM的目的是成ؓJava特定文档模型Q它化与XML的交互ƈ且比使用DOM实现更快。由于是W一个Java特定模型QJDOM一直得到大力推q和促进。正在考虑通过“Java规范hJSR-102”将它最l用作“Java标准扩展”。从2000q初已l开始了JDOM开发?nbsp;<BR><BR>  JDOM与DOM主要有两斚w不同。首先,JDOM仅用具体类而不使用接口。这在某些方面简化了APIQ但是也限制了灵zL。第二,API大量使用了Collectionsc,化了那些已经熟?zhn)q些cȝJava开发者的使用?nbsp;<BR><BR>  JDOM文档声明其目的是“?0%(或更?的精力解?0%(或更?Java/XML问题?Ҏ(gu)学习曲线假定?0%)。JDOM对于大多数Java/XML应用E序来说当然是有用的Qƈ且大多数开发者发现API比DOMҎ(gu)理解得多。JDOMq包括对E序行ؓ的相当广泛检查以防止用户做Q何在XML中无意义的事。然而,它仍需要?zhn)充分理解XML以便做一些超出基本的工作(或者甚至理解某些情况下的错?。这也许是比学习DOM或JDOM接口都更有意义的工作?nbsp;<BR><BR>  JDOM自n不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(管它还可以以前构造的DOM表示作ؓ输入)。它包含一些{换器以将JDOM表示输出成SAX2事g、DOM模型或XML文本文档。JDOM是在Apache许可证变体下发布的开放源码?BR><BR>4QDOM4J http://dom4j.sourceforge.net/ <BR>             <BR>        虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一U智能分支。它合ƈ了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或化文档的基于事件的处理。它q提供了构徏文档表示的选项Q它通过DOM4J API和标准DOM接口hq行讉K功能。从2000下半q开始,它就一直处于开发之中?nbsp;<BR><BR>  为支持所有这些功能,DOM4J使用接口和抽象基本类Ҏ(gu)。DOM4J大量使用了API中的Collectionsc,但是在许多情况下Q它q提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是Q虽然DOM4J付出了更复杂的API的代P但是它提供了比JDOM大得多的灉|性?nbsp;<BR><BR>  在添加灵zL、XPath集成和对大文档处理的目标ӞDOM4J的目标与JDOM是一LQ针对Java开发者的易用性和直观操作。它q致力于成ؓ比JDOM更完整的解决Ҏ(gu)Q实现在本质上处理所有Java/XML问题的目标。在完成该目标时Q它比JDOM更少防止不正的应用E序行ؓ?nbsp;<BR><BR>  DOM4J是一个非帔R怼U的Java XML APIQ具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的Y件。如今你可以看到来多的Java软g都在使用DOM4J来读写XMLQ特别值得一提的是连Sun的JAXM也在用DOM4J?nbsp;<BR><BR><BR>2.. 比较<BR><BR>1QDOM4J性能最好,qSun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4JQ例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文g。如果不考虑可移植性,那就采用DOM4J.<BR><BR>2QJDOM和DOM在性能试时表C佻I在测?0M文档时内存溢出。在文档情况下q值得考虑使用DOM和JDOM。虽然JDOM的开发者已l说明他们期望在正式发行版前专注性能问题Q但是从性能观点来看Q它实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现q泛应用于多U编E语a。它q是许多其它与XML相关的标准的基础Q因为它正式获得W3C推荐(与基于非标准的Java模型相对)Q所以在某些cd的项目中可能也需要它(如在JavaScript中用DOM)?BR><BR>3QSAX表现较好Q这要依赖于它特定的解析方式Q事仉动。一个SAX即到来的XML,但ƈ没有载入到内?当然当XML被dӞ会有部分文档暂时隐藏在内存中)?BR><BR>3. 四种xml操作方式的基本用方?BR><BR>xml文gQ?BR><BR><?xml version="1.0" encoding="utf-8" ?> <BR><Result><BR>   <VALUE><BR>       <NO DATE="2005">A1</NO><BR>       <ADDR>GZ</ADDR><BR>   </VALUE><BR>   <VALUE><BR>       <NO DATE="2004">A2</NO><BR>       <ADDR>XG</ADDR><BR>  </VALUE><BR></Result><BR><BR>1QDOM<BR><BR>import java.io.*;<BR>import java.util.*;<BR>import org.w3c.dom.*;<BR>import javax.xml.parsers.*; <BR><BR>public class MyXMLReader{ <BR> public static void main(String arge[]){ <BR><BR>  long lasting =System.currentTimeMillis(); <BR>  try{  <BR>   File f=new File("data_10k.xml"); <BR>   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); <BR>   DocumentBuilder builder=factory.newDocumentBuilder(); <BR>   Document doc = builder.parse(f); <BR>   NodeList nl = doc.getElementsByTagName("VALUE"); <BR>   for (int i=0;iQnl.getLength();i++){ <BR>    System.out.print("车牌L:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); <BR>    System.out.println("车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); <BR>   } <BR>  }catch(Exception e){ <BR>   e.printStackTrace(); <BR>} <BR><BR>2QSAX<BR><BR>import org.xml.sax.*;<BR>import org.xml.sax.helpers.*;<BR>import javax.xml.parsers.*; <BR><BR>public class MyXMLReader extends DefaultHandler { <BR><BR> java.util.Stack tags = new java.util.Stack(); <BR> public MyXMLReader() { <BR>  super();<BR>   } <BR><BR> public static void main(String args[]) { <BR>  long lasting = System.currentTimeMillis(); <BR>  try { <BR>   SAXParserFactory sf = SAXParserFactory.newInstance(); <BR>   SAXParser sp = sf.newSAXParser(); <BR>   MyXMLReader reader = new MyXMLReader(); <BR>   sp.parse(new InputSource("data_10k.xml"), reader); <BR>  } catch (Exception e) { <BR>   e.printStackTrace(); <BR>  } <BR><BR>  System.out.println("q行旉Q? + (System.currentTimeMillis() - lasting) + "毫秒");} <BR>  public void characters(char ch[], int start, int length) throws SAXException { <BR>  String tag = (String) tags.peek(); <BR>  if (tag.equals("NO")) {  <BR>   System.out.print("车牌LQ? + new String(ch, start, length));<BR>    }<BR>    if (tag.equals("ADDR")) { <BR>  System.out.println("地址:" + new String(ch, start, length));<BR>    }<BR>   } <BR><BR>  public void startElement(String uri,String localName,String qName,Attributes attrs) { <BR>  tags.push(qName);}<BR>}  <BR><BR>3Q?nbsp;JDOM<BR><BR>import java.io.*;<BR>import java.util.*;<BR>import org.jdom.*;<BR>import org.jdom.input.*; <BR><BR>public class MyXMLReader { <BR><BR> public static void main(String arge[]) { <BR>  long lasting = System.currentTimeMillis(); <BR>  try { <BR>   SAXBuilder builder = new SAXBuilder();  <BR>   Document doc = builder.build(new File("data_10k.xml"));  <BR>   Element foo = doc.getRootElement();  <BR>   List allChildren = foo.getChildren();  <BR>   for(int i=0;iQallChildren.size();i++) {  <BR>    System.out.print("车牌L:" + ((Element)allChildren.get(i)).getChild("NO").getText()); <BR>    System.out.println("车主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText()); <BR>   } <BR>  } catch (Exception e) { <BR>   e.printStackTrace(); <BR>} <BR><BR>}<BR><BR>4QDOM4J<BR><BR>import java.io.*;<BR>import java.util.*;<BR>import org.dom4j.*;<BR>import org.dom4j.io.*; <BR><BR>public class MyXMLReader { <BR><BR> public static void main(String arge[]) { <BR>  long lasting = System.currentTimeMillis(); <BR>  try { <BR>   File f = new File("data_10k.xml"); <BR>   SAXReader reader = new SAXReader(); <BR>   Document doc = reader.read(f); <BR>   Element root = doc.getRootElement(); <BR>   Element foo; <BR>   for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) { <BR>    foo = (Element) i.next(); <BR>    System.out.print("车牌L:" + foo.elementText("NO")); <BR>    System.out.println("车主地址:" + foo.elementText("ADDR")); <BR>   } <BR>  } catch (Exception e) { <BR>   e.printStackTrace(); <BR>    } <BR>} <img src ="http://www.tkk7.com/kieliy/aggbug/23376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kieliy/" target="_blank">瘦猴</a> 2005-12-11 18:51 <a href="http://www.tkk7.com/kieliy/archive/2005/12/11/23376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>故障恢复控制台应? http://www.tkk7.com/kieliy/archive/2005/10/27/17101.html瘦猴瘦猴Thu, 27 Oct 2005 12:11:00 GMThttp://www.tkk7.com/kieliy/archive/2005/10/27/17101.htmlhttp://www.tkk7.com/kieliy/comments/17101.htmlhttp://www.tkk7.com/kieliy/archive/2005/10/27/17101.html#Feedback4http://www.tkk7.com/kieliy/comments/commentRss/17101.htmlhttp://www.tkk7.com/kieliy/services/trackbacks/17101.html

故障恢复控制台应?nbsp;

当Windows 2000/XP/2003出现了启动故障,而且在安全模式或其他模式下都启动无效Ӟ很多朋友首先惛_的就是重装系l。其实不必。这时我们首先应该考虑使用Windows的“故障恢复控制台”来挽救pȝQ它主要可用来修复系l、禁用或启用服务、格式化盘、执行一些管理Q务。本期将重点介绍一下利用故障恢复控制台解决一些问题的实例?BR>
pȝ文gNtfs.sys丢失

问:在将分区从FAT32pȝ文g转换到NTFS文gpȝ之后重新启动Windows XP 时出现“Missing or Corrupt Ntfs.sys?Ntfs.sys 丢失或损?错误信息Q导致系l无法正常启动。该如何是好Q?/P>

{:在故障恢复控制台下先输入cd \windows\system32\driversQ然后按ENTER键。接着输入ren ntfs.sys ntfs.oldQ将损坏的Ntfs.sys文g重命名ؓ Ntfs.old。如果提C没有找?Ntfs.sys 文gQ则该文件丢׃。把Windows XP的安装光盘放q光驱,假设Windows XP安装在C盘、光q盘符为HQ键入copy h:\i386\ntfs.sys c:\windows\system32\driversQ然后退出故障恢复控制台Q重新启?Windows XP卛_?/P>

pȝ文gNTLDR丢失

问:pȝ启动不了Q提CZ些文件丢׃。比如Windows 2000启动不了Q出C下错误信息:NTLDR is missing  Press any key to restartQ提CNTLDR文g丢失。我该怎么办?

{:Ҏ(gu)cȝl文件的丢失问题Q我们可以用故障恢复控制台pȝ安装光盘上COPY丢失的文件。进入故障恢复控制台Q把Windows 2000的安装光盘放q光?光驱盘符为HQ?Q输入copy h:\i386\ntldr c:\q回?从光驱复制ntldr文g至C盘根目录?Q接着输入copy h:\i386\ntdetect.com c:\q回?从光盘复制ntdetect.com文g到C盘根目录?。如果系l提C是否覆盖文Ӟ键入yQ然后按回R键。最后键入c:\Boot.iniQ如果正常显CBoot.ini中的内容则可重启Q问题应该可以解冟뀂如果显CZؓ“系l找不到指定的文件或目录。”,那么意味着Boot.ini文g损坏或丢失,可到其他安装Windows 2000的电脑中复制该文Ӟ它拯到C盘下Q然后重启即可。利用此法可以解军_部分pȝ文g丢失的问题?BR>

误删除SAM文g?/STRONG>

问:在Windows XP中不心把Windows/system32/config/下的sam文g删除了,l果Windows XP账号丢失Q现在不能进入Windows XP的登录界面。由于安装有很多软gQ现在想不重新安装系l就恢复Windows XP行吗Q?/P>

{:q入故障恢复控制収ͼ把Windows XP的安装光盘放q光?光驱盘符为HQ?Q输入copy h:\windows\repair\sam c:\windows\system32\config\samq回车,H:\windows\repair\sam文g复制到c:\Windows\system32\config文g夹即可?BR>注意QRepair下的Sam文g是当初安装Windows XP时生的Q这h作会丢失安装pȝ以及你自己在pȝ中创建的用户和用L(用户信息回到全新安装时状?。如果你开了系l还原,可以先成功地dWindows XPQ再q原到最新的q原Ҏ(gu)复你的全部用戯|?/P>

在系l的安装光盘Q\windows\repair目录下有很多的文Ӟq里面是pȝ刚装好时的注册表、硬件信息等?/P>

另外Q如果你忘记了系l的d密码Q可以利用此Ҏ(gu)来解决问题?/P>

多系l下的Windows XP无法启动

问:我的电脑是多pȝQ原先安装了Windows XPQ然后安装了Windows 98Q结果将位于pȝ启动分区根目录下的Windows XP启动文g覆盖了,DWindows XPpȝ不能启动了?/P>

{:启动故障恢复控制収ͼ如图所C,键入“BOOTCFG /ADD?Windows 安装d到启动菜单列表中)Q故障恢复控制台会扫描Windows安装Q几U钟后扫描完成,然后提示你选择要添加的安装Q选?”,接着它会提示你输入加载识别符(是启动菜单名Uͼ比如你要恢复的是Windows XPpȝQ可输入“Windows XP?Q下一步它会提C入OS加蝲选项。键入fastdetect命oQ回车,键入“EXIT”,重新启动电脑Q你可以看到久违的多pȝ启动菜单又回来了。如果还有其他的pȝql执行上q的步骤Q直x有的pȝ都添加到多系l启动菜单ؓ止?/P>

误删除Boot.ini文g?/STRONG>

问:不慎删除了Boot.ini{启动文件该如何处理Q原来的Windows XPpȝ安装在C盘,现在重装Q将pȝ装在D盘,安装完毕后,C盘格式化了,l果C盘根目录下的Boot.ini{系l文件没有了。请问有什么解军_法?

{:我们可以先执行bootcfg /scan命o在所有磁盘上扫描Windows 安装Q找到D盘上的Windows XP后,输入bootcfg /redirect重徏Boot.iniQ同时用copy命oWindows XP的安装光盘上i386目录下的NTDETECT.com和NTLDR复制到C盘根目录下。最后执行fixboot c:Q把Windows XP的系l分区写入启动扇区?/P>

如果你的电脑是双pȝQ在把C盘上的系l格式化或删除的同时Q不心把Boot.ini也一q删除了Q可以用此方案来恢复。如果是多系l,可以再参考上一案例Q徏立引D单,或者手动编辑B(ti)oot.ini文g?/P>

问:在Windows XP中不心把Windows/system32/config/下的sam文g删除了,l果Windows XP账号丢失Q现在不能进入Windows XP的登录界面。由于安装有很多软gQ现在想不重新安装系l就恢复Windows XP行吗Q?/P>

{:q入故障恢复控制収ͼ把Windows XP的安装光盘放q光?光驱盘符为HQ?Q输入copy h:\windows\repair\sam c:\windows\system32\config\samq回车,H:\windows\repair\sam文g复制到c:\Windows\system32\config文g夹即可?BR>注意QRepair下的Sam文g是当初安装Windows XP时生的Q这h作会丢失安装pȝ以及你自己在pȝ中创建的用户和用L(用户信息回到全新安装时状?。如果你开了系l还原,可以先成功地dWindows XPQ再q原到最新的q原Ҏ(gu)复你的全部用戯|?/P>

在系l的安装光盘Q\windows\repair目录下有很多的文Ӟq里面是pȝ刚装好时的注册表、硬件信息等?/P>

另外Q如果你忘记了系l的d密码Q可以利用此Ҏ(gu)来解决问题?/P>

多系l下的Windows XP无法启动

问:我的电脑是多pȝQ原先安装了Windows XPQ然后安装了Windows 98Q结果将位于pȝ启动分区根目录下的Windows XP启动文g覆盖了,DWindows XPpȝ不能启动了?/P>

{:启动故障恢复控制収ͼ如图所C,键入“BOOTCFG /ADD?Windows 安装d到启动菜单列表中)Q故障恢复控制台会扫描Windows安装Q几U钟后扫描完成,然后提示你选择要添加的安装Q选?”,接着它会提示你输入加载识别符(是启动菜单名Uͼ比如你要恢复的是Windows XPpȝQ可输入“Windows XP?Q下一步它会提C入OS加蝲选项。键入fastdetect命oQ回车,键入“EXIT”,重新启动电脑Q你可以看到久违的多pȝ启动菜单又回来了。如果还有其他的pȝql执行上q的步骤Q直x有的pȝ都添加到多系l启动菜单ؓ止?/P>

误删除Boot.ini文g?/STRONG>

问:不慎删除了Boot.ini{启动文件该如何处理Q原来的Windows XPpȝ安装在C盘,现在重装Q将pȝ装在D盘,安装完毕后,C盘格式化了,l果C盘根目录下的Boot.ini{系l文件没有了。请问有什么解军_法?

{:我们可以先执行bootcfg /scan命o在所有磁盘上扫描Windows 安装Q找到D盘上的Windows XP后,输入bootcfg /redirect重徏Boot.iniQ同时用copy命oWindows XP的安装光盘上i386目录下的NTDETECT.com和NTLDR复制到C盘根目录下。最后执行fixboot c:Q把Windows XP的系l分区写入启动扇区?/P>

如果你的电脑是双pȝQ在把C盘上的系l格式化或删除的同时Q不心把Boot.ini也一q删除了Q可以用此方案来恢复。如果是多系l,可以再参考上一案例Q徏立引D单,或者手动编辑B(ti)oot.ini文g?/P>



瘦猴 2005-10-27 20:11 发表评论
]]>
误删除SAM文g?/title><link>http://www.tkk7.com/kieliy/archive/2005/10/27/17099.html</link><dc:creator>瘦猴</dc:creator><author>瘦猴</author><pubDate>Thu, 27 Oct 2005 11:59:00 GMT</pubDate><guid>http://www.tkk7.com/kieliy/archive/2005/10/27/17099.html</guid><wfw:comment>http://www.tkk7.com/kieliy/comments/17099.html</wfw:comment><comments>http://www.tkk7.com/kieliy/archive/2005/10/27/17099.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/kieliy/comments/commentRss/17099.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kieliy/services/trackbacks/17099.html</trackback:ping><description><![CDATA[<FONT color=#4000c0> 误删除SAM文g?/FONT> <P>    问:在Windows XP中不心把Windows/system32/config/下的sam文g删除了,l果Windows XP账号丢失Q现在不能进入Windows XP的登录界面。由于安装有很多软gQ现在想不重新安装系l就恢复Windows XP行吗Q?/P> <P>    {:q入故障恢复控制収ͼ把Windows XP的安装光盘放q光?光驱盘符为HQ?Q输入copy h:\windows\repair\sam c:\windows\system32\config\samq回车,H:\windows\repair\sam文g复制到c:\Windows\system32\config文g夹即可?BR><BR>    注意QRepair下的Sam文g是当初安装Windows XP时生的Q这h作会丢失安装pȝ以及你自己在pȝ中创建的用户和用L(用户信息回到全新安装时状?。如果你开了系l还原,可以先成功地dWindows XPQ再q原到最新的q原Ҏ(gu)复你的全部用戯|?/P> <P>    在系l的安装光盘Q\windows\repair目录下有很多的文Ӟq里面是pȝ刚装好时的注册表、硬件信息等?/P> <P>    另外Q如果你忘记了系l的d密码Q可以利用此Ҏ(gu)来解决问题?/P><img src ="http://www.tkk7.com/kieliy/aggbug/17099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kieliy/" target="_blank">瘦猴</a> 2005-10-27 19:59 <a href="http://www.tkk7.com/kieliy/archive/2005/10/27/17099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的软g开发经历(三)——IBM?Q{_http://www.tkk7.com/kieliy/archive/2005/10/24/16631.html瘦猴瘦猴Mon, 24 Oct 2005 12:11:00 GMThttp://www.tkk7.com/kieliy/archive/2005/10/24/16631.htmlhttp://www.tkk7.com/kieliy/comments/16631.htmlhttp://www.tkk7.com/kieliy/archive/2005/10/24/16631.html#Feedback1http://www.tkk7.com/kieliy/comments/commentRss/16631.htmlhttp://www.tkk7.com/kieliy/services/trackbacks/16631.html阅读全文

瘦猴 2005-10-24 20:11 发表评论
]]>
我的软g开发经历(一Q——v步篇 Q{_http://www.tkk7.com/kieliy/archive/2005/10/24/16630.html瘦猴瘦猴Mon, 24 Oct 2005 12:10:00 GMThttp://www.tkk7.com/kieliy/archive/2005/10/24/16630.htmlhttp://www.tkk7.com/kieliy/comments/16630.htmlhttp://www.tkk7.com/kieliy/archive/2005/10/24/16630.html#Feedback0http://www.tkk7.com/kieliy/comments/commentRss/16630.htmlhttp://www.tkk7.com/kieliy/services/trackbacks/16630.html  高中的时候,满脑子都是高考。家乡的信息非常之封闭,但还是经常听到计机是今后的热点。虽焉三的时候终于有了计机评Q但只允许练l打字的电脑课让我领会不到计机~程的美妙,q也更加加深了我对计机的好?/SPAN>。填写志愿的时候,W一专业无一例外全是“计机软g”,W二专业则都是“应用数学”(听老师_应用数学是与计算Z业最接近的专业)。我喜欢数学Q更感兴的则是计算机,因ؓ计算机对于当时的我来_是神奇而且妙的。高考的发挥失常让我没能实现p北京大学的愿望,最l进入了中山大学的应用数学专业。着实郁闷了好长一D|_不过好在可以学习数学Q而且是与计算机有关的数学?/SPAN>

然而进入大学的时候,见到、听到和感受到的q没有自己想象的那么理想。印象最q一句就是:应用数学图有其名Q实际上什么也学不刎ͼ学数学不够基数学专业的hQ学计算机更是与CS的h差之甚远。不同版本的l验和心得让自己茫然了好几天。不q学院领g再强调搞计算机最的h都是学数学出w和某一个师兄的话“自pvd作用”最l得自己清醒过来,其实只要自己努力和主动,一切都是可以自׃导的?/SPAN>

管刚入大学时经历了落选“基地班”的打击Q但我很快振作v来。整理了一些师兄师姐的教导Q确定了大学阶段的目标:前两q努力学好专业知识,打好数学基础Q我始终怿数学基础是非帔R要的Q,q利用空余时间学习计机知识Q从W三q开始寻扑֮跉|会积累计机目l验。相比于那些从小有Z学习计算机的同龄人,我着实属于“晚辈”的h物了Q但我相信通过自己的努力,一定可以I补以前落下的基础?/SPAN>

q运的是Q我们宿?/SPAN>10个h大部分都是“计机q”,在他们的影响下,我对计算机编E的兴趣来浓Qƈ且在大一暑假我就获得了实늚Z。通过舍友介绍Q我q入了计中心雨人工作室Q后来{?/SPAN>ERP实验室)学习和实c在那期_我参与了不少企业应用pȝ的开发和实施Q部|Ӏ培训)Q从那时开始,我学会了如何?/SPAN>Basic?/SPAN>Pascal来编写各U小E序Q学会了如何?/SPAN>VB?/SPAN>Delphi来编写数据库应用E序Q从Access?/SPAN>SQL ServerQ我逐渐体会到数据库的作用。尽一开始编写的E序和设计的用户界面q显E嫩Q但不断得到客户的认可让我这个晚成的~程人员颇有成就感,也得我对企业应用开发兴渐。或许是因ؓ从一开始我接触的编E是企业应用Q数据库应用Q的开发,我将自己的目标锁定在企业应用领域。n边的同学有的Ҏ(gu)戏开发非常感兴趣Q有的则喜欢~写各种pȝ工具甚至是小病毒Q而我则深深“爱”上了企业应用开发。很多h对企业应用开发很不屑Q他们认为那无非是利用各种RAD工具拖拖控gQ在已经生成的代码框架上填填单的几行代码Q完全没有算法,没有M技术含量。刚开始接触数据库应用pȝ开发时Q我也生了cMx。但与客L沟通我生了责Q感,我当时的x是:管我所做的工作是简单的Q但q样可以为客户带来便利,正是q种单的x使我坚持下来Qƈ能够重新认识企业应用开发。随着自己学的东西来多Q水q也不断提高Q我发现企业应用E序q不是简单的界面+代码Q这里面涉及的东西太多了。如何我做出来的应用程序能更好地满_L真实需求?如何使我的开发工作更有效率?如何使开发工作按时完成?……一pd的问题一直在脑v中回旋,我发觉对软g开发了解的多Q脑中的问题也p多?/SPAN>

我的处女作品是一个进销存YӞ是我独立Z个Y件公司开发的。当时Y件公司的l理是我的客户Q他提出需求(Ҏ(gu)他的客户需求)Q我Ҏ(gu)需求设计、开发出满要求的Y件。当时接CQ务的时候是大二暑假的开始,记得那个暑假我用自己的奖学金和家教所得的׃来第一台电脑(4000多元Q,然后开始了我的开发历E。之前,我曾lؓ一个服装租赁公司开发了一个服装租赁系l,但由于各U原因最l没有被用户使用Q据说是用计机pȝ太麻烦,呵呵Q,所以这个进销存Y件是我的W一个被客户使用的作品。开发服装租赁系l的l历让我学习了数据库知识?/SPAN>Delphi工具的用,也了解了软g工程的一些知识,知道了什么叫需求分析,什么叫pȝ设计Q什么叫开发,试和实施。当Ӟ当时的专业课E学习Q务还是比较重Q对软g工程学习只是依靠自学Q所以不够系l,知道的比较表面,不过也会依样画葫芦了。当旉求分析还是比较详l了Q虽然没有编写很正规的需求分析规范说明书Q但对客L需求还是了解得比较l致。在后来与客户面寚w接触Ӟ看到客户对系l的认可Q我觉得自己很伟大,我终于体会到“科学技术是W一生力”的真正含义了,呵呵。整个进销存Y件的开发量Q包括数据库l构设计、界面的设计和代码编写)q是蛮大的,由我一个没什么经验的开发h员用两个月时间开发,实难住了我Q特别是里面一些业务逻辑Q比如先q先出,后进先出{结方式让当时的我很是头痛。在那段旉里,我经历了各种各样开发h员的生活Qؓ了找Z个问题所在不?/SPAN>DEBUGQؓ了完成手中的工作通宵达旦Qؓ解决了一个难题而欢呼雀跃;为得Cl理的赞赏而美滋好一阵子Q……开发工作是辛苦的,但收获却是非常大。书本上学到的Y件工E知识是抽象的,但通过开发这个进销存YӞ我加׃对Y件工E各个阶D늚理解Q虽然还是很肤浅Q而且也许q很片面Q但光所l历的事情让我积累了不少的经验,我懂得了如何L好地与客戗项目经理交;认识C规范开发和各种文档的重要性(坚持写开发文档得Cl理的赞赏,q也为后来省下了不少ȝQ系l交付后Q很接到经理的骚扰电话Q呵呵)。当时经理说的一句话让我印象很深刻,也一直陪伴着我:开发应用程序不是关在屋子里埋头写理想的代码Q而是要保持与用户的不断沟通,时刻让自q开发往正确的方向前q。靠自己惌出来的程序再妙也是没有M价值的。从感受到自q软g为用户带来了工作效率的提升开始,我就瞄准了企业应用开发这个领域。虽然当时的认识比较模糊Q脑中还没有pȝ架构的概念,知识体系q是很不完善Q缺乏相兌机基础知识的支持,但我感觉C息技术在企业应用领域会v革命性的作用Q而且l不止数据库应用那么单?/SPAN>

随着参与的项目越来越多,范围来广Q学到的知识也越来越q泛Q对信息技术的认识也越来越深。开发进销存Y件的成功让我得到了计中心一位教授的赏识Q我因此也得C加入正式目l的Z。第一个系l的开发完全是“个雄主义”行为,管我也试图贯彻软g工程的思想Q但l对体验不到团队合作Q除了与客户和经理的沟通外。所以听到可以加入项目组的消息,我的心情是非常激动的Q当时只是大?/SPAN>刚开始,而我已经初步实现了自q目标Q向更高的层ơ前q?/SPAN>

在雨人工作室学习期间Q我参与的项目集中在企业MIS和一?/SPAN>WEB应用。在Windows环境下,利用Delphi作ؓ开发工PMS SQL Server为后台数据库Q开发各U?/SPAN>C/Sl构的信息管理系l。当时的我作Z个开发h员,主要负责一些设计(数据库结构设计、系l框架设计和前端用户界面Q和coding工作。由于项目组成员不是很多Q同时又?/SPAN>part-time jobQ有时更是几个项目在w,着实体会到了一?/SPAN>programmer的艰辛,但也实学到了很?/SPAN>programming skillsQ积累了不少programmer的经验。忙?/SPAN>coding的同Ӟ我意识到计算机基知识的重要,辅修计算Y件专业的评Q认真学习别为枯燥乏味的OO?/SPAN>Data Structure?/SPAN>Software Engineering{等基础评。虽然到现在已经不能完全C当时学的知识Q但学到的一些思想、算法和技巧都在潜U默化媄响着我的工作?/SPAN>

大二、大三两q是非常艰苦的,学习dJ重Q我学好每一门数学,我知道本U头两年的数学课E是非常重要的;同时我也疯狂学习计算机知识,q过做项目去理解体会学到的知识。那两年旉里,我感觉到自己的进步非常大。其间我也经常听C些反调,那些喜欢底层~程工作的同学都在劝我学一些更高深、更底层的知识(他们认ؓ我如此聪明的头脑d那么“简单”的应用开发,真的太浪费了Q,我也曄动摇q,但在|上论坛?/SPAN>BBS上我与“大䏀们讨论交流Q同时也l常扑օ叔R面一些经验丰富的E序员沟通,我坚定了我的路线Q小型的企业应用开发从E序员角度来说似乎没有那些与Windows API相关的底层编E那么复杂,但真正要保证旉保证质量开发出一个满企业需要的pȝQ却是非怸Ҏ(gu)的,q是一w常有挑战性的工作Q而且意义非同一般?/SPAN>IT发展到现在,很多技术已l非常成熟,我们应该站在前h的肩膀上,可能利用先q的技术帮助企业提高生产力。随着参与的项目越来越大,来复杂,我发现即使是企业应用开发工作,也不是象很多人所惌的那L单,需要考虑的东西越来越多,不再只是实现了要求的功能?/SPAN>OK了,需要考虑与已有资源(包括软硬件资源)的整合,同时一些在系l上表现不明昄因素也越来越军_着一个项目的成功与否Q比如性能、可l护性、适应性等{。当时开发进销存Y件时Q只要找C一个第三方控g实现了所要求的功能就兴奋异常Q后来开发较大型目时就不再那么Ҏ(gu)了,需要考虑pȝ采取的架构(C/SQ?/SPAN>B/SQ两者相l合Q、开发^台、数据库q_Q同时还得费心机考虑q种设计或实现方法是否会影响pȝ速度或性能Q是否可以重用,需求发生变化时是否Ҏ(gu)修改Q等{。后来才真正体会C个系lMl构的不合理Q会D各种各样的问题,从用戯度来看,会生重复工作等问题Q从pȝ角度来看Q会D致命的速度、性能问题。而后者很可能D目的失败,一个经常导致服务器或客LL的系l如何让用户接受Q?/SPAN>

在大三、大四两q_参加了一?/SPAN>MIS?/SPAN>MRPII?/SPAN>ERP目Q有的可以称得上是成功的目Q但大部分却很难UC为成功(无论是进度还是质量都与理惛_之甚q)。原因是多方面的Q主要有以下几点Q?/SPAN>1、项目管理؜乱,没有规范的项目管理导致代码质量低下、进度不断gq;2、分析h员不够重视需求分析,没有很好C解客L真正需求,~Z对相兌业的必要知识Q导致最l的pȝ不能很好地满_L要求Q这也得相当数量的中小型企业对信息pȝ产生了怀疑;3、系l设计h员计机知识不全面,不了解最新的技术,Dpȝ沿用q时的技术和pȝl构Q同时忽视重用性导致不断的重复开发;4、开发h员只考虑能否实现Q而没有考虑如何更好地实玎ͼ忽视代码的效率、性能{问题?/SPAN>

01q项目组一直采?/SPAN>C/Sl构为各U行业的企业、工厂开发管理系l(MIS?/SPAN>MRPII?/SPAN>ERPQ,虽然对企业宣U开发的pȝ属于MRPII?/SPAN>ERP{等Q富丽堂皇,但事实上目l的成员只有技术背景,Ҏ(gu)没有理背景Q而且目l中没有l验丰富、高瞻远瞩的行业N、架构师Q设计、开发出来的所?/SPAN>MRPII?/SPAN>ERP实质上就是复杂一些的MISQ根本无法ؓ企业的管理、决{带来帮助,唯一能看到的只是pȝ帮企业管理各U数据、出一些数据统计报表而已。每完成一个项目,有终于可以完工的快感Q但很快p客户的抱怨所Ҏ(gu)Q我也逐渐意识到自׃能再定位?/SPAN>programmer的层ơ了Q一个再优秀?/SPAN>programmerQ也只是能写ZU的代码而已Q却不能Z业提供一个优U的系l?/SPAN>Programmer只能停留在系l的局部,而系l架构师Q?/SPAN>ArchitectQ则肩负着整个pȝ构架的重任,毫无疑问Q架构师对于一个项目的成|L关键的作用。我认识C息技术在企业中的应用来重要,也越来越复杂。随着ERP静寂之后Q?/SPAN>CRM?/SPAN>DPR?/SPAN>e-ERP?/SPAN>e-business{逐渐成ؓ热点Q?/SPAN>J2EE?/SPAN>.NET{新技术也逐渐成ؓE序员的新宠。信息技术已l日新月异,我感到学习更多先q技术的同时Q应该确定新的目标?B>我不再满于做一个优U?/B>programmerQ当时我定了自q目标是成Z个优U的系l架构师Q但首先我会努力让自己成Z名优U的Y件工E师?/SPAN>当时我对架构师的认识是:架构师负责理解系l的业务需求,q创建合理、完善的pȝ体系架构Q架构师也负责通过软g架构来决定主要的技术选择。架构师要求有完善的知识体系Q扎实的技术功底,了解当今行的各cL术和产品?/B>

ȝ大三、大四两q的开发生z,我感觉到自己?/SPAN>IT有一定的天赋和较高的热情Q而且兴趣很浓Q再加上自己扎实的数学基、严谨的逻辑思维和很强的学习能力Q已l能够较好地胜Qprogrammer的角艌Ӏ但q不是自q目标Q有着两年?/SPAN>programming体验后,我意识到自己应该向更高层ơ进军,而不应满于现状。大四后半段Q凭借着自己优秀的学业成l,我顺利拿到免试攻L专业士学位的资|我希望可以通过研究生阶D늚学习Q学习更多的知识以及U研Ҏ(gu)Q自己得到提升?/SPAN>


瘦猴 2005-10-24 20:10 发表评论
]]>
我的软g开发经历(二)——提高篇 Q{_http://www.tkk7.com/kieliy/archive/2005/10/24/16629.html瘦猴瘦猴Mon, 24 Oct 2005 12:09:00 GMThttp://www.tkk7.com/kieliy/archive/2005/10/24/16629.htmlhttp://www.tkk7.com/kieliy/comments/16629.htmlhttp://www.tkk7.com/kieliy/archive/2005/10/24/16629.html#Feedback0http://www.tkk7.com/kieliy/comments/commentRss/16629.htmlhttp://www.tkk7.com/kieliy/services/trackbacks/16629.html拿到免试资格后,我加入了中山大学数字通讯pȝ研究中心。前几个月参与了一个由天时软gl织?/SPAN>Streaming Media研究目Q分析了开源项?/SPAN>OpenH323的结构、代码,q也是我本科毕业论文的课题。之后花一个月左右旉帮天时Y件开发了一个工作流q程定义工具Q接触了一些工作流斚w的知识,但当时时间短促,而且跟自q开发工作没有太大的兌Q我也没有深入这个领域,虽然听同事介l说工作领域是一个全新的技术和理论不太成熟的领域,也一度曾以工作流题作本科毕业论文Q但最后还是不了了之。两q后接触?/SPAN>IBM?/SPAN>MQ WorkflowQ又重新燃v了对Workflow的兴,q是后话了。流媒体涉及到音视频的编解码和传输等斚w的知识,而且与数学联p颇紧密Q但最后我q是选择了传输协议作为研I方向,虽然只是了解了表面的东西Q但q是以让我完成一本U优U毕业论文了,呵呵。虽然我学的专业是数学,但目标和方向已经逐渐偏离了数学,已经自q_֊和兴全部放?/SPAN>IT上了。中国不~写出优秀E序的程序员Q但IT金字塔的上层人员在中国仍然相当缺乏。中国有着大量的Y件蓝领,但项目管理h员和pȝ设计人员、架构h员等对h的素质和知识体系要求较高的角色却非常~Z。据我了解,无论是外资、台资还是港资Y件企业,重要的中高层理人员和技术h员都不是内地人。那些角色要求有比较完善的知识体pd较高的素质,我经q多q的努力Q打下了扎实的基Qƈ且通过q泛学习也搭Z比较完善的知识结构,我相信再l过三年的研I生阶段的学习和ȝQ必更上一层楼。信息技术在发达国家应用已经非常q泛Q而在我们国家Q?/SPAN>IT的应用还是青黄不接,很大部分企业仍然在用落后的pȝQ有一部分鼓起勇气上新系l的企业也只成功了很部分,大部分项目要么夭折,要么拖着。原因是多方面的Q国内的大部分Y件公司或信息咨询公司~Z优秀的行业顾问、项目管理h员和pȝ架构师等高人才Q实施的目或提供的解决Ҏ(gu)q不能很好地解决企业提出的问题;国内的品除了少C国外产品有一定竞争力外,其余都靠“蒙”企业来获取极少的利润维持公司的生存Q部?/SPAN>IT公司实施国外的品时同样׃人员水^问题D不能很好地将国外优秀的品应用到企业中去。国内的IT公司在服务方面也做得很不理想Q所以象IBMq种提供优秀IT服务的公司,在国内很快占领市场,管对于国内IT公司的成长会产生不利Q但对于大部分行业的企业来说Q却是一个福韻I毕竟IBM?/SPAN>solution是处于领先水q的?/SPAN>Engineer?/SPAN>Consultant?/SPAN>Architect在企业应用中都v着非常军_性的作用Q对技术感兴趣的我更偏向于Software Engineer?/SPAN>Architect。对国内IT现状的不断了解我更加坚定了自己的决心:努力成ؓ一名优U的系l构架师。然而,我深?B>要成Z名优U?/B>ArchitectQ技术功底和完善的知识体pd相关行业l验都是非常重要的?/SPAN>在开始研I生学习Ӟ我给自己定下目标Q?B>在研I生期间Q进一步学习相关知识,完善知识l构QƈxIT技术、应用趋势,同时在实践中U篏目l验Q提高各斚w能力Q熟(zhn)国内外先进的品?/SPAN>

 

TJS_IMIS目l历

2002q?/SPAN>10月,也就是刚开始研I生学习不久Q我q来了一个新的挑战。导师接C个特U设备监察检验所的信息集成系l,׃实验室只有我和一位博士师兄有相关的项目经验,我的企业应用开发经验似乎更胜一{,导师把项目管理、系l架构的重Q交到我手上。对当时的情景印象非常深刻,导师在开会讨论时单介l了目的情况,然后提名让我?/SPAN>PMQ当时有几名博士和硕士师兄师姐以及同U的同学

一共六七个成员在场Q大家一致通过。我知道我是凭借着以前的项目经验得到导师的赏识q委以重任,虽然充满信心Q但也有些紧张。虽然我有超q两q的企业应用开发经验,但作为项目管理h员,q是头一遭。以前对目理的认识都是停留在理论和观察上Q现在则是来真的了。当时我刚完成工作流定义工具的开发,q没歇会Q研I生评也比较紧Q这真是一个巨大而全新的挑战。我l自己打气:q是一ơ挑战,也是一个机会。我׃几天旉整理ȝ了过ȝ目l验和对目理的认识,然后跟导师确认了目能安排的资源?/SPAN>

以前作ؓ目l成员,L׃?/SPAN>team leader带着Q现在自׃要成?/SPAN>team leader了。我怿自己一定行的,成功属于有准备和努力的h。我׃一个星期的旉ȝ所做了pȝ调研Q由于特所跟学校不在同一个城市,一ơ调研要跑好几趟Q真是篏啊)Q基本上了解了特所的M要求Q他们希望能有一个信息集成系l,包括内部信息理pȝ负责理所内日常工作,信息发布pȝ负责对外发布信息Q电话查询系l提供对外查询接口,Ud办公pȝ辅助技术h员外出工作。花几天旉对调研情况进行了整理Qƈ通过参考和比较选定了几U关键的技术,完成初步的调研报告和技术方案,提交l导师(目监督Q呵呵)Q然后重重松了口气。来回奔波确实很折磨人,虽然以前也经常出差,但象q次q样奔L倒还是第一ơ,不过q是很有成就感。在定技术方案的时候,我参考了大量资料和案例,也咨询了一些经验h士,q根据项目组开发h员和Ҏ(gu)所的实际情况(成本、已有资源,工作方式{)Q给Z几种技术方案和重点推荐Ҏ(gu)。由于内部信息管理系l只是在所内部使用Q而且客户端数量不多,我选定?/SPAN>C/S作ؓpȝ的构Ӟ虽然从长q角度来说应该考虑pȝ的兼Ҏ(gu)而选择先进?/SPAN>B/S架构Q但考虑到技术风险、技能风险(开发组成员都是W一ơ参加正式项目)、成本等因素Q?/SPAN>C/S仍是首选。而简单的信息发布pȝ则可以用ASP+IIS搞掂Q无额外的应用服务器,虽然涉及到少量提交页面,但访问量着实太,性能和安全等问题基本上可以不用考虑。至于移动办公系l,׃客户l出的预着实不是太充裕Q秉着节P实用的原则,同时考虑客户的员工素质,选定了以PDA作ؓ数据录入、存储、查询设备,通过PDA与工作计机交换数据的方案。电话查询系l则只需选用h适中的电话交换机讑֤?/SPAN>OK了?/SPAN>

调研报告提交后的几天Q我开始着手准备项目计划事宜。当时可以参与项目的成员有七个左叻I包括我在内)Q其中只有一个博士师兄有q工作经验,但他不会有太多的旉投入Q其他的成员都没有实际项目经验,只是学过E序设计评Q做q课E设计,而且熟?zhn)?/SPAN>Delphi的偏多。我Ҏ(gu)pȝ的规模和大致需求,以及开发资源,估计了可能存在的风险Q确定了目旉为六个月Q其中考虑到分析设计h员有一定经验,而开发h员存在技能风险,需求分?/SPAN>/pȝ设计旉定ؓ60天,~码/单元试90天(采用q代开发模式)Q整合测?/SPAN>/培训/实施30?/SPAN>。虽然之后由于一些估计不的风险Q项目组成员全部是学生,存在不稳定因素)D目旉有所调整Q但目q度基本上在控制之中?/SPAN>

当项目正式立案签U后Q就要开始需求分析了。在我带一个成员进行需求分析的一个月里,我才知道调研那段旉所受的痛苦是那么的dQ与客户沟?/SPAN>+文档整理+来回奔L+学业+技术培训,真正让我体验了工作的艰辛。在需求分析的同时Q我整理了以前积累的技术文档资料以及系l框架对目l成员进行了培训Qƈ让一个基较好的成员作为助手,指导开发h员熟(zhn)相兛_度、文档和代码规范、系l框架、版本管理知识等{。需求分析期_我体会到了沟通的重要Q也提高了自q沟通表达能力,虽然q是W一ơ接触的业务Q但通过反复沟通,我基本上了解了整个业务流E,同伴主要负责部分部门业务l节的沟通,也较好地完成了Q务。幸q的是,客户的高层领导非帔R视这个项目,创造了良好的环境配合我们的工作。在与用h通的时候,也遇C一些问题。尽他们一直都在用pȝQ用foxpro开发)辅助工作Q但他们对计机的了解程度还是比较低Q在沟通时Q时刻要注意不能使用计算Z业术语,而应该用他们领域的语a描述需求,~写需求分析说明书时只能用用L语言。部分用户对他们本n的需求比较模p,q时候需要结合他们的实际工作和信息系l的功能q行分析解释Q让需求逐渐清晰。同伴非常认真负责,学习能力也很快,我们通过努力按时完成了需求分析。需求分析说明书提交l客户后Q我q没有松口气。根据以前的l验Q客h非常怿软g开发方的,要求他们在需求分析说明书sign inӞ他们会立ȝ名的。他们相信开发方已经很好地理解了他们的需求,但事实上可能q如此。我与导师一赯他们说明了具体情况和风险Q要求他们认真审核我们的需求分析说明书。客户也表现Z较高水准Q他们花一个星期的旉寚w求进行了认Qƈ最l签字通过。虽然后来需求也发生了一些小变化Q但M来说Q当时的需求分析是非常成功的,基本上没有媄响项?/SPAN>

q度。后来项目庆功会的时候,老板Q导师的늧Q呵呵)特别了需求分析的成功和所起到的作用,我被一再点名,弄得怪不好意思,J。回惌v来,在整个需求分析过E中Q过去项目经验v了重要的作用Q但我其间经常向一些有l验的前辈学习ƈ且抽I学习相关的文档资料和Y件工E书c,保持思考,更是起关键性作用?B>整一个过E是我对以前l历ȝ的过E,也是不断学习、思考的q程。能在工作中不断学习、进步,q是最让我兴奋的?/B>

当需求分析完成的时候,出来的成果不单是需求分析报告,q有一帮摩x掌的兄弟姐妹。经q培训和他们自n的努力学习,他们已经不再是雏鸟(他们的用词是“菜鸟”,呵呵Q了。我看过他们的代码,与他们就开发过E的看法q行了交,发现他们真的是学习和理解能力非常强的人,“手下”高手如云,我对q项目越来越有信心了?/SPAN>

下一步是pȝl构设计了。划分功能模块是首先要考虑的问题?/SPAN> “高内聚Q低耦合”是模块划分的原则。我Ҏ(gu)q个原则按照他们提出来的四个业务需求,信息集成系l划分ؓ四个子系l:内部信息理pȝQ信息发布系l,电话查询pȝQ移动办公系l,他们都存在轻度的数据耦合。其中内部信息管理系l是最复杂的子pȝQ根据他们内部部门的划分和工作之间的联系Q划分ؓ八个大的模块Q系l维护、h事管理、公文流转、质量管理、检验管理、胦务管理、A器与资料理、报表管理。这八个模块耦合E度低,而且高内聚。四个子pȝq一个中心数据库Q选用MS SQL SERVERQ达到数据共享,不会出现信息孤岛Q很好地解决了旧pȝ存在的问题。鉴于他们的l计报表、证书的格式l常可能发生变化Q我设想专门独立一个报表管理模块,为系l管理员提供一个修Ҏ(gu)表格式的工具Q随时可以修Ҏ(gu)表的昄格式Qƈ且提供一个查询管理工Ppȝ理员可以无ȝE就可以定义查询条g和显C的内容Q这样就提供了这样一U可能:pȝ理员可以控制不同的用户使用同一个查询功能得C同的l果昄Q调用不同的查询条g和显C结果要求)。在~写设计文档q程中,我经常召集项目组的成员开组会议Q提出我的想法与他们q行讨论Q大家各抒己见,逐渐完善pȝM设计说明书。我在参考一些流行品的pȝl构和界面的同时Q也Ҏ(gu)自己的经验提q新思\Q得到导师、师兄和客户的肯定和支持。后来事实证明,q个pȝ的结构保证了整个pȝE_q行Q而且速度、性能、工作效率都完全满客户的要求,得到客户较高的评仗确定了pȝ的Ml构后,我设计了pȝ的用L面,q提交原型给客户。客户在目开发工作尚未正式开始之前,׃解了未来pȝ的全貌及以后的工作方式,他们Ҏ(gu)l予了肯定?/SPAN>

开发工作正式拉开了序q。在正式开发之前,我与开发h员统一了思想Q每个成员负责一C个模块的开发,重视单元设计文档、单元测试文档的~写Q我特别了单元测试的重要性(即如此Q还是有些开发h员在前期忽视了单元测试,l果试人员q行模块整合试时发生许多错误,不过后来l过多次沟通,基本上开发质量得C保证Q。开发过E中Q每周我l织两次目l会议,周一成员汇报计划Q周五ȝ一个星期的工作Q还通过不定期的组讨论q行交流Q解决遇到的N。开发h员都感到通过交流可以学习到很多新的东西,也加快了开发速度Q减不必要的错误,避免了走弯\?/SPAN>Teamsource的用保证了版本理。我在承担一定开发工作的同时Q将主要_֊攑֜以下斚wQ协调、监督组员的工作Q监控项目的q度Q与客户、导师沟通;l织定期的项目组会议。其间我们也遇到了一些困难,但通过大家的共同努力,q是克服了种U困难,保证了开发进度基本上按计划进行。开发前期,我向导师多要了两个没有Q何开发经验和~程基础的同学(之前因ؓ没有~程基础所以没有加入项目组Q,让他们熟(zhn)系l的需求,配合开发h员的单元试工作。在后面的整合测试中Q他们也起到了中坚作用。其间我向导师徏议与客户方商量派一个用户定期过来测试已l成型的模块Q这个措施也保证了系l一直沿着正确的方向ƈ且按照时间进度计划前q。经q两个半月的开发工作,具备大部分功能的pȝ已经出来了,我提几天旉对系l进行整合,形成W一个完整的试版本Q在我们试q后提交l用戯行测试。这个提议得到导师的赞同Q这h下来的时间里Q我们l完善系l的功能Q而客户则可以抽空Ҏ(gu)们的pȝq行试Qƈ及时向开发h员反馈他们的意见。也许是当初需求分析做得细致的~故Q客户在试q后只提Z量更改意见Q这Ҏ(gu)们项目组的成员是莫大的鼓舞,而我更是兴奋不已。但我没有放松,我知道现在还没有真正成功Q在后面q有很多重要的Q务没有完成。在最后的一个月旉里,我们没有松懈Q根据用L反馈和要求l完善系l功能。直到最后交付给客户正式使用后,我们q是或多或少对系l功能进行了变更和完善,毕竟需求不是一成不变的。整一个开发过E体C我们的团队合作精和认真负责的作风。每一个项目组成员在后来的目ȝ中都表示学到了很多书本上学不到的东西Qؓ以后的工作积累了宝贵的项目经验。他们全部都Ҏ(gu)表示了感谢,我有一U苦甘来的感觉?/SPAN>

开发过E比较顺利,但最后的pȝ交付却出C一些问题。系l培训时Q客h的用L于工作Q务比较繁重,对培训生了抵触情A。开始通过行政q预Q让客户方的高层领导出面Q,但上有政{下有对{,他们l于全部出席参加培训了,但n在曹营心在汉。我知道如果用户得不到培训的话,使用pȝ时会出现很多不必要的ȝQ特别是我们与客户不在同一个城市,不能做到及时的“售后服务”。我军_和那些用戯行交,交换一些观炏V我首先征求他们的意见,发现他们没心机参加培训的原因之一是他们认Z直在用计机pȝQ新pȝ也相差不了多。我针对他们的这U看法,大概介绍了新pȝ的思想和工作方式,引v了他们的兴趣。我机指出新系l与旧系l在工作方式和流E上的区别,熟?zhn)pȝҎ(gu)高工作效率的作用。本来我是抱着试试的态度Q没惛_却收到意外的效果Q可能是他们Ҏ(gu)比较信Q的缘故(他们认ؓ“研I生Q很厉害的”,呵呵Q而且在需求分析期_我也跟他们؜得比较熟Q,而他们对领导却有些抵触情l。我发现通过q个目Q组l、协调、沟通、表达能力都得到很大的提高,而且好象q有些“个人魅力”(通过表扬、鼓舞,大大提高了开发h员的工作效率和热情)Q呵c?/SPAN>

随着培训的结束、系l的上线Q这个项目也该画上个圆满的句号了Q尽还有一q的l护期(虽然我一直强调“服务”的概念Q但对于q个pȝ来说Q那些维护工作都是轻量的了,而且我已l培d一大批人才可以胜Qq个工作了,心里滋滋的Q呵呵)。这是我W一ơ作?/SPAN>team leaderQ就获得了成功,我知道这不是靠运气的Q而是自己不断学习Q不断ȝQƈ充分调动开发h员的U极性和发挥他们的优势的l果Q这是团队合作的成功Q其间所l历的艰辛让我至今难忘,而所学到的东ѝ所取得的进步却是一W巨大的财富。后来到Ҏ(gu)所Ӟ听他们领gl,我们开发的pȝ在省内同U单位中处于领先CQ某些工作方式甚x国内首创?/SPAN>

q次目l历l我带来了技术的提升Q但更主要的是各斚w能力Q组l、协调、沟通、表达)的提高。特别有成就感的是我没有因ؓ目d的繁重而媄响学业,每门课成l都是良好以上?/FONT>


瘦猴 2005-10-24 20:09 发表评论
]]>
工作感?zhn)Q{_http://www.tkk7.com/kieliy/archive/2005/10/24/16627.html瘦猴瘦猴Mon, 24 Oct 2005 12:07:00 GMThttp://www.tkk7.com/kieliy/archive/2005/10/24/16627.htmlhttp://www.tkk7.com/kieliy/comments/16627.htmlhttp://www.tkk7.com/kieliy/archive/2005/10/24/16627.html#Feedback0http://www.tkk7.com/kieliy/comments/commentRss/16627.htmlhttp://www.tkk7.com/kieliy/services/trackbacks/16627.html转眼_自己从事IT已经两年了。期间亲w经历了一?/SPAN>MISpȝ的沉沉Q,感受C国有企业理存在的诸多问题。让我体会最q是:一个技术h员光靠提高技术知识还不行Q因为管理比技术带l项目的影响更深。所以当一个公司管理存在一定问题时Q技术h员L感到力不从心?/SPAN>21世纪的中国,需要的是h才,其是管理h才?/SPAN>

虽然我只是一个项目的开发成员,在企业管理上没有Ml验。但我却一直在观察和思考,所以这里我惛_两方面进行ȝQ一是企业管理,二是目开发?/SPAN>

我们公司以前的业务主要面向网l架构与pȝl护Q在软g开发上q没有稳定的开发环境、没有成熟的开发流E、没有丰富的开发经验,人才匮乏Q基薄弱Q这是我们的现状。作Z个企业,做项目赢利是生存之道Q但Z长远的发展,我觉得公司应该着力于建立开发环境,开发流E,开发规范,然后在实际的目中检验完善,q把开发经验整理成文档?/SPAN>

1、完善开发环?/SPAN>

    ׃我们公司?/SPAN>LINUX的研I上已经有了一定的基础Q因此可以徏立v两套开发环境,一?/SPAN>LINUX+APACHE+MYSQL+PHP(LAMP)Q二?/SPAN>LINUX+TOMCAT+MYSQL+JAVA(LTMJ)?/SPAN>PHP以快速开发见长,它有丰富的函数库Q有易于替换面的模板技术,很适合中小?/SPAN>WEB目的应用,所以徏议普通的|站采用LAMP?/SPAN>JAVA博大_深Q有功能强大的中间g支持Q有开源免费的框架l构Q另外支持的企业也很多,资源丰富。因此大型项目徏议采?/SPAN>LTMJQ其中的TOMCATҎ(gu)实际需要可以被其他应用服务器替换。公司应该明这L发展方向Q有针对性地建立q完善开发环境,提高开发团队的开发能力?/SPAN>JAVA虽然已经是企业pȝ开发的行业标准Q但它对公司的积累,开发h员的素质要求也更高,所以我认ؓ公司一斚w要加大力度对该技术的研究Q另一斚w不要被潮所左右Q要Ҏ(gu)一个项目进行客观分析,我们只选择最适合的,不选择最行的,争取目利润的最大化?/SPAN>LINUX研发应该有更高的要求Q而不仅仅是停留在使用的层ơ上Q因为它本n是一个大的编译环境,开发环境,所以应该让有编E经验的人加入,那样才会提高研发成果?/SPAN>

2、培M业Ş象,扩大企业知名?/SPAN>

公司应该?**计算Z心的角色中{变出来,培养自己的企业Ş象。我们不但要提高工程部的服务质量Q也要保证Y仉的品质量。我们所开发的产品除了要满_能需求外Q还要注意细节的完善。比如用L面、hZ互已l不在是软g的奢侈品Q而是必需品。ؓ客户考虑得更多,会潜在地为我们带来更多的客户。公司应该确立项目和产品齐头q进的方针,有项目时做项目,没项目时做品,既多了一个利润增长点Q也可以ȝ队伍Q还可以扩大企业知名度。我们公怽Z个Y件公司,竟然没有自己的门L站,也没有一套象L理pȝ。其实,我们完全可以以此为契机,完善公司的开发流E。比如企业网站,先根据功能进行抽象,比如Q新d布,|站调查Q用LaQ活动社区等Q然后徏立各个模块的代码库。如果把企业|站比作是一台机器的话,各个功能模块是雉Ӟ当我们用开发的雉件组装成一台完整的机器后,我们公司的门L站也徏h了。更重要的,我们已经h了快速开发企业网站的能力Q无非就是各U功能模块的选择与装配。甚臻I我们q可以做一个装配的软gQ这是我想象中的能够制造Y件的软g。当Ӟ能够做出q样一个Y仉度肯定更大,但我觉得对于一个企业来说这是值得d试的,而且Q企业网站的功能相对比较单,技术上也是可以实现的。对于公司的理pȝQ我认ؓ可以试开发一套适合中小型企业的OApȝ。这两套pȝQ只是我的一个初步设惻I考虑肯定q不够完善,q需要做充分的市研和详细的系l分析?/SPAN>

3、完善规范和建立资源?/SPAN>

标准和规范对于Y件开发的重要性不用多说了。制定标准和规范也应该是一件很慎重的事Q尤其是开发规范应该由有丰富开发经验的人来制定Q否则效果只会适得其反Q降低开发效率。开发规范跟语言有关Q我们公怸要用两U开发语aJAVA?/SPAN>PHPQ由于面向对象编E已l完善和成熟hQ?/SPAN>JAVA无疑?/SPAN>OO~程占统d位,因此我徏?/SPAN>PHP开发规范向JAVA靠拢Q这也符合我们公司现Ӟ开发h员较?yu),隑օ会出C叉开发,既一个h扮演多重角色Q参加多个项目,使用多个语言。这P在语a变换的时候就不会出现不适应的情c至于资源库Q根据我们公司特点,应该包括软g库(开发YӞQ图片库Q网늴材)Q代码库Q通用代码Q,资料库(开发资料)Q备份库QY件文档备份)。应该徏立v一套系l来q行安全和类别管理,q有专hl护Q也可以把这套系l纳入企业管理系l之中。规范和资源是随着目的开发不断完善和增加的,对于企业来讲Q这是一W胦富?/SPAN>

4、h才的培养务专不务?/SPAN>

IT技术日新月异,要求开发h员需要不断地学习新的知识Q新的技术。但人的_֊毕竟是有限的Q谁也无法掌握所有的技术。因此公司应该把个h爱好和公叔R要结合v来,有目的、有方向地培Mh才。我们不需要样样都会,h都只知皮毛的人,而需要需求专家、数据库专家、语a专家、界面专家等专业人才Q这L合v来的团队才能各尽其才Q各展所长,q样l合h的团队才是技术上有深度的团队Q这样开发出来的产品才会是高质量的品。当然作为我们开发h员自己,qx要注意拓展自q知识面。Y件开发,l不仅仅是计算机的事,需要的是个Z为。公司应该制定长期和短期的学习培训计划,定期q行技术ȝ和交。比如一周花两个时q行技术ȝ和交;一个月开发团队要学会哪一个框Ӟ半年应该学会某一门语a。同时还要鼓励技术创斎ͼ奖励肯在技术上q行ȝ的员工?/SPAN>

5、制度的完善

作ؓ一名员工,应该培养自己好的职业习惯和高的职业道d。但作ؓ一个企业,却绝对不要指望员工能有多高的思想觉?zhn)Q自觉圆满完成各工作,而应该不断完善规章制度及其监督制度,引导和监督员工的工作行ؓ。合理的制度是不会让员工反感的,相反Q这可以帮助他们戒除恶习L好的工作习惯从而变的更优秀Q惩|恶例奖׃U从而让大家获取更大的利益。其实这和依法治国的原理是一LQ法律只Ҏ(gu)q法行ؓ的h才有U束作用。所以请恕我直言Q当一个公司工作效率不高,风气存在问题Q在抱怨员工素质不高的时候,理人员请首先从自nN题。Y件开发,是一个特D的职业Q很隑ֺ量员工的工作量。因此,q就为公司管理提Z更高的要求,如何才能有效刺激员工的工作积极性,保证团队的开发士气。合理的薪酬制度是一把有力的武器Q它可以惩莠促良Q提高公司的向心力和向前力。我们应该承认每个h的能力是不一LQ所以就应该接受薪酬的差距。Y件公司普遍都使用基本工资加项目提成的办法Q对于不在项目团队的员工Q比如维护或做品,则加适当的奖金补뀂项目提成,要采用风险制Q即目完成的质量高Q成本控制的好,旉使用的少提成高Q如果项目失败了Q则没提成,q样可以提高目成员寚w目的责Q感?/SPAN>

其实软g开发h员是一个比较特D的体Q我们虽然很在乎薪酬Q生存需要)Q但我们更看中做事,看中创造性活动的带来的成感。企业只有ؓ员工提供施展才华的舞収ͼ让他能够感受到编E带来的快乐Q能够ؓ员工谋得更高的工资,让他能感受到工作的优感Q员工才能以自己的聪明才Zؓ企业创造更大的利润Q才能让一个企业真正走向良性@环,做到员工和企业双赢的l果?/SPAN>

 

 

我来公司后就一直开?*目Q这个项目难点不在于技术层面上Q而是我们公司?*q种非正常的客户关系上。这个项目先后有三个目l理接手Q多ơ改弦更辙,旉长达三年Q浪费了大量人力物力财力Q这都是很不正常的。这个项目很重要Q?*把它看着企业信息化的标志Q因此我们公司把它列为工作重中之重。但作ؓ一个企业,应该Ҏ(gu)一个项目实施好旉控制、成本控制、质量控Ӟq个目l对不能无限期拖下去。不公司怎么定位Q在我心目中Q这个项目都是一个失败的目Q因此在我心中才留下了很深刻的印象,关于软g开发的一些模p的概念也逐渐清晰h?/SPAN>

1、需求尽量完?/SPAN>

在合同签定前Q应该尽量细化需求,在项目开始后Q要量限制客户的需求。如果需求不能控Ӟ那么你项目离p|也就不远了?/SPAN>

2、项目计划尽量考虑周全

做一个草率的计划只会让该计划不断被修改,l果只会拖g目的进度,提高目的成本,q样的计划只是一个Ş式,没有实际意义?/SPAN>

3、系l需要架?/SPAN>

大型pȝ其重要Q如果我们要盖大厦,肯定要考虑地质、气候等条gQ然后才能确定挖地多深,钢精型号。不可能因ؓ我们只有盖过公寓楼的l验Q就以ؓ无数个公寓楼叠v来就是大厦,l果可想而知。Y件是一个变化的事物Q用L需求随时会变,没有一个良好的l构你将会发现维护工作步履ؓ艎ͼ代h(hun)更高?/SPAN>

4?/SPAN> 数据库设?/SPAN>

数据库不是业务数据的单罗列,它应该是整个pȝ的完整抽象,实体关系N了实体外q应该包括他们之间的关系?/SPAN>

5、项目g后怎么?/SPAN>

盲目加h只会廉工期。如果加入新人,代码质量q不能得C证。这个时候,你要么注入加班费刺激一下,要么砍功能?/SPAN>

6、做事原则:先主后次Q先易后?/SPAN>

不要在不重要的功能上费太多的时间。浪费了旉可能就会g误项目,最l你可能会发玎ͼ你费心思做的功能可能就是要砍掉的功能?/SPAN>

7、保证规范的执行

没有规范?yu)׃能保证代码质量,目也就失去了可l护性。最p的情况是,pȝBUG呈不收敛状态?/SPAN>

8、测试驱动开?/SPAN>

没有好的试没有好的品。没有及早的试只会让~陷在系l测试阶D|隑֏玎ͼ因此单元试是必需的?/SPAN>

9、尽量减修?/SPAN>

pȝ是设计出来的Q而不是改出来的。无休止的修改只是在不断地否定自己,每个人都会厌烦这L事?/SPAN>

10、重视用L?/SPAN>

q是那句话,人机交互不是软g的奢侈品Q而是必需品?/SPAN>

 

    q就是我惛_2004q年底写的工作ȝ。在上次全体职工大会上听了韩ȝ讲话Q让我感受到了新一届领导班子力囑ּ拓发展的思想。Y件开发是一个技术型比较强的行业Q高手和新手工作效率和质量往往有数量的差距。公司应该逐渐建立一个技术过专家团Q协助领导的决策Q指导项目的开发。当然作为开发h员,更应该收hQw的心,t踏实实地做技术研I?/SPAN>




瘦猴 2005-10-24 20:07 发表评论
]]>
‘年轠Z绝对不是‘经验’的Ҏ(gu)Q-Q- 对一些开发经验的ȝ Q{_http://www.tkk7.com/kieliy/archive/2005/10/24/16626.html瘦猴瘦猴Mon, 24 Oct 2005 12:06:00 GMThttp://www.tkk7.com/kieliy/archive/2005/10/24/16626.htmlhttp://www.tkk7.com/kieliy/comments/16626.htmlhttp://www.tkk7.com/kieliy/archive/2005/10/24/16626.html#Feedback0http://www.tkk7.com/kieliy/comments/commentRss/16626.htmlhttp://www.tkk7.com/kieliy/services/trackbacks/16626.htmlblog上的Q但是感觉还是发到CSDN让更多的我的‘同cZ看到更好一些,可以得到更多的点d回复率,以满个人的‘发布欲’^_^, 也许q点点东西不什么,但的是我通过实践体会出来的,其实q有一些,但凑个整数正好,Ƣ迎看客再帮忙添加‘经验’?

  另外在CSDN上发文章也算是一U冒险,q好?A >上回发的文章没我的‘冒险精’受到挫折,反而增加了一些,所以这回斗胆再发一?愿真M佑我?BR>   

正文Q?/P>

  q几个月来独自一人开发一个多层进销存YӞ以前从没搞过cM开发,甚至没有独自设计开发做q一个太像样的系l,q几个月来的努力除了C些具有功利的目的外,Ҏ(gu)个h更重要的意义是做ؓ一个Y件开发h员,能够独立的从分析设计到编码来完成一整套pȝ的开发,也算是在职业技能上的一个很重要的里E碑Q也是一个挑战。还好,现在软g的大部分重要的工作已l完成,在这几个月中除了在编E上有些提高外,另外也?zhn)到很多‘道理’,个h感觉在不断探索中能在专业技术上领?zhn)C些东西,对于提高专业水^比v一些具体的~程技术来说重要的多了。具体领(zhn)到了哪些有用的东西Q我看就只能是只可意会不可言传了^_^Q所以说有时自学成的比老师教的要好Q也是q个道理了?/P>

  下面是ȝ的一点(你可能认为理所应当但还是会知法犯法Q的l验Q?/P>

Q 开发Y件要用熟(zhn)编E工具和语言Q特别是在有旉规定或是不想p多时间的情况下一定要q样做。不能用一些时的但还不熟(zhn)或是本w不成熟的技术来开发?/P>

Q 不能急于~码Q在q之前多花时间进行分析思考到最后完成工作,其实q样会相Ҏ(gu)省时间?/P>

Q 不要受一些‘先q思想或工具干扰’搞形式MQ如果可能的话按照自已以往的习惯进行开发,最合适的Ҏ(gu)才是最好的Ҏ(gu)Q最合适的工具才是最好的工具?/P>

Q 但要注意在可能的情况下有分寸的常识新技术新工具Q或新的思\Q但前题是保证Y件质量和开发进度?/P>

Q q也是我体会最q一条:q轻’绝对不是‘经验’的Ҏ(gu)?btwQ我是新手且q轻)Ҏ(gu)Ҏ(gu)术没有经验,往往会费更多的时间来学习如果正确使用q种技术,可能有经验的老手Q小时能完成的工作,没有l验的新手有可能花2时或是Q白天时间。所以就程序员很老,老到Q天只有_֎工作3,4个小Ӟ那么按照上面的推论年ȝE序员仍然可能没有能力超q老程序员。所以经验还是最重要的。另外对于学习新技术而言Q应该也是经验最重要Q因为‘温故而知新’,新技术往往是由旧技术演化而来Q老手Ҏ(gu)已掌握的旧技术花Q小旉p学会的新技术,那么新手可能要花更多旉。当焉非老手攑ּ不学也不做?/P>

Q 最后再去问‘h’。单独开发nҎ(gu)本没人可问,q团队开发别Z不是你的专职NQ偶而问问叫做加强沟通,别h也有工作要做Q问多了׃见得是好事了。所以充分利用网上资源,到相x术论坛提问或查找Q应该是最优先的办法?/P>

Q 论坛提问要引人注目,不然没h理你。所谓引人注目到不见得一定是写个吓h的标题,q在于问法,发问_子写长了h家看h会烦Q写了不明,所以要扑օ键的写,费话说Q语气谦虚,OKl对有h会回{你?/P>

Q ‘自动’的有时真的不如‘h工的’。有些‘自动化’的技术看DEMO挺好Q但用于复杂的实际情况,往往q不如自巜yh工’完成,q样自已的控制权更多Q出问题时的可控性更强?/P>

Q 设计以及~程旉时想着留后?扩展?。再好的设计来隑օ会有变动Q编码也一P所以实现时要权衡这些变动因素?/P>

Q0 软g是有可能消失的!所以-Q备份!备䆾Q再备䆾Qƈ且要查你的备份是否能真的能恢复原Ӟq且q要不只有一份备份!Qƈ且最后还要保证你的这些备份存在于不同的物理介质上Q!


      大约Q个月后完成q个软gW一个版本后Q因为需要可能会扑ֈ人合作开发一个B/Sl构的版本。其实个人对B/Sq不十分有好感,但根据我和一些Y仉售h员的接触Q‘市面’上B/S的明显比H口的要好买。没办法Q还好有Asp.net不用再去Asp了,不然用Asp做应用系l简直就是一U‘ؕ伦’(按照技术上的特Ҏ(gu)说这个比d实一点也不过份就像算说国内计机教育是XXX一P其实一点也不过份,而且从所周知Q。这个Y件完成时会发到CSDN上Share的。然后找Z试‘团队开发’到时再来点合作开发经验ȝ吧^_^



瘦猴 2005-10-24 20:06 发表评论
]]>
վ֩ģ壺 һѹۿ| һ߹ۿ߹ۿ| AVһ| ޵һ| þ޾Ʒgv| ˺Ů˸߳վ| Ļ| 18Ůվ| ӰԺ߹ۿ| ˳߹ۿվƵ| ȸAV߲| ޾Ʒþþþþ| ۺϹ˶¼ | ˼˼þ99ѾƷ6 | avҹƷ| ҳվƵ| Ʒ͵Ƶۿ | Ƶѹۿ| Ƶһ| AVպAV뵼| һ| ѿһһƬ| һѿ| ˬƵ| ۺС˵| 666ƷƷ| Ů͵޾Ʒ| ձһ| ѧaëƬѹۿ| ҹþþþüŮӰԺ| һŷĻ| Ƶ| hƬ߹ۿַ| 㽶Ʒ鶹| ް鵺̳| Ʒһþ| þѹۿ99Ʒ| ѹۿ| Ļ| ؼaa**ëƬѹۿ| ˾Ƶ|