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

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

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

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

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

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

如上修改步驟結(jié)束后,我們已經(jīng)能實現(xiàn)多用戶多會話訪問遠程桌面了
修改默認連接數(shù)工具見附件
whereis java
which java (java執(zhí)行路徑)
echo $JAVA_HOME
tar -zxvf jdk-7u65-linux-x64.tar.gz1.所有用戶的shell都有權(quán)使用這些環(huán)境變量
用文本編輯器打開/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.某個用戶有權(quán)使用這些環(huán)境變量
用文本編輯器打開用戶目錄下的.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)限
進入到bin目錄下執(zhí)行
chmod +x *.sh
java -version
1.要將 /usr/share/jdk1.5.0_05jdk 改為jdk安裝目錄
2. linux下用冒號”:”來分隔路徑
3. $PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環(huán)境變量的值在設(shè)置環(huán)境變量時特別要注意不能把原來的值給覆蓋掉了。
4. CLASSPATH中當前目錄”.”不能丟掉。
5. export是把這三個變量導(dǎo)出為全局變量。
6. 大小寫必須嚴格區(qū)分。
純java開發(fā)的軟件在linux下面也可以應(yīng)用自如。那么首先就需要配置好linux下的java環(huán)境,具體說來,就是配置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 ….
則表示任何用戶都沒有可執(zhí)行權(quán)限(即使是root用戶)。
解決方法:
#chmod a+x filename
這樣,安裝好后,就可以接下來進行環(huán)境變量的配置了。這里給出三種可選方法:
一、修改/etc/profile文件
當本機僅僅作為開發(fā)使用時推薦使用這種方法,因為此種配置時所有用戶的shell都有權(quán)使用這些環(huán)境變量,可能會給系統(tǒng)帶來安全性問題。
用文本編輯器打開/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)限控制到用戶級別,如果需要給某個用戶權(quán)限使用這些環(huán)境變量,只需要修改其個人用戶主目錄下的.bashrc文件就可以了。
用文本編輯器打開用戶目錄下的.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è)置變量
不推薦使用這種方法,因為換個shell,該設(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下用冒號”:”來分隔路徑
3. $PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環(huán)境變量的值在設(shè)置環(huán)境變量時特別要注意不能把原來的值給覆蓋掉了。
4. CLASSPATH中當前目錄”.”不能丟掉。
5. export是把這三個變量導(dǎo)出為全局變量。
6. 大小寫必須嚴格區(qū)分。

/**//**
* 金額格式化,每三位加個,
*/

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)有實現(xiàn)了,我們可以參考下思路,完成我們的方法,我們可以用類似下面的代碼實現(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;
}
文章詳細出處:http://blog.csdn.net/zdwzzu2006/article/details/7745827
Tomcat6.0虛擬目錄配置[轉(zhuǎn)]
設(shè)虛擬目錄 "site",通過 http://localhost:8080/site 訪問物理路徑 D:"site 文件夾里面的內(nèi)容。設(shè)置過程如下:
1.復(fù)制 Tomcat6.0"webapps"ROOT 目錄下的 WEB-INF 文件夾到 D:"site 目錄下。
2.打開 D:"site"WEB-INF 目錄下的 web.xml 文件,在 </description> 之后加入:
<!--JSPC servlet mappings start -->
<!--JSPC servlet mappings end -->
3.打開 Tomcat6.0"conf"server.xml 文件,在 <Host> 和 </Host> 之間加入:
<Context path="/site" docBase="d:"site"></Context>
path="/site" 就是虛擬目錄的名稱
docBase="d:"site"> 為物理路徑
4.打開 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(對于Tomcat6版本及其以上,需要自己創(chuàng)建catalina和localhost這兩個文件夾)
增加project .xml文件(該文件名的project要和下面的“path=“/xxx"”的xxx相同)
文件內(nèi)容:
<Context path="/project" reloadable="true" docBase="E:"javastudio"oob" workDir="E:"javastudio"oob"work" />
docBase是項目文件夾的web-inf文件夾的上一層目錄
workDir是指Tomcat解析Jsp轉(zhuǎn)換為Java文件,并編譯為class存放的文件夾,設(shè)置在項目文件夾里面,可以避免移植到其他地方首次讀取jsp文件需要重新解析 。一般格式:項目文件夾"work
reloadable是指可以重新加載,一般設(shè)置為true,方便使用,不需要經(jīng)常重啟Tomcat。
以后啟動Tomcat,在瀏覽器輸入http://localhost:8080/project就能訪問
該項目的welcome文件。
轉(zhuǎn):TomCat 6.0虛擬目錄配置!2008年03月09日 星期日 13:51之前在5.0下配置虛擬目錄,我一般是采用在conf"server.xml中增加<Context .../>的方法,可是此法在6.0中失效(后經(jīng)驗證有效,可能是之前實驗過程中有誤)。按照tomcat 6.0啟動之后的相關(guān)文檔的說明http://localhost:8080/docs/config/context.html,嘗試了一些方法:
-----------------------------tomcat6.0文檔中關(guān)于Context的說明-------------------
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
-------------------------------------------------------------------------------
逐一驗證,方法1,2均無效,成功的有以下2種:(下文用%tomcat%表示Tomcat6.0的安裝目錄,希望在瀏覽器中通過http://localhost:8080/abc/default.jsp 來訪問d:"myJsp"default.jsp)
方法一:(文檔中說不建議使用)
找到%tomcat%"conf"server.xml,在</Host>之前加入:
<Context docBase="d:"myJsp" path="/abc" />
保存文件之后,重啟Tomcat即可。注意:大小寫不能錯! 斜桿"/"或"""的方向別搞錯。
方法二:該方法推薦使用,比較簡單。
在%tomcat%"conf"Catalina"locahost(該目錄可能需要手工創(chuàng)建)下新建一個文件abc.xml,注意文件名中的abc就表示虛擬目錄的名稱,所以不可隨意命名,該文件的內(nèi)容為:
<Context docBase="d:"myJsp" />
重啟Tomcat即可。
-------------------------------------------------------------------------------------------
其它設(shè)置:當url中未明確指定文件名時,是否列出相關(guān)目錄下所有文件的開關(guān)設(shè)置:
打開 %tomcat%"conf"web.xml 文件,找到:
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
把false改成true即可。
-------------------------------------------------------------------------------------------
其他人的同類經(jīng)驗:http://fengzhiyu-sh.javaeye.com/blog/153506 經(jīng)驗證無需設(shè)置文中的web application下的web.xml文件。
文章詳細參考:
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是否換行標記
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);
文章詳細參考:
http://blog.csdn.net/pandakong/article/details/7430844