- 注:因package,import涉及较多内容,另开一个帖子了,但为了保证此贴内容与标题相符,在此也把写上了该部分内容(措辞有整理)
深入下package,import:
凡是和java设计相关的工具,都会用到package与import,到底这两个东东是做什么的,如何用,它们的内部机理又是如何呢,今仅就个人的理解谈谈看法,里面一些错漏,疑点也请朋友们指出:
一, package,import引入原因:
package:
我们都熟悉超市,超市虽然庞大,东西繁多,但管理的井井有条,很容易找到某样东东,;之所以能如此,一个很重要的原因就是采用了分类放置,这样既方便了管理,又方便了寻找
Package也是一个分类放置东东的区域,不过它放的不是商品而是java中的类。Java中有各种各样的类,
内容丰富,繁多,为了更好的管理,识别,就为每一类型的类建立一个区域,这个区域就是包 Read More - Java中的类路径分“编译后的存放路径” 和 “运行时的查找路径”,下面分别谈谈
1. java编译后的类存放路径,
分两种:“源文件被直接编译”和“源文件被间接编译”
1-1源文件直接编译
什么是源文件直接编译:即通过javac直接编译源文件
建立d:\my目录,在其目录下新建一个文件,如下:
Public class HelloWorld{
Public static void main(String[] args){
System.out.println(“HelloWorld”);
}
}
在命令行输入: javac HelloWorld.java
这时在d:\my这个目录下就产生了一个类文件HelloWorld.class Read More - 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,
类装载器所做的工作实质是把类文件从硬盘读取到内存中
2.java中的类大致分为三种:
1.系统类
2.扩展类
3.由程序员自定义的类
3.类装载方式,有两种
1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中,
2.显式装载, 通过class.forname()等方法,显式加载需要的类
隐式加载与显式加载的区别:
两者本质是一样?, Read More - 1. 编码的产生
对电脑而言,只认识0,1; 而现实世界是由各种符合组成,要想让计算机解释现实世界,就必须建立一套现实世界中的符号 和 计算机能处理的符号之间的对应关系,这个对应关系就是编码
2. 在一个编辑器中,当我们在键盘上敲入一个字符时,在该编辑器上就会显示对应的字符,这个过程用计算机执行步骤来解释大致如下:
输入字符 –> 编辑器根据设定的编码格式把字符编成01格式 -> 编辑器再按编码规则对01解码–> 显示字符
3.几种常见的编码格式
1. ASCII码:
计算机中最早的一套编码格式,采用7位二进制表示一个常见的字符,我们知道,计算机是按照字节来处理数据的,一个字节8位,因此用一个字节就可以表示一个ASCII字符,且还有一个位空位,规定最高位不用,常见的把最高位设定为0。 7位二进制最多可以表示128个字符(2的7次方),ASCII码只能表示常见的英文字符,数字,和少量的符号(没办法,谁让计算机是人家老美先发明的啊,优先考虑本土语言,理解理解)
注: 由于ASCII最早定义,使用广泛,使得之后出现的新的”字符“(不是汉字喔)编码都尽量和它兼容 Read More - 最初我们用 Java 写 JSP 的时候,几乎可以不触及异常,因为 Servlet 容器会把 API 抛出的异常包装成 ServletException 丢给容器去处理。再后来应用分层,代码中要处理的异常便多了,一般会转换成自定义的业务异常类,用 try-catch-throw customerException-finally。再到如今各种框架日臻成熟,代码中显式的异常处理又渐渐少了些,借助于 AOP 横行,异常对业务的影响描述被移入到了配置文件中了,例如,事物处理、权限的控制等。
这颇有些像手机的发展,当通信技术不甚发达的时候,手里抓的是砖头,信号是模拟的。后来慢慢瘦身成两三根手指大小,甚至是就一支笔似的,可如今信息量大了,屏幕要大,再配上 QWERT 键盘,机身自然就肥硕了。
当然与手机的个头变迁略有不同的是,任凭你怎么对待 Java 中异常,切入 AOP 也好,在 JVM 中处理异常的内在机制始终未变。 Read More - w3 JMail 组件虽好用,但实际使用过程中还是碰到问题,多数机器上都表现正常,唯独在一台机器上,JMail 的错误信息总是:jmail The message was undeliverable. All servers failed to receive the message。根据经验把病毒软件、防火墙都关了,Telnet 到邮件服务器的 25 端口,或者 Outlook 收发都是正常的,这下有些没辙了,而同事真正又要在那台奇怪的机器上发邮件。
再想它法了,对,就是 XMLHttpRequest,把功能分离,Excel 只提交 Http 请求,由 JSP 来完成实际的邮件发送工作,当然也可以实现为其他的形式。所以也就有两部分实现代码,分别为:
JSP 代码,使用的是 Apache 的 commons-email 组件,它还需要用到 activation.jar 和 mail.jar, 关于 commons-email 的使用可参考前面的一篇: 用 apache commons-email 轻松发送无乱码邮件。 比如文件存为 sendmail.jsp,通过浏览器来访问时用的 URL 是 http://192.168.1.100:8080/WebUtils/sendmail.jsp Read More 在上一篇 VBA 中发送邮件(使用 Outlook)中,VBA 通过 Outlook 来发邮件不仅频繁的弹出提示窗口要求确定,而且需要在 Outlook 中配置好,不能随意使用邮件服务器。对此,是否有相当于 JavaMail 那样的第三方组件呢?Google 帮忙,果然找到一个,名曰 w3 JMail,J 为首,其实与 Java 无任何关系。
可以在网络上搜索 w3 JMail Personal V4.3,或者直接到官网 http://www.dimac.net 去下载,w3 Jmail 的授权方式是免费的。默认位置安装好 JMail 之后,是在 C:\Program Files\Dimac\w3JMail4 可以看到 Examples 目录、jmail.dll、w3jmail4.pdf 和 readme.txt 文件。可以查阅w3jmail4.pdf 中的使用帮助。 我们所要的文件其实只是那个 jmail.dll,安装程序会自动帮你注册 jmail.dll。若未运行安装程序,只是拷贝了 jmail.dll,则要运行 regsvr32 jmail.dll 注册它即可。 Read More
帮同事做了一个在 Excel 中用 VBA 发邮件的程序,逐行读取 Excel 表格记录中的待发邮件主题、内容及收件人进行发送。首先想到也是看看能否使用 Outlook 的组件,网上查了查,果然有,现把代码贴出来如下: Read More
- 对象可触及时的生命周期
在 JVM 1.2 之前,堆中的对象分为三种状态,分别是:
1. 可触及的 -- 从根节点开始可追踪到
2. 可复活的 -- 从根节点开始追踪不到,但有可能被终结方法触及并复活。不仅仅是那些声明了 finalize() 方法的对象,而是所有的对象都要经过可复活状态
3. 不可触及的 -- 以上两种可能性都不存在,可以真正回收它们所占据的内存了
版本 1.2 中,可触及按强弱进一步细分为:
1. 强可触及 -- 即原来的可触及,从根节点开始的任何直接引用,如一个局部变量或任何从强可触及对象的实例引用的对象
2. 软可触及 -- 表现为 SoftReference 所引用的对象
3. 弱可触及 -- 表现为 WeakReference 所引用的对象
4. 影子可触及 -- 表现为 PhantomReference 所引用的对象 Read More 本想把 p6spy 结合 SQL Profiler 或 IronTrack SQL 的使用介绍掇凑于一块来写。简单点说,只是一贴上图样,篇幅便需拖拉难遂人愿,也好, 索性把它们分成两个篇章。一来每篇主旨鲜明,二来五篇成一系列比起四更来的自然且吉利。
前面讲过 p6spy 本身就可利用 Log4j 的 SocketAppender 向远端发送日志,SQL Profiler 不过是在这个基础上作了进一步拓展。 而接下来要说的 IronTrack SQL 就略有不同了,看它带的 p6spy.properties 文件,里面有 IronTrack SQL 给 p6spy 定制的一个模块: module.ibeam=com.irongrid.ibeam.server.IBeamFactory。它用到了 log4j-1.2.8.jar,不过还得研究下 Log4j 在其中所起的作来。 现在就来介绍 p6spy 结合 IrconTrack SQL 的使用,最好是你知道如何单独使用 p6spy。压缩包里有文档:是 IronTrackSQL\docs\index.html。
Read More