176142998

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

          #

          package com.org.softwore.util;

          import java.io.IOException;
          import java.io.InputStream;
          import java.io.PrintStream;
          import java.net.SocketException;

          import org.apache.commons.net.telnet.TelnetClient;

          import com.org.softwore.domain.TelnetInfo;

          public class TelnetUtil {
           private TelnetClient telnet = new TelnetClient("VT220");
           private InputStream in;
           private PrintStream out;
           private String prompt = ">";
           String s;

           public void TelnetCmd(TelnetInfo telnetInfo) throws SocketException,
             IOException, InterruptedException {

            // 防火墻中高級的網(wǎng)絡(luò)連接設(shè)置的本地連接取消選擇
            // Connect to the specified server
            telnet.connect(telnetInfo.getServerIp(), telnetInfo.getServerPort());
            // Get input and output stream references
            in = telnet.getInputStream();
            out = new PrintStream(telnet.getOutputStream());

            // Login telnet
            readUntil("login: ");
            write(telnetInfo.getServerUser());
            readUntil("password: ");
            write(telnetInfo.getServerPwd());
            readUntil(prompt);

            // 執(zhí)行命令
            if (telnetInfo.getMap() != null) {
             int a = 0;
             for (Integer id : telnetInfo.getMap().keySet()) {
              String temp = telnetInfo.getMap().get(id);
              write(temp);
              // 處理ftp登錄,不需要執(zhí)行readUntil(prompt)
              if (temp.startsWith("ftp")) {
               a = 2;
              }
              if (a > 0) {
               a = a - 1;
               continue;
              } else {
               readUntil(prompt);
              }

             }
            }
            System.out.println("\n");
           }

           public String readUntil(String pattern) throws IOException {
            char lastChar = pattern.charAt(pattern.length() - 1);
            StringBuffer sb = new StringBuffer();
            // boolean found = false;
            char ch = (char) in.read();

            while (true) {
             sb.append(ch);
             if (ch == lastChar) {
              if (sb.toString().endsWith(pattern)) {
               // 處理編碼,界面顯示亂碼問題
               byte[] temp = sb.toString().getBytes("iso8859-1");
               System.out.print(new String(temp, "GBK"));
               return new String(temp, "GBK");
              }
             }
             ch = (char) in.read();
            }
           }

           public void write(String value) throws InterruptedException {
            out.println(value);
            out.flush();
            Thread.sleep(1000);
           }

           public void disconnect() throws IOException {
            telnet.disconnect();
           }
          }


          package com.org.softwore.domain;

          import java.io.Serializable;
          import java.util.TreeMap;

          public class TelnetInfo implements Serializable {

           /**
            *
            */
           private static final long serialVersionUID = -6592407260449335815L;
           private String serverIp;
           private String serverUser;
           private String serverPwd;
           private int serverPort;
           private String ftpIp;
           private String ftpUser;
           private String ftpPwd;
           private String ftpPort;
           private TreeMap<Integer, String> map;

           public TreeMap<Integer, String> getMap() {
            return map;
           }

           public void setMap(TreeMap<Integer, String> map) {
            this.map = map;
           }

           public String getServerIp() {
            return serverIp;
           }

           public void setServerIp(String serverIp) {
            this.serverIp = serverIp;
           }

           public String getServerUser() {
            return serverUser;
           }

           public void setServerUser(String serverUser) {
            this.serverUser = serverUser;
           }

           public String getServerPwd() {
            return serverPwd;
           }

           public void setServerPwd(String serverPwd) {
            this.serverPwd = serverPwd;
           }

           public int getServerPort() {
            return serverPort;
           }

           public void setServerPort(int serverPort) {
            this.serverPort = serverPort;
           }

           public String getFtpIp() {
            return ftpIp;
           }

           public void setFtpIp(String ftpIp) {
            this.ftpIp = "ftp " + ftpIp;
           }

           public String getFtpUser() {
            return ftpUser;
           }

           public void setFtpUser(String ftpUser) {
            this.ftpUser = ftpUser;
           }

           public String getFtpPwd() {
            return ftpPwd;
           }

           public void setFtpPwd(String ftpPwd) {
            this.ftpPwd = ftpPwd;
           }

           public String getFtpPort() {
            return ftpPort;
           }

           public void setFtpPort(String ftpPort) {
            this.ftpPort = ftpPort;
           }

          }



          package com.org.softwore.service;

          public interface TelnetService {

           public boolean windowsTelnetDownLoad();

           public boolean windowsTelnetUpLoad();

           public boolean windowsTelnetUpGrade();
           
           public boolean windowsTelnetTomcat(String stats);
           
           public boolean windowsTelnetBackUpSoftware();
          }



          package com.org.softwore.service.impl;

          import java.io.IOException;
          import java.net.SocketException;
          import java.util.TreeMap;

          import org.springframework.stereotype.Service;
          import org.springframework.transaction.annotation.Transactional;

          import com.org.softwore.domain.TelnetInfo;
          import com.org.softwore.service.TelnetService;
          import com.org.softwore.util.TelnetUtil;

          @Transactional
          @Service("telnetService")
          public class TelnetServiceImpl implements TelnetService {

           /**
            * 上傳升級問價到ftp服務(wù)器
            */
           @Override
           public boolean windowsTelnetUpLoad() {
            boolean reslut = false;

            TelnetInfo telnetInfo = new TelnetInfo();
            telnetInfo.setServerIp("127.0.0.1");
            telnetInfo.setServerUser("administrator");
            telnetInfo.setServerPwd("123456");
            telnetInfo.setServerPort(23);

            TreeMap<Integer, String> map = new TreeMap<Integer, String>();
            map.put(1, "ftp 10.39.62.45");
            map.put(2, "admin");
            map.put(3, "admintianyi");
            map.put(4, "bin");
            map.put(5, "mkdir test1");
            map.put(6, "cd /test1");
            map.put(7, "put c:\\upgrade\\appMarketWebApi.zip");
            map.put(8, "put c:\\upgrade\\T_RANKSWITCHTEMP.sql");
            map.put(9, "bye");
            telnetInfo.setMap(map);

            TelnetCmd(telnetInfo);
            return reslut;
           }
           
           /**
            * 下載升級程序和文件
            */
           @Override
           public boolean windowsTelnetDownLoad() {
            boolean reslut = false;

            TelnetInfo telnetInfo = new TelnetInfo();
            //telnet
            telnetInfo.setServerIp("127.0.0.1");
            telnetInfo.setServerUser("administrator");
            telnetInfo.setServerPwd("123456");
            telnetInfo.setServerPort(23);

            TreeMap<Integer, String> map = new TreeMap<Integer, String>();
            map.put(1, "cd c:\\");
            map.put(2, "rd test /s /q");
            map.put(3, "mkdir test");
            map.put(4, "ftp 10.39.62.45");
            map.put(5, "admin");
            map.put(6, "admintianyi");
            map.put(7, "bin");
            map.put(8, "lcd c:\\test");
            map.put(9, "cd test1");
            map.put(10, "get appMarketWebApi.zip");
            map.put(11, "get T_RANKSWITCHTEMP.sql");
            map.put(12, "bye");
            telnetInfo.setMap(map);

            TelnetCmd(telnetInfo);
            return reslut;
           }
           
           /**
            * 服務(wù)器開啟和關(guān)閉
            */
           @Override
           public boolean windowsTelnetTomcat(String stats) {
            //安裝tomcat7,使用服務(wù)來進行啟動和停止
            boolean reslut = false;

            TelnetInfo telnetInfo = new TelnetInfo();
            telnetInfo.setServerIp("127.0.0.1");
            telnetInfo.setServerUser("administrator");
            telnetInfo.setServerPwd("123456");
            telnetInfo.setServerPort(23);

            // 需要執(zhí)行的sql語句
            TreeMap<Integer, String> map = new TreeMap<Integer, String>();
            if(stats.equals("start")){
             map.put(1, "net start Tomcat7");
            }
            if(stats.equals("stop")){
             map.put(1, "net stop Tomcat7");
            }
            telnetInfo.setMap(map);

            TelnetCmd(telnetInfo);
            return reslut;
           }
           
           /**
            * 備份軟件程序
            */
           @Override
           public boolean windowsTelnetBackUpSoftware(){
            boolean reslut = false;
            
            TelnetInfo telnetInfo = new TelnetInfo();
            telnetInfo.setServerIp("127.0.0.1");
            telnetInfo.setServerUser("administrator");
            telnetInfo.setServerPwd("123456");
            telnetInfo.setServerPort(23);
            
            // 需要執(zhí)行的sql語句
            TreeMap<Integer, String> map = new TreeMap<Integer, String>();
            //執(zhí)行sql腳本
            map.put(1, "cd c:\\");
            map.put(2, "rd testback /s /q");
            map.put(3, "mkdir testback");
            map.put(4, "cd c:\\testback");
            map.put(5, "mkdir appMarketWebApi");
            map.put(6, "xcopy \"c:\\Tomcat 7.0\\webapps\\appMarketWebApi\"  appMarketWebApi /s /y");
            telnetInfo.setMap(map);
            
            TelnetCmd(telnetInfo);
            
            return reslut;
            
           }
           
           
           /**
            * 執(zhí)行sql腳本和升級程序
            */
           @Override
           public boolean windowsTelnetUpGrade() {
            boolean reslut = false;

            TelnetInfo telnetInfo = new TelnetInfo();
            telnetInfo.setServerIp("127.0.0.1");
            telnetInfo.setServerUser("administrator");
            telnetInfo.setServerPwd("123456");
            telnetInfo.setServerPort(23);

            // 需要執(zhí)行的sql語句
            TreeMap<Integer, String> map = new TreeMap<Integer, String>();
            //執(zhí)行sql腳本
            map.put(1, "sqlplus appstore/appstore@appstore226");
            map.put(2, "@c:\\test\\T_RANKSWITCHTEMP.sql");
            map.put(3, "exit");
            
            //執(zhí)行升級程序
            map.put(5, "cd c:\\test");
            map.put(6, "unzip appMarketWebApi.zip");
            map.put(7, "xcopy appMarketWebApi \"c:\\Tomcat 7.0\\webapps\\appMarketWebApi\" /s /y");
            
            telnetInfo.setMap(map);

            TelnetCmd(telnetInfo);
            return reslut;
           }

           /**
            * 公共的調(diào)用執(zhí)行telnet命令
            * @param telnetInfo
            * @return
            */
           public boolean TelnetCmd(TelnetInfo telnetInfo) {
            boolean reslut = false;
            if (telnetInfo != null) {
             TelnetUtil telnet = new TelnetUtil();
             try {
              telnet.TelnetCmd(telnetInfo);
              telnet.disconnect();
              reslut = true;
             } catch (SocketException e) {
              e.printStackTrace();
             } catch (IOException e) {
              e.printStackTrace();
             } catch (InterruptedException e) {
              e.printStackTrace();
             }
            }
            return reslut;
           }
          }


          package com.org.softwore.controller;

          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.beans.factory.annotation.Qualifier;
          import org.springframework.stereotype.Controller;

          import com.org.softwore.service.TelnetService;

          @Controller("telnetController")
          public class TelnetController {

           @Autowired
           @Qualifier("telnetService")
           private TelnetService telnetService;

           /**
            * 上傳升級問價到ftp服務(wù)器
            */
           public void windowsTelnetUpLoad() {
            telnetService.windowsTelnetUpLoad();
           }

           /**
            * 下載升級程序和文件
            */
           public void windowsTelnetDownLoad() {
            telnetService.windowsTelnetDownLoad();
           }

           /**
            * 備份軟件程序
            */
           public void windowsTelnetBackUpSoftware() {
            telnetService.windowsTelnetBackUpSoftware();
           }

           /**
            * 服務(wù)關(guān)閉
            */
           public void windowsTelnetStopTomcat() {
            String stats = "stop";
            telnetService.windowsTelnetTomcat(stats);
           }

           /**
            * 執(zhí)行sql腳本和升級程序
            */
           public void windowsTelnetUpGrade() {
            telnetService.windowsTelnetUpGrade();
           }

           /**
            * 服務(wù)開啟
            */
           public void windowsTelnetStartTomcat() {
            String stats = "start";
            telnetService.windowsTelnetTomcat(stats);
           }
          }



          package com.org.softwore.service;

          import org.junit.Test;
          import org.junit.runner.RunWith;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.beans.factory.annotation.Qualifier;
          import org.springframework.test.context.ContextConfiguration;
          import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

          import com.org.softwore.controller.TelnetController;

          @RunWith(SpringJUnit4ClassRunner.class)
          @ContextConfiguration( { "/applicationContext.xml" })
          public class TelnetUtilTest {

           @Autowired
           @Qualifier("telnetController")
           private TelnetController telnetController;

           /**
            * 上傳升級問價到ftp服務(wù)器
            */
           @Test
           public void windowsTelnetUpLoad() {
            telnetController.windowsTelnetUpLoad();
           }

           /**
            * 下載升級程序和文件
            */
           @Test
           public void windowsTelnetDownLoad() {
            telnetController.windowsTelnetDownLoad();
           }

           /**
            * 備份軟件程序
            */
           @Test
           public void windowsTelnetBackUpSoftware() {
            telnetController.windowsTelnetBackUpSoftware();
           }

           /**
            * 關(guān)閉服務(wù)
            */
           @Test
           public void windowsTelnetStopTomcat() {
            telnetController.windowsTelnetStopTomcat();
           }

           /**
            * 執(zhí)行sql腳本和升級程序
            */
           @Test
           public void windowsTelnetUpGrade() {
            telnetController.windowsTelnetUpGrade();
           }

           /**
            * 啟動服務(wù)
            */
           @Test
           public void windowsTelnetStartTomcat() {
            telnetController.windowsTelnetStartTomcat();
           }
          }

          posted @ 2011-04-13 17:34 飛飛 閱讀(2586) | 評論 (0)編輯 收藏

          為了進行系統(tǒng)維護操作,有時需要再windows和linux或Unix系統(tǒng)之間互傳文件,雖然有很多工具可以實現(xiàn)該功能,但我還是覺得命令行來的方便快捷,起初使用linux的scp命令,總是不成功,網(wǎng)上也沒有相關(guān)介紹,經(jīng)過幾次努力之后,終于成功的摸索出了scp命令在寫windows的路徑時的寫法,于是馬上下了出來,與大家分享:

          從linux系統(tǒng)復(fù)制文件到windows系統(tǒng):scp /oracle/a.txt  administrator@192.168.3.181:/d:/

          在linux環(huán)境下,將windows下的文件復(fù)制到linux系統(tǒng)中:scp administrator@192.168.3.181:/d:/test/config.ips  /oracle

          請注意:因為windows系統(tǒng)本身不支持ssh協(xié)議,所以,要想上面的命令成功執(zhí)行,必須在windows客戶端安裝ssh for windows的客戶端軟件,比如winsshd,使windows系統(tǒng)支持ssh協(xié)議才行。

          posted @ 2011-04-13 15:57 飛飛 閱讀(597) | 評論 (0)編輯 收藏

          commons-net-2.0.jar
          log4j-1.2.15.jar


          package com;

          import java.io.InputStream;
          import java.io.PrintStream;

          import org.apache.commons.net.telnet.TelnetClient;
          import org.apache.log4j.Logger;

          public class TelnetHandler {
           private static final Logger logger = Logger.getLogger(TelnetHandler.class);
           private TelnetClient telnet = new TelnetClient("VT220");
           private InputStream in;
           private PrintStream out;
           private String prompt=" ";
           String s;

           public void TelnetCmd(String server, String user, String password) {
            try {
             // Connect to the specified server
             telnet.connect(server, 23);
             logger.info("Login............................");
             // Get input and output stream references
             in = telnet.getInputStream();
             out = new PrintStream(telnet.getOutputStream());
             // Login
             readUntil("login: ");
             write(user);
             readUntil("password: ");
             write(password);
             // Advance to a prompt
             readUntil(prompt);
            } catch (Exception e) {
             e.printStackTrace();
             logger.info("logon failed", e);
            }
           }

           public String readUntil(String pattern) {
            try {
             char lastChar = pattern.charAt(pattern.length() - 1);
             StringBuffer sb = new StringBuffer();
             // boolean found = false;
             char ch = (char) in.read();

             while (true) {
              System.setProperty("GBK", "iso8859-1");
              System.out.print(ch);
              sb.append(ch);
              if (ch == lastChar) {
               if (sb.toString().endsWith(pattern)) {
                // System.out.print( sb.toString());
                return sb.toString();
               }
              }
              ch = (char) in.read();
             }
            } catch (Exception e) {
             e.printStackTrace();
            }
            return null;
           }

           public void write(String value) {
            try {
             out.println(value);
             out.flush();
          //   System.out.println(value);
            } catch (Exception e) {
             e.printStackTrace();
            }
           }

           public String sendCmd(String command) {
            try {
             write(command);
             return readUntil(s + prompt);
            } catch (Exception e) {
             e.printStackTrace();
            }
            return null;
           }

           public void disconnect() {
            try {
             telnet.disconnect();
            } catch (Exception e) {
             e.printStackTrace();
            }
           }

           public static void main(String[] args) {
            try {
             logger.info("發(fā)送命令開始");
             TelnetHandler telnet1 = new TelnetHandler();
             telnet1.TelnetCmd("127.0.0.1", "administrator", "123456");
             // Exec Cmd
          //   telnet1.sendCmd("dir");
             telnet1.sendCmd("cd c:\\test");
             telnet1.disconnect();
          //   telnet1.sendCmd("xcopy c:\\httpdownload.txt c:\\test");
             
             logger.info("發(fā)送命令結(jié)束");
             
             
            } catch (Exception e) {
             e.printStackTrace();
            }
           }
          }

          posted @ 2011-04-12 17:37 飛飛 閱讀(837) | 評論 (0)編輯 收藏

          1、建一個Project取名為SOAP
          2、將axis-1_4\webapps\axis\WEB-INF\lib下的所有文件拷貝到你的SOAP工程文件下
          3、新建一個HelloWord.java
          package com;
          public class HelloWord {
          public String getHelloWord(userInfo userInfo) {
          return "hi!:" + userInfo.getName() + "| " + userInfo.getPassword()
          + " | " + userInfo.getArea();
          }
          }
           
          4、新建一個userInfo.java 對象
          package com;
          public class userInfo implements java.io.Serializable{
          /**
           * 
           */
          private static final long serialVersionUID = -1536718814867769008L;
          String name;
          String password;
          String area;
          public String getName() {
          return name;
          }
          public void setName(String name) {
          this.name = name;
          }
          public String getPassword() {
          return password;
          }
          public void setPassword(String password) {
          this.password = password;
          }
          public String getArea() {
          return area;
          }
          public void setArea(String area) {
          this.area = area;
          }
          }
          5、在WEB-INF\server-config.wsdd 文件添加以下內(nèi)容(注意顏色標(biāo)記的地方時跟soap相關(guān)的地方)
          <?xml version="1.0" encoding="UTF-8"?>
          <deployment xmlns="http://xml.apache.org/axis/wsdd/"
          xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
          <handler type="java:org.apache.axis.handlers.http.URLMapper"
          name="URLMapper" />
          <service name="HelloWord" provider="java:RPC">
          <parameter name="className" value="com.HelloWord" />
          <parameter name="allowedMethods" value="getHelloWord" />
          <beanMapping languageSpecificType="java:com.userInfo" qname="ns:userInfo" xmlns:ns="urn:BeanService"/>
          </service>
          <transport name="http">
          <requestFlow>
          <handler type="URLMapper" />
          </requestFlow>
          </transport>
          </deployment> 
          6、web.xml 內(nèi)容
          <?xml version="1.0" encoding="ISO-8859-1"?>
          <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
          Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
          <web-app>
          <display-name>Apache-Axis</display-name>
          <servlet>
          <servlet-name>AxisServlet</servlet-name>
          <display-name>Apache-Axis Servlet</display-name>
          <servlet-class>
          org.apache.axis.transport.http.AxisServlet
              </servlet-class>
          </servlet>
          <servlet-mapping>
          <servlet-name>AxisServlet</servlet-name>
          <url-pattern>/servlet/AxisServlet</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
          <servlet-name>AxisServlet</servlet-name>
          <url-pattern>*.jws</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
          <servlet-name>AxisServlet</servlet-name>
          <url-pattern>/services/*</url-pattern>
          </servlet-mapping>
          <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
          <welcome-file>index.html</welcome-file>
          <welcome-file>index.jws</welcome-file>
          </welcome-file-list>
          </web-app>
          7、訪問路徑 http://localhost:8080/SOAP/services/HelloWord?wsdl
          8、使用soapUI 3.6.1 生成客戶端JUNIT測試代碼.進行單元測試!設(shè)置soapui的axis參數(shù)
          9、生成客戶端JUNIT測試代碼
           
           
          10、將生成的代碼放到SOAP工程下。修改測試用例。
           
           
          11、執(zhí)行測試,查看結(jié)果:
          posted @ 2011-04-01 17:21 飛飛 閱讀(1786) | 評論 (1)編輯 收藏

          Nginx作為一個后起之秀,他的迷人之處已經(jīng)讓很多人都投入了他的懷抱。配置簡單,實現(xiàn)原理簡單。做一個負載平衡的再好不過了。

          其原理:

          簡單介紹一下他的安裝及配置過程

          官方網(wǎng)站
          http://wiki.codemongers.com/Main

          一、依賴的程序

          1. gzip module requires zlib library
          2. rewrite module requires pcre library
          3. ssl support requires openssl library

          二、安裝
          ./configure
          make
          make install

          默認安裝的路徑是/usr/local/nginx

          更多的安裝配置
          ./configure --prefix=/usr/local/nginx
          --with-openssl=/usr/include (啟用ssl)
          --with-pcre=/usr/include/pcre/ (啟用正規(guī)表達式)
          --with-http_stub_status_module (安裝可以查看nginx狀態(tài)的程序)
          --with-http_memcached_module (啟用memcache緩存)
          --with-http_rewrite_module (啟用支持url重寫)


          三、啟動及重啟
          啟動:nginx
          重啟:kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
          測試配置文件:nginx -t

          簡單吧,安裝,啟動都比較方便。

          四、配置文件
          http://wiki.codemongers.com/NginxFullExample

          #運行用戶
          user nobody nobody;
          #啟動進程
          worker_processes 5;
          #全局錯誤日志及PID文件
          error_log logs/error.log notice;
          pid logs/nginx.pid;
          #工作模式及連接數(shù)上限
          events {
          #工作模式有:select(標(biāo)準(zhǔn)模式),poll(標(biāo)準(zhǔn)模式),kqueue(高效模式,適用FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 and MacOS X),
          #epoll(高效模式,本例用的。適用Linux 2.6+,SuSE 8.2,),/dev/poll(高效模式,適用Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+)
          use epoll;
          worker_connections 1024;
          }
          #設(shè)定http服務(wù)器,利用它的反向代理功能提供負載均衡支持
          http {
          #設(shè)定mime類型
          include conf/mime.types;
          default_type application/octet-stream;
          #設(shè)定日志格式
          log_format main '$remote_addr - $remote_user [$time_local] '
          '"$request" $status $bytes_sent '
          '"$http_referer" "$http_user_agent" '
          '"$gzip_ratio"';
            log_format download    '$remote_addr - $remote_user [$time_local] '
          '"$request" $status $bytes_sent '
          '"$http_referer" "$http_user_agent" '
          '"$http_range" "$sent_http_content_range"';
            #設(shè)定請求緩沖
          client_header_buffer_size 10k;
          large_client_header_buffers 4 4k;

          #開啟gzip模塊,要求安裝gzip 在運行./config時要指定
          gzip on;
          gzip_min_length 1100;
          gzip_buffers 4 8k;
          gzip_types text/plain;
          output_buffers 1 32k;
          postpone_output 1460;

          #設(shè)定訪問日志
          access_log logs/access.log main;
          client_header_timeout 3m;
          client_body_timeout 3m;
          send_timeout 3m;
          sendfile on;
          tcp_nopush on;
          tcp_nodelay on;
          keepalive_timeout 65;

          #設(shè)定負載均衡的服務(wù)器列表
          upstream backserver {
          #weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大
          #本例是指在同一臺服務(wù)器,多臺服務(wù)器改變ip即可
          server 127.0.0.1:8081 weight=5;
          server 127.0.0.1:8082;
          server 127.0.0.1:8083;
          }
            #設(shè)定虛擬主機,默認為監(jiān)聽80端口,改成其他端口會出現(xiàn)問題
          server {
          listen 80;
          server_name test.com www.test.com;
          charset utf8;
          #設(shè)定本虛擬主機的訪問日志
          access_log logs/test.com.log main;
          #如果訪問 /images/*, /js/*, /css/* 資源,則直接取本地文件,不用轉(zhuǎn)發(fā)。但如果文件較多效果不是太好。
          location ~ ^/(images|js|css)/ {
          root /usr/local/testweb;
          expires 30m;
          }

          #對 "/" 啟用負載均衡
          location / {
          proxy_pass http://backserver;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          }
          #設(shè)定查看Nginx狀態(tài)的地址,在運行./config 要指定,默認是不安裝的。
          location /NginxStatus {
          stub_status on;
          access_log on;
          auth_basic "NginxStatus";
          #是否要通過用戶名和密碼訪問,測試時可以不加上。conf/htpasswd 文件的內(nèi)容用 apache 提供的 htpasswd 工具來產(chǎn)生即可
          #auth_basic_user_file conf/htpasswd;
          }
          }
          posted @ 2010-11-25 21:15 飛飛 閱讀(191) | 評論 (0)編輯 收藏

          ATI Installer HOWTO for SUSE/Novell users
          openSUSE 10.2
          If you want or need to use the latest and greatest ATI driver, continue here .
          Use  YaST -> Software -> Change installation Source -> Add  Protocol: http  Server Name: : www2.ati.com  Directory on Server: suse/10.2to add the ATI http server as additional installation source.Now use  YaST -> Software -> Install and Delete Softwareto install the ATI/fglrx driver. Select the following packages:  x11-video-fglrxG01  ati-fglrxG01-kmp-<kernel-flavor><kernel-flavor> depends on your installed kernel. Check with"uname -r" for installed default/smp/bigsmp kernel. Use "sax2 -r"for X.Org configuration.SUSE LINUX 10.1 / SLES10 / SLED10
          If you want or need to use the latest and greatest ATI driver, continue here .
          Update your Kernel via YOU (YaST Online Update). Use  YaST -> Software -> Change installation Source -> Add  Protocol: http  Server Name: : www2.ati.com  Directory on Server: suse/sle10to add the ATI http server as additional installation source.Now use  YaST -> Software -> Install and Delete Softwareto install the ATI/fglrx driver. Select the following packages:  x11-video-fglrx  ati-fglrx-kmp-<kernel-flavor><kernel-flavor> depends on your installed kernel. Check with "uname -r" for installed default/smp/bigsmp kernel. Use "sax2 -r"for X.Org configuration.Manual driver installation for SUSE LINUX 10.0, SLES9, NLD9 and earlier
          Since ATI driver release 8.16.20 the ATI installer needs to be usedto create SUSE/Novell RPMs. Download the ATI installer from the ATI website.  http://www.ati.com --> Drivers & Software --> LinuxIt is possible to create RPMs for the following SUSE/Novell distros.This information has been retrieved by using the installer itself:  ati-driver-installer-8.35.5-x86.x86_64.run --listpkg[...]SuSE Packages:        SuSE/NLD9-IA32  NLD9        SuSE/SLES9-IA32  SLES9        SuSE/SUSE91-IA32 SUSE 9.1        SuSE/NLD9-AMD64  NLD9 (x86_64)        SuSE/SLES9-AMD64 SLES9 (x86_64)        SuSE/SUSE91-AMD64 SUSE 9.1 (x86_64)        SuSE/SUSE100-IA32 SUSE 10.0        SuSE/SUSE92-IA32 SUSE 9.2        SuSE/SUSE93-IA32 SUSE 9.3        SuSE/SUSE100-AMD64 SUSE 10.0 (x86_64)        SuSE/SUSE92-AMD64 SUSE 9.2 (x86_64)        SuSE/SUSE93-AMD64 SUSE 9.3 (x86_64)        SuSE/SLED10-IA32 SLED10        SuSE/SLES10-IA32 SLES10        SuSE/SUSE101-IA32 SUSE 10.1        SuSE/SLED10-AMD64 SLED10 (x86_64)        SuSE/SLES10-AMD64 SLES10 (x86_64)        SuSE/SUSE101-AMD64 SUSE 10.1 (x86_64)        SuSE/SUSE102-IA32 openSUSE 10.2        SuSE/SUSE102-AMD64 openSUSE 10.2 (x86_64) Example:--------Create a RPM for SUSE 10.0 (i386) by using the installer.  ./ati-driver-installer-8.35.5-x86.x86_64.run --buildpkg SuSE/SUSE100-IA32Afterwards install the created RPM by using the rpm command. In thementioned example above this would be:  rpm -Uhv fglrx_6_8_0_SUSE100-8.35.5-1.i386.rpmThe postinstall script of this RPM will try to compile the requiredkernel module. If this fails, you'll get a message how to proceed.You still need to configure the driver with SaX2. Details can be foundin /usr/share/doc/packages/fglrx/README.SuSE.Unfortunately you need to recompile the "fglrx" kernel module rightafter any kernel (security) update. Use "fglrx-kernel-build.sh" for this.

          本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/mtnk/archive/2007/03/31/1547912.aspx

          posted @ 2010-10-26 16:32 飛飛 閱讀(388) | 評論 (0)編輯 收藏

               摘要: Suse Linux Enterprise Server 11.0 安裝、配置與管理手冊 Version 1.0 1. 安裝準(zhǔn)備 l       x86計算機,20G以上硬盤,100M以太網(wǎng)卡,2G以上內(nèi)存; l       安裝介質(zhì):SuseLinux DVD 2-1...  閱讀全文
          posted @ 2010-10-26 10:15 飛飛 閱讀(2192) | 評論 (0)編輯 收藏

        1. //接受   
        2. String attachmentFile = "XXXXXXXX";    
        3. //u can get correct attachment filename with this method ^&^    
        4. attachmentFile = MimeUtility.decodeText(attachmentFile);    
        5.   
        6. //發(fā)郵件的時候這樣設(shè)置附件名    
        7. attachmentPart.setFileName(MimeUtility.encodeText(fds.getName()));  
        8. posted @ 2010-09-01 23:36 飛飛 閱讀(604) | 評論 (0)編輯 收藏

           使用java mail 包收發(fā)中文郵件的編碼,解碼問題以及解決方法
          JSP教程-郵件相關(guān)
          編碼


          郵件頭(參見RFC822,RFC2047)只能包含US-ASCII字符。郵件頭中任何包含非US-ASCII字符的部分必須進行編碼,使其只 包含US-ASCII字符。所以使用java mail發(fā)送中文郵件必須經(jīng)過編碼,否則別人收到你的郵件只能是亂碼一堆。不過使用java mail 包的解決方法很簡單,用它自帶的MimeUtility工具中encode開頭的方法(如encodeText)對中文信息進行編碼就可以了。



          例子:



          MimeMessage mimeMsg = new MimeMessage(mailSession);



          //讓javamail決定用什么方式來編碼 ,編碼內(nèi)容的字符集是系統(tǒng)字符集mimeMsg.setSubject( MimeUtility.encodeText( Subject) );



          //使用指定的base64方式編碼,并指定編碼內(nèi)容的字符集是gb2312

          mimeMsg.setSubject( MimeUtility.encodeText( Subject,”gb2312”,”B”));



          通常對郵件頭的編碼方式有2種,一種是base64方式編碼,一種是QP(quoted-printable)方式編碼,javamail根據(jù)具體情況來選擇編碼方式。



          如“txt測試”編碼后內(nèi)容如下:

          =?GBK?Q?Txt=B2=E2=CA=D4



          里面有個=?GBK?Q?,GBK表示的是內(nèi)容的字符集,?Q?表示的是以QP方式編碼的,后面緊跟的才是編碼后的中文字符。所以用MimeUtility工具編碼后的信息里包含了編碼方式的信息。



          郵件的正文也要進行編碼,但它不能用MimeUtility里的方法來編碼。郵件正文的編碼方式的信息是要放在Content- Transfer-Encoding這個郵件頭參數(shù)中的,而MimeUtility里面的方法是將編碼方式的信息放在編碼后的正文內(nèi)容中。所以如果你對正 文也用MimeUtility進行處理,那么其他郵件程序就不會正常顯示你編碼的郵件,因為其他郵件軟件如outlook,foxmail只會根據(jù) Content-Transfer-Encoding這個里面的信息來對郵件正文進行解碼。



          其實,郵件正文部分的編碼javamail已經(jīng)自動幫你做了,當(dāng)你發(fā)送郵件的時候,它會自己決定編碼方式,并把編碼方式的信息放入 Content-Transfer-Encoding這個郵件頭參數(shù)中,然后再發(fā)送。所以你所要做的就是直接把郵件正文的內(nèi)容放入郵件中就可以了。



          對郵件正文的編碼方式比較多,包括了base64和QP方式,還有一些如7bit,8bit等等,因為javamail自動為郵件正文編碼,所以我就不一一祥敘了。



          例子:



          //處理郵件正文

          MimeBodyPart mbp=new MimeBodyPart();



          if ( ContentType() == null || ContentType.equals(""))

          mbp.setText( Content );

          else

          mbp.setContent( Content, Content );











          解碼


          javamail包中的MimeUtility工具中也提供了對郵件信息解碼的方法,都是以decode開頭的一些方法(如decodeText)



          例子:

          String Subject = mimemsg.getSubject();

          String ChSubject = MimeUtility.decodeText(Subject);



          對于base64和QP編碼后信息,decode* 方法能將他們正確的解碼,但是,如果指定的字符集不對,那么javamail就會出現(xiàn)錯誤,不能正確地將其解碼。



          如有的郵件系統(tǒng)將”txt測試”編碼后如下:

          =?x-unkown?Q?Txt=B2=E2=CA=D4



          這里指定的字符集是x-unknown,是非明確的字符集,javamail就不能正確的處理了,但是”測試”這兩個中文字還是按照gbk字符集編碼的,所以你可以手工的將編碼方式信息改正確,再用decode*方法來解碼。



          例子:

          if ( str.indexOf("=?x-unknown?") >=0 ){

          str = str.replaceAll("x-unknown","gbk" ); // 將編碼方式的信息由x-unkown改為gbk

          try{

          str = MimeUtility.decodeText( str ); //再重新解碼

          }catch( Exception e1){

          return str ;

          }





          decode*方法都是根據(jù)在編碼信息中包含的編碼方式的信息來解碼,所以decode*方法對郵件正文解碼是無效的,因為郵件正文中不包含編碼方式的信息。



          同編碼一樣,郵件正文的解碼也是由javamail做了。Javamail根據(jù)Content-Transfer-Encoding里的信息,來對郵件的正文解碼。

          客戶程序從javamail取得的正文內(nèi)容字符集為iso-8859-1,所以還要將字符集轉(zhuǎn)換一下,例:



          String CorrectContent = new String( Content.getbytes(“iso-8859-1”),”gb2312”);



          CorrentContent為正確的郵件正文了

          posted @ 2010-09-01 23:34 飛飛 閱讀(3329) | 評論 (0)編輯 收藏

               摘要: A概念 最常用的概念 1、 scalars:存儲單值 字符串:簡單文本由單或雙引號括起來。 數(shù)字:直接使用數(shù)值。 日期:通常從數(shù)據(jù)模型獲得 布爾值:true或false,通常在<#if …>標(biāo)記中使用   2、 hashes:充當(dāng)其它對象的容器,每個都關(guān)聯(lián)一個唯一的查詢名字 具有一個唯一的查詢名字和他包含的每個變量...  閱讀全文
          posted @ 2010-07-03 18:09 飛飛 閱讀(37477) | 評論 (4)編輯 收藏

          僅列出標(biāo)題
          共12頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
          主站蜘蛛池模板: 榕江县| 泽库县| 赫章县| 剑阁县| 泰州市| 威海市| 靖西县| 湘潭县| 梁山县| 吴江市| 玉环县| 长汀县| 中西区| 渝中区| 湖南省| 平谷区| 武义县| 克什克腾旗| 临夏县| 瑞安市| 高雄市| 建瓯市| 宜宾县| 康保县| 青阳县| 乡城县| 阿拉善左旗| 八宿县| 松阳县| 永城市| 四川省| 汉沽区| 南乐县| 利辛县| 上饶市| 鹤岗市| 青阳县| 瓦房店市| 莆田市| 平遥县| 留坝县|