春天里,百花香...
#
摘要: Spring的AOP支持可以被用于從系統(tǒng)核心邏輯中分離交叉業(yè)務(cross-business)如日志,事務管理和安全等,使用AOP,你可以用各種功能層來覆蓋核心業(yè)務層,這些功能層可以靈活的應用到你的系統(tǒng)中,甚至核心業(yè)務層都不知道它們的存在,這是一個強大的概念。
AOP(aspect-oriented programming)的核心就是動態(tài)代理,掌握它對于理解AOP尤為重要,猶如反射對理解IoC一樣。
閱讀全文
摘要: 本文將試圖討論一些決定一個程序員一生的核心的東西,這是個人對程序員生涯的一孔之見,只代表作者的個人想法,其中疏漏甚至錯誤之處在所難免,希望大家多提寶貴意見。
前言
豐厚的薪水,高端的職位和有成就感的事業(yè)是人人都想要的,而這些都取決于你每天的認真工作,努力學習和靈活做人上。日子就像一塊塊磚,你就像是一個泥瓦匠每天在堆砌著你的人生,最終砌出一個宏偉的大廈或是一幢低矮的小屋甚至是堆成一堆瓦礫全取決于你自己。
閱讀全文
摘要: 在上文的表單驗證解決方案中,有這樣幾個問題:
1。頁面中存在自定義標簽,這通不過W3C驗證。
2。自定義標簽不能寫在Struts標簽中,造成此解決方案在Struts工程中不適用。
3。驗證的方式和頁面內(nèi)容混合在一起,沒有分開。
4。原反饋信息span的id必須符合一定規(guī)范,這是額外的負擔。
為了解決這些問題,我采取了如下步驟:
1。建立一種數(shù)據(jù)結構,讓它容納文本框id,反饋span的id,驗證正則表達式,是否必須輸入等四個信息。這樣頁面就不會混雜自定義標簽,w3c驗證和struts標簽不支持的問題就解決了。
2。建立一個包含多個這種數(shù)據(jù)結構的數(shù)組,其中元素與要驗證的文本域一一對應。此數(shù)組在需要驗證時建立。這里雖然要多些一些JS代碼,但驗證信息更集中更容易修改了。
3。需要驗證時取得數(shù)組元素,挨個驗證即可,需要的信息都可以從數(shù)組元素中取得。整個過程可以庫化通用化,頁面不需要寫驗證。
如此做完后,我認為原先的問題基本得到解決了。下面請看具體代碼
閱讀全文
摘要: 對于實現(xiàn)文件上傳功能來說,Commons-fileupload組件是一個不錯的選擇,本文使用它實現(xiàn)了單個文件及多個文件上傳,這里將實現(xiàn)過程寫出來與大家共享。
閱讀全文
摘要: 權限設計是很多系統(tǒng)重要的組成部分,主要用于控制功能和流程,本文將幾種常見的權限設計方案(權限系統(tǒng)的名都是自己起的)的基本設計寫出來,其中不恰當處還請大家指出,我們來討論一下.
閱讀全文
下面的方法能解出九宮格,但對于更高階只有理論可能性,因為耗時太長,不能作為通用解決方案。
輸出:
2 7 6
9 5 1
4 3 8
package com.sitinspring;
public class SquarePuzzle{
/**
* 階數(shù)
*/
private int n;
/**
* 方陣數(shù)組
*/
private Integer[] arr;
/**
* 平均值
*/
private int average;
public SquarePuzzle(int n){
this.n=n;
// 建立數(shù)組并得到平均值
arr=new Integer[n*n];
average=0;
for(int i=1;i<=n*n;i++){
arr[i-1]=i;
average+=i;
}
average=average/n;
// 遞歸查看
permutation(arr,0,arr.length);
}
private void permutation(Integer[] arr,int start,int end){
if(start<end+1){
permutation(arr,start+1,end);
for(int i=start+1;i<end;i++){
Integer temp;
temp=arr[start];
arr[start]=arr[i];
arr[i]=temp;
permutation(arr,start+1,end);
temp=arr[i];
arr[i]=arr[start];
arr[start]=temp;
}
}
else{
/*for(int i=0;i<end;i++){
System.out.print(arr[i]);
}
System.out.print("\n");*/
int i,sum=0;
for(i=0;i<n;i++){
sum+=arr[i];
}
if(sum!=average){
return;
}
// 查看是否縱橫對角線值都相等
checkAndPrint(arr);
}
}
private void checkAndPrint(Integer[] arr){
Integer[][] arr2=new Integer[n][n];
int i,j,sum;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
arr2[i][j]=arr[i*n+j];
}
}
// 橫
for(i=0;i<n;i++){
sum=0;
for(j=0;j<n;j++){
sum+=arr2[i][j];
}
if(sum!=average){
return;
}
}
// 縱
for(i=0;i<n;i++){
sum=0;
for(j=0;j<n;j++){
sum+=arr2[j][i];
}
if(sum!=average){
return;
}
}
// 對角線
sum=0;
for(i=0;i<n;i++){
sum+=arr2[i][i];
}
if(sum!=average){
return;
}
// 對角線
sum=0;
for(i=0;i<n;i++){
sum+=arr2[i][n-i-1];
}
if(sum!=average){
return;
}
// 最終打印
for(i=0;i<n;i++){
for(j=0;j<n;j++){
System.out.print(arr2[i][j]+"\t");;
}
System.out.print("\n");;
}
System.out.print("\n");;
System.exit(0);
}
public static void main(String[] args){
new SquarePuzzle(3);
}
}
摘要: 本文書寫了使用JFreeChart生成平面餅圖,3D餅圖,折線圖和柱狀圖的示例代碼,并附有代碼下載.
閱讀全文
摘要: 在上一篇“Web頁面表單域驗證方式的改進“中,我們通過把驗證法則(正則表達式和是否必填字段)寫在表單域中,將驗證過程和驗證法則成功的分離,從而減少了重復代碼,使驗證變得簡單易行,在實際使用中,我們可以把驗證過程放在一個JS文件中,對于全輸入驗證界面,在頁面的表單驗證部分只需要調(diào)用其中的checkForm函數(shù)就能進行有效驗證,頁面上不再需要書寫重復性高的JS驗證代碼;對于復雜的表單,比如其中含有復選框或是需要兩個文本框比較的地方,這種方法也可讓你不寫通用驗證代碼而把主要精力放在特殊的驗證上。這些能減輕不少工作量,讓繁瑣的工作變得輕松愉快起來。
閱讀全文
sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請注明出處.