2014年8月4日
開(kāi)發(fā)了一段時(shí)間,挺有感觸了,記一些下來(lái),慢慢完善補(bǔ)充,比如補(bǔ)充一些好用的模板,好用的方法,技巧進(jìn)來(lái)。
==================================================================
原始需求:
判定,此需求是否可由我單獨(dú)接收、確認(rèn)
確認(rèn)是否我該做的
確認(rèn)需求帶來(lái)的好處(錯(cuò)誤修改類、無(wú)錯(cuò)優(yōu)化類)
考慮好處是否可以擴(kuò)大化(把這“個(gè)”錯(cuò)誤修正,變成這“類”錯(cuò)誤修正;把這個(gè)頁(yè)面的優(yōu)化,變成這類頁(yè)面的優(yōu)化)
注:需求的確認(rèn)通常都需要時(shí)間,有不確定地方,剛不要當(dāng)場(chǎng)否定或接收。
開(kāi)發(fā)完成效果描述:
顯示要素要齊全
操作步驟要齊全
生成可被查看,可被操作的東西
開(kāi)發(fā)完成效果可行性驗(yàn)證:
驗(yàn)證效果是否滿足原始需求
驗(yàn)證效果是否可能無(wú)法完成
驗(yàn)證效果是否最優(yōu)方案(同類案例對(duì)比)
確定最終效果,三方確認(rèn)(原始需求提出人-甲方,開(kāi)發(fā)人-乙方技術(shù)人員,項(xiàng)目負(fù)責(zé)人-乙方非技術(shù)人員)
開(kāi)發(fā)完成效果實(shí)現(xiàn):
設(shè)計(jì)
可復(fù)用性
命名規(guī)范化
一個(gè)功能一個(gè)方法,同一類方法放到一個(gè)類中
類名、方法名、出參入?yún)⒚_定
有文檔,可拿來(lái)交流,可拿來(lái)追溯
審核
讓參與人員或技術(shù)主管審核
測(cè)試要素設(shè)定
順序操作步驟場(chǎng)景設(shè)定
強(qiáng)制插入步驟場(chǎng)景設(shè)定
開(kāi)發(fā)
測(cè)試
http://www.360doc.com/content/14/0317/14/7669533_361282824.shtml日常工作中我們可能對(duì)服務(wù)器配置遠(yuǎn)程桌面連接居多,有第三方工具也有微軟自帶,比如在server2008上實(shí)現(xiàn)多用戶的遠(yuǎn)程連接。
但是也可能碰到在WIN 7上實(shí)現(xiàn)多用戶遠(yuǎn)程訪問(wèn)的情況,我們可以大概了解下如何設(shè)置(針對(duì)入門級(jí)別):
一、基礎(chǔ)配置
右擊計(jì)算機(jī)--屬性--高級(jí)系統(tǒng)設(shè)置
選擇遠(yuǎn)程選項(xiàng)卡:

因?yàn)楣ぷ鳝h(huán)境中有XP訪問(wèn),所以不能選擇
僅允許運(yùn)行使用網(wǎng)絡(luò)級(jí)別身份驗(yàn)證的遠(yuǎn)程桌面的計(jì)算機(jī)連接(更安全)(N)
(二)新建與選擇用戶
新建用戶,右擊計(jì)算機(jī)--管理--本地用戶和組--新用戶(此處以PC1為例)

給用戶賦權(quán)遠(yuǎn)程桌面,可以在剛剛遠(yuǎn)程選項(xiàng)卡下點(diǎn)擊選擇用戶--添加

(三)多用戶訪問(wèn)實(shí)現(xiàn)
添加完成之后,我們默認(rèn)只能有一個(gè)用戶一個(gè)連接數(shù)來(lái)訪問(wèn),如果我們需要多用戶訪問(wèn)或者單用戶多連接數(shù)訪問(wèn)
我們需要修改組策略,開(kāi)始--運(yùn)行(WIN+R),輸入gpedit.msc回車,配置如下:
1、計(jì)算機(jī)配置--管理模板--Windows組件--遠(yuǎn)程桌面服務(wù)--遠(yuǎn)程桌面會(huì)話主機(jī)--
修改限制連接的數(shù)量

2、修改將遠(yuǎn)程桌面服務(wù)用戶限制到單獨(dú)的遠(yuǎn)程桌面服務(wù)會(huì)話,改為禁用,允許單用戶多會(huì)話:

(四)修改WIN7 默認(rèn)遠(yuǎn)程桌面連接數(shù)配置(WIN7默認(rèn)連接數(shù)為1,服務(wù)器有單獨(dú)修改RD數(shù)目的管理工具,所以我們利用第三方工具)

如上修改步驟結(jié)束后,我們已經(jīng)能實(shí)現(xiàn)多用戶多會(huì)話訪問(wèn)遠(yuǎn)程桌面了
修改默認(rèn)連接數(shù)工具見(jiàn)附件
whereis java
which java (java執(zhí)行路徑)
echo $JAVA_HOME
tar -zxvf jdk-7u65-linux-x64.tar.gz1.所有用戶的shell都有權(quán)使用這些環(huán)境變量
用文本編輯器打開(kāi)/etc/profile,在profile文件末尾加入:
JAVA_HOME=/usr/share/jdk1.5.0_05
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATHexport CLASSPATH
重新登錄。
2.某個(gè)用戶有權(quán)使用這些環(huán)境變量
用文本編輯器打開(kāi)用戶目錄下的.bashrc文件,在.bashrc文件末尾加入:
JAVA_HOME=/usr/share/jdk1.5.0_05
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATHexport CLASSPATH
重新登錄。
- 給bin目錄下的文件添加執(zhí)行權(quán)限
進(jìn)入到bin目錄下執(zhí)行
chmod +x *.sh
java -version
1.要將 /usr/share/jdk1.5.0_05jdk 改為jdk安裝目錄
2. linux下用冒號(hào)”:”來(lái)分隔路徑
3. $PATH / $CLASSPATH / $JAVA_HOME 是用來(lái)引用原來(lái)的環(huán)境變量的值在設(shè)置環(huán)境變量時(shí)特別要注意不能把原來(lái)的值給覆蓋掉了。
4. CLASSPATH中當(dāng)前目錄”.”不能丟掉。
5. export是把這三個(gè)變量導(dǎo)出為全局變量。
6. 大小寫必須嚴(yán)格區(qū)分。
純java開(kāi)發(fā)的軟件在linux下面也可以應(yīng)用自如。那么首先就需要配置好linux下的java環(huán)境,具體說(shuō)來(lái),就是配置jdk環(huán)境變量。
介紹在linux下配置jdk環(huán)境變量的幾種常用方法。
首先在linux下安裝jdk,如果出現(xiàn)提示權(quán)限不夠(且root下也提示權(quán)限不夠),可用#ls -l filename命令查看一下,如果顯示類似如:
-rw-rw-rw- 1 root root ….
則表示任何用戶都沒(méi)有可執(zhí)行權(quán)限(即使是root用戶)。
解決方法:
#chmod a+x filename
這樣,安裝好后,就可以接下來(lái)進(jìn)行環(huán)境變量的配置了。這里給出三種可選方法:
一、修改/etc/profile文件
當(dāng)本機(jī)僅僅作為開(kāi)發(fā)使用時(shí)推薦使用這種方法,因?yàn)榇朔N配置時(shí)所有用戶的shell都有權(quán)使用這些環(huán)境變量,可能會(huì)給系統(tǒng)帶來(lái)安全性問(wèn)題。
用文本編輯器打開(kāi)/etc/profile,在profile文件末尾加入:
JAVA_HOME=/usr/share/jdk1.5.0_05
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

重新登錄即可。
二、修改.bashrc文件
這種方法更為安全,它可以把使用這些環(huán)境變量的權(quán)限控制到用戶級(jí)別,如果需要給某個(gè)用戶權(quán)限使用這些環(huán)境變量,只需要修改其個(gè)人用戶主目錄下的.bashrc文件就可以了。
用文本編輯器打開(kāi)用戶目錄下的.bashrc文件,在.bashrc文件末尾加入:
set JAVA_HOME=/usr/share/jdk1.5.0_05
export JAVA_HOME
set PATH=$JAVA_HOME/bin:$PATH
export PATH
set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH
重新登錄。
三、直接在shell下設(shè)置變量
不推薦使用這種方法,因?yàn)閾Q個(gè)shell,該設(shè)置就無(wú)效了。這種方法僅僅是臨時(shí)使用,以后要使用的時(shí)候又要重新設(shè)置,比較麻煩。
只需在shell終端執(zhí)行下列命令:
export JAVA_HOME=/usr/share/jdk1.5.0_05
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
注意:
1.要將 /usr/share/jdk1.5.0_05jdk 改為jdk安裝目錄
2. linux下用冒號(hào)”:”來(lái)分隔路徑
3. $PATH / $CLASSPATH / $JAVA_HOME 是用來(lái)引用原來(lái)的環(huán)境變量的值在設(shè)置環(huán)境變量時(shí)特別要注意不能把原來(lái)的值給覆蓋掉了。
4. CLASSPATH中當(dāng)前目錄”.”不能丟掉。
5. export是把這三個(gè)變量導(dǎo)出為全局變量。
6. 大小寫必須嚴(yán)格區(qū)分。

/**//**
* 金額格式化,每三位加個(gè),
*/

function formatMoney1(money)
{
var str = money + "";
var result = "";
var index = str.indexOf(".");
var endStr = "";

if(index>-1)
{
endStr = str.substring(index, str.length);
endStr = endStr.length==3?endStr:endStr+"0";
str = str.substring(0, index);

}else
{
endStr = ".00";
}
var i = 0;
var len = str.length;

for(i;i<len;i++)
{

if((len - (4 + i)) % 3 == 0 && (len - (4 + i)) >= 0)
{
result += str.substr(i, 1) + ",";

}else
{
result += str.substr(i, 1);
}
}
return result+endStr;
}
摘要: 事例1:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->package com.apexsoft.mobile.utils;import java.io.FileInputStream;import java.io.Fil...
閱讀全文
在commons-io包中org.apache.commons.io.IOUtils類的toByteArray(InputStream input)已經(jīng)有實(shí)現(xiàn)了,我們可以參考下思路,完成我們的方法,我們可以用類似下面的代碼實(shí)現(xiàn)inputStream轉(zhuǎn)化為byte[]數(shù)組public static byte[] toByteArray(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
}
return output.toByteArray();
}
下面是IOUtils中摘錄出與toByteArray相關(guān)的方法
org.apache.commons.io.IOUtils.toByteArray
方法如下:
public static byte[] toByteArray(InputStream input)
throws IOException
{
ByteArrayOutputStream output = new ByteArrayOutputStream();
copy(input, output);
return output.toByteArray();
}
public static int copy(InputStream input, OutputStream output)
throws IOException
{
long count = copyLarge(input, output);
if (count > 2147483647L) {
return -1;
}
return (int)count;
}
public static long copyLarge(InputStream input, OutputStream output)
throws IOException
{
byte[] buffer = new byte[4096];
long count = 0L;
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
return count;
}
文章詳細(xì)出處:http://blog.csdn.net/zdwzzu2006/article/details/7745827
Tomcat6.0虛擬目錄配置[轉(zhuǎn)]
設(shè)虛擬目錄 "site",通過(guò) http://localhost:8080/site 訪問(wèn)物理路徑 D:"site 文件夾里面的內(nèi)容。設(shè)置過(guò)程如下:
1.復(fù)制 Tomcat6.0"webapps"ROOT 目錄下的 WEB-INF 文件夾到 D:"site 目錄下。
2.打開(kāi) D:"site"WEB-INF 目錄下的 web.xml 文件,在 </description> 之后加入:
<!--JSPC servlet mappings start -->
<!--JSPC servlet mappings end -->
3.打開(kāi) Tomcat6.0"conf"server.xml 文件,在 <Host> 和 </Host> 之間加入:
<Context path="/site" docBase="d:"site"></Context>
path="/site" 就是虛擬目錄的名稱
docBase="d:"site"> 為物理路徑
4.打開(kāi) Tomcat6.0"conf"web.xml 文件,找到:
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
把false設(shè)成true保存,重啟Tomcat,現(xiàn)在就可以應(yīng)用 http://localhost:8080/site 虛擬目錄了。
Tomcat6設(shè)置虛擬目錄的方法, 不修改server.xml
在tomcat文件夾的conf"catalina"localhost(對(duì)于Tomcat6版本及其以上,需要自己創(chuàng)建catalina和localhost這兩個(gè)文件夾)
增加project .xml文件(該文件名的project要和下面的“path=“/xxx"”的xxx相同)
文件內(nèi)容:
<Context path="/project" reloadable="true" docBase="E:"javastudio"oob" workDir="E:"javastudio"oob"work" />
docBase是項(xiàng)目文件夾的web-inf文件夾的上一層目錄
workDir是指Tomcat解析Jsp轉(zhuǎn)換為Java文件,并編譯為class存放的文件夾,設(shè)置在項(xiàng)目文件夾里面,可以避免移植到其他地方首次讀取jsp文件需要重新解析 。一般格式:項(xiàng)目文件夾"work
reloadable是指可以重新加載,一般設(shè)置為true,方便使用,不需要經(jīng)常重啟Tomcat。
以后啟動(dòng)Tomcat,在瀏覽器輸入http://localhost:8080/project就能訪問(wèn)
該項(xiàng)目的welcome文件。
轉(zhuǎn):TomCat 6.0虛擬目錄配置!2008年03月09日 星期日 13:51之前在5.0下配置虛擬目錄,我一般是采用在conf"server.xml中增加<Context .../>的方法,可是此法在6.0中失效(后經(jīng)驗(yàn)證有效,可能是之前實(shí)驗(yàn)過(guò)程中有誤)。按照tomcat 6.0啟動(dòng)之后的相關(guān)文檔的說(shuō)明http://localhost:8080/docs/config/context.html,嘗試了一些方法:
-----------------------------tomcat6.0文檔中關(guān)于Context的說(shuō)明-------------------
You may define as many Context elements as you wish. Each such Context MUST have a unique context path. In addition, a Context must be present with a context path equal to a zero-length string. This Context becomes the default web application for this virtual host, and is used to process all requests that do not match any other Context's context path.
For Tomcat 6, unlike Tomcat 4.x, it is NOT recommended to place <Context> elements directly in the server.xml file. This is because it makes modifing the Context configuration more invasive since the main conf/server.xml file cannot be reloaded without restarting Tomcat.
Context elements may be explicitly defined:
in the $CATALINA_HOME/conf/context.xml file: the Context element information will be loaded by all webapps
in the $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default file: the Context element information will be loaded by all webapps of that host
in individual files (with a ".xml" extension) in the $CATALINA_HOME/conf/[enginename]/[hostname]/ directory. The name of the file (less the .xml) extension will be used as the context path. Multi-level context paths may be defined using #, e.g. context#path.xml. The default web application may be defined by using a file called ROOT.xml.
if the previous file was not found for this application, in an individual file at /META-INF/context.xml inside the application files
inside a Host element in the main conf/server.xml
-------------------------------------------------------------------------------
逐一驗(yàn)證,方法1,2均無(wú)效,成功的有以下2種:(下文用%tomcat%表示Tomcat6.0的安裝目錄,希望在瀏覽器中通過(guò)http://localhost:8080/abc/default.jsp 來(lái)訪問(wèn)d:"myJsp"default.jsp)
方法一:(文檔中說(shuō)不建議使用)
找到%tomcat%"conf"server.xml,在</Host>之前加入:
<Context docBase="d:"myJsp" path="/abc" />
保存文件之后,重啟Tomcat即可。注意:大小寫不能錯(cuò)! 斜桿"/"或"""的方向別搞錯(cuò)。
方法二:該方法推薦使用,比較簡(jiǎn)單。
在%tomcat%"conf"Catalina"locahost(該目錄可能需要手工創(chuàng)建)下新建一個(gè)文件abc.xml,注意文件名中的abc就表示虛擬目錄的名稱,所以不可隨意命名,該文件的內(nèi)容為:
<Context docBase="d:"myJsp" />
重啟Tomcat即可。
-------------------------------------------------------------------------------------------
其它設(shè)置:當(dāng)url中未明確指定文件名時(shí),是否列出相關(guān)目錄下所有文件的開(kāi)關(guān)設(shè)置:
打開(kāi) %tomcat%"conf"web.xml 文件,找到:
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
把false改成true即可。
-------------------------------------------------------------------------------------------
其他人的同類經(jīng)驗(yàn):http://fengzhiyu-sh.javaeye.com/blog/153506 經(jīng)驗(yàn)證無(wú)需設(shè)置文中的web application下的web.xml文件。
文章詳細(xì)參考:
http://www.cnblogs.com/bingoidea/archive/2009/06/06/1497787.html
修改
catalina.bat
找到下面的東東:
:doStart
shift
if not "%OS%" == "Windows_NT" goto noTitle
set _EXECJAVA=start "
Tomcat" %_RUNJAVA%
goto gotTitle
修改紅色部分
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;


public class UrlResource
{


public static void main(String[] args)
{

try
{
System.out.println(UrlResource.getUrlDetail("http://www.baidu.com",true));
saveUrlFile("http://www.baidu.com/img/baidu_jgylogo3.gif", "D:\\1.gif");

} catch (Exception e)
{
e.printStackTrace();
}
}
//獲取網(wǎng)絡(luò)文件,轉(zhuǎn)存到fileDes中,fileDes需要帶文件后綴名
public static void saveUrlFile(String fileUrl,String fileDes) throws Exception

{
File toFile = new File(fileDes);
if (toFile.exists())

{
// throw new Exception("file exist");
return;
}
toFile.createNewFile();
FileOutputStream outImgStream = new FileOutputStream(toFile);
outImgStream.write(getUrlFileData(fileUrl));
outImgStream.close();
}
//獲取鏈接地址文件的byte數(shù)據(jù)
public static byte[] getUrlFileData(String fileUrl) throws Exception

{
URL url = new URL(fileUrl);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.connect();
InputStream cin = httpConn.getInputStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;

while ((len = cin.read(buffer)) != -1)
{
outStream.write(buffer, 0, len);
}
cin.close();
byte[] fileData = outStream.toByteArray();
outStream.close();
return fileData;
}
//獲取鏈接地址的字符數(shù)據(jù),wichSep是否換行標(biāo)記
public static String getUrlDetail(String urlStr,boolean withSep) throws Exception

{
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();
httpConn.connect();
InputStream cin = httpConn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(cin,"UTF-8"));
StringBuffer sb = new StringBuffer();
String rl = null;
while((rl = reader.readLine()) != null)

{
if (withSep)

{
sb.append(rl).append(System.getProperty("line.separator"));
}
else

{
sb.append(rl);
}
}
return sb.toString();
}
}// 禁止圖像緩存
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
文章詳細(xì)參考:
http://blog.csdn.net/pandakong/article/details/7430844