|
用户名:wn_319 笔名:wn_319 地区: |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
java 动态加载类的一些规则
java 动态加载类的一些规则
在java程序中加载类有两种方式:
1 自动加载,由jvm完成,对程序员是透明的
2 手动加载,由程序员代码完成。
两种加载方式的特点
1 自动加载:方便,
也就是说程序员只要在类中引用了其他包中的类型,在运行时当第一次用到这个类的时候jvm会自动加载这个类
2 手动加载:灵活,
对大系统的程序部署,版本控制都有好处,在这里就不多说了。
手动加载类的问题:
1 可能会有版本问题,
如果一个类的类加载器在运行时刻加载了同一类的不同版本,那么在调用这个类的时候究竟应该调用哪个版本呢。
2 类只识别类自己的加载器加载的其他类。
类手动加载的原则:
1 类加载器不应该加载同一个类两次。
2 类加载器在加载类的时候要先委托父的加载器加载。
3 类的加载器加载类的时候被加载的类所引用的基础类是用jvm自动加载的,这样保证了版本不会冲突。
javawebstudio 介绍
JavaWebStudio是目前最方便快捷的Struts、JSP、Hibernate开发平台,是功能强大的Java Web集成开发环境(IDE)。
JavaWebStudio 2005新增功能如下:
1、改进功能
(1)环境变量设置
(2)中文编辑双字节处理
(3)键盘快捷键处理
(4)文件管理器
(5)类管理器
(6)Html控件(标签)拖动功能
(7)启动画面的随机图像显示和主画面的可定制显示
(8)java文件编辑自动提示的快速搜索
(9)可快速跳转到任何已知类源文件
(10)增强系统的稳定性
(11)可对各种网站内容特别是不能进行"另存为"和"查看源文件"操作的网站进行编辑
2、新增功能
(1)Struts JSP页的可视化图层设计
(2)可视化样式设计
(3)交互式按钮设计
(4)Bean工厂、Bean_DAO工厂
(5)Bean变量及Action配置动态监视功能
(6)批量Bean变量添加
(7)Hibernate文件向导功能
(8)新增了Struts_menus模板、Struts1.2.4模板、JSF模板、Hibernate模板
(9)JDK采用了J2SE 5.0(即1.5)版本,服务器采用了jakarta-tomcat-5.5
(10)支持J2ME开发,在采用WTK2.2版本,提供15个J2ME模板
(11)调试功能
(12)JavaWebStudio开源项目:Struts_db
3、保持JavaWebStudio原版本中的便快捷的Struts、JSP开发功能:
JavaWebStudio系列开发工具包括Visaul Struts、Visaul JSF、Visaul Tapestry 、Visaul jython及Visaul C51(C51是附加版本,与Java Web无关,主要用于可视化单片机C51的开发)等多个版本。
其中Visaul Struts版本是专业的Struts可视化开发集成环境,是目前最方便快捷的Struts开发平台。
主要特点如下:
用JavaWebStudio开发Struts非常容易,运行速度也快(是用VC.NET写的),有点像VB.NET。在组件栏中除html、JSP外,还有Struts标签组件,例如插入一个<html:text>标签组件,在编辑页中看到的就是一个输入文本框,即可视化设计,对输入文本框点鼠标右键选择"属性",可直接添加变量;对组件双击鼠标左键自动跳转到相应的Java文件中。利用文件向导,选择数据源后数据库应用所有代码都自动生成,并生成具有分页、记录添加、编辑、更新、删除的页和所有源代码,像ASP.NET吧?编辑java代码时,有打"."自动提示的功能,包括自定义的变量、项目中自定义的类、JDK类、Struts类等,像VC.NET中的有打"."自动提示。
(1)可视化Struts标签的web设计界面,这是JCreator、eclipse、JB没有的功能。在JavaWebStudio中设计Struts的JSP页面,就像在Microsoft FrontPage中设计普通网页一样所见即所得,一样方便。
与Dreamweaver MX类似,主窗口中上半部分是JSP源代码编辑窗口,下半部分是可视化编辑窗口。
JavaWebStudio开发工具支持Struts标签的可视化设计,在JavaWebStudio的WEB可视化编辑界面里,<html:text property="name"/>是一个输入文本框,点击鼠标右键选择"添加变量",自动添加标签的property名称,同时自动在ActionForm中自动添加相应的变量和函数,非常方便。在JavaWebStudio的WEB可视化编辑界面里,对着按钮双击自动跳转到Action中,对着输入框双击自动跳转到ActionForm中,类似VB、DELPH的事件编程。
(2)Struts类、项目自定义类及Java类所有类对象都带"打.提示",只要选择就可输入函数,对不熟悉StrutsAPI的人来说是最好不过的了。
(3)Struts完全中文显示解决方案:
(a)JSP页面中文显示问题:
新建JSP文件时,自己加入如下代码:
<%@ page contentType="text/html;charset=GB2312" %>
这样JSP页面上的中文就可以正常显示了。
(b)中文资源显示问题:
在JavaWebStudio中,默认的中文资源文件名是"ApplicationResources_ch.properties",用户先将中文资源定入文件"ApplicationResources.properties"
然后选择工具条的"资源文件编码转换"键或选择"运行"菜单上的"资源文件编码转换"项,即可实现编码转换功能。
(c)表单和数据库中文显示问题:
在JavaWebStudio中建立Struts项目时,自动加入了编码转换设置过滤器。
可见在JavaWebStudio中,不需编程人员编写任何代码,仅仅点击一个资源文件编码转换键即可完全解决Struts中文显示问题。
(4)Struts 数据库应用向导功能:
通过"Struts数据库应用文件向导"可完全自动实现数据库应用。
在向导中,只需输入文件名,通过手动加入数据库字段名或通过选择数据源自动添加数据库字段名,即可自动产生实体Bean,操作ADO(包括插入、删除、更新、查找功能)、输入JSP、JSP对应的ACtionForm、JSP对应的Action(例如打查找结果放入Bean中)、JSP输出(根据数据库自动产生输出表格)、自动配置XML文件等;
在JavaWebStudio中,通过"Struts数据库应用文件向导"可完全自动实现数据库应用。在向导中,只需输入文件名,通过手动加入数据库字段名或通过选择数据源自动添加数据库字段名,即可自动产生实体Bean,操作ADO(包括插入、删除、更新、查找功能)、输入JSP、JSP对应的ACtionForm、JSP对应的Action(例如打查找结果放入Bean中)、JSP输出(根据数据库自动产生输出表格)、自动配置XML文件等。
由于产生了操作ADO(包括插入、删除、更新、查找功能),只需编写很少的代码,即可实现完整的数据插入、删除、更新功能。另外,还有自动分页的功能。
数据库连接池只需通过配置即可使用。
Java中ThreadLocal的设计与使用
| protected Object initialValue() { return null; } |
| public class ThreadLocal { private Map values = Collections.synchronizedMap(new HashMap()); public Object get() { Thread curThread = Thread.currentThread(); Object o = values.get(curThread); if (o == null && !values.containsKey(curThread)) { o = initialValue(); values.put(curThread, o); } return o; } public void set(Object newValue) { values.put(Thread.currentThread(), newValue); } public Object initialValue() { return null; } } |
| public class SerialNum { // The next serial number to be assigned private static int nextSerialNum = 0; private static ThreadLocal serialNum = new ThreadLocal() { protected synchronized Object initialValue() { return new Integer(nextSerialNum++); } }; public static int get() { return ((Integer) (serialNum.get())).intValue(); } } |
| int serial = SerialNum.get(); |
事务处理DAO实现- -
转刘松先生的大作。。。。。。。。。
如何绩效考核一个程序员
成为编程高手的条件
数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握它们,很难写出高水平的程序。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。因此多读一些计算机基础理论方面的书籍是非常有必要的。
2、丰富的想像力
不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想像力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。开阔的思维对程序员来说很重要。
3、最简单的是最好的
这也许是所有科学都遵循的一条准则,复杂的质能转换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4、不钻牛角尖
当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5、对答案的渴求
人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6、多与别人交流
三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7、良好的编程风格
注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8、韧性和毅力
这也许是"高手"和一般程序员最大的区别。高手们并不是天才,他们是在无数个日日夜夜中磨炼出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
java 网络编程基本概念
/**
* 一个IP地址并不足以完整标识一个服务器。这是由于在一台物理性的机器中,往往运行着多个服务器(程序)。
* 由IP表达的每台机器也包含了"端口"(Port)。我们设置一个客户机或者服务器的时候,
* 必须选择一个无论客户机还是服务器都认可连接的端口。就象我们去拜会某人时,IP地址是他居住的房子,
* 而端口是他在的那个房间。
*
* 注意端口并不是机器上一个物理上存在的场所,而是一种软件抽象(主要是为了表述的方便)。
* 端口编号在这里扮演了重要的角色,它是必需的一种二级定址措施。也就是说,我们请求一个特定的端口,
* 便相当于请求与那个端口编号关联的服务。
*
* 系统服务保留了使用端口1到端口1024的权力,所以不应让自己设计的服务占用这些以及其他任何已知正在使用的端口。
*
* "套接字"或者"插座"(Socket)也是一种软件形式的抽象,用于表达两台机器间一个连接的"终端"。
* 针对一个特定的连接,每台机器上都有一个"套接字",可以想象它们之间有一条虚拟的"线缆"。
* 线缆的每一端都插入一个"套接字"或者"插座"里。
*/
/**
* 根据pcname得到ip
* @param PCName 计算机名字
*/
public void GetIPByPCName(String PCName){
try{
InetAddress a = InetAddress.getByName(PCName);
System.out.println(a);
// 得到本机地址
InetAddress b = InetAddress.getByName(null);
System.out.println(b);
b = InetAddress.getLocalHost();
System.out.println(b);
// 得到sohu所有的ip
InetAddress[] bs = InetAddress.getAllByName("www.sohu.com");
for( int i = 0 ; i < bs.length ; i ++ )
System.out.println(bs[i]);
}catch(Exception e){ }
}