今天項(xiàng)目組進(jìn)行了一個(gè)小時(shí)的需求討論,由于剛進(jìn)入項(xiàng)目組不久,對(duì)系統(tǒng)了解不多,幾乎沒(méi)有發(fā)言一直在旁聽(tīng)。
此次會(huì)議得出一點(diǎn)心得:系統(tǒng)開(kāi)發(fā)中最重要的就是解決方案的敲定,解決方案選擇對(duì)的話,就算沒(méi)有達(dá)到事半功倍的效果,開(kāi)發(fā)人員開(kāi)發(fā)起來(lái)也能輕松很多。
怎么才能產(chǎn)生一個(gè)好的解決方案,這就與對(duì)系統(tǒng)、需求、技術(shù)的掌握程度了,程度越高考慮事情越周全、解決方案越有效。
由此也可以得出,企業(yè)在選擇員工時(shí)應(yīng)該看重分析問(wèn)題、解決問(wèn)題的能力,而不是技術(shù)能力。當(dāng)然了,技術(shù)能力一般,解決問(wèn)題能力可能也不是多好。
一個(gè)好的程序員:技術(shù)能力+解決問(wèn)題能力(思維邏輯),所以技術(shù)是基礎(chǔ)、必備的,技術(shù)上要每天都有收獲,思維方式要時(shí)刻注意培養(yǎng),不僅僅是解決開(kāi)發(fā)問(wèn)題時(shí)注意,日常生活同樣使用。
要成功,就馬上準(zhǔn)備有所付出吧!這就是每天你應(yīng)該養(yǎng)成的習(xí)慣。
1、不說(shuō)“不可能”;
2、凡事第一反應(yīng): 找方法,不找借口;
3、遇到挫折對(duì)自己說(shuō)聲:太好了,機(jī)會(huì)來(lái)了!
4、不說(shuō)消極的話,不落入消極的情緒,一旦發(fā)生立即正面處理;
5、凡事先訂立目標(biāo);
6、行動(dòng)前,預(yù)先做計(jì)劃;
7、工作時(shí)間,每一分、每一秒做有利于生產(chǎn)的事情;
8、隨時(shí)用零碎的時(shí)間做零碎的事情;
9、守時(shí);
10、寫(xiě)點(diǎn)日記,不要太依靠記憶;
11、隨時(shí)記錄想到的靈感;
12、把重要的觀念、方法寫(xiě)下來(lái),隨時(shí)提示自己;
13、走路比平時(shí)快30%,肢體語(yǔ)言健康有力,不懶散、萎靡;
14、每天出門(mén)照鏡子,給自己一個(gè)自信的微笑;
15、每天自我反省一次;
16、每天堅(jiān)持一次運(yùn)動(dòng);
17、聽(tīng)心跳一分鐘,在做重要的事情,疲勞時(shí),緊張時(shí),煩躁時(shí)。。。。
18、開(kāi)會(huì)做前排;
19、微笑;
20、用心傾聽(tīng),不打斷對(duì)方的話;
21、說(shuō)話有力,感覺(jué)自己的聲音能產(chǎn)生感染力的磁場(chǎng);
22、說(shuō)話之前,先考慮一下對(duì)方的感覺(jué);
23、每天有意識(shí)贊美別人三次以上;
24、即使表示感謝,如果別人幫助了你的話;
25、控制住不要讓自己作出為自己辯護(hù)的第一反應(yīng);
26、不用訓(xùn)斥、指責(zé)的口吻與別人說(shuō)話;
27、每天做一件”分外事“;
28、不關(guān)任何方面,每天必須至少做一次”進(jìn)步一點(diǎn)點(diǎn)“,并且有意識(shí)的提高;
29、每天提前15分上班,推遲30分下班;
30、每天下班前5分鐘做一下今天的整理工作;
31、定期存錢(qián);
32、節(jié)儉;
33、時(shí)常運(yùn)用”頭腦風(fēng)暴“,利用腦力激蕩提升自己創(chuàng)新能力;
34、恪守誠(chéng)信;
35、學(xué)會(huì)原諒。
通過(guò)JS完成,能滿足多種瀏覽器,不足之處是展示效果不是很理想,而且最多只能輸入13位數(shù)字,希望大家提出改正方法
<html>
<head>
<title>數(shù)字轉(zhuǎn)換人民幣大寫(xiě)</title>
<script type="text/javascript">
function convert() {
var big = new Array("零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖");
var unit = new Array("圓", "拾", "佰", "仟", "萬(wàn)", "拾", "佰", "仟", "億", "拾",
"佰", "仟", "萬(wàn)");
var num = document.getElementById("num").value;
if (num =="") {
alert("輸入為空,請(qǐng)輸入數(shù)字");
return false;
}
if (num.match(/[^,.\d]/) != null) {
alert("輸入內(nèi)容不合法,請(qǐng)輸入數(shù)字");
return false;
}
var temp = "";
if (num != null&&num.length<=13) {
for (var i = 0; i < num.length; i++) {
if(num.charAt(i)==0){
alert("輸入內(nèi)容不合法,不能以0開(kāi)始");
return false;
}else{
temp = temp + big[num.charAt(i)] + unit[num.length - i - 1];
}
}
}else{
alert("最多只能輸入13位數(shù)字");
return false;
}
document.getElementById("rmb").innerText = temp;
}
</script>
</head>
<body>
<input type="text" name="num" id="num"/>
<input type="button" name="convert" value="轉(zhuǎn)換" onclick="return convert()"/>
<input type="text" id="rmb"/>
</body>
</html>
<html>
<head>
<title> 敲回車(chē)光標(biāo)跳到下一個(gè)輸入框(只能在IE下使用) </title>
</head>
<script>
function turnNext(object){
if(object.keyCode==13){
object.keyCode=9;
}
}
</script>
<body>
<table>
<tr>username<input type="text" name="name1" onkeydown="turnNext(event)"/></tr>
<tr>password<input type="text" name="name2" /></tr>
<tr>age<input type="text" name="name2" /></tr>
</table>
</body>
</html>
JSP注釋
在JSP中注釋最好用<%----注釋內(nèi)容----%>
JSP注釋分兩種
顯示注釋?zhuān)涸诳蛻舳耍ㄔ创a)可以看到
HTML中的注釋<!---注釋內(nèi)容--->
隱式注釋?zhuān)涸诳蛻舳耍ㄔ创a)看不到
使用JAVA中的“//”、“/*…………*/”,以及JSP中自己的注釋<%----注釋內(nèi)容----%>
<%---JSP中的注釋?zhuān)床灰?jiàn)---%>
<%
//注釋?zhuān)床灰?jiàn) 單行注釋
/*
XXXXX
注釋?zhuān)床灰?jiàn) 多行注釋
YYYYY
*/
%>
<!----顯示注釋--->
<!--This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->
結(jié)果:<!--This page was loaded on 2010-12-01 13:24:32 -->
如果用顯示注釋?zhuān)瑸g覽器也會(huì)執(zhí)行里面的內(nèi)容,速度會(huì)低點(diǎn)

HTML注釋
只有一種 <!----注釋內(nèi)容-->
<!----這里是HTML注釋--->
XML注釋
只有一種<!----注釋內(nèi)容-->
CSS注釋
只有一種 /* 注釋內(nèi)容 */
JavaScript注釋
單行注釋 //注釋內(nèi)容
多行注釋
/*
XXXX
注釋內(nèi)容
YYYY
*/
現(xiàn)在開(kāi)始加入公司的核心項(xiàng)目,但由于項(xiàng)目開(kāi)發(fā)比較早,所以使用的技術(shù)不是很新潮,前臺(tái)用的還是struts1。
雖然不是什么新技術(shù),但仍可以從中學(xué)到好多東西的。花了一個(gè)晚上的時(shí)間終于把struts1的流程跑通了。
省略了創(chuàng)建過(guò)程及加入jar包的過(guò)程,直接進(jìn)入正題。
首頁(yè)要在web.xml中添加相應(yīng)的struts配置:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
然后在config所對(duì)應(yīng)的目錄下添加struts配置文件struts-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<!-- ActionForm -->
<form-beans>
<!-- name:名稱 type:類(lèi)路徑 -->
<form-bean name="loginForm" type="com.login.LoginForm">
</form-bean>
</form-beans>
<!-- 設(shè)置全局URL,必須寫(xiě)在Action前面,這樣任何Action都可以使用 -->
<global-forwards>
<forward name="result" path="/result.jsp" />
</global-forwards>
<!-- 注冊(cè)Action -->
<action-mappings>
<!-- name:名稱 type:類(lèi)路徑 path:客戶端(JSP)提交到服務(wù)器端時(shí)指定的路徑(Form表單中的action=”/login.do" -->
<action path="/login" type="com.login.LoginAction"
name="loginForm" scope="request">
<!-- 局部URL,只有這個(gè)action可以使用 -->
<forward name="success" path="/success.jsp"></forward>
<forward name="error" path="/error.jsp"></forward>
</action>
</action-mappings>
</struts-config>
注:Action和Form的關(guān)系是一個(gè)Action只能對(duì)應(yīng)一個(gè)Form(通過(guò)Action的name屬性)
而一個(gè)Form可以被多個(gè)Action調(diào)用
LoginAction.java
package com.login;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class LoginAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginForm lf = (LoginForm) form;
String username = lf.getUsername();
String password = lf.getPassword();
String errorInfo = "";
String result = UserManager.getInstance().login(username, password);
if (result.equals("success")) {
request.setAttribute("username", username);
return mapping.findForward("success");
} else if (result.equals("username")) {
errorInfo = "密碼錯(cuò)誤";
} else {
errorInfo = "用戶名錯(cuò)誤";
}
request.setAttribute("errorInfo", errorInfo);
return mapping.findForward("error");
}
}
LoginForm.java
package com.login;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
public class LoginForm extends ActionForm {
private String username;
private String password;
public void reset(ActionMapping mapping, HttpServletRequest request) {
System.out.println("--------reset()-------------");
super.reset(mapping, request);
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
System.out.println("--------validate()-------------");
return super.validate(mapping, request);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
對(duì)我個(gè)人來(lái)說(shuō)最重要的是前臺(tái)jsp頁(yè)面沒(méi)有掌握,經(jīng)常在頁(yè)面上花費(fèi)很多時(shí)間
在編寫(xiě)JSP頁(yè)面時(shí)要用struts標(biāo)簽,而我經(jīng)常會(huì)忘記
引入jsp標(biāo)簽
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>首頁(yè)</title>
</head>
<body>
<html:form action="/login.do">
用戶名:<html:text property="username"></html:text><br/>
密碼: <html:password property="password"></html:password><br/>
<html:submit>submit</html:submit>
</html:form>
</body>
</html>
展示結(jié)果(將Action的返回值展示到JSP頁(yè)面上)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Error</title>
</head>
<body>
<bean:write name="errorInfo" scope="request" />
</body>
</html>
1.安裝Ant
先從http://ant.apache.org/下載Ant,解壓到任一目錄下面,比如E:\Lab
然后設(shè)置環(huán)境變量
ANT_HOME=E:\Lab\apache-ant-1.8.2
path=E:\Lab\apache-ant-1.8.2\bin
最后驗(yàn)證是否安裝成功
在dos中輸入ant,如果顯示
Buildfile: build.xml does not exist!
Build failed
則安裝成功
2.基礎(chǔ)元素
project元素
project元素是Ant文件的根元素
project的屬性
Attribute | Description | Required |
name | 項(xiàng)目名稱 | No |
default | 當(dāng)沒(méi)有指定target時(shí)使用的缺省target | Yes |
basedir | 用于指定基路徑的位置。該屬性沒(méi)有指定時(shí),使用 Ant 的構(gòu)件文件的附目錄作為基準(zhǔn)目錄。 | No |
target元素
target為Ant的基本執(zhí)行單元,它可以包含一個(gè)或多個(gè)具體的任務(wù)。多個(gè)target 可以存在相互依賴關(guān)系
Ant會(huì)依照depends屬性中target出現(xiàn)的順序(從左到右)依次執(zhí)行每個(gè)target。然而,要記住的是只要某個(gè)target依賴于一個(gè)target,后者就會(huì)被先執(zhí)行。
<target name="A"/> <target name="B" depends="A"/> <target name="C" depends="B"/> <target name="D" depends="C,B,A"/> |
假定我們要執(zhí)行target D。從它的依賴屬性來(lái)看,你可能認(rèn)為先執(zhí)行C,然后B,最后A被執(zhí)行。錯(cuò)了,C依賴于B,B依賴于A,所以先執(zhí)行A,然后B,
然后C,最后D被執(zhí)行。
一個(gè)target只能被執(zhí)行一次,即時(shí)有多個(gè)target依賴于它。
若想更好的控制build過(guò)程,可以使用if或unless。
if 屬性
用于驗(yàn)證指定的屬性是否存在,若不存在,所在 target 將不會(huì)被執(zhí)行。
unless 屬性
該屬性的功能與 if 屬性的功能正好相反,它也用于驗(yàn)證指定的屬性是否存在,若不存在,所在 target 將會(huì)被執(zhí)行。
property元素
property元素可看作參量或者參數(shù)的定義(即經(jīng)常使用的變量),project 的屬性可以通過(guò) property 元素來(lái)設(shè)定,也可在 Ant 之外設(shè)定。
name是變量的名稱 value是變量的值,要用某個(gè)變量時(shí)使用${name}方式調(diào)用。
3.完整示例
創(chuàng)建一個(gè)java項(xiàng)目
HelloWorld.java
package com.test;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
編寫(xiě)build.xml文件
注:build.xml放在和src同級(jí)目錄,而不是在src下級(jí)目錄
目錄結(jié)構(gòu)是
MyProject <dir>
|--lib <dir> --庫(kù)目錄
|--classes <dir> --目的文件目錄
|--src <dir> --源文件目錄
|--doc <dir> --api文檔目錄
|--build.xml
<?xml version="1.0" encoding="UTF-8" ?>
<project name="helloWorld" default="run" basedir=".">
<property name="src" value="src"/>
<property name="dest" value="build/classes"/>
<property name="lib" value="lib"></property>
<property name="hello_jar" value="hello1.jar"></property>
<!--初始化 之前執(zhí)行刪除操作-->
<target name="init" depends="clean">
<mkdir dir="${dest}"/>
</target>
<!--編譯生成class文件 -->
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"></javac>
</target>
<!--將編譯后的class文件打包-->
<target name="build" depends="compile">
<mkdir dir="${lib}"/>
<jar jarfile="${lib}/${hello_jar}" basedir="${dest}"></jar>
</target>
<target name="run" depends="build">
<java classname="com.test.HelloWorld" classpath="${lib}/${hello_jar}"></java>
</target>
<!--刪除-->
<target name="clean">
<delete dir="${dest}"></delete>
<delete dir="${lib}"></delete><!-- 是dir 刪除目錄 ,不是file 刪除文件-->
</target>
</project>
整個(gè)過(guò)程:初始化----編譯----打包---放到相應(yīng)的位置
參考:
http://www.cnblogs.com/philander/articles/1782254.html
http://www.cnblogs.com/elric/archive/2011/03/19/1988840.html
【轉(zhuǎn)自】http://www.cnblogs.com/tanky_woo/archive/2011/09/07/2169559.html
最近準(zhǔn)備參加實(shí)習(xí)生招聘,于是開(kāi)始關(guān)注起了各大公司的面試題,在看網(wǎng)易面試題的時(shí)候看到了這么一題:
為什么現(xiàn)在的計(jì)算機(jī)采用二進(jìn)制?而不是八進(jìn)制或十六進(jìn)制?你認(rèn)為以后的計(jì)算機(jī)會(huì)采用幾進(jìn)制?
我當(dāng)時(shí)就在問(wèn)自己,為什么?但是無(wú)果,我隱約記得很多書(shū)上都講過(guò),但是為了追求速度,追求更重要的知識(shí),我把這部分內(nèi)容給自動(dòng)濾過(guò)了。
于是我又在想,是什么原因?qū)е逻@樣的呢?
我開(kāi)始回憶我的學(xué)習(xí)過(guò)程,我發(fā)現(xiàn),在大一大二開(kāi)始接觸編程時(shí),我還是很喜歡思考的,但是為何后來(lái)就麻木了呢?
于是我又開(kāi)始分析我的學(xué)習(xí)方法,沒(méi)錯(cuò),就是學(xué)習(xí)方法出問(wèn)題了—我過(guò)于的追求速度,追求廣泛,很多知識(shí),我都是一掃而過(guò),很多代碼,我都是看一看就自以為懂了,曾經(jīng)剛開(kāi)始學(xué)時(shí),我還經(jīng)常把代碼往電腦上敲,把代碼抄在紙上,然而現(xiàn)在卻是直接掃一下。
我想到了一個(gè)詞—物極必反。雖然我看的很多,看的很快,但是收效卻不大。
我突然就被驚醒了,是的,捫心自問(wèn)一下,現(xiàn)在記在我腦海里的,還有多少知識(shí)呢?你了解的知識(shí)多嗎?你看書(shū)仔細(xì)嗎?
我相信很多人都和我一樣,為了應(yīng)付考試,應(yīng)付以后的面試,工作,都在瘋狂的看書(shū),瘋狂的吸納知識(shí),但是,你真的掌握了這些知識(shí)嗎?
寫(xiě)到這里的時(shí)候,我又想起來(lái)我昨天在伯樂(lè)在線看到的一篇文章:學(xué)一門(mén)語(yǔ)言,要了解他的歷史,哲學(xué)觀,這也是一種思考:
比如文章中舉例的:拿python來(lái)說(shuō),他的設(shè)計(jì)哲學(xué)是“用一種方法,最好是只有一種方法來(lái)做一件事”,而perl的設(shè)計(jì)哲學(xué)是“總有多種方法來(lái)做同一件事”。
其實(shí),這是多么有趣的一件事,然后,就這樣被大部分人給忽略了。想到這,我都替自己感覺(jué)到可惜。
幸好今天發(fā)現(xiàn)了這個(gè)問(wèn)題,就像《讓子彈飛》里面說(shuō)的一樣“步子要一步步的走,邁得大了,會(huì)扯著蛋”,確實(shí),知識(shí)也要一步步的積累,沒(méi)有什么快速掌握的方法,最好的辦法就是一步一步的積累,要多思考,沒(méi)有思考,就沒(méi)有進(jìn)步;沒(méi)有思考,就沒(méi)有升華。
我們應(yīng)該時(shí)刻要記住,學(xué),應(yīng)該是一種享受的過(guò)程,重點(diǎn)不在于結(jié)果,而是過(guò)程,一種發(fā)散思維的過(guò)程。
希望自己能時(shí)刻記住這一點(diǎn),能應(yīng)付好接下來(lái)的實(shí)習(xí)生求職。
注:上面那個(gè)問(wèn)題的答案,大家可以相互交流下,我在網(wǎng)上找到這篇講的不錯(cuò):
http://blog.csdn.net/hkx1n/article/details/4280036