posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

               摘要: 本來想練習了下deque的使用。用BFS,每個結點都記錄了到目前為止轉動的情況。結果發現內存消耗很大,就只好用DFS了。 /**//*PROG: clocksID: 06301031LANG: C++*/#include <iostream>#include <fstream>#include <deq...  閱讀全文

          posted @ 2007-05-30 21:34 ZelluX 閱讀(765) | 評論 (0)編輯 收藏

          1. 最近用Dev C++寫的幾個程序中,最容易出錯的就是忘記初始化和數組越界。C++(至少在Dev C++編譯器中)并沒有像Java那樣嚴格的糾錯功能,因此要格外小心。

          2. C++ Programming Language上的一個樣例程序,能看懂,但不能吃透。

           

          #include <iostream>
          #include 
          <vector>
          #include 
          <string>
          #include 
          <fstream>
          #include 
          <iterator>

          using namespace std;

          int main() {
              ifstream fin(
          "p61.in");
              istream_iterator
          <string> ii(fin);
              istream_iterator
          <string> eos;
           
              vector
          <string> b(ii, eos);
           
              ostream_iterator
          <string> oo(cout, "\n");
           
              unique_copy(b.begin(), b.end(), oo);
           
              system(
          "PAUSE");
          }


          3. 向函數傳遞二維指針
          void f(int a[][4]) 或者 void f(int (*a2)[4])

          posted @ 2007-05-30 20:14 ZelluX 閱讀(338) | 評論 (0)編輯 收藏

          都是最近做usaco時碰到的問題
          1. string轉int, double
          atoi(str.c_str())
          atod(str.c_str())

          2. std庫里已經有swap方法了,難怪我寫了以后反應ambiguous method


          posted @ 2007-05-27 19:56 ZelluX 閱讀(304) | 評論 (0)編輯 收藏

          命令行運行sqlcmd時提示

          HResult 0x7E,級別 16,狀態 1
          VIA 提供程序: 找不到指定的模塊。

          Sqlcmd: 錯誤: Microsoft SQL Native Client : 建立到服務器的連接時發生錯誤。連接到
           SQL Server 2005 時,默認設置 SQL Server 不允許遠程連接這個事實可能會導致失敗。

          Sqlcmd: 錯誤: Microsoft SQL Native Client : 登錄超時已過期。


          google了半天,把VIA, Named Pipes, TCP/IP協議都開啟后,還是無法找到。
          終于在http://eternity8.bokee.com/viewdiary.13643204.html里找到了解決方法

          SQL Server Configuration Manager -> 網絡配置 -> 協議

          tcp/ip屬性
          保持活動狀態 --> 30000
          全部偵聽     --> 否
          無延遲       --> 否
          已啟用       --> 是

          IP地址
          IP地址      --> 你的IP
          TCP動態端口 --> 不填
          TCP端口     --> 1433
          活動        --> 是
          已啟用      --> 是

          posted @ 2007-05-26 22:16 ZelluX 閱讀(2032) | 評論 (0)編輯 收藏

          題目都不難,都是一看就知道怎么做的,一道模擬,一道深度優先搜索,一道簡化了的拓撲排序(其實也談不上),一道動態規劃。
          但是手實在是太生疏了,甚至連C(n,m)該如何計算都要回憶一下。。。sigh,加上電腦有問題等客觀因素,最后只做出兩題。
          這東西不做不行啊,賽前幾天一定要練下。

          posted @ 2007-05-22 19:44 ZelluX 閱讀(237) | 評論 (0)編輯 收藏

            Log4j有三個主要的組件:Loggers,Appenders和Layouts,這里可簡單理解為日志類別,日志要輸出的地方和日志以何種形式輸出。綜合使用這三個組件可以輕松的記錄信息的類型和級別,并可以在運行時控制日志輸出的樣式和位置。下面對三個組件分別進行說明:

          1、 Loggers

              Loggers組件在此系統中被分為五個級別:DEBUG、INFO、WARN、ERROR和FATAL。這五個級別是有順序的,DEBUG < INFO < WARN < ERROR < FATAL,明白這一點很重要,這里Log4j有一個規則:假設Loggers級別為P,如果在Loggers中發生了一個級別Q比P高,則可以啟動,否則屏蔽掉。

          Java程序舉例來說:

          //建立Logger的一個實例,命名為“com.foo”

          Logger  logger = Logger.getLogger("com.foo");

          //設置logger的級別。通常不在程序中設置logger的級別。一般在配置文件中設置。

          logger.setLevel(Level.INFO);

          Logger barlogger = Logger.getLogger("com.foo.Bar");

          //下面這個請求可用,因為WARN >= INFO

          logger.warn("Low fuel level.");

          //下面這個請求不可用,因為DEBUG < INFO

          logger.debug("Starting search for nearest gas station.");

          //命名為“com.foo.bar”的實例barlogger會繼承實例“com.foo”的級別。因此,下面這個請求可用,因為INFO >= INFO

          barlogger.info("Located nearest gas station.");

          //下面這個請求不可用,因為DEBUG < INFO

          barlogger.debug("Exiting gas station search"); 

          這里“是否可用”的意思是能否輸出Logger信息。 

              在對Logger實例進行命名時,沒有限制,可以取任意自己感興趣的名字。一般情況下建議以類的所在位置來命名Logger實例,這是目前來講比較有效的Logger命名方式。這樣可以使得每個類建立自己的日志信息,便于管理。比如:

          static Logger logger = Logger.getLogger(ClientWithLog4j.class.getName());

          2、 Appenders

              禁用與使用日志請求只是Log4j其中的一個小小的地方,Log4j日志系統允許把日志輸出到不同的地方,如控制臺(Console)、文件(Files)、根據天數或者文件大小產生新的文件、以流的形式發送到其它地方等等。

          其語法表示為:

          org.apache.log4j.ConsoleAppender(控制臺),


          org.apache.log4j.FileAppender(文件),
          org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件),org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件),
          org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)

          配置時使用方式為:

          log4j.appender.appenderName = fully.qualified.name.of.appender.class

          log4j.appender.appenderName.option1 = value1

          log4j.appender.appenderName.option = valueN

          這樣就為日志的輸出提供了相當大的便利。

          3、 Layouts

              有時用戶希望根據自己的喜好格式化自己的日志輸出。Log4j可以在Appenders的后面附加Layouts來完成這個功能。Layouts提供了四種日志輸出樣式,如根據HTML樣式、自由指定樣式、包含日志級別與信息的樣式和包含日志時間、線程、類別等信息的樣式等等。

          其語法表示為:

          org.apache.log4j.HTMLLayout(以HTML表格形式布局),
          org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
          org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),
          org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息)

          配置時使用方式為:

               log4j.appender.appenderName.layout =       fully.qualified.name.of.layout.class
               log4j.appender.appenderName.layout.option1 = value1
               …
               log4j.appender.appenderName.layout.option = valueN
           
              以上是從原理方面說明Log4j的使用方法,在具體Java編程使用Log4j可以參照以下示例:
          1、 建立Logger實例:
              語法表示:public static Logger getLogger( String name)
              實際使用:static Logger logger = Logger.getLogger   (ServerWithLog4j.class.getName ()) ;
          2、 讀取配置文件:
              獲得了Logger的實例之后,接下來將配置Log4j使用環境:
              語法表示:
              BasicConfigurator.configure():自動快速地使用缺省Log4j環境。
              PropertyConfigurator.configure(String configFilename):讀取使用Java的特性文件編寫的配置文件。
              DOMConfigurator.configure(String filename):讀取XML形式的配置文件。
              實際使用:PropertyConfigurator.configure("ServerWithLog4j.properties");
          3、 插入日志信息
              完成了以上連個步驟以后,下面就可以按日志的不同級別插入到你要記錄日志的任何地方了。
              語法表示:
              Logger.debug(Object message);
              Logger.info(Object message);
              Logger.warn(Object message);
              Logger.error(Object message);
              實際使用:logger.info("ServerSocket before accept: " + server);
           
              在實際編程時,要使Log4j真正在系統中運行事先還要對配置文件進行定義。定義步驟就是對Logger、Appender及Layout的分別使用,具體如下:
          1、 配置根Logger,其語法為:
              log4j.rootLogger = [ level ] , appenderName, appenderName, …
          這里level指Logger的優先級,appenderName是日志信息的輸出地,可以同時指定多個輸出地。如:log4j.rootLogger= INFO,A1,A2
          2、 配置日志信息輸出目的地,其語法為:
              log4j.appender.appenderName = fully.qualified.name.of.appender.class
              可以指定上面所述五個目的地中的一個。
          3、 配置日志信息的格式,其語法為:
              log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
              這里上面三個步驟是對前面Log4j組件說明的一個簡化;下面給出一個具體配置例子,在程序中可以參照執行:
              log4j.rootLogger=INFO,A1
              log4j.appender.A1=org.apache.log4j.ConsoleAppender
              log4j.appender.A1.layout=org.apache.log4j.PatternLayout
              log4j.appender.A1.layout.ConversionPattern=
                                                  %-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
              這里需要說明的就是日志信息格式中幾個符號所代表的含義:
              -X號: X信息輸出時左對齊;
              %p: 日志信息級別
              %d{}: 日志信息產生時間
              %c: 日志信息所在地(類名)
              %m: 產生的日志具體信息
              %n: 輸出日志信息換行
           
          根據上面的日志格式,某一個程序的輸出結果如下:
          0    INFO  2003-06-13 13:23:46968 ClientWithLog4j Client socket: Socket[addr=localhost/127.0.0.1,port=8002,localport=2014]
          16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server says: 'Java server with log4j, Fri Jun 13 13:23:46 CST 2003'
          16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j GOOD
          16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Command 'HELLO' not understood.'
          16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j HELP
          16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Vocabulary: HELP QUIT'
          16   DEBUG 2003-06-13 13:23:46984 ClientWithLog4j QUIT

          posted @ 2007-05-20 19:24 ZelluX 閱讀(379) | 評論 (0)編輯 收藏

          5.19
          第一反應覺得是個簡單的BFS,從最高點開始向四周擴展,最后找到最長的路徑即可。
          結果Wrong Answer,仔細一想,才意識到并不一定是從最高點開始的。考慮得太不周到了。。

          5.31
          原來的程序找不到了。。。重新寫了一遍,居然寫好提交就AC了,恩。這幾天進步挺大哈

          #include <iostream>
          #include 
          <fstream>
          #include 
          <algorithm>
          #include 
          <vector>

          using namespace std;

          const int MAX_HEIGHT = 10000;
          const int MAX_ROWS = 100;
          const int dx[] = {00-11};
          const int dy[] = {1-100};

          struct Point {
              
          int x;
              
          int y;
              
          int height;
          }
          ;

          bool comparePoints(const Point& p1, const Point& p2);
          int main() {
              
          //ifstream fin("pku1088.in");
              int c, r;
              
          int i, j;
              cin 
          >> r >> c;
              
          int h[MAX_ROWS + 2][MAX_ROWS + 2];
              
          int count = 0;
              vector
          <Point> points;
              
          for (i = 1; i <= r; i++{
                  
          for (j = 1; j <= c; j++{
                      cin 
          >> h[i][j];
                      Point temp;
                      temp.x 
          = i;
                      temp.y 
          = j;
                      temp.height 
          = h[i][j];
                      points.push_back(temp);
                  }

              }


              sort(points.begin(), points.end(), comparePoints);
              
              
          for (i = 0; i <= c; i++{
                  h[
          0][i] = MAX_HEIGHT + 1;
                  h[r 
          + 1][i] = MAX_HEIGHT + 1;
              }

              
          for (i = 0; i <= r; i++{
                  h[i][
          0= MAX_HEIGHT + 1;
                  h[i][c 
          + 1= MAX_HEIGHT + 1;
              }


              
          int f[MAX_ROWS + 1][MAX_ROWS + 1];
              
          for (i = 1; i <= r; i++{
                  
          for (int j = 1; j <= c; j++{
                      f[i][j] 
          = 1;
                  }

              }

              
              vector
          <Point>::iterator iter;
              
          for (iter = points.begin(); iter != points.end(); iter++{
                  
          for (i = 0; i < 4; i++{
                      
          int nx = iter->+ dx[i];
                      
          int ny = iter->+ dy[i];
                      
          if (iter->height > h[nx][ny]) {
                          
          if (f[iter->x][iter->y] + 1 > f[nx][ny]) {
                              f[nx][ny] 
          = f[iter->x][iter->y] + 1;
                          }

                      }

                  }

              }


              
          int best = 0;
              
          for (i = 1; i <= r; i++{
                  
          for (j = 1; j <= c; j++{
                      
          if (f[i][j] > best) {
                          best 
          = f[i][j];
                      }

                  }

              }

              cout 
          << best << endl;
              
          return 0;
          }


          bool comparePoints(const Point& p1, const Point& p2) {
              
          return (p1.height > p2.height);
          }

          posted @ 2007-05-19 22:19 ZelluX 閱讀(379) | 評論 (0)編輯 收藏

          1. 數據庫亂碼
          使用EMS SQL Manager for MySQL可以容易地解決這個問題,在table的屬性對話框中將Character Set設為GBK即可。

          2. Ajax應用中Servlet返回內容亂碼
          設置響應報頭的編碼即可
          response.setHeader("Content-Type", "text/html;charset=GB2312");

          3. JSP頁面顯示亂碼
          在頁面開頭加上
          <%@ page pageEncoding="GBK"%>

          4. request.getParameter產生亂碼
          用post方法只要在獲取參數前設置編碼即可
          request.setCharacterEncoding("GBK");
          get方法還需要在獲取參數后轉換編碼
          name = new String(name.getBytes("ISO8859-1"), "GBK");

          5. google到的另一個解決方法,不過貌似不成功 -,-
          package filter;

          import javax.servlet.Filter;
          import javax.servlet.FilterConfig;
          import javax.servlet.ServletException;
          import javax.servlet.ServletRequest;
          import javax.servlet.ServletResponse;
          import javax.servlet.FilterChain;
          import java.io.IOException;

          public class EncodingFilter implements Filter {
            
          protected FilterConfig filterConfig;

            
          protected String encodingName;

            
          protected boolean enable;

            
          public EncodingFilter() {
              
          this.encodingName = "UTF-8";
              
          this.enable = false;
            }


            
          public void init(FilterConfig filterConfig) throws ServletException {
              
          this.filterConfig = filterConfig;
              loadConfigParams();
            }


            
          private void loadConfigParams() {
              
          this.encodingName = this.filterConfig.getInitParameter("encoding");
              String strIgnoreFlag 
          = this.filterConfig.getInitParameter("enable");
              
          if (strIgnoreFlag.equalsIgnoreCase("true")) {
                
          this.enable = true;
              }
           else {
                
          this.enable = false;
              }

            }


            
          public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) 
          throws IOException, ServletException {
              
          if (this.enable) {
                request.setCharacterEncoding(
          this.encodingName);
              }

              chain.doFilter(request, response);
            }


            
          public void destroy() {
            }

          }
          web.xml
           <filter>
              
          <filter-name>EncodingFilter</filter-name>
              
          <filter-class>filter.EncodingFilter</filter-class>
              
          <init-param>
                
          <param-name>encoding</param-name>
                
          <param-value>UTF-8</param-value>
              
          </init-param>
              
          <init-param>
                
          <param-name>enable</param-name>
                
          <param-value>true</param-value>
              
          </init-param>
            
          </filter>
            
          <filter-mapping>
              
          <filter-name>EncodingFilter</filter-name>
              
          <url-pattern>/user/*</url-pattern>
            
          </filter-mapping>
            
          <filter-mapping>
              
          <filter-name>EncodingFilter</filter-name>
              
          <url-pattern>/manager/*</url-pattern>
            
          </filter-mapping>  
            

          posted @ 2007-05-15 19:38 ZelluX 閱讀(358) | 評論 (0)編輯 收藏

          1. Filter 挺好用的。訪問session時要把參數向下轉型為HttpServletRequest

          beans.User user = (beans.User) ((HttpServletRequest)arg0).getSession().getAttribute("user");

          2. 基本完成了,有空的話,準備增加一點功能
          a) 亂碼問題解決
          b) 新增書目時上傳圖片功能
          c) 刪除圖書、分類功能
          d) 購物車計算、提交更改后使用Ajax,做到不刷新界面。

          posted @ 2007-05-15 19:11 ZelluX 閱讀(256) | 評論 (0)編輯 收藏

          CSS hack是指我們為了兼容各瀏覽器,而使用的特別的css定義技巧。

          例如
                    #example {}  /*  Firefox */
          * html #example {}  /*  IE6     */
          *+html #example {}  /*  IE7     */
          這段代碼能夠讓不同的瀏覽器使用不同的樣式

          posted @ 2007-05-14 11:17 ZelluX 閱讀(331) | 評論 (0)編輯 收藏

          僅列出標題
          共39頁: First 上一頁 24 25 26 27 28 29 30 31 32 下一頁 Last 
          主站蜘蛛池模板: 宁津县| 鄱阳县| 邵阳县| 辽阳县| 嘉义市| 广州市| 东乌珠穆沁旗| 上饶县| 乌苏市| 和平区| 北安市| 东乡县| 奉节县| 揭东县| 崇州市| 邓州市| 江都市| 巴林右旗| 芦溪县| 通榆县| 都匀市| 闵行区| 宜川县| 江永县| 牡丹江市| 八宿县| 吉林省| 平远县| 固阳县| 石门县| 灵武市| 常熟市| 漳平市| 义乌市| 嘉鱼县| 茶陵县| 柘城县| 濮阳市| 永州市| 弋阳县| 固阳县|