`
文章列表
这两个类是java中进行key-value存储、查询的常用类,如果我们学习过哈希算法就会知道key-value查询的效率依赖于如何存储,换句话说,如果存的好,拿出来就容易,存的不好,拿出来就不方便。两个类有很多相似之处,他们之间的关系和区别到底如何,先看看它们两个当中最核心方法put的实现。 1.Hashtable的put方法的实现,以下代码做了注释: /** * Hashtable的put方法,是同步的,可以在多线程环境下确保原子性执行,index值的计算过程非常简单, * 但是运气不好的话有可能得到大量重复的index,大量的key-value存储在相同的Entry链表中,从 ...
          String、StringBuffer、StringBuilder都属于字符串处理类,我们常用的字符串存储、拼接等功能通过这三个类都可以实现,但是在使用环境不同以及对代码的执行效率和安全性要求不同是,我们要有所区分。 先分析一下各个类的特点,然后再进行比较。         1、String:能在多线程环境下肆意使用的不可变的线程安全类,什么是“不可变”?没有接触过并发知识的童鞋可能会比较晕。下面给出一个简单的解释,一般来说,有Field的类,我们称之为有状态类,这些类的状态有可能会发生改变,如果一个类在单线程、多线程等环境下,它的状态都不会发生改变(一般用fina ...
1.创建Webservice服务类HelloService,代码如下: package com.cugxw.ws; import javax.jws.WebMethod; import javax.jws.WebService; /* 使用@WebService注解标明该类作为WebService类,不能是final,static */ @WebService public class Hello { /* 对外开发的方法,不能是final,static */ @WebMethod public String sayHello(String name) { ...
本片文章将给出一个传输对象序列化字节流的实例,实际上对上篇文章的代码稍作修改即可。过程如下: 1.在client端和servlet建立相同存根,实现了Serializable接口的User类,注意:包路径也要相同的。代码如下: package com.cugxw.http.vo; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 1L; private String usernam ...
在多层架构的设计中,实现系统间通信时,我们常常会选择webservice,这是一种面向服务编程的思想,是给异构系统提供同步调用服务的。如果是采用纯java开发平台,并且对扩展性、持续集成性要求不高时,实际上我们可以采用另外一种比较简洁的通信方式来实现系统间通信,那就是使用HttpURLConnection和servlet,我做了一个简单的demo: 服务端采用servlet实现(接收并返回字节流),下面为doPost方法的主体代码: @Override protected void doPost(HttpServletRequest req, HttpServletResponse r ...
很简单,在eclipse中,点击New——选Other——找到JUnit Test Suite——点击Next,会弹出以下窗口:                                                             配置好想要打包测试的类后,点击Finish,会生成打包测试类,本机测试代码(包含注释)如下:   package com.cugxw.reusfk.manager; import org.junit.runner.RunWith; import org.junit.r ...
Step1: 下载JUnit4.jar,下载地址在GitHub上:https://github.com/KentBeck/junit/downloadsStep2: 导入JUnit4.jar到eclipse工程的buildpath中,这里不再赘述。Step3: 建立单元测试类,右键——Other——找到并选择JUnit Test Case——点击Next,出现一个Config ...
很多书上介绍Java的线程创建有两种方式,一种是继承Thread类,一种是实现Runnable接口。实际上Runnable接口只有一个run方法,Thread也是实现了Runnable接口的,但是无论哪种方式都必须借助Thread类,下面列举了创建线程的两种方式: ->方式一:继承Thread类 public class ChildThread extends Thread { /** * 覆盖run方法,编写线程执行的核心代码 */ @Override public void run() { System.out.println("线程&q ...
->Java的多线程控制在多线程编程中经常会用到,线程在不同的方法调用后会产生多种状态之间的切换,在这里我做了一个总结,下图为线程的状态控制图: ->状态说明: 新建:线程对象被创建后的状态。 就绪:调用线程对象的start方法后,线程进入就绪状态。         ->如果CPU此时空闲,可以分配给该线程时间片,则立即进入运行状态。         ->如果CPU繁忙,线程仍然在就绪状态下等待。 运行:线程在就绪状态下获取时间片即可进入运行状态。         ->如果时间片运行结束,或者调用了yield方法,该线程进入就绪状态等待下次运行。 ...
关于XmlHandler的单元测试代码: package test; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import org.dom4j.DocumentException; import com.cugxw.entity.Book; import com.cugxw.entity.Publish; import com.cugxw.utils.XmlH ...
公司不允许随便下载第三方jar包,但是公司lib库中的jar又非常老,更新需要申请,很多时候都是自己去写一些工具类,这次遇到xml处理的一些程序,于是自己写了一个工具类。这个比较粗糙,属于Test版本。 实体类注解@XmlEntity: package com.cugxw.utils; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotat ...
Global site tag (gtag.js) - Google Analytics