| !!false | === | false | |
| !!true | === | true | |
| !!0 | === | false | |
| !!parseInt("foo") | === | false | // NaN is falsy |
| !!1 | === | true | |
| !!-1 | === | true | // -1 is truthy |
| !!"" | === | false | // empty string is falsy |
| !!"foo" | === | true | // non-empty string is truthy |
| !!"false" | === | true | // ...even if it contains a falsy value |
| !!window.foo | === | false | // undefined is falsy |
| !!null | === | false | // null is falsy |
| !!{} | === | true | // an (empty) object is truthy |
| !![] | === | true | // an (empty) array is truthy; PHP programmers beware! |
2015年12月28日 星期一
[javascript] not not (!!) 運算
2015年11月2日 星期一
[Multithread] Java multithread
Java multithread - 1
在開發多執行緒程式時,常發生的問題是共用資源非同步問題,就像工作一個人做好好的,多一個人沒有協調好就是來添亂的,除了叫他麥來亂之外,可能好好協調才是增加產能的好策略。
本系列文主要把之前遇過的一些多執行緒問題紀錄一下,然後一些資料參考這本書和部分本人的記憶,如果有疏漏或是錯誤也請不吝指教。
問題
- 共用物件
- 多資源資源鎖定
- Job - Worker
- 排程
Java - Syncronized
- syncronized method
- syncronized block
Java - Thread
- wait
- sleep
- join
- yank
- notify/notifyAll
- interrupt
- Thread/Runnable
- Mutax Object
Queue Design
Worker Design
Job
[maven] profile - activation
http://maven.apache.org/guides/introduction/introduction-to-profiles.html
profile 設定裡面除了 id, build 之外還有個蠻有用的設定
activation 可以用來設定啟用這個 profile 的條件 (哇喔~~~)
指定 JDK 1.4
profile 設定裡面除了 id, build 之外還有個蠻有用的設定
activation 可以用來設定啟用這個 profile 的條件 (哇喔~~~)
指定 JDK 1.4
- <activation>
- <jdk>1.4</jdk>
- </activation>
JDK 1.3~1.6前
- <activation>
- <jdk>[1.3,1.6)</jdk>
- </activation>
特定 OS
- <activation>
- <os>
- <name>Windows XP</name>
- <family>Windows</family>
- <arch>x86</arch>
- <version>5.1.2600</version>
- </os>
- </activation>
有 debug 這個 property
- <activation>
- <property>
- <name>debug</name>
- </property>
- </activation>
environment 設定成 test
-Denvironment=test
- <activation>
- <property>
- <name>environment</name>
- <value>test</value>
- </property>
- </activation>
沒有某個檔案或資料夾
- <activation>
- <file>
- <missing>target/generated-sources/axistools/wsdl2java/org/apache/maven</missing>
- </file>
- </activation>
預設啟動
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
2015年10月17日 星期六
[maven] profile 使用
最近專案在發佈的時候,需要把 war 檔案中的 config, jar 等檔案移出來的需求
看了一下 maven-war-plugin 的範例文件
把專案設定丟出來加些說明
1. 在 pom.xml 裡面增加 profiles 不同的 profile 可以適用不同環境的上版參數設定
2. profile 裡面主要有三個 plugin,設定大概如下方說明
3. mvn clean install -Dmaven.test.skip=true -Puat
-P 就是指定 profile 的意思
Eclipse version
--- plugin 示意
看了一下 maven-war-plugin 的範例文件
把專案設定丟出來加些說明
1. 在 pom.xml 裡面增加 profiles 不同的 profile 可以適用不同環境的上版參數設定
2. profile 裡面主要有三個 plugin,設定大概如下方說明
3. mvn clean install -Dmaven.test.skip=true -Puat
-P 就是指定 profile 的意思
Eclipse version
threads 跟 skip Tests 都是自己加的 不需要可以自己移掉
- maven-war-plugin :
- 處理 war 檔案包裝,包括檔案過濾、web.xml 指定、其他資源載入等
- maven-compiler-plugin
- java 編譯相關參數,設定編譯用參數,顯示提示等
- maven-resource-plugin
- 將設定檔案移動至指定位置
2015年10月5日 星期一
2015年9月17日 星期四
[log4j] 顯示 SQL & 參數值
log4j.properties 設定
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate=ERROR
org.hibernate.SQL 用來顯示 PeparedStatement
org.hibernate.type.descriptor.sql.BasicBinder 用來顯示 bind 的值
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate=ERROR
org.hibernate.SQL 用來顯示 PeparedStatement
org.hibernate.type.descriptor.sql.BasicBinder 用來顯示 bind 的值
2015年9月5日 星期六
Log4j - Addtivity & Category
一個一直沒有去弄清楚的東西
additivity
https://logging.apache.org/log4j/2.0/manual/configuration.html#Additivity
同一個訊息可以在多個 logger 中被輸出到同一個 appender
這樣訊息很明顯是會被輸出多次
additivity = false 就是讓這個 logger 的訊息不要被輸出的意思
properties 版本
log4j.rootLogger=INFO, console
log4j.logger.package.name=INFO, console
log4j.additivity.package.name=false;
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %-5p %c - %m%n
---
Category
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Category.html
一個被捨棄 (deprecate) 的類別
Category category = Category.getInstance(TargetClass.class);
Logger logger = Logger.getLogger(TargetClass.class)
當初用的時候好像就已經只有看到 Logger 了
Category 這個關鍵字就是偶而會出現在設定檔案裡面,讓人覺得煩躁 XDD
反正就不要再使用囉!!!
additivity
https://logging.apache.org/log4j/2.0/manual/configuration.html#Additivity
同一個訊息可以在多個 logger 中被輸出到同一個 appender
這樣訊息很明顯是會被輸出多次
additivity = false 就是讓這個 logger 的訊息不要被輸出的意思
properties 版本
log4j.rootLogger=INFO, console
log4j.logger.package.name=INFO, console
log4j.additivity.package.name=false;
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %-5p %c - %m%n
---
Category
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Category.html
一個被捨棄 (deprecate) 的類別
Logger logger = Logger.getLogger(TargetClass.class)
當初用的時候好像就已經只有看到 Logger 了
Category 這個關鍵字就是偶而會出現在設定檔案裡面,讓人覺得煩躁 XDD
反正就不要再使用囉!!!
2015年8月11日 星期二
[Maven] 基本 plugin
mvn [<goal(s)>] [<phase(s)>]
goal: <plugin>:<goal>
-- goal --
archetype:generate
http://maven.apache.org/archetype/maven-archetype-plugin/
help:help
compiler:compile
http://maven.apache.org/plugins/maven-compiler-plugin/
war:war
http://maven.apache.org/plugins/maven-war-plugin/
jar:jar
http://maven.apache.org/plugins/maven-jar-plugin/
dependency:help
http://maven.apache.org/plugins/maven-dependency-plugin/
source:help
http://maven.apache.org/plugins/maven-source-plugin/
checkstyle:checkstyle
http://maven.apache.org/plugins/maven-checkstyle-plugin/
pmd:pmd
http://maven.apache.org/plugins/maven-pmd-plugin/
ant:ant
http://maven.apache.org/plugins/maven-ant-plugin/
antrun:run
http://maven.apache.org/plugins/maven-antrun-plugin/
tomcat6/7
http://tomcat.apache.org/maven-plugin-2.2/context-goals.html
cargo (支援多種 container 發布)
https://codehaus-cargo.github.io/cargo/Home.html
-- phase --
clean
compile
deploy
install
test
package
goal: <plugin>:<goal>
-- goal --
archetype:generate
http://maven.apache.org/archetype/maven-archetype-plugin/
help:help
compiler:compile
war:war
jar:jar
dependency:help
source:help
checkstyle:checkstyle
pmd:pmd
ant:ant
http://maven.apache.org/plugins/maven-antrun-plugin/
tomcat6/7
http://tomcat.apache.org/maven-plugin-2.2/context-goals.html
cargo (支援多種 container 發布)
https://codehaus-cargo.github.io/cargo/Home.html
-- phase --
clean
compile
deploy
install
test
package
2015年8月10日 星期一
[bash] 指令速記
查出 process 並用 username 過濾
透過 awk 篩選出 container id 並且在 docker 中移除
篩選特定的 pid 然後 kill
看檔案的尾巴
ps -ef | grep username
透過 awk 篩選出 container id 並且在 docker 中移除
docker ps -a | grep imageName | awk '{print $1}' | xargs docker rm {}篩選特定的 pid 然後 kill
ps -ef | grep ping | grep -v 'grep' | awk '{print $2}' | xargs kill看檔案的尾巴
tail -f
2015年8月9日 星期日
[CLI] zip/unzip, jar command
最近很常在 linux 上作業,特別是操作 weblogic 和裡面的 jar/war 檔案
原來都透過 zip/unzip 來處理檔案
常見的用法是
建立壓縮檔
-r recursive (很好記)
解壓縮檔案 (可不加 .zip)
-d directory (很好記)
這樣就很方便了,不過使用 jar 可以滿足一些些虛榮心
(補)(原來之前已經寫過了,不過看起來出以前比較不會用指令)
建立壓縮檔
-C 會從 sourceDir 中尋找檔案再進行建立,可以包括多個 -C
解壓縮檔案
c create
x extract
u update
t table of contents
m manifest file
f file
0 no compress (create only)
v verbose
------
以下是 man 出來的語法


原來都透過 zip/unzip 來處理檔案
常見的用法是
建立壓縮檔
zip -r zipfile.zip sourceDir
-r recursive (很好記)
解壓縮檔案 (可不加 .zip)
unzip zipfile -d targetDir
-d directory (很好記)
這樣就很方便了,不過使用 jar 可以滿足一些些虛榮心
(補)(原來之前已經寫過了,不過看起來出以前比較不會用指令)
建立壓縮檔
jar cf jarfile -C sourceDir *.class
-C 會從 sourceDir 中尋找檔案再進行建立,可以包括多個 -C
解壓縮檔案
jar xf jarfile
c create
x extract
u update
t table of contents
m manifest file
f file
0 no compress (create only)
v verbose
------
以下是 man 出來的語法


訂閱:
文章 (Atom)


