posts - 27,comments - 2,trackbacks - 0
          做個總結
          linux服務器上做負載均衡
          自己準備的:linux服務器(45.78.20.168),jdk1.7,nginx,redis,tomcat7兩個,部署的項目;

          1:jdk1.7安裝,兩個tomcat分別端口8080,8081;部署相同的項目;啟動;
              http://45.78.20.168:8080/redis3.2/getRedis.action
              http://45.78.20.168:8081/redis3.2/getRedis.action
          2:安裝nginx,添加負載的配置,安裝目錄下找 /etc/nginx/conf.d/default.conf文件(或/etc/nginx/nginx.conf);策略設置為默認輪詢;
              upstream www.nimenhaihaoma.com {
                  server 45.78.20.168:8080;
                  server 45.78.20.168:8081;
              }
              server{
                  listen 80;
                  server_name www.nimenhaihaoma.com;
                  location / {
                      proxy_pass http://www.nimenhaihaoma.com;
                      proxy_set_header Host $host;
                      proxy_set_header X-Real-IP $remote_addr;
                      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                  }
          3:配置session共享,方式很多,這里用的redis的session共享(兼容jdk版本至少1.7):
              tomcat的lib包加commons-pool2-2.0.jar,jedis-2.5.2.jar,tomcat-redis-session-manager1.2.jar;
              tomcat配置文件context.xml,在標簽<Context>內添加配置:
                  <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
                  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" />

          4:項目里面區分session的代碼:
              (1):放session的接口(執行一次);
              (2):取session數據(不斷刷新),看tomcat打印信息;
          5:效果,http://www.nimenhaihaoma.com/redis3.2/getRedis.action (狂刷session值相同)



          posted @ 2016-08-17 17:03 魏文甫 閱讀(125) | 評論 (0)編輯 收藏
          項目只是加載spring的幾個定時任務,啟動服務一直循環加載spring文件,問題的根節點:定時器類里面的service對象采取配置的方式注入,而這個定時器類的構造讓我給加上了:
          ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext*.xml");
          myServiceImpl = context.getBean("XXXService");

          加上這段為了方便測試,在該類里寫main方法測試執行,把調用寫到構造里;,spring定時器配置好時間后,此處構造忘了去掉;導致啟動tomcat服務一直在加載spring注入文件;
          同理,spring注入的方式,在action里同樣有這樣的效果,構造方法一定注意;
          posted @ 2015-04-25 11:09 魏文甫 閱讀(181) | 評論 (0)編輯 收藏
          是在build.xml編譯的時候,包里有兩個類名一樣的java文件,我只是做了個備份,忘了改文件后綴,備份的文件也編譯了,所以報的這個錯
          posted @ 2014-08-28 20:18 魏文甫 閱讀(845) | 評論 (0)編輯 收藏
          1,添加索引文件中的一條新的索引     
                          Question addQ = new Question();//新添加的一條數據,對象id在索引文件中沒有
                          addQ.setId("999999999");
                          addQ.setQuestionname("新添加的一條數據名稱");
                          Analyzer sa = new SmartChineseAnalyzer(Version.LUCENE_40);
          IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_40, sa);
          iwc.setOpenMode(OpenMode.APPEND);
          IndexWriter writer = null;
          try {
          Directory dir1 = FSDirectory.open(new File("F:\\temp"));
          writer = new IndexWriter(dir1, iwc);
          FieldType ft = new FieldType();
          ft.setIndexed(true);
          ft.setStored(true);
          ft.setTokenized(true);
          FieldType ft2 = new FieldType();
          ft2.setIndexed(true);
          ft2.setStored(true);
          ft2.setTokenized(false);
          Document doc = new Document();
          doc.add(new Field("id", addQ.getId(), ft2));
          doc.add(new Field("questionname", addQ.getQuestionname(), ft));
          writer.addDocument(doc);
          writer.close();
          } catch (CorruptIndexException e) {
          e.printStackTrace();
          } catch (LockObtainFailedException e) {
          e.printStackTrace();
          } catch (IOException e) {
          e.printStackTrace();
          } finally{
          try {
          if(writer!=null){
          writer.close();
          }
          if(sa!=null){
          sa.close();
          }
          } catch (CorruptIndexException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
          }
          執行完程序后,索引文件中已經添加新的索引數據。
          2,刪除索引文件中的一條新的索引
                          Question delQ = new Question();//索引文件中有的一條數據,根據對象id刪
                          delQ.setId("1111111");
                          delQ.setQuestionname("要刪除的一條數據");
                          IndexWriter writer = null;
          Analyzer sa = new SmartChineseAnalyzer(Version.LUCENE_40);
          IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_40, sa);
          Directory dir1 = null;
          try {
          dir1 = FSDirectory.open(new File("F:\\temp"));
          writer = new IndexWriter(dir1, iwc);
          Term term = new Term("id", delQ.getId());
          writer.deleteDocuments(term);
          writer.commit();
          writer.close();
          } catch (CorruptIndexException e) {
          e.printStackTrace();
          } catch (LockObtainFailedException e) {
          e.printStackTrace();
          } catch (IOException e) {
          e.printStackTrace();
          } finally {
          try {
          if (writer != null) {
          writer.close();
          sa.close();
          }
          } catch (CorruptIndexException e) {
          e.printStackTrace();
          } catch (IOException e) {
          e.printStackTrace();
          }
          }
          System.out.println("索引刪除完成");
          3,更新索引文件中的一條索引
          更新索引文件中的一條索引的理念是:先找到這條索引刪除,然后再添加這條更新后的索引


          posted @ 2013-08-16 12:08 魏文甫 閱讀(345) | 評論 (0)編輯 收藏
                          IndexReader reader = DirectoryReader.open(FSDirectory.open(new File("F:\\temp")));// 打開索引
          IndexSearcher searcher = new IndexSearcher(reader);
          Analyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_40);
          String[] fields = { "questionname","id" };
          Occur[] occurs = new Occur[] { Occur.SHOULD,Occur.SHOULD };
          Query query =  MultiFieldQueryParser.parse(Version.LUCENE_40, "測試 的", fields,
          occurs, analyzer);
          TopDocs result = searcher.search(query, searcher.getIndexReader()
          .maxDoc());
          ScoreDoc[] hits = result.scoreDocs;
          List<Document> list = new ArrayList<Document>();
          for (int i = 0; i <hits.length; i++) {
          Document doc = searcher.doc(hits[i].doc);
          list.add(doc);
          }
          System.out.println("搜索list的長度\t→→→→\t"+list.size());
          for (Document document : list) {
          System.out.println(document.getField("questionname"));
          }
          analyzer.close();

          注:紅色字體是輸入的檢索條件,多個用空格隔開,找到的結果先匹配同時符合多個的結果,結果只是拿過來的document一個list集合,具體結果再解析就行了。

          結果如圖:
          posted @ 2013-08-12 17:26 魏文甫 閱讀(1180) | 評論 (1)編輯 收藏
                          Connection conn = null;
          Statement stat = null;
          ResultSet rs = null;
          Analyzer sa = new SmartChineseAnalyzer(Version.LUCENE_40);
          IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_40, sa);
          iwc.setOpenMode(OpenMode.CREATE);
          Directory dir1 = FSDirectory.open(new File("F:\\temp"));
          IndexWriter writer = new IndexWriter(dir1, iwc);
          int numIndexed = -1;
          FieldType ft = new FieldType();
          ft.setIndexed(true);
          ft.setStored(true);
          ft.setTokenized(true);
          FieldType ft2 = new FieldType();
          ft2.setIndexed(true);
          ft2.setStored(true);
          ft2.setTokenized(false);
          Class.forName("com.mysql.jdbc.Driver");
          conn = (Connection) DriverManager.getConnection(
          "jdbc:mysql:///question", "root", "root");
          stat = (Statement) conn.createStatement();
          rs = stat.executeQuery("select id,questionname from question");
          List<String> list = new ArrayList<String>();
          while (rs.next()) {
          String id = rs.getString("questionname");
          String questionname = rs.getString("questionname");
          list.add(id);
          list.add(questionname);
          }
          rs.close();
          stat.close();
          conn.close();
          for (String string : list) {
          Document doc = new Document();
          doc.add(new Field("questionname", string, ft2));
          writer.addDocument(doc);
          }
          numIndexed = writer.maxDoc();
          writer.close();
          執行完這段程序f盤多一個文件夾temp,里面就是創建好的索引文件了,然后進行根據索引文件查詢
          posted @ 2013-08-12 16:50 魏文甫 閱讀(1421) | 評論 (0)編輯 收藏
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
          <head>
          <meta http-equiv="Content-Type" content="text/html;charset=GBK" />
          <title></title>
          <script type="text/javascript" src="jquery-1.8.2.js"></script>
          <script type="text/javascript">
          $(document).mousemove(function(e) {
          var innerHeight = window.innerHeight;
          if (e.pageY > innerHeight) {
          $("#topDiv").css("display", "block");
          }
          if (e.pageY < innerHeight) {
          $("#topDiv").css("display", "none");
          }
          });
          $("#topIcon").mouseover(function() {
          $("#topIcon").css("text-decoration", "none");
          $("#topIcon").children("i").removeClass();
          $("#topIcon").children("i").addClass("icon-chevron-up");
          });
          $("#topIcon").mouseout(function() {
          $("#topIcon").children("i").removeClass();
          $("#topIcon").children("i").addClass("icon-arrow-up");
          });
          </script>
          </head>
          <body id="bodyId">
          <div id="topDiv"
          style="position: fixed;right: 60px;bottom: 60px;display: none">
          <a id="topIcon" href="#bodyId" style="background-color: #aaaaaa"><span
          style="text-align: justify;display: block;text-decoration: none;width: 14px;background-color: #cccccc">回到頂端</span>
          </a>
          </div>
          <h1>O(∩_∩)O哈哈~</h1>
          <h2>(*^__^*) 嘻嘻……</h2>
          <h3>O(∩_∩)O~</h3>
          <h4>\(^o^)/~</h4>
          <h5>$_$</h5>
          <h6>o(╯□╰)o</h6>
          <h1>O(∩_∩)O哈哈~</h1>
          <h2>(*^__^*) 嘻嘻……</h2>
          <h3>O(∩_∩)O~</h3>
          <h4>\(^o^)/~</h4>
          <h5>$_$</h5>
          <h6>o(╯□╰)o</h6>
          <h1>O(∩_∩)O哈哈~</h1>
          <h2>(*^__^*) 嘻嘻……</h2>
          <h3>O(∩_∩)O~</h3>
          <h4>\(^o^)/~</h4>
          <h5>$_$</h5>
          <h6>o(╯□╰)o</h6>
          <h1>O(∩_∩)O哈哈~</h1>
          <h2>(*^__^*) 嘻嘻……</h2>
          <h3>O(∩_∩)O~</h3>
          <h4>\(^o^)/~</h4>
          <h5>$_$</h5>
          <h6>o(╯□╰)o</h6>
          <h1>O(∩_∩)O哈哈~</h1>
          <h2>(*^__^*) 嘻嘻……</h2>
          <h3>O(∩_∩)O~</h3>
          <h4>\(^o^)/~</h4>
          <h5>$_$</h5>
          <h6>o(╯□╰)o</h6>
          <h1>O(∩_∩)O哈哈~</h1>
          <h2>(*^__^*) 嘻嘻……</h2>
          <h3>O(∩_∩)O~</h3>
          <h4>\(^o^)/~</h4>
          <h5>$_$</h5>
          <h6>o(╯□╰)o</h6>
          <h1>O(∩_∩)O哈哈~</h1>
          <h2>(*^__^*) 嘻嘻……</h2>
          <h3>O(∩_∩)O~</h3>
          <h4>\(^o^)/~</h4>
          <h5>$_$</h5>
          <h6>o(╯□╰)o</h6>
          <h1>O(∩_∩)O哈哈~</h1>
          <h2>(*^__^*) 嘻嘻……</h2>
          <h3>O(∩_∩)O~</h3>
          <h4>\(^o^)/~</h4>
          <h5>$_$</h5>
          <h6>o(╯□╰)o</h6>
          </body>
          </html>
          posted @ 2013-08-07 10:35 魏文甫 閱讀(216) | 評論 (0)編輯 收藏
          求單一登陸和單點登陸的思路及核心代碼???
          posted @ 2013-08-07 09:56 魏文甫 閱讀(329) | 評論 (0)編輯 收藏
          html中中文正則表達式不對的問題 
          中文的正則表達式:var reg = /^[\u4e00-\u9fa5]$/;(一個中文字符)
          放在html中可能出現的問題有:
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
          <head>
          <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
          <title></title>
          </head>
          <body>
          <script type="text/javascript">
                      var reg0 = /^[\u4e00-\u9fa5]$/;
                      alert(reg0.test("看"));
          </script>
          </body>
          </html>
          本頁編碼為UTF-8時出現的結果可能是錯誤的,
          所以出現此類情況,編碼格式改為gb2312(紅色標注的編碼改為gb2312)
          posted @ 2013-07-29 15:56 魏文甫 閱讀(227) | 評論 (0)編輯 收藏
          簡單的代碼:
          public static void main(String[] args) {
          try {
          File allfile = new File("f:\\excel\\total.xlsx");
          File file2 = new File("f:\\excel\\xxxxxx.xlsx");
          XSSFWorkbook h = new XSSFWorkbook(new FileInputStream(allfile));
          XSSFSheet x = h.getSheetAt(0);
          XSSFWorkbook hssfWorkbook = new XSSFWorkbook(new FileInputStream(file2));
          XSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
          int ii = hssfSheet.getLastRowNum();//讀取的表格行數
          System.out.println(ii);
          FileOutputStream out_ = new FileOutputStream(allfile);
          for (int i = 0; i < ii; i++) {
          XSSFRow lastRow = x.createRow(x.getLastRowNum()+1);
          XSSFRow xssfRow = hssfSheet.getRow(i);
          XSSFCell xssfCell0 = xssfRow.getCell(0);
          CellStyle cellStyle0 = xssfCell0.getCellStyle();
          CellStyle newStyle0 = h.createCellStyle();
          newStyle0.cloneStyleFrom(cellStyle0);
          XSSFCell xssfCell0_ = lastRow.createCell(0);
          xssfCell0_.setCellStyle(newStyle0);
          xssfCell0_.setCellValue(xssfCell0.toString());
          XSSFCell xssfCell1 = xssfRow.getCell(1);
          CellStyle cellStyle1 = xssfCell1.getCellStyle();
          CellStyle newStyle1 = h.createCellStyle();
          newStyle1.cloneStyleFrom(cellStyle1);
          XSSFCell xssfCell1_ = lastRow.createCell(1);
          xssfCell1_.setCellStyle(newStyle1);
          xssfCell1_.setCellValue(xssfCell1.toString());
          XSSFCell xssfCell2 = xssfRow.getCell(2);
          CellStyle cellStyle2 = xssfCell2.getCellStyle();
          CellStyle newStyle2 = h.createCellStyle();
          newStyle2.cloneStyleFrom(cellStyle2);
          XSSFCell xssfCell2_ = lastRow.createCell(2);
          xssfCell2_.setCellStyle(newStyle2);
          xssfCell2_.setCellValue(xssfCell2.toString());
          XSSFCell xssfCell3 = xssfRow.getCell(3);
          CellStyle cellStyle3 = xssfCell3.getCellStyle();
          CellStyle newStyle3 = h.createCellStyle();
          newStyle3.cloneStyleFrom(cellStyle3);
          XSSFCell xssfCell3_ = lastRow.createCell(3);
          xssfCell3_.setCellStyle(newStyle3);
          xssfCell3_.setCellValue(xssfCell3.toString());
          XSSFCell xssfCell4 = xssfRow.getCell(4);
          CellStyle cellStyle4 = xssfCell4.getCellStyle();
          CellStyle newStyle4 = h.createCellStyle();
          newStyle4.cloneStyleFrom(cellStyle4);
          XSSFCell xssfCell4_ = lastRow.createCell(4);
          xssfCell4_.setCellStyle(newStyle4);
          xssfCell4_.setCellValue(xssfCell4.toString().toString());
          }
          h.write(out_);
          out_.flush();
          out_.close();
          } catch (FileNotFoundException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
          }
          posted @ 2013-07-19 18:02 魏文甫 閱讀(639) | 評論 (0)編輯 收藏
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
          <head>
          <meta http-equiv="Content-Type" content="text/html;charset=GBK" />
          <title></title>
          </head>
          <body>
          <h1>提示離開當前頁面的js代碼</h1>
          <a >百度鏈接</a>
          <script type="text/javascript">
          if (window != top) {
          top.location.href = "login.action";
          } else {
          if (window.Event) {
          window.onbeforeunload = function(event) {
          return "你是否要離開此頁面,離開此頁面信息將不被保存!";
          };
          } else {
          window.onbeforeunload = function() {
          return "你是否要離開此頁面,離開此頁面信息將不被保存!";
          };
          }
          }
          </script>
          </body>
          </html>
          posted @ 2013-07-18 15:04 魏文甫 閱讀(247) | 評論 (0)編輯 收藏
          Ajax同步加載數據。發送請求時鎖住瀏覽器。需要鎖定用戶交互操作時使用同步方式。 
          $.ajax({
            url: "some.php",
            async: false
           })
          posted @ 2013-07-11 15:48 魏文甫 閱讀(454) | 評論 (0)編輯 收藏
          String data_ = "2013-07-01 15:47:34";
          SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          Date date = simpleDateFormat.parse(data_);
          格式yyyy-MM-dd HH:mm:ss是24小時制,yyyy-MM-dd hh:mm:ss是12小時制。
          posted @ 2013-07-01 15:48 魏文甫 閱讀(195) | 評論 (0)編輯 收藏
           
                
                /**
          * 得到幾天前的時間
          * @param d
          * @param day
          * @return
          */
          public static Date getDateOfBefore(Date d, int day) {
          Calendar now = Calendar.getInstance();
          now.setTime(d);
          now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
          return now.getTime();
          }
                /**
          * 得到幾天后的時間
          * @param d
          * @param day
          * @return
          */
          public static Date getDateOfAfter(Date d, int day) {
          Calendar now = Calendar.getInstance();
          now.setTime(d);
          now.set(Calendar.DATE, now.get(Calendar.DATE) + day);
          return now.getTime();
          }
          posted @ 2013-06-28 17:55 魏文甫 閱讀(287) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 乌兰察布市| 玉门市| 富宁县| 化德县| 南部县| 溆浦县| 邻水| 安义县| 武威市| 九江市| 湟源县| 临泽县| 塔城市| 青龙| 沂源县| 兴国县| 永定县| 长春市| 宁城县| 航空| 禄丰县| 江永县| 公安县| 明光市| 静乐县| 大荔县| 扶绥县| 龙井市| 广灵县| 西安市| 太谷县| 九龙县| 博野县| 平阴县| 边坝县| 黄陵县| 微山县| 达州市| 白山市| 白银市| 虎林市|