??xml version="1.0" encoding="utf-8" standalone="yes"?> 原因 Q工E只支持UNICODE字符 解决Ҏ(gu)Q?/p>
工程属?>配置属?#8211;>常规—>字符?#8212;->使用多字节符字符?/strong>
转自Q?a >http://blog.csdn.net/train_z/article/details/3118754
认解决了问题,但步?Q我使用的是“静态MFC”
]]>
通过
LoadLibrary
GetProcAddress
FreeLibrary实现?/p>
]]>
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public final class LoggingFilter implements Filter
{
private FilterConfig filterConfig = null;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException
{
long start = System.currentTimeMillis();
String address = request.getRemoteAddr();
String file = ((HttpServletRequest) request).getRequestURI();
chain.doFilter(request, response);
filterConfig.getServletContext().log(
"User access! " +
" User IP: " + address +
" Resource: " + file +
" Milliseconds used: " + (System.currentTimeMillis() - start)
);
}
public void destroy() { }
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
}
]]>
公司服务器用来备份数据的盘q段旉׃(x)被备份文件占满,弄得我老是要登录到服务器去手工删除那些老的文gQ有时忘C׃(x)D盘I间不而无法备份?br /> 因ؓ(f)只要保留最q几天的备䆾Q如果可以做一个批处理让系l自动删除老备份文件就好了Q但是Windows的命令行和Linux的Shell比v来功能差了很多,到底行不行我自己也不清楚?br /> 于是上网查了一下各位大虑֏的帖子,再经q自q摸烦和尝试,发现只要q功夫q是能实现这个功能的?br /> 下面来看看我的实现方法?/p>
如果操作pȝ?Windows Server 2003 那就好办了,因ؓ(f)它有一个forfiles命o能够查找满指定条g的文Ӟ下面是这个命令的用法?br />
forfiles /p <目标目录?gt; /d <天数> /c <执行的命?gt;
看看列出的三个参数都有什么用处:(x)
/p 指定了要在哪个目录里查找文gQ默认是当前工作目录Q注意不能在目录名后面加斜杠?br />
/d 指定一个日期或天数Q用于比较文件的最后修Ҏ(gu)期是否符合条件?br />
/c Ҏ(gu)个找到的文g执行的命令?br />
?.要把在C盘根目录下最后修Ҏ(gu)期大于或{于2007q??日的文g复制到D盘根目录下:(x)
forfiles /p "c:" /d "2007-7-1" /c "cmd /c copy @path d:\"
?.删除在C盘backup目录下最后修Ҏ(gu)期在10天前的文Ӟ(x)
forfiles /p "c:\backup" /d -10 /c "cmd /c echo deleting @file ... && del /f @path"
看了上面的例子,觉得?Windows Server 2003 下面要删除老文件很单吧?br /> 但如果操作系l是 Windows 2000/XP 比较麻烦,因ؓ(f)它们没有forfiles命oQ只能靠自己写批处理来实C?br /> 下面是我写的批处理文件内容:(x)
@echo off
rem ******************************
rem * 按时间删除文件目录的批处?*
rem ******************************
rem 讄临时目录的\?br />
set tempDir=%tmp%\remove_%date:~0,10%
if not exist %tempDir% md %tempDir%
rem 讄处理日期的脚本文件的路径
set scriptFile=%tempDir%\get_date.vbs
rem 获得要保留的天数
set days=%~1
if "%days%" == "" goto printUsage
rem 获得目标目录的\?br />
set dirPath=%~2
if "%dirPath%" == "" set dirPath=.
rem 获得要操作的文g形式
set fileSpec=%~3
if "%fileSpec%" == "" set fileSpec=*.*
rem 生成计算日期的脚本文件ƈ获得删除的截止日?br />
echo d=date()-%1 > %scriptFile%
echo
s=right("0000" ^& year(d),4) ^& "-" ^& right("00" ^&
month(d),2) ^& "-" ^& right("00" ^& day(d),2) >>
%scriptFile%
echo wscript.echo s >> %scriptFile%
for /f %%i in ('cscript /nologo %scriptFile%') do set lastDate=%%i
rem 处理目标目录里的每个对象
for /f "tokens=1,2,3* delims=<> " %%i in ('dir "%dirPath%\%fileSpec%" /a /-c /tc') do call :proc "%%i" "%%j" "%%k" "%%l"
goto :done
rem 处理目标目录里对象的q程
:proc
rem 获得对象的创建日期ƈ判断是否为有效格?br />
set fileDate=%~1
echo %fileDate% | findstr "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" > nul
if errorlevel 1 goto end
rem 获得对象的类?br />
set fileType=%~3
if "%fileType%" == "" goto end
rem 获得对象的名U?br />
set fileName=%~4
if "%fileName%" == "" goto end
if "%fileName%" == "." goto end
if "%fileName%" == ".." goto end
if "%fileName%" == "字节" goto end
if "%fileName%" == "可用字节" goto end
rem 判断对象日期是否于或等于删除的截止日期
if "%fileDate:~0,10%" leq "%lastDate%" (
echo deleting "%fileName%" ...
if "%fileType%" == "DIR" ( rd /s /q "%dirPath%\%fileName%" ) else ( del /q /f "%dirPath%\%fileName%" )
)
goto end
:error
echo An error occurred during backuping.
:done
rd /s /q %tempDir%
goto end
:printUsage
echo Usage: %0 ^<Days^> [Work directory] [Target file specification (can include wildcards)]
goto end
:end
q个批处理的语句很多Q我表达能力有限Q懒得一一解释了?br /> 主要是利用Windows的脚本功能来计算要删除文件的截止日期Q然后for加dir命o来提取文件的日期q行判断?/p>
关于forfiles和for的详l信息,可以在Windows的帮助与支持中找到?nbsp;
?
2007-10-18 16:16:46 |
CSV其实是COMMA SEPARATED VALUE的羃写,出现在案ȝ中的案cd是「逗号分格」,依计机原来的设定,如果直接炚w该案Q计机以EXCEL的模式开启该档案?/span> 但徏议?zhn)千万不要q么做,因ؓ(f)CSV如果以EXCEL开启,׃计算机档案数据{换的原因Q会(x)其CRC之数值改做科学记h式储存,而造成案中的CRC值发生错误?/span> q也是笔者初庐时所得到的惨痛经验,但如果想一H?/span>CSV的真实面貌Q笔者徏议?zhn)?/span>使用WORDPAD或是C本(NOTEQ来开启,再则先另存新后?/strong>EXCEL开?/strong>Q也是方法之一?/span> 开启后?/span>CSV档包含了四或五个字段Q部分)Q由左至叛_别记载着Q文件名UͼXXXX.JPGQ、案大(?/span>BYTE为单位)?/span>CRC32|八个英文字母或数字组成)、案\径(案储存的子目录名称Q和档案内容描述Q一般来说都是明星的英文姓名甚或是专辑名Uͼ也可能空白)?/span> 而其中第四栏「案\径」因为每个h储存整理图的方式不同,所以本栏通常不存在,而一般有含有「档案\径」这栏的CSV,又称?/span>ECSV案 CSV?span lang="EN-US">Comma Separate Values的羃写,现在常见到这U格式的文gQ例?span lang="EN-US">Google adsense的自定义报表有q种格式。一般来?span lang="EN-US">CSV格式是将数据用引?span lang="EN-US">,逗号分开的文件格?span lang="EN-US">. The CSV (”Comma Separated Value”) file format is often used to exchange data between disparate applications. The file format, as it is used in Microsoft Excel, has become a pseudo standard throughout the industry, even among non-Microsoft platforms. CSV文g格式l常被用于{?u>不同内容Q?span lang="EN-US">disparate applicationsQ?/u>之间的数据。这U文件格式,随着其应用于Microsoft ExcelQ它在工业甚x?span lang="EN-US">Microsoft q_已经成ؓ(f)一?u>不符合实际(pseudoQ?/u>的标准了 As is the case with most exchange formats since XML, CSV files have become somewhat of a legacy format. New applications that wish to include an export format will generally use XML today (though there may be exceptions). In legacy systems though (pre-XML), CSV files had indeed become a de facto industry standard. Just as there are still billions of lines of CoBOL code in use today that need to be maintained, support for a legacy standard such as CSV is likely to be required long after it has stopped being implemented in new designs. 自从XML?/span>CSV文g成ؓ(f)一U?u>传统格式后,它就是很多交换格式的一U现象了。(As is the case with most exchange formats since XML, CSV files have become somewhat of a legacy format.Q?/span>渴望包含一U输出格式的新的应用主要运用今天的XMLQ尽也可能有一些例外)。在传统pȝ中,虽然CSV文g已经实成ؓ(f)一U?/span>de facto企业标准了。尽今天还有数十亿?/span>CoBOL代码在应用,但我们确实需要一U传l格式来支持。就?/span>CSV是在它已l停止被应用于新的设计之后才被逐渐接受的?/span> 具体来说Q格式如下:(x)
windowsq_下一般将CSV文g定义?span lang="EN-US">xml后缀Q用文本~辑器就可以打开?span lang="EN-US"> csv文g的特点主要有以下几个Q?/span> |
二、用iframe调用Q有些和object调用重复的地方就单描qC下)
1?怎么在web中嵌入Q我们在需要嵌入得位置加入以下html代码Q?lt;IFRAME SRC="gledit.htm" id='content_html' style="LEFT: 0px; POSITION: absolute; TOP: 0px;z-index:0" width="100%" height="100%"></IFRAME>其中"src="后面接得数据是我们所要调用得在线~辑器页得\径,id是我们调用IFRAME得idQW(xu)idth和height是~辑器得高度和宽度了?
2?怎么取得html~辑器中的数据:(x)同样所有需要提交的内容我们都是攑֜一个表单里面,同时我们可以讄一个隐藏的文本区域(<textarea name="content" style="display:none"></textarea>?lt;INPUT TYPE="hidden" name="content">)用以在提交的时候(f)时保存html在线~辑器的数据Q我们借助隐藏文本区域来获取数据。我们在表单提交的同时将object里面的内容复制到隐藏的文本区域中。详l代码如下:(x)
function subchk(cmd)
{
document.form1.content.value= window.content_html.getHTML();
}
</SCRIPT>
<FORM METHOD=POST ACTION="Article_add_save.gl" name="form1" onsubmit=" subchk()">
<input type="hidden" name="content" >
<IFRAME SRC="gledit.htm" id='content_html' style="LEFT: 0px; POSITION: absolute; TOP: 0px;z-index:0" width="100%" height="100%"></IFRAME>
</FORM>
在后台处理的面中我们就可以直接通过取隐藏区域content的数据来获取html在线~辑器的数据?
2、怎么取得html~辑器中的数据:(x)所有需要提交的内容我们都是攑֜一个表单里面,同样利用object调用的编辑器也放在这个表单里面,同时我们可以讄一个隐藏的文本区域(<textarea name="content" style="display:none"></textarea>?lt;INPUT TYPE="hidden" name="content">)用以在提交的时候(f)时保存html在线~辑器的数据Q因为在asp或者jspQphp中不能直接获取表单中的object的内容,所以我们必d助隐藏文本区域来获取数据。我们在表单提交的同时将object里面的内容复制到隐藏的文本区域中。详l代码如下:(x)
<script language="javascript">
function CheckForm()
{
document.form1.content.value=document.form1.doc_html.value;
}
</script>
<form method="post" action="add_news_save.asp" onsubmit="CheckForm()" name="form1">
<object id=doc_html name= doc_html style="LEFT: 0px; TOP: 0px" data=" gledit.htm" width=530 height=320 type=text/x-scriptlet VIEWASTEXT></object>
<input type="hidden" name="content" >
</form>
q样在后台处理的面中我们就可以直接通过取隐藏区域content的数据来获取html在线~辑器的数据?
3、怎么在文本编辑器中加入上传本机图片到html在线~辑器中Q首先我们得在点击插入囄的按钮时弹出一个上传图片的H口Q我们利用自己写的程序来实现上传本机囄到服务器上,然后我们需要记录图片的路径Q然后通过在调用html在线~辑器的web中写一个函数在光标的位|插入显C图片的html标签。详l说明及代码如下Q?
在编辑器中我们在插入囄的按钮上加入事gonclick="window.open('img_upload.asp','img_upload','width=481 height=190')">在调用编辑器的页面中我们定义好插入html代码到编辑器的函?
<script language=javascript>
function insertHtml(HtmlCode)
{
var win=window.content_html.idEditbox.document;
window.content_html.idEditbox.focus();//是编辑器获得焦点Q放|代码插入在~辑器外地方
win.selection.createRange().pasteHTML(HtmlCode)//在光标的位置插入html代码
}
</script>
在处理上传图片的文g中,我们调用父窗口的函数插入html代码
<script language=javascript>
var src='<%=" upload/"&newname%>';
var htmlcodes;
htmlcodes = "<img src='"+src+"' alt='<%=theForm("alt")%>' align='<%=theForm("align")%>' border='<%=theForm("border")%>' hspace='<%=theForm("hspace")%>' vspace='<%=theForm("vspace")%>'>";
opener.insertHtml(htmlcodes)
window.close();
</script>
q样实C单的上传的囄插入到编辑器中?
4?怎么在编辑修Ҏ(gu)章的时候调用HTML在线~辑器来修改数据Q当我们把在d的时候将HTML在线~辑器来修改数据提交到数据库后我们还需要能数据库的内容用HTML在线~辑器来修改数据。首先我们在表单中加入一个隐藏区域来攄数据库中的内容,例如<TEXTAREA style="display:none" NAME="content" ROWS="20" COLS="70"><%= rs("Content")%></TEXTAREA>Q在q里我们在调用编辑器的iframe里面加上<IFRAME SRC="gledit.htm" id='content_html' style="LEFT: 0px; POSITION: absolute; TOP: 0px;z-index:0" width="100%" height="100%" onload="window.content_html.idEditbox.document.body.innerHTML=document.form1.content.value"></IFRAME>Q这样在面装蝲完的时候就可以数据库中的内容攑օHTML在线~辑器中~辑了,提交q程和上面介l的一P在此׃赘述了?
q里只是单的向大家介l了一下如何来调用html在线~辑器,具体代码q未一一列出?/p>
W三QStatic Nested Class ?Inner Class的不同,说得多好Q面试题有的很笼l)?
W四Q?amp;?amp;&的区别?
W五QHashMap和Hashtable的区别?
W六QCollection ?Collections的区别?
W七Q什么时候用assert.
W八QGC是什么? Z么要有GCQ?
W九(ji)QString s = new StringQ?xyz"Q;创徏了几个String ObjectQ?
W十QMath.roundQ?1.5Q等於多? Math.roundQ?11.5Q等於多?
W十一Qshort s1 = 1Q?s1 = s1 + 1Q有什么错Q?short s1 = 1Q?s1 += 1Q有什么错Q?
W十二,sleepQ) ?waitQ) 有什么区别?
W十三,Java有没有gotoQ?
W十四,数组有没有lengthQ)q个Ҏ(gu)Q?String有没有lengthQ)q个Ҏ(gu)Q?
W十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的cdQ?
W十六,Set里的元素是不能重复的Q那么用什么方法来区分重复与否呢? 是用==q是equalsQ)Q?它们有何区别Q?
W十七,l我一个你最常见到的runtime exception.
W十八,error和exception有什么区别?
W十?ji),ListQ?SetQ?Map是否l承自Collection接口Q?
W二十,abstract class和interface有什么区别?
W二十一Qabstract的method是否可同时是staticQ是否可同时是nativeQ是否可同时是synchronizedQ?
W二十二Q接口是否可l承接口Q?抽象cL否可实现QimplementsQ接口? 抽象cL否可l承实体c(concrete classQ?
W二十三Q启动一个线E是用runQ)q是startQ)Q?
W二十四Q构造器Constructor是否可被overrideQ?
W二十五Q是否可以承Stringc?
W二十六Q当一个线E进入一个对象的一个synchronizedҎ(gu)后,其它U程是否可进入此对象的其它方法?
W二十七Qtry {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code?x)不会(x)被执行Q什么时候被执行Q在return前还是后Q?
W二十八Q编E题Q?用最有效率的Ҏ(gu)出2乘以8{於几?
W二十九(ji)Q两个对象值相同(x.equalsQyQ?== trueQ,但却可有不同的hash codeQ这句话对不对?
W三十,当一个对象被当作参数传递到一个方法后Q此Ҏ(gu)可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传递?
W三十一Qswtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
W三十二Q编E题Q?写一个Singleton出来?
以下是答?
W一Q谈谈finalQ?finallyQ?finalize的区别?
finalQ修饰符Q关键字Q如果一个类被声明ؓ(f)finalQ意味着它不能再z出新的子c,不能作ؓ(f)父类被ѝ因此一个类不能既被声明?abstract的,又被声明为final的。将变量或方法声明ؓ(f)finalQ可以保证它们在使用中不被改变。被声明为final的变量必d声明时给定初|而在以后的引用中只能dQ不可修攏V被声明为final的方法也同样只能使用Q不能重载finallyQ再异常处理时提?finally 块来执行M清除操作。如果抛Z个异常,那么相匹配的 catch 子句׃(x)执行Q然后控制就?x)进?finally 块(如果有的话)?
finalizeQ方法名。Java 技术允怋?finalizeQ) Ҏ(gu)在垃圾收集器对象从内存中清除出M前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对q个对象调用的。它是在 Object cM定义的,因此所有的c都l承了它。子c覆?finalizeQ) Ҏ(gu)以整理系l资源或者执行其他清理工作。finalizeQ) Ҏ(gu)是在垃圾攉器删除对象之前对q个对象调用的?
W二QAnonymous Inner Class Q匿名内部类Q?是否可以extendsQ承)其它c,是否可以implementsQ实玎ͼinterfaceQ接口)Q?
匿名的内部类是没有名字的内部cR不能extendsQ承) 其它c,但一个内部类可以作ؓ(f)一个接口,由另一个内部类实现?
W三QStatic Nested Class ?Inner Class的不同,说得多好Q面试题有的很笼l)?
Nested Class Q一般是C++的说法)QInner Class Q一般是JAVA的说法)。Java内部cMC++嵌套cL大的不同在于是否有指向外部的引用上。具体可见httpQ?//www.frontfree.net/articles/services/view.aspQid=704&page=1
注:(x) 静态内部类QInner ClassQ意味着1创徏一个static内部cȝ对象Q不需要一个外部类对象Q?不能从一个static内部cȝ一个对象访问一个外部类对象
W四Q?amp;?amp;&的区别?
&是位q算W?amp;&是布?yu)(dng)逻辑q算W?
W五QHashMap和Hashtable的区别?
都属于Map接口的类Q实C惟一键映到特定的g?
HashMap cL有分cL者排序。它允许一?null 键和多个 null 倹{?
Hashtable cM?HashMapQ但是不允许 null 键和 null 倹{它也比 HashMap 慢,因ؓ(f)它是同步的?
W六QCollection ?Collections的区别?
Collections是个java.util下的c,它包含有各种有关集合操作的静态方法?
Collection是个java.util下的接口Q它是各U集合结构的父接口?
W七Q什么时候用assert?nbsp;
断言是一个包含布?yu)(dng)表辑ּ的语句,在执行这个语句时假定该表辑ּ?true。如果表辑ּ计算?falseQ那么系l会(x)报告一?AssertionError。它用于调试目的Q?nbsp;
assert(a > 0); // throws an AssertionError if a <= 0
断言可以有两UŞ式:(x)
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该L产生一个布?yu)(dng)倹{?nbsp;
Expression2 可以是得Z个值的L表达式。这个值用于生成显C更多调试信息的 String 消息?nbsp;
断言在默认情况下是禁用的。要在编译时启用断言Q需要?source 1.4 标记Q?nbsp;
javac -source 1.4 Test.java
要在q行时启用断aQ可使用 -enableassertions 或?-ea 标记?nbsp;
要在q行旉择用断言Q可使用 -da 或?-disableassertions 标记?nbsp;
要系l类中启用断aQ可使用 -esa 或?-dsa 标记。还可以在包的基上启用或者禁用断a?nbsp;
可以在预计正常情况下不会(x)到达的Q何位|上攄断言。断a可以用于验证传递给U有Ҏ(gu)的参数。不q,断言不应该用于验证传递给公有Ҏ(gu)的参敎ͼ因ؓ(f)不管是否启用了断aQ公有方法都必须查其参数。不q,既可以在公有Ҏ(gu)中,也可以在非公有方法中利用断言试后置条g。另外,断言不应该以M方式改变E序的状态?nbsp;
W八QGC是什? Z么要有GC? (基础)?nbsp;
GC是垃圾收集器。Java E序员不用担心内存管理,因ؓ(f)垃圾攉器会(x)自动q行理。要h垃圾攉Q可以调用下面的Ҏ(gu)之一Q?nbsp;
System.gc()
Runtime.getRuntime().gc()
W九(ji)QString s = new String("xyz");创徏了几个String Object?
两个对象Q一个是“xyx”,一个是指向“xyx”的引用对象s?nbsp;
W十QMath.round(11.5){於多少? Math.round(-11.5){於多少?
Math.round(11.5)q回QlongQ?2QMath.round(-11.5)q回QlongQ?11;
W十一Qshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错Qs1是short型,s1+1是int?不能昑ּ转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确?nbsp;
W十二,sleep() ?wait() 有什么区? 搞线E的最?nbsp;
sleep()Ҏ(gu)是ɾU程停止一D|间的Ҏ(gu)。在sleep 旉间隔期满后,U程不一定立x复执行。这是因为在那个时刻Q其它线E可能正在运行而且没有被调度ؓ(f)攑ּ执行Q除?a)“醒来”的线E具有更高的优先U,(b)正在q行的线E因为其它原因而阻塞?nbsp;
wait()是线E交互时Q如果线E对一个同步对象x 发出一个wait()调用Q该U程?x)暂停执行,被调对象q入{待状态,直到被唤醒或{待旉到?nbsp;
W十三,Java有没有goto?
Goto?java中的保留字,现在没有在java中用?nbsp;
W十四,数组有没有length()q个Ҏ(gu)? String有没有length()q个Ҏ(gu)Q?nbsp;
数组没有length()q个Ҏ(gu)Q有length的属性?nbsp;
String有有length()q个Ҏ(gu)?nbsp;
W十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的cd?
Ҏ(gu)的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ重蝲Overloading是一个类中多态性的一U表现。如果在子类中定义某Ҏ(gu)与其父类有相同的名称和参敎ͼ我们说该Ҏ(gu)被重?(Overriding)。子cȝ对象使用q个Ҏ(gu)Ӟ调用子cM的定义,对它而言Q父cM的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参C数或有不同的参数cdQ则UCؓ(f)Ҏ(gu)的重?Overloading)。Overloaded的方法是可以改变q回值的cd?nbsp;
W十六,Set里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别?
Set里的元素是不能重复的Q那么用iterator()Ҏ(gu)来区分重复与否。equals()是判M个Set是否相等?nbsp;
equals()?=Ҏ(gu)军_引用值是否指向同一对象equals()在类中被覆盖Qؓ(f)的是当两个分ȝ对象的内容和cd盔R的话Q返回真倹{?nbsp;
W十七,l我一个你最常见到的runtime exception?nbsp;
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException,
CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException,
DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException,
IllegalPathStateException, IllegalStateException,
ImagingOpException,
IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException,
NullPointerException, ProfileDataException, ProviderException,
RasterFormatException, SecurityException, SystemException,
UndeclaredThrowableException,
UnmodifiableSetException, UnsupportedOperationException
W十八,error和exception有什么区?
error 表示恢复不是不可能但很困隄情况下的一U严重问题。比如说内存溢出。不可能指望E序能处理这L(fng)情况?
exception 表示一U设计或实现问题。也是_(d)它表C如果程序运行正常,从不?x)发生的情况?nbsp;
W十?ji),List, Set, Map是否l承自Collection接口?
ListQSet?nbsp;
Map不是
W二十,abstract class和interface有什么区?
声明Ҏ(gu)的存在而不d现它的类被叫做抽象类Qabstract classQ,它用于要创徏一个体现某些基本行为的c,qؓ(f)该类声明Ҏ(gu)Q但不能在该cM实现该类的情c不能创建abstract cȝ实例。然而可以创Z个变量,其类型是一个抽象类Qƈ让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract cȝ子类为它们父cM的所有抽象方法提供实玎ͼ否则它们也是抽象cMؓ(f)。取而代之,在子cM实现该方法。知道其行ؓ(f)的其它类可以在类中实现这些方法?nbsp;
接口QinterfaceQ是抽象cȝ变体。在接口中,所有方法都是抽象的。多l承性可通过实现q样的接口而获得。接口中的所有方法都是抽象的Q没有一个有E序体。接口只可以定义static final成员变量。接口的实现与子cȝ|除了该实现类不能从接口定义中l承行ؓ(f)。当cd现特D接口时Q它定义Q即程序体l予Q所有这U接口的Ҏ(gu)。然后,它可以在实现了该接口的类的Q何对象上调用接口的方法。由于有抽象c,它允怋用接口名作ؓ(f)引用变量的类型。通常的动态联~将生效。引用可以{换到接口cd或从接口cd转换Qinstanceof q算W可以用来决定某对象的类是否实现了接口?nbsp;
W二十一Qabstract的method是否可同时是static,是否可同时是nativeQ是否可同时是synchronized?
都不?nbsp;
W二十二Q接口是否可l承接口? 抽象cL否可实现(implements)接口? 抽象cL否可l承实体c?concrete class)?
接口可以l承接口。抽象类可以实现(implements)接口Q抽象类是否可承实体类Q但前提是实体类必须有明的构造函数?nbsp;
W二十三Q启动一个线E是用run()q是start()?
启动一个线E是调用start()Ҏ(gu)QɾU程所代表的虚拟处理机处于可运行状态,q意味着它可以由JVM调度q执行。这q不意味着U程׃(x)立即q行。run()Ҏ(gu)可以产生必须退出的标志来停止一个线E?nbsp;
W二十四Q构造器Constructor是否可被override?
构造器Constructor不能被承,因此不能重写OverridingQ但可以被重载Overloading?nbsp;
W二十五Q是否可以承Stringc?
StringcLfinalcL不可以ѝ?nbsp;
W二十六Q当一个线E进入一个对象的一个synchronizedҎ(gu)后,其它U程是否可进入此对象的其它方?
不能Q一个对象的一个synchronizedҎ(gu)只能׃个线E访问?nbsp;
W二十七Qtry {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code?x)不会(x)被执行Q什么时候被执行Q在return前还是后?
?x)执行,在return前执行?nbsp;
W二十八Q编E题: 用最有效率的Ҏ(gu)出2乘以8{於?
有C背景的程序员特别喜欢问这U问题?nbsp;
2 << 3
W二十九(ji)Q两个对象值相?x.equals(y) == true)Q但却可有不同的hash codeQ这句话对不?
不对Q有相同的hash code?nbsp;
W三十,当一个对象被当作参数传递到一个方法后Q此Ҏ(gu)可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传?
是g递。Java ~程语言只由g递参数。当一个对象实例作Z个参数被传递到Ҏ(gu)中时Q参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变Q但对象的引用是永远不会(x)改变的?nbsp;
W三十一Qswtich是否能作用在byte上,是否能作用在long上,是否能作用在String?
switchQexpr1Q中Qexpr1是一个整数表辑ּ。因此传递给 switch ?case 语句的参数应该是 int?short?char 或?byte。long,string 都不能作用于swtich?nbsp;
W三十二Q编E题: 写一个Singleton出来?
Singleton模式主要作用是保证在Java应用E序中,一个类Class只有一个实例存在?nbsp;
一般Singleton模式通常有几U种形式:
W一UŞ? 定义一个类Q它的构造函Cؓ(f)private的,它有一个static的private的该cd量,在类初始化时实例话,通过一个public的getInstanceҎ(gu)获取对它的引?l而调用其中的Ҏ(gu)?nbsp;
public class Singleton {
private Singleton(){}
//在自己内部定义自׃个实例,是不是很奇怪?
//注意q是private 只供内部调用
private static Singleton instance = new Singleton();
//q里提供了一个供外部讉K本class的静态方法,可以直接讉K
public static Singleton getInstance() {
return instance;
}
}
W二UŞ?
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//q个Ҏ(gu)比上面有所改进Q不用每ơ都q行生成对象Q只是第一ơ
//使用时生成实例,提高了效率!
if (instance==null)
instanceQnew Singleton();
return instance; }
}
其他形式:
定义一个类Q它的构造函Cؓ(f)private的,所有方法ؓ(f)static的?nbsp;
一般认为第一UŞ式要更加安全?nbsp;
W三十三 Hashtable和HashMap
Hashtablel承自Dictionaryc,而HashMap是Java1.2引进的Map interface的一个实?nbsp;
HashMap允许null作ؓ(f)一个entry的key或者valueQ而Hashtable不允?nbsp;
q有是QHashMap把Hashtable的containsҎ(gu)L了,Ҏ(gu)containsvalue和containsKey。因为containsҎ(gu)Ҏ(gu)让h引v误解?nbsp;
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是Q在多个U程讉KHashtableӞ不需要自׃ؓ(f)它的Ҏ(gu)实现同步Q而HashMap必Mؓ(f)之提供外同步?nbsp;
Hashtable和HashMap采用的hash/rehash法都大概一P所以性能不会(x)有很大的差异?/p>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=623361
public void setAttribute(String Key,Object obj)
session对象cM于散列表,可以调用该方法将参数Object指定的对象objd到session对象?br />
,qؓ(f)其添加的对象指定了一个烦引关键字.如果d的两个对象的关键字相?则先前添加的?br />
象被清除.
public Object getAttribute(String Key)
获取session对象中含有的关键字是Key的对?׃M对象都可以添加到session对象?因此
该方法取回对象时,应进行强制类型{?
public Enumeration getAttributeName()
session对象调用该方法生一个枚丑֯?该枚丑֯象用nextElement()Ҏ(gu)遍历session对象
所含有的全部对?
public long getCreationTime()
session对象调用该方法要以获取对象创建的旉.单位是毫U??970q??日午夜v臌对象
创徏时刻所走过的毫U数).
public long getLastAccessedTime()
获取当前session对象最后一ơ被操作的时?
public int getMaxInactiveInterval()
得到允许session对象处于非活动状态的最长时?
public vodi setMaxInactiveInterval(int n)
讄允许session对象处于非活动状态的最长时?(单位是秒)
public void removeAttribute(String Key)
从当前session对象中删除关键字是key的对?
public String getId()
获取session对象的编?
invalidate()
使得session对象无效.
//分页昄
public class Pager {
private int currentPage; //当前?/span>
private int pageSize = 5; //每页昄的记录数
private int totalSize; //总记录数
private int totalPage; //总页?br />
private boolean hasFirst; //是否有首?/span>
private boolean hasPrevious; // 是否有上一?/span>
private boolean hasNext; // 是否有下一?/span>
private boolean hasLast; // 是否有尾?br />
/**构造函数必M入两个参数当前页和总记录数
Ҏ(gu)当前可以判断是否有上一下一늭{?
Ҏ(gu)总记录数可以出总页?/
public Pager(int currentPage,int totalSize){
this.currentPage = currentPage;
this.totalSize = totalSize;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public boolean isHasFirst() {
if(currentPage == 1)
return false;
return true;
}
public void setHasFirst(boolean hasFirst) {
this.hasFirst = hasFirst;
}
public boolean isHasLast() {
if(currentPage == getTotalPage())
return false;
return true;
}
public void setHasLast(boolean hasLast) {
this.hasLast = hasLast;
}
public boolean isHasNext() {
if(isHasLast())
return true;
return false;
}
public void setHasNext(boolean hasNext) {
this.hasNext = hasNext;
}
public boolean isHasPrevious() {
if(isHasFirst())
return true;
return false;
}
public void setHasPrevious(boolean hasPrevious) {
this.hasPrevious = hasPrevious;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
//计算出总页?/span>
totalPage = totalSize / pageSize;
if(totalSize % pageSize != 0)
totalPage++;
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getTotalSize() {
return totalSize;
}
public void setTotalSize(int totalSize) {
this.totalSize = totalSize;
}
}
jakarta commons
http://commons.apache.org/lang/api-release/index.html
AspectJ AJDT
http://www.eclipse.org/ajdt/
CVS
http://www.march-hare.com/cvspro
Apache HTTP Server
http://httpd.apache.org/download.cgi
Sitemesh
http://www.opensymphony.com/sitemesh/download.action
package dgut.ke.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* <p>Example filter that sets the character encoding to be used in parsing the
* incoming request, either unconditionally or only if the client did not
* specify a character encoding. Configuration of this filter is based on
* the following initialization parameters:</p>
* <ul>
* <li><strong>encoding</strong> - The character encoding to be configured
* for this request, either conditionally or unconditionally based on
* the <code>ignore</code> initialization parameter. This parameter
* is required, so there is no default.</li>
* <li><strong>ignore</strong> - If set to "true", any character encoding
* specified by the client is ignored, and the value returned by the
* <code>selectEncoding()</code> method is set. If set to "false,
* <code>selectEncoding()</code> is called <strong>only</strong> if the
* client has not already specified an encoding. By default, this
* parameter is set to "true".</li>
* </ul>
*
* <p>Although this filter can be used unchanged, it is also easy to
* subclass it and make the <code>selectEncoding()</code> method more
* intelligent about what encoding to choose, based on characteristics of
* the incoming request (such as the values of the <code>Accept-Language</code>
* and <code>User-Agent</code> headers, or a value stashed in the current
* user's session.</p>
*
* @author Craig McClanahan
* @version $Revision: 466607 $ $Date: 2006-10-21 17:09:50 -0600 (Sat, 21 Oct 2006) $
*/
public class SetCharacterEncodingFilter implements Filter {
// ----------------------------------------------------- Instance Variables
/**
* The default character encoding to set for requests that pass through
* this filter.
*/
protected String encoding = null;
/**
* The filter configuration object we are associated with. If this value
* is null, this filter instance is not currently configured.
*/
protected FilterConfig filterConfig = null;
/**
* Should a character encoding specified by the client be ignored?
*/
protected boolean ignore = true;
// --------------------------------------------------------- Public Methods
/**
* Take this filter out of service.
*/
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
/**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*
* @param request The servlet request we are processing
* @param result The servlet response we are creating
* @param chain The filter chain we are processing
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
// Pass control on to the next filter
chain.doFilter(request, response);
}
/**
* Place this filter into service.
*
* @param filterConfig The filter configuration object
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
// ------------------------------------------------------ Protected Methods
/**
* Select an appropriate character encoding to be used, based on the
* characteristics of the current request and/or filter initialization
* parameters. If no character encoding should be set, return
* <code>null</code>.
* <p>
* The default implementation unconditionally returns the value configured
* by the <strong>encoding</strong> initialization parameter for this
* filter.
*
* @param request The servlet request we are processing
*/
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
q需要在web.xml中配|相关信?br><!-- Example filter to set character encoding on each request -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>dgut.ke.filter.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>