姿姿霸霸~~!
          貴在堅持!
          posts - 106,  comments - 50,  trackbacks - 0
          第三階段
          流行MVC架構和Java對象持久化技術。包括Struts、Spring、Hibernate。
          要求:
          MVC-------理解MVC設計模式、處理過程。(其實jsp+servlet+javaBean就是一個最基本的MVC框架)
          Struts-------理解Struts實現MVC的機制、工作流程。掌握配置Struts應用、(Struts-Config.xml,ActionAction、ActionForm)的運用,Struts應用的國際化(感覺就是標簽加配置文件,property那個文件)、Validator驗證框架(可以聯系下JS)、Struts標簽庫。
          Spring-------掌握控制反轉(IoC),也就是DI,然后是面向方面編程(AOP),其他的晃一眼。。。
          Hibernate--------理解ORM,掌握映射對象標識符、映射關系(一對多、多對多、一對一)、映射類型、檢索策略、檢索方式、數據庫事務與并發、管理Hibernate的緩存。 (可以和EJB里面的EntityBean對起來看)

          學習過程:先學習Struts,再學習Hibernate,最后學Spring,再最后把幾個框架結合在一起,注意XML的配置。。。還有注意要積累對一些常見的異常的處理方法。總的來說,我覺得框架就是會使用就行了,平時多去想想它帶來的好處,也就是為啥子要用它們,也就是它們的一些思想,比如說spring的DI,使用了框架后的松耦合等等。

          有時間的話,看一下ajax,JSF,webwork,有用的東西。對了,還有CVS等一些版本控制工具。(這些都是霸霸說的^_^)
          posted @ 2007-01-31 00:28 xrzp 閱讀(636) | 評論 (1)編輯 收藏
          第二階段:
          JAVA網絡編程(Socket)、HTML、XML、JSP、JavaBean、Servlet(后面3個是重點)。
          要求:
          Socket--------掌握java.io包中的套接口類和服務器套接口類的使用。
          HTML--------了解HTML語言的語法、各種標簽。
          XML--------掌握XML語言的語法,其他的了解下。
          JSP-------掌握JSP2.0語法、五大元素、內置對象、EL、JSTL1.1、JSP自定標簽。
          JavaBean-------理解JavaBean的特點和事件模型。
          Servlet---------掌握HTTP協議、Servlet工作過程、Servlet會話跟蹤、Servlet過濾器、Serlvet事件偵聽器、配置web.xml。
          PS:-------學習過程中學會使用Tomcat、JBoss服務器,學習使用myeclipse、dreamweaver、junit開發工具。
          另外,關注一下EJB3.0。
          posted @ 2007-01-31 00:15 xrzp 閱讀(565) | 評論 (0)編輯 收藏
          自己看了幾個月JAVA的體會:框架的東西隨時會變,而基礎是不變的;所以基礎很重要。
          第一階段:
          JAVA語言基礎知識。包括異常、IO流、多線程、集合類。常見的幾個包、幾個接口。
          要求:
          異常------掌握try-catch-finally的使用
          IO流------掌握字節流、字符流和對象序列化的處理。熟練使用各種輸入、輸出流類(InputStream、OutputStream、FileInputStream、FileOutputStream、DataInputStream、DataOutputStream、BufferedInputStream、BufferedOutputStream、Reader、Writer、InputStreamReader、OutputStreamWriter、BufferReader、BufferedWriter、ObjectInputStream、ObjectOutputStream)。
          多線程-------掌握多線程實現的兩種實現方法,分別是繼承Thread類與實現Runnable接口。理解線程間的同步與互斥。
          集合類-------掌握Set、Collection、Map、List、Iterator、Enumeration接口的使用,掌握HashSet、ArrayList、Vector、HashMap、HashTable類的使用。
          常用的包:java.lang,java.util,java.io,java.net,java.awt,javax.swing

          另外-------理解Unicode、GB2132、GBK、UTF-8、ISO8859編碼方式。以及怎么處理亂碼的方法。
          了解javase1.5新增的內容:自動裝箱/拆箱,泛型之類的。
          posted @ 2007-01-31 00:05 xrzp 閱讀(446) | 評論 (0)編輯 收藏
          近日在論壇上看到有人在問星期算法,特別整理了一下,這些算法都是從網上搜索而來。希望對大家有所幫助。

          一:常用公式

            W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D

            Y是年份數,D是這一天在這一年中的累積天數,也就是這一天在這一年中是第幾天。

          二:蔡勒(Zeller)公式

             w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

            公式中的符號含義如下,w:星期;c:世紀;y:年(兩位數); m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算);d:日;[ ]代表取整,即只要整數部分。

             相比于通用通用計算公式而言,蔡勒(Zeller)公式大大降低了計算的復雜度。

           三:對蔡勒(Zeller)公式的改進

          作者:馮思琮
              相比于另外一個通用通用計算公式而言,蔡勒(Zeller)公式大大降低了計算的復雜度。不過,筆者給出的通用計算公式似乎更加簡潔(包括運算過程)。現將公式列于其下:
          W=[y/4]+r (y/7)-2r(c/4)+m’+d

          公式中的符號含義如下,r ( )代表取余,即只要余數部分;m’是m的修正數,現給出1至12月的修正數1’至12’如下:(1’,10’)=6;(2’,3’,11’)=2;(4’,7’)=5;5’=0;6’=3;8’=1;(9’,12’)=4(注意:在筆者給出的公式中,y為潤年時1’=5;2’=1)。其他符號與蔡勒(Zeller)公式中的含義相同。

          四:基姆拉爾森計算公式

            W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

            在公式中d表示日期中的日數,m表示月份數,y表示年數。

          注意:在公式中有個與其他公式不同的地方:

           把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。

          posted @ 2007-01-16 23:07 xrzp 閱讀(1923) | 評論 (3)編輯 收藏

          先來個小總結:

          yield()使當前線程暫停。但設置了setPriority(Thread.MAX_PRIORITY);時,yield()不咋管用了。

          一般只需要重寫run()方法的話,實現runnalbe接口比較方便。

          如果在進程類里面需要訪問同一個變量的話,就實現接口。如果用繼承類的話,同一個變量就有幾份的拷貝。但是內部類繼承類的結和繼承接口的效果一樣。

          啟動一個線程
          MyThread mt=new MyThread();
          new Thread(mt).start();

          好多東西都有時間片。時間片是個不確定的東西。

          當調用wait(),notify()方法時,應該保證他們是同一個對象sy也要同一個對象。synchronized 中 才能有wait(),notify()方法。

          synchronized(Object obj)與synchronized(this)的區別?!(誰能告訴我!!!!!)


          下面是生產者與消費者的例子,為了方便,幾個類直接寫在一起了。


          //new 生產者,消費者,隊列。并起用生產者,消費者的線程
          public class Test {

          ?public static void main(String[] args) {

          ??Queue q = new Queue();
          ??Producer p = new Producer(q);
          ??Consumer c = new Consumer(q);
          ??p.start();
          ??c.start();
          ?}
          }

          //生產者,每生產好一個東西后,就往隊列中放一個
          class Producer extends Thread {

          ?Queue q;

          ?Producer(Queue q) {
          ??this.q = q;
          ?}

          ?public void run() {
          ??for (int i = 0; i < 10; i++) {
          ???q.setValue(i);
          ???System.out.println("Producer put:" + i);
          ??}
          ?}
          }

          //消費者,每當隊列中有東西通知時,就從隊列去拿
          class Consumer extends Thread {

          ?Queue q;

          ?Consumer(Queue q) {
          ??this.q = q;
          ?}

          ?public void run() {
          ??while (true) {
          ???System.out.println("Consumer get:" + q.getValue());
          ??}
          ?}
          }

          //隊列
          class Queue {

          ?int value;
          ?boolean flag = false;

          ?//生產者往這放它所生產的東西
          ?public synchronized void setValue(int i) {
          ??//當生產好一個往隊列中放了后,放置一個標志。發個通知,告訴說生產好了,并等待消費者來拿
          ??if (!flag) {
          ???value = i;
          ???flag = true;
          ???notify();
          ??}
          ??try {
          ???wait();
          ??} catch (InterruptedException e) {
          ???e.printStackTrace();
          ??}
          ?}

          ?//消費者從這獲取東西
          ?public synchronized int getValue() {
          ??//消費這先判斷隊列是否有東西了,有的話,就讓其他線程等待,自己取拿,拿好后設置一個標志,發個通告告訴其他線程,我拿好了
          ??if (!flag) {
          ???try {
          ????wait();
          ???} catch (InterruptedException e) {
          ????e.printStackTrace();
          ???}
          ??}
          ??flag = false;
          ??notify();
          ??return value;
          ?}
          }

          posted @ 2007-01-15 00:27 xrzp 閱讀(851) | 評論 (0)編輯 收藏

          1.
          集合框架分為Collection和Map。Collection包括set和List。

          2.
          Collection:集合層次中的根接口,JDK沒有提供這個接口直接的實現類。
          Set:不能包含重復的元素。SortedSet是一個按照升序排列元素的Set。
          List:是一個有序的集合,可以包含重復的元素。提供了按索引訪問的方式。
          Map:包含了key-value對。Map不能包含重復的key。SortedMap是一個按照升序排列key的Map。

          3.
          凡是繼承了collection的接口的,都有iterator的方法。

          4.
          對于沒有get的集合類,可以用爹帶器。而且爹帶器是通用的。

          5.
          collections是類,都是靜態的。里面有幾個方法是拿來排序的。(如sort方法)。compared是個比較器。
          collection是接口。

          6.
          Stack里面的pop和push有點像get和set。
          Queue和Stack差不多,但是是FIFO。

          7.
          因為hashset計算出對應的函數值,以這個值作為該結點存儲在散列表中的地址,所以對查找的效率非常高。
          實現set接口的能不能重復。
          hashset通過散列碼來存儲,而散列碼的獲得靠hashcode來得到。hashcode根據對象的內存的地址來得到散列碼。

          8.
          hashmap靠put填元素,靠get取元素。HashMap對key進行散列。
          三個方法keySet()、values()、entrySet()。

          9.
          在List的開始處增加元素,或者在List中進行插入和刪除操作,應該使用LinkedList。如果單單是為了查詢,就用ArrayList。因為ArrayList底層采用數組完成,而LinkedList則是以一般的雙向鏈表(double-linked list)完成,其內每個對象除了數據本身外,還有兩個 引用,分別指向前一個元素和后一個元素。

          10.
          HashSet是基于Hash算法實現的,其性能通常都優于TreeSet。通常都應該使用HashSet,在需要排序的功能時,我們才使用TreeSet。

          11.
          和Set類似,HashMap的速度通常都比TreeMap快,只有在需要排序的功能的時候,才使用TreeMap。

          posted @ 2007-01-14 00:40 xrzp 閱讀(356) | 評論 (0)編輯 收藏
          運行的時候,要先運行server,再運行client。
          服務器 :
          import?java.io.DataInputStream;
          import?java.io.IOException;
          import?java.io.InputStream;
          import?java.net.*;
          public?class?Server?{

          ????
          public?static?void?main(String[]?args)?throws?Exception?,?IOException{
          ????????System.out.println(
          "----Server?start-----");
          ????????ServerSocket?server
          =new?ServerSocket(1234);
          ????????Socket?socket
          =server.accept();
          ????????InputStream?is
          =socket.getInputStream();
          ????????DataInputStream?dis
          =new?DataInputStream(is);
          ????????System.out.println(dis.readUTF());
          ????????
          ????????dis.close();
          ????????is.close();
          ????}

          }


          客戶端:
          import?java.io.DataOutputStream;
          import?java.io.IOException;
          import?java.io.OutputStream;
          import?java.net.*;
          public?class?Client?{

          ????
          public?static?void?main(String[]?args)?throws?Exception,?IOException?{
          ????????System.out.println(
          "----client?is?running-----");
          ????????Socket?socket
          =new?Socket("192.168.1.3",1234);
          ????????OutputStream?os
          =socket.getOutputStream();
          ????????DataOutputStream?dos
          =new?DataOutputStream(os);
          ????????dos.writeUTF(
          "哈哈");
          ????????
          ????????dos.close();
          ????????os.close();
          ????}

          ????
          }

          posted @ 2007-01-14 00:23 xrzp 閱讀(1714) | 評論 (2)編輯 收藏
          JDBC是一個應用程序編程接口API,它描述了標準的JAVA庫如何使用結構化查詢語言去連接數據源。
          我的一個簡單模板:(此處用的是mssql數據庫)
          import?java.sql.Connection;
          import?java.sql.DriverManager;
          import?java.sql.ResultSet;
          import?java.sql.SQLException;
          import?java.sql.Statement;

          public?class?JdbcTest?{
          ????
          ????
          public?void?getConnection()?throws?SQLException,?ClassNotFoundException{
          ????????
          ????????Connection?conn
          =null;
          ????????Statement?stmt
          =null;
          ????????ResultSet?rs
          =null;
          ????????
          ????????String?url?
          ="jdbc:microsoft:sqlserver://localhost:1433:DatabaseName=pubs"?;
          ????????String?user
          ="sa";
          ????????String?psw
          =null;
          ????????String?sql
          ="select?*?from?authors";
          ????????
          ????????Class.forName(
          "com.microsoft.jdbc.sqlserver.SQLServerDriver");
          ????????conn
          =DriverManager.getConnection(url,user,psw);
          ????????stmt
          =conn.createStatement();
          ????????rs
          =stmt.executeQuery(sql);
          ????????
          ????????
          if?(rs.next()){
          ????????????System.out.println(
          "connection?is?ok!");
          ????????}

          ????????
          else{
          ????????????System.out.println(
          "connection?is?fail!");
          ????????}

          ????????
          ????????rs.close();
          ????????stmt.close();
          ????????conn.close();
          ????}

          ????
          ????
          public?static?void?main(String[]?args)?throws?Exception?{
          ????????JdbcTest?test
          =new?JdbcTest();
          ????????test.getConnection();
          ????}

          }

          PS: 因為偷懶,所以直接對有異常的地方采用的是拋出異常,并沒捕獲。

          三大數據庫的驅動和URL:
          MYSQL:
          driver是?org.gjt.mm.mysql.driver
          ?url是?jdbc:mysql://ip:port:databasename
          ORACLE
          driver是?oracle.jdbc.driver.oracledriver
          ?url是?jdbc:oracle:thin@ip:port:sid
          MSSQL
          driver是?com.microsoft.jdbc.sqlserver.SQLServerDriver
          ?url是?jdbc:microsoft:sqlserver://ip:port
          posted @ 2007-01-12 22:11 xrzp 閱讀(538) | 評論 (0)編輯 收藏
          Java Bean 是可復用的組件,對Java Bean并沒有嚴格的規范,理論上講,任何一個Java類都可以是一個Bean。但通常情況下,由于Java Bean是被容器所創建(如Tomcat)的,所以Java Bean應具有一個無參的構造器,另外,通常Java Bean還要實現Serializable接口用于實現Bean的持久性。Java Bean實際上相當于微軟COM模型中的本地進程內COM組件,它是不能被跨進程訪問的。Enterprise Java Bean 相當于DCOM,即分布式組件。它是基于Java的遠程方法調用(RMI)技術的,所以EJB可以被遠程訪問(跨進程、跨計算機)。但EJB必須被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創建和管理。客戶通過容器來訪問真正的EJB組件。

          3與2的區別:3沒有實體Bean(底層用的hibernate),也沒有HOME工廠(用的DI機制了,貌似spring就跟它混的)。

          用EJB的原因:1:負載均衡 2:對象池 3:單線程
          posted @ 2007-01-10 00:00 xrzp 閱讀(554) | 評論 (0)編輯 收藏
          很多時候會遇到這樣的情況:數據庫里面的日期是date型的,而我們從jsp頁面獲取的日期是String型的,2者之間會有一個轉換的問題。轉換的方法如下(2種):
          1。
          ????????Date?date=new?Date();
          ????????DateFormat?df?
          =DateFormat.getDateInstance();
          ????????
          try?{
          ????????????df.parse(date2);
          ????????}
          ?catch?(ParseException?e)?{
          ????????????e.printStackTrace();
          ????????}
          ????????
          2。
          ????????Date?date=new?Date();
          ????????SimpleDateFormat?sdf?
          =new?SimpleDateFormat("yy-MM-dd");
          ????????
          try?{
          ????????????sdf.parse(date);
          ????????}
          ?catch?(ParseException?e)?{
          ????????????e.printStackTrace();
          ????????}
          ????????????

          PS:
          1。建議在數據庫里面將日期也設成String(varchar2)型的,然后在jsp里面有關日期的地方,用js來操作,這樣會避免一定的麻煩。
          2。一般來說,經過上面的處理后,日期在jsp頁面的顯示格式是yy-MM-dd 00:00:00。你覺得不好看的話,如果用的是ssh框架,那么可以在相應的hbm.xml中將相應的 <property name="xxxx" type="time">中的type改為type="date"。那么顯示的日期格式就只有年月日了。
          posted @ 2007-01-05 00:44 xrzp 閱讀(678) | 評論 (3)編輯 收藏
          僅列出標題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          好友的blog

          搜索

          •  

          積分與排名

          • 積分 - 118124
          • 排名 - 499

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 陕西省| 湘潭市| 陇南市| 东兴市| 宁陵县| 紫阳县| 莱芜市| 安新县| 绩溪县| 邮箱| 突泉县| 瑞丽市| 尚义县| 农安县| 宁海县| 兴和县| 达拉特旗| 达孜县| 鄂州市| 恩施市| 邳州市| 双辽市| 宣恩县| 青田县| 临朐县| 浑源县| 页游| 台江县| 永泰县| 鄯善县| 山东| 新建县| 湟中县| 肇东市| 台山市| 萨迦县| 游戏| 靖江市| 基隆市| 隆昌县| 黄大仙区|