Java概述,数 据 类 型,运 算 符 和 表 达式网址

一些在java中非常基础的东西,把目录贴在这里供收藏参考。

转自(http://www.sdau.edu.cn/support/html/jindex.htm

Java 语言人门

            第 一 章   Java 概 述

      § 1.1 Java 语 言 出 现 的 背 景 、 影 响 及应 用 前 景

      § 1.2 Java 的 特 点

      § 1.3 简 单 的 Java 程 序

            第 二 章   数 据 类 型

      § 2.1 数 据 类 型

      § 2.2 常 量 与 变 量

      § 2.3 整 型 数 据

      § 2.4 浮 点 型 (实 型) 数 据

      § 2.5 字 符 型 数 据

      § 2.6 布 尔 型 数 据

      § 2.7 举 例

            第 三 章   运 算 符 和 表 达式

      § 3.1 算 术 运 算 符

      § 3.2 关 系 运 算 符

      § 3.3 布 尔 逻 辑 运 算 符

      § 3.4 位 运 算 符

Java语言中的取整运算(包括截尾取整,四舍五入,凑整)�

在Java中进行取整,尤其是四舍五入取整还有点麻烦。

下面是我根据网上的一些解答整理的三种取整运算(包括截尾取整,四舍五入,凑整),类似于面向过程语言(如C和Basic)中的取整函数(不过在Java中它叫类的方法,“类名.方法名(参数)”的运算都是类的静态方法)。

其中,注释掉的那段是在网上查到的有的朋友认为正确的四舍五入的取整方法,但是经过我的实验却是不正确的四舍五入的取整方法。

TestGetInt.java 源代码


import java.math.BigDecimal;

import java.text.DecimalFormat;

public class TestGetInt{

  public static void main(String[] args){

double i=2, j=2.1, k=2.5, m=2.9;

System.out.println("舍掉小数取整:Math.floor(2)=" + (int)Math.floor(i));

System.out.println("舍掉小数取整:Math.floor(2.1)=" + (int)Math.floor(j));

System.out.println("舍掉小数取整:Math.floor(2.5)=" + (int)Math.floor(k));

System.out.println("舍掉小数取整:Math.floor(2.9)=" + (int)Math.floor(m));

                                                                               

/* 这段被注释的代码不能正确的实现四舍五入取整

System.out.println("四舍五入取整:Math.rint(2)=" + (int)Math.rint(i));

System.out.println("四舍五入取整:Math.rint(2.1)=" + (int)Math.rint(j));

System.out.println("四舍五入取整:Math.rint(2.5)=" + (int)Math.rint(k));

System.out.println("四舍五入取整:Math.rint(2.9)=" + (int)Math.rint(m));

    

System.out.println("四舍五入取整:(2)=" + new DecimalFormat("0").format(i));

System.out.println("四舍五入取整:(2.1)=" + new DecimalFormat("0").format(i));

System.out.println("四舍五入取整:(2.5)=" + new DecimalFormat("0").format(i));

System.out.println("四舍五入取整:(2.9)=" + new DecimalFormat("0").format(i));

*/

System.out.println("四舍五入取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(2.1)=" + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(2.5)=" + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(2.9)=" + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("凑整:Math.ceil(2)=" + (int)Math.ceil(i));

System.out.println("凑整:Math.ceil(2.1)=" + (int)Math.ceil(j));

System.out.println("凑整:Math.ceil(2.5)=" + (int)Math.ceil(k));

System.out.println("凑整:Math.ceil(2.9)=" + (int)Math.ceil(m));

System.out.println("舍掉小数取整:Math.floor(-2)=" + (int)Math.floor(-i));

System.out.println("舍掉小数取整:Math.floor(-2.1)=" + (int)Math.floor(-j));

System.out.println("舍掉小数取整:Math.floor(-2.5)=" + (int)Math.floor(-k));

System.out.println("舍掉小数取整:Math.floor(-2.9)=" + (int)Math.floor(-m));

System.out.println("四舍五入取整:(-2)=" + new BigDecimal("-2").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(-2.1)=" + new BigDecimal("-2.1").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(-2.5)=" + new BigDecimal("-2.5").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("四舍五入取整:(-2.9)=" + new BigDecimal("-2.9").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("凑整:Math.ceil(-2)=" + (int)Math.ceil(-i));

System.out.println("凑整:Math.ceil(-2.1)=" + (int)Math.ceil(-j));

System.out.println("凑整:Math.ceil(-2.5)=" + (int)Math.ceil(-k));

System.out.println("凑整:Math.ceil(-2.9)=" + (int)Math.ceil(-m));

    }

}

以上代码用的方法我也没有经过非常系统的学习和验证,如果哪位朋友发现问题请一定帮忙指正一下。谢谢。

JAVA学习日记网站地图生成模块方案

JAVA学习日记网站地图生成模块设计

想法太多,想法太成熟,只会使事情停滞不前。不管怎样,先把网站地图生成模块做一个出来再说。

为了使导航更加方便用户和使搜索引擎更好的遍历,设计网站地图模块。

为了灵活性起见,网站地图同样采用前面的静态页面生成方法,生成的静态文件采用jsp文件,再在生成的文件前面加上通过控制语句(比如301转向,使本站的网址统一在域名:http://java.learndiary.com/下)。

一)、需求:

需要生成的网站地图采用树型结构。

一个所有目标地图goals-1.jsp(http://java.learndiary.com/sitemaps/goals-1.jsp),包括全部公共目标的链接(标题含链接)、创建者,创建日期,日记数目,查看次数;或者就是链接:“目标:学习Jsp的所有日记”,这个页面的标题就叫<a href="http://java.learndiary.com/" title="分享目标,分享分享快乐。">JAVA学习日记</a>所有目标列表

这个网页的title就写作:JAVA学习日记所有目标列表(一) - JAVA学习日记网站地图

每100个目标一页,然后第二个一百页就是goals-2.jsp,以此类推。

然后就是各个目标的日记列表地图:如goal1-1.jsp(http://java.learndiary.com/sitemaps/goal1-1.jsp,为goal加上目标的ID加上页码,每100篇日记1页,以此类推)。

每个目标标题的链接到这个目标的所有日记列表。

这个页面的标题就叫:目标:<a href="" title="">学习Jsp</a>的所有日记列表(一)

这个网页的title就写作:目标:学习Jsp的所有日记列表(一) - JAVA学习日记网站地图

二)、实现:

网站地图生成与维护由MapGenerator.java负责。

它的功能有:

public static void doPostArt(ArticleInfo postedArt, TransContext trans)

throws Exception {}

public static void doEditArt(

ArticleInfo oldArt,

ArticleInfo newArt,

TransContext trans,

HttpServletRequest request)

throws Exception {}

public static void doDelArt(

ArticleInfo delArt,

TransContext trans,

HttpServletRequest request)

throws Exception {}

        public static void updateAll(TransContext trans) throws Exception {}

public static boolean isExist(

String fileVirtualName,

HttpServletRequest request) {}

public static void delete(

String fileVirtualName,

HttpServletRequest request) {}

MapGenerator.java将调用一次或多次CallHtml.java中的 public static void callOnePage(String fileName, int artID, int pageNum)方法,来产生相应的一页或多页jsp静态页面(当条目数超过100条时(SITEMAP_ENTRIES_NUM=100))。

而CallHtml.java将调用MapGenerateAction.java来生成相应的动态页面,以此来生成静态的页面。在其中应该注意私有的日记和目标不能生成网站地图。

MapGenerateActon的调用形式可以是: mapGenerateAction.do?artID=1&pageNum=1

整体思路与前两天的JAVA学习日记页面静态化方案类似,生成的时机也类似,不过有不同的地方就是一个目标可能要生成不止一篇列表。

mapGenerateAction需要产生一些数据供实际显示内容的动态jsp文件(这里命名为:siteMap.jsp)

根据前面的需求,产生siteMap.jsp需要的数据包括:

1)、地图的类型:是目标列表还是日记列表,这由artID来定,artID=0表示显示目标列表;artID!=0表示显示所代表的目标的日记列表;

2)、页码:因为一个目标的日记数可能超过100,所以需要根据页码产生当前页。

3)、为了显示页的标题,需要把当前目标传入,类型是ArticleInfo,至于显示所有目标的列表的地图的标题可以造一个ArticleInfo。其中要包括含有的条目数;条目数大于100就要在标题中显示下一页的链接;

4)、目标下面包含的条目信息,是一个以ArticleInfo为子元素的List。

上面1)和2)可以从参数parameter中取得,3)和4)则必须从request.getAttribute()中取得;

CallHtml.java中的 public static void callOnePage(String fileName, int artID, int pageNum){}

fileName可以是siteMap,artID和pageNum的含义同上面的mapGenerateAction.do?artID=1&pageNum=1一样。

而CallHtml的callOnePage方法调用的实际生成jsp静态页面的程序是:

public class ToHtml extends HttpServlet{}

原来的这个类只生成帖子内容的html文件,现在的区别是在生成的静态文件头部额外加上一段jsp公共处理程序,然后把文件扩展名改为:jsp。

在MapGenerator.java中针对每种情况的处理都要考虑有时一个目标的页面生成过程要调用不止一次。这就需要在方法中判断列表的帖子数是否大于SITEMAP_ENTRIES_NUM=100,然后根据列表的帖子数决定调用几次CallHtml中的callOnePage()方法。

下面就开始动手编码吧。

An error happend in setEntries() of RSSGenerator.java


2006-12-11 08:12:11,875 - get feed of latestAdvicesOfGoal:feedType=rss_2.0 entriesNum=10 channelID=2747, channelName is:注册用户公告信息发布区; User: unknown IP: 65.55.212.140 USER-AGENT: msnbot-media/1.0 (+http://search.msn.com/msnbot.htm) REFERER: null

2006-12-11 08:12:12,953 - User: userID:-1,userName:guest; IP: 65.55.212.140 USER-AGENT: msnbot-media/1.0 (+http://search.msn.com/msnbot.htm) REFERER: null

2006-12-11 08:12:15,593 - An error happend in setEntries() of RSSGenerator.javaYou have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY writeDate DESC' at line 1

2006-12-11 08:12:15,609 - get feed of latestAdvicesOfMyDiaries:feedType=rss_2.0 entriesNum=10 userName=guest; User: unknown IP: 65.55.212.140 USER-AGENT: msnbot-media/1.0 (+http://search.msn.com/msnbot.htm) REFERER: null

RSS订阅在thunderbird中有时会出现丢失条目的情况,但是在新浪点点通和其它RSS阅读器中又没有发现问题。

而且,我时不时在网站日志中发现上面的错误信息“An error happend in setEntries() of RSSGenerator.java”。

现在把它记在这里,好好查一查,说不定能找出在thunderbird中RSS订阅有问题的情况。

怎样检测网址返回的头部信息状态码(比如是否301重定向)

我还没有发现哪个中文网站提供这个功能。

用 url header checker这三个单词作为关键字在google中我找到两个我主要使用的网址返回的头部信息状态码检测的网站。

http://web-sniffer.net/

http://www.webconfs.com/http-header-check.php

您把要检测的网址输入对话框中,提交后,这些网站就会告诉您这个网址返回的头部信息状态码

如果您的网址返回200 OK表示您的这个网址是正常的,要在网上推广的网址。如果一个相同的页面有两个或两个以上的网址都返回200 OK,那么其中多出来的网址会被搜索引擎看成复制内容的网页,要受负面影响甚至惩罚直至删除网站索引。

在上面的有多个200 OK码的情况下,您应该把多余的网址用301永久重定向到你要推广的网址(也就是在上面检测中返回状态码200 OK的网址),在上面的检测中,作了301重定向的网址应该返回301状态码;

还有一个重定向是302,它指的是临时的转向。具体您可以搜索一下相关内容。

在使用上面检测网站一个非常重要的地方就是:



且记:当您改变了网页的重定向,重新检测重定向效果时,一定要刷新一下检测页面。不然,显出的结果有可能是上次检测结果缓存在本地计算机的旧页面!!!

另外,关于301重定向,本站有下列几篇日记可供参考:

301重定向技术汇总(转)

JSP/servlet中<JSP:FORWORD>和response.sendRedirect ...

昨天去掉了网站的动态导航参数并做301定向

百度和google对本站301重定向的反应

混乱的日子

这几天的思维和行动都有些混乱了。

1、网页静态化整体方案;

2、JAVA学习日记到底使用http://www.learndiary.com/java/(主站二级目录)还是http://java.learndiary.com/(二级独立域名)?有点后悔见到zac的时间迟了那么一点点。否则,JAVA学习日记有可能采用二级目录;

3、防垃圾留言;

4、学习设计模式;

5、单位职称计算机考试又马上又来了,虽然我一天都摸计算机,可是都是用的linux,考试用的是windows系统,好多东西没摸,怕是忘了不少,到时考不过才丢人;

6、单位改革;

事情真多呀,虽然好多是自找的麻烦。

考虑的结果,因为未知和变数太多,所以:

1、仅首页静态化,做全站的jsp文件的网站地图,用jsp做也是为了以后的适应变动要灵活点,可以用程序的方式处理比如转向,过滤什么的;

2、保持二级独立域名不变,不然这个网站和我这个人都太善变了,而且这样问题也不是很大,变动是绝对的,静止是相对的。要变,以后有必要的时候再说。要不然,一直保持这个以JAVA学习为主的站也可以。以后假设开拓其它的领域就在www.learndiary.com做二级目录吧。JAVA是我的初恋情人,不妨给她点特殊地位;)

3、现在没必要写防垃圾留言,没人留言,就连垃圾都是渴望的呀:),有垃圾,说明别人看得起你这个站:)

4、5:暂时放慢,学习上以准备计算机考试为主;

6、车到山前必有路,未来是走出来的,不要太压在心上。

java.net.ConnectException: Connection timed out: connect

今天上午10:00开始,空间换IP,中断访问数小时。我在域名控制面板中更改了dns记录,把域名指向新的IP后,大概1个多小时吧,新的域名解析就生效了。原来听说域名解析要6个小时以上才会生效,现在生效时间这么快,是现在的技术更新了,还是只是局部用户访问有效呢(比如外国用户访问时就并没有生效,也就是说全球的IP解析生效不同步)?我就不得而知了。网络方面的知识还是太少了。

空间恢复访问后,基本上是正常。但是我发现本站生成静态文件的部分不能工作了。下面这段代码执行出错:


import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLConnection;

...

URL url = new URL(str);

URLConnection connection = url.openConnection();

connection.connect();

报错为:


java.net.ConnectException: Connection timed out: connect

后来,连这个状态都达在到了,报错为:


 java.net.UnknownHostException: java.learndiary.com

上网查了资料,感觉下面这个论坛的问题跟我碰到的有点相像:

http://forum.java.sun.com/thread.jspa?threadID=450114&messageID=2043150

其中最后那位朋友的回复启发了我如下:


ckelley114

Posts:1

Registered: 4/5/06

java.net.ConnectException: Connection timed out  

Apr 5, 2006 7:55 AM (reply 3 of 3)

Click to email this message

This is a remote site connection to the internet with a DSL modem and a Cisco pix fire wall. When they get this message they can still use the internet, but can not use the current application. The server is a Windows 2000. To release them they have to cycle the power to the DSL modem and Cisco pix. Can you tell me what is causing this problem?

我连猜带蒙看他的大意是:远程站点通过一个DSL modem和一个Cisco pix防火墙连接到因特网。通过因特网访问能够工作,但是当前的应用访问不能工作,会得到上面的出错信息。是windows2000服务器。解决这个问题必须使访问通过DSL modem和Cisco pix防火墙...

还有另一个地方的答案也与防火墙有关:

转自:(http://www.iexp.com/support/forums/message.cfm?message_ID=260


 

Support Forums

Forums

CFX_RawSocket

java.net.ConnectException: Connection timed out: connect. Java exception occurred in call to method

Subject:  RE: RE: RE: java.net.ConnectException: Connection timed out: connect. Java exception occurred in call to method

Date:  03/18/2004 10:01 AM

Author:  Dominic <oad74@yahoo.com >

  Reply to this message

Just want to appreciate the answer given to this problem. I had the same problem

connectiong to a server behind a firewall and changing

IP address to the machine name works.

bravo!

Dominic

------------

>Hi,

>

>

I guess you might be trying to connect to the

>

server which is behind a firewall. Generally the

>

IP address of the server will be different behind

>

firewall and outside the firewall. So instead of

>

using the IP address if you use the fully qualified

>

host name of the server while connecting, then it

>

will connect without this exception.

>

>

Murali.

>

>

>

------------

>

>------------

>

>

>

>If I implement the tag in Coldfusion and I try to call it it comes back with the error: java.net.ConnectException: Connection timed out: connect. Java exception occurred in call to method. I think this is due to the fact that my server is behind a firewall so uit can't get to the url provided. How can I define a proxy server to connect the URL provided?

的确,通过我的手工输入调用访问上面的代码能够工作。就是空间里的程序本身不能访问。

我试着把域名改为其它的辅助域名(www.learndiary.com或www.123go.org.cn,都是用301重定向到主域名java.learndiary.com的)就一切正常了。

又是一个糊里糊涂的出现问题,糊里糊涂的解决问题的例子。

这叫知其然不知其所以然。没办法,我没有能力去掌握所有的知识和细节。只要解决问题就OK了。

网站地图链接数目和形式及不同静态网页在seo上有无区别

在"搜索引擎优化排名SEO每天一贴"请教了zac关于网站地图链接数目和形式以及静态网页在seo上的效果有无区别。得到解答如下:

摘自:SEO问题解答


  68.  littlebat说:

      2006年12月8日 at 7:16 pm

      zac,您好。

      请问两个问题:

      1、网站地图(即像您网页右下的那个Sitemap)可以放多少链接合适?

      比如,我的站有1000多网页(以后或许更多,比如几十万;)),可不可放在一张网站地图上?

      如果放在一张地图上不好,有两种方式可以放:一是分成几张平行的地图,比如4张,并排放在网页下方;二是在网页下方放一张目录性质的网站地图,然后每个目录又链接到一个下一层次的网站地图;

      2、对于静态网页*.htm,*.html,*.jsp在SEO上哪个要好一点点?我知道您认为:http://www.chinamyhosting.com/seoblog/2006/08/07/seo-questions/

      这样的还要好一点点,不过我问的是上面几种后缀名的比较。

      我问*.jsp的静态网页是因为在*.jsp中可以作一些程序的处理,比如:中文户包含中文的网页提示文字(像按纽文字),非中文用户包含英文的网页提示文字(内容相同)。

  69. Zac说:

      2006年12月9日 at 4:04 am

      littlebat: 最好不要放链接超过100个。你说的第二种处理(分层次)比较好。

      文件后缀名对SEO没有影响。

SCJP认证特惠活动即将停止报名(转帖)

今天早上收到这封邮件,如果有哪位想参加Sun 公司的SCJP技术认证考试的“全国所有大中专院校的全职在读学生”一定要认真看一看。

邮件正文:

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

尊敬的Sun技术社区用户:***

Sun 中国技术社区的注册会员:

我想您之前可能已经通过种种渠道已经得知,在Sun 中国技术社区的大力争取下,全国所有大中专院校的全职在读学生均可在2006年12月31日之前以人民币450 元的学生特惠价格参加Sun 公司的SCJP技术认证考试。在2006年12月31日之后,这个考试将恢复全球统一价格,也就是人民币 1250元。

Sun 公司作为Java语言的发明者,对全球的Java开发人员进行技术水平认证。该认证在国际上获得了IT公司的普遍认可,是目前国际上最热门的IT 认证之一。根据IT认证领域的权威媒体《认证杂志》(Certificate Magazine)的调查结果,在专业背景类似的开发人员当中,拥有 SCJP的开发人员平均起薪要比其他开发人员高21.7% 。诸多国内外IT公司更是在招聘过程中将SCJP认证作为筛选简历的必要手段。

Sun 中国技术社区一直都在努力帮助学习Java的学生获得SCJP技术认证。此次针对大中专学生的SCJP特惠价格,正是在Sun 中国技术社区的大力争取下获得批准。为了帮助同学们顺利通过SCJP考试,我们还组织人力精心编译了一份SCJP复习资料。经过众多稍微具备Java语言基础(在学校上过一个学期的Java课程)的同学实战试用的经验表明,只要根据此复习资料

认真复习两个星期左右,通过SCJP考试的可能性达到90%以上。这份复习资料可以从Sun 中国技术社区的网站免费下载:

http://gceclub.sun.com.cn/SCJP_Guide.pdf

报名参加此次SCJP技术认证考试学生特惠活动,只要如下两个步骤:

(1)至少提前一个星期联系Thomson Prometric全国的考试中心,进行报名。考试中心的联络方式,请通过如下网站查询。由于此次特别优惠活动的截止日期是12月31日,因此您报名的最后期限为12月24日。

http://www.prometric.com.cn/。

(2)持身份证和学生证在约定的考试时间到考试中心进行考试。

如果您对此活动有任何疑问,可以拨打我们的热线电话进行询问,或者发送电子邮件向我们查询。

电话号码:010-62799911,每周一到周六9:00-17:00

电子邮件:chinareg@thomson.com

此外,Sun 中国技术社区于近日向全国大专院校公开招聘20名实习生,负责在校园内宣传和推广Sun 公司的软件技术,包括Java编程语言, NetBeans集成开发环境,以及Solaris 操作系统。我们不要求应聘的学生事先就充分具备这方面的技能,但是希望您能够有较强的学习能力以及与人沟通的能力,能够在短时间内通过培训和自学掌握相应的技术并且能够给身边的同学演示和讲解。因此,我们要求应聘的学生在12月31日之前通过SCJP认证考试,作为学习能力和完成能力的证明。如果您在12月31日之前通过SCJP认证考试并且对我们的实习生职位感兴趣的话,请您将简历发送给 Yang.Wang@Sun.Com。 我们会认真阅读所有的简历,并且通过电话面试决定最终的人选。获得实习生职位的同学,将会被邀请到位于北京的 Sun 工程研究院进行技术培训,并且在Sun 公司资深工程师的指导下在本地开展技术推广工作。在实

习结束之后,Sun 公司会给所有的实习生开具实习工作评估证明,该证明可以作为您寻找下一份工作的推荐信使用。

如果您需要了解Sun 中国技术社区的更多活动,请访问我们的网站:

http://developers.sun.com.cn/。

如果您觉得这封信的内容可能对您的朋友和其他的人有用,请您转发给他们或者是转贴到您经常光顾的网上社区或者论坛。

Sun 中国技术社区

2006年12月09日

Sun技术社区 http://gceclub.sun.com.cn

(退订SUN社区邮件)

********************************************************************************************************

                                                           转帖完毕

不知怎么搞的,系统的邮件发送系统突然失效

今天,我玩意中发现系统的邮件发送系统失效了。也就是说别人订阅了的邮件收不到。

我怀疑是申请的免费的邮箱对这种利用他们的邮箱发邮件有了限制。但是不确定。明天把学习日记自己的邮箱重新启用作邮件发送邮箱试试。

原来,因为学习日记发的邮件常被别的邮件系统当成垃圾邮件(不被其它大的邮件系统信任吧?),所以改用tom.com的邮箱。可是今天不管是tom.com和126.com的邮箱均不能完全的正常工作了。现在想起来,应该用自己的邮箱,就算是被识别为垃圾邮件,也是自己的东西。而且,如果真的有朋友愿意订阅我们的邮件,只要把我们的发送邮箱加入他们邮箱的白名单就行了吧。

*************************************************

补充,这时(距上面的发文半小时后),我才发现可能是tom.com的免费邮箱接收邮件系统出了故障,不能及时收取信件了。因为我把接收学习日记的邮箱改为另一个邮箱后就收到了。而且,我们这个系统的测试帐号的那个邮箱也能收到。明天再看看那些邮件会不会来。