2014年7月30日 星期三

nginx + tomcat + memcached (windows) 反向代理、負載平衡、sessione共享

環境:
OS : winsows7
JDK : 7


準備軟體

Server
JAR
NOTE: 注意用太新版本的jar反而會錯,tomcat會啟動不了。

資源列表:

memcached在client可用:

1.解壓 nginx、 tomcat、memcached

2. 將下載的 jar 放置 兩個  tomcat 的  /lib 底下

3.安裝 memcached
  • 管理員開啟命令列,執行 memcached.exe –d install 。
查詢啟動:
  • tasklist /fi "imagename eq memcached.exe"


  • 可以進到管理中將其改為手動啟動。

預設的port是 11211

指令:
     -p 監聽的Port   
     -l 連接的IP地址, 預設是本機  (localhost)
     -d start 啟動memcached服務
    -d restart 重起memcached服務
    -d stop|shutdown 關閉正在運行的memcached服務
    -d install 安裝memcached服務
    -d uninstall 卸載memcached服務
    -u 以的身份運行(僅在以root運行的時候有效)
    -m 最大記憶體使用,單位MB。默認64MB
    -M 記憶體耗盡時返回錯誤,而不是刪除項目
    -c 最大同時連接數,默認是1024
    -f 塊大小增長因子,默認是1.25
    -n 最小分配空間,key+value+flags 預設是48
    -h 顯示幫助

Note:windows7要使用管理員開啟命令模式

2014年7月20日 星期日

Java MongoDB find _id


搜尋條件必須用 ObjectID(  ),直接用String 會找不著。

BasicDBObject query = new BasicDBObject();
query.put("_id", new ObjectId(roleID));



2014年7月17日 星期四

Java Mongo Drivers Normal Authentication 一般驗證

OS : win7
mongoDB  :   2.6
MongoDB Drivers :  2.12.2
Language:Java


package global.db;


import java.net.UnknownHostException;

import java.util.Arrays;

import javassist.bytecode.stackmap.TypeData.ClassName;


import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.Scope;

import com.mongodb.DB;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;

/**

 * @author hua
 * 處理 mongoDB 基礎連線建立 
 */
@Configuration
@Scope(BeanDefinition.SCOPE_SINGLETON)
public class MongoConnection {

private static Logger logger = Logger.getLogger(ClassName.class);

@Value("${mongo.host}")
private String host;

@Value("${mongo.port}")
private int port;

@Value("${mongo.dbName}")
private String dbName;

@Value("${mongo.user}")
private String user;

@Value("${mongo.pwd}")
private String pwd;

private MongoClient mongoClient;

public MongoConnection() throws UnknownHostException {
super();
}

/**

* 建立連線
*/
private void buildConnection()throws UnknownHostException{
try {
MongoCredential credential = MongoCredential.createMongoCRCredential(this.user, this.dbName, this.pwd.toCharArray());
MongoClientOptions options = getOption();
ServerAddress address = new ServerAddress(this.host, this.port);
mongoClient = new MongoClient(address, Arrays.asList(credential), options);
logger.info("--------------------MongoDB 驗證成功");
} catch (UnknownHostException e) {
logger.error("MongoDB 建立連線失敗!");
if(mongoClient != null){
mongoClient.close();
}
throw e;
}
}
//線程等待數量  * 主機最大連線數  = pool 數量
protected MongoClientOptions getOption(){
return new MongoClientOptions.Builder()
       .threadsAllowedToBlockForConnectionMultiplier(300) //線程等待的數量
       .connectionsPerHost(10) //主機最大連線數
       .connectTimeout(5000)
       .build();
}

/** 取得DB操作物件
* @return
* @throws UnknownHostException
*/
public DB getDB() throws UnknownHostException {
synchronized (this) {
if(mongoClient == null){
buildConnection();
}
}
return mongoClient.getDB(this.dbName);
}
}



Note :
  •  mongo 現在版本,建議使用MongoClientOptions 而不要再使用MongoOptions。
參考文件:



MongoDB MongoClient 與 Mongo

OS : win7
mongoDB  :   2.6
MongoDB Drivers :  2.12.2
Language:Java


  • MongoClient 與 Mongo 是mongoDB Driver  是連線管理物件,具有連線池功用。
  • Mongo 目前 Drivers API 有提到,請不要再使用Mongo,而因改用MongoClient來建立連線。

    此段引用mongoDB官方API 文件

    Mongo(MongoURI uri)
    Deprecated.

    可以看見,文件告知改用MongoClient吧。
  • MongoClient 繼承自  Mongo。

參考:

spring bean scope annotation


@Configuration
@Scope(BeanDefinition.SCOPE_SINGLETON)
public class MongoConnection {
    .
    .
    .
}


SCOPE
  • BeanDefinition.SCOPE_SINGLETON     or  "singleton "
  • BeanDefinition.SCOPE_PROTOTYPE    or   "prototype "
  • "request"
  • "session" 
  • "globalSession "

Reference 

2014年7月16日 星期三

bootstrap 3.2 修改 Media queries breakpoints

1. 打開  /bootstrap/less/variables.less

2. Ctrl + F  , 輸入  screen

3 . 修改

  • @screen-xs  :   320px;
  • @screen-sm :   768px;
  • @screen-md :   1024px;
  • @screen-lg    :   1200px;
4. 存檔

5.  開啟 nodejs 命令介面

6  輸入:  grunt dist         (做編譯)

bootstrap source 使用 與 編譯

bootstrap 下載 source檔,較方便修改,在更改 less檔後,可經由grunt編譯產生結果。

1.需要先安裝 nodejs


2. 下載 bootstrap source版本

  • bootstrap有提供壓縮好的版本,與原始碼版。
  • 壓縮版可以直接使用,修改是直接改動css.
  • source版,可以藉由改動less在使用grunt編譯至dist夾產生壓縮結果。
  • 直接改css對沒學過less的人比較直覺,但改動地方多容易不同步。
  • source可改less,因為有變數等功能關係,改動較少就能達到效果。

3. 安裝 grunt
  • 開啟 nodejs 命令介面。  (open  nodejs command line)
  • 輸入:  npm install -g grunt-cli   //將會安裝grunt 於全域環境
4. 安裝 bootstrap 所需模組
  • 進入boostrap根目錄下。     \bootstrap\
  • 輸入:  npm install   ,npm 將會依照  package.json設定來安裝模組套件於區域環境。

5. 編譯 less並將css與javascript壓縮
  • 在bootstrap根目錄下輸入:  grunt dist 

Note:
  • nodejs 在找尋模組會先從專案夾中的區域模組夾中找尋,找不到才會去全域模組資料夾找模組。