随笔分类 - JAVA
主要学习java
摘要:三层结构解释 所谓三层体系结构,是在客户端与数据库之间加入了一个中间层,也叫组件层。这里所 说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也 不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一 台机器上。 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中 间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通 讯与中间层建立连接,再经由中间层与数据库进行交换。 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BL...
阅读全文
摘要:实例1 BigInteger的构造函数public BigInteger (String val, int radix)的使用上面的构造函数,val是各种进制的字符串,比如二进制的110,八进制的765,radix表示的是进制,比如2进制、8进制等。该构造函数,是将指定的字符串,按照对应的进制,转化成十进制的BigIntegerimport java.math.*;public class Demo02 { public static void main(String[] args){ System.out.println(new BigInteger("110", 2..
阅读全文
摘要:本部分介绍一些与运行环境相关的类 Sun为Java提供了丰富的基础类库,Java SE有三千多个基础类,要多敲代码,多练。1.main()方法解析 如果一个程序总是按规定的流程运行,无需处理用户动作,也就是没有通过用户方面接受信息,但实际上大多数情况下,都需要与用户进行交互,这里先介绍从键盘获得用户输入,在图形用户接口(GUI)章节将会介绍用户通过GUI输入数据。1.1 运行Java程序的参数 主方法解析1 public static void main(String[] args){2 3 }主方法这样设计的原因是:public 修...
阅读全文
摘要:4 Java事件模型的流程 为了使图形界面能够接收用户的操作,必须给各个组件加上事件处理机制。 在事件处理的过程中,主要涉及3类对象: 1.Event Source(事件源):事件发生的场所,通常就是各个组件,例如按钮、窗口、菜单等。 2.Event(事件):事件封装了GUI组件上发生的特定时期(通常就是一次用户操作)。如果程序需要获得GUI组件上所发生事件的相关信息,都通过Event对象来取得 3.EventListener(事件监听器):负责监听事件源所发生的时间,并对各种事件做出响应处理 事件响应的动作实际上就是一系列的程序语句,通常...
阅读全文
摘要:1.GUI设计 Java使用AWT和Swing类完成图形用户界面编程,AWT全称是Abstract Window Toolkit,即抽象窗口工具集,它是Sun最早提供的GUI库,只是这个库功能比较有限,后来又提供了Swing库。通过使用AWT和Swing提供的图形界面组件库,就可以基于图形界面的程序。只有界面是不够的,为了实现图形用户界面与用户交互操作,Java提供了事件处理,用于响应用户的操作。 GUI Graphics User Interface 简称GUI,图形用户界面,Java提供了基本的构建GUI的类库,这个类库就是AW...
阅读全文
摘要:Annotation是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。 Annotation提供了一种为程序元素设置元数据的方法,从某些方面来看,Annotation就像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明,这些信息被存储在Annotation的"name=value"对中。 注意:Annotation是一个接口,程序可以通过反射来
阅读全文
摘要:接下来可以随意提供一个简单的主类,该主类无须编译就可使用上面的CompileClassLoader来运行它。1 package chapter18;2 3 public class Hello {4 public static void main(String[] args){5 for(String arg:args){6 System.out.println("运行Hello的参数:" + arg);7 }8 }9 } 无须编译该Hello.java,可以直接使用如下命令来运行该Hello.java程序。java...
阅读全文
摘要:1 本文概要 本章介绍Java类的加载、连接和初始化的深入知识,并重点介绍Java反射相关的内容。本章知识偏底层点,这些运行原理有助于我们更好的把我java程序的运行。而且Java类加载器除了根加载器之外,其他类加载器都是使用Java语言编写的,所以我们完全可以开发自己的类加载器,通过使用自定义的类加载器,完成一些特定的功能。 本章重点介绍java.lang.reflect包下的接口和类,包括Class、Method、Field、Constructor和Array,这些类分别代表类、方法、属性、构造器和数组,Java程序可以使用这...
阅读全文
摘要:1 多线程 1.1 简介 大部分时候,我们编写的程序都是单线程的。也就是都只有一条顺序执行流:程序从main方法开始执行,依次向下执行每行代码,如果程序执行某行代码遇到了阻塞,则程序会停滞在该处。如果我们使用IDE工具的单步调试功能,将可以很清楚的看出这一点。 实际情况是,单线程的程序往往功能非常有限,例如我们需要开发一个简单的服务器程序,这个服务器程序需要面向不同客户端提供服务时,不同客户端之间应该互不干扰,否则会让客户端不停的等待一次请求完,而其他的客户端在等待。多线程听上去非常专业概念,其实非常简单...
阅读全文
摘要:5 改变线程优先级 每个线程执行都具有一定的优先级,优先级高的线程获得较多的执行机会,而优先级低的线程则获得较少的执行机会。 每个线程默认的优先级都与创建它的父线程具有相同的优先级,在默认情况下,main线程具有普通优先级,由main线程创建的子线程也具有普通优先级。 Thread提供了setPriority(int new Priority)和getPriority()方法来设置和返回指定线程的优先级,其中setPriority方法的参数可以是一个整数,范围是1~10,也可以是Thread类的三个静态常量:1.MAX_PRIORITY...
阅读全文
摘要:11 使用管道流 前面介绍的两种方式与其称为线程之间的通信,还不如称为线程之间协调运行的控制策略。如果需要在两条线程之间进行更多的信息交互,则可以考虑使用管道流进行通信。 管道流有3中存在形式:PipedInputStream和PipedOutputStream,PipedReader和PipedWriter以及Pipe.SinkChannel和Pipe.SourceChannel,它们分别是管道字节流、管道字符流和新IO的管道Channel 使用管道流实现多线程通信可按如下步骤进行: 1.使用new操作符分别创建管道输入流...
阅读全文
摘要:对象序列化的目标是将对象保存到磁盘中或允许在网络中直接传输对象,对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流(无论是从磁盘中获取,还是通过网络获取),都可以将这种二进制流恢复成原来的Java对象。1 序列化的含义和意义 序列化机制允许将实现序列化的Java对象转换为字节序列,这些字节序列可以被保存在磁盘上,或通过网络传输,以备以后重新恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。 对象的序列化是指...
阅读全文
摘要:1 概述 异常机制已经成为判断一门编程语言是否成熟的标准,除了传统的像C语言没有提供异常机制之外,目前主流的编程语言如Java、Ruby、Python都提供了成熟的异常机制。异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加健壮、优雅。 Java的异常机制主要依赖于try、catch、finally、throw和throws五个关键字,其中try关键字后紧跟一个花括号括起来的代码块(花括号不可省略)简称为try块,它里面放置可能引发异常的代码(如果没有异常机制会被当成正常的代码)。catch后对应异常类型...
阅读全文
摘要:大家在编程中经常遇到要在多个表中查询数据,在数据库的规范化中也经常把一个表经过投影分解成多个符合更高级范式的表。符合标准化的同时,自然要付出灵活性和性能的代价。把多个表连接在一起是一个耗时的操作,建议对那些经常用到的信息集中存放在一个表中,即使某些方面不符合规范化标准也可。多表连接操作最常用的是表和表之间取笛卡儿积,其他的还有Inner Join,left outer join,right outer join,full outer join,下面分别说明它们的区别。使用语法:select 字段/* 表1 表连接操作类型 表2 on 条件1 Inner JoinInner Join 把两个..
阅读全文
摘要:java -cp .;c:\dir1\lib.jar Test -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;” 分隔,linux上是分号“:”分隔。不支持通配符,需要列出所有jar包,用一点“.”代表当
阅读全文
摘要:泛型是对集合的补充,JDK1.5增加泛型支持很大程度上都是为了让集合能记住其元素的数据类型。在没有泛型之前,一旦把一个对象丢进Java集合中,集合就会忘记对象的类型,把所有的对象都当成Object类型处理。当程序从集合中取出对象后,就需要进行强制类型转换,这种强制类型转换不仅让代码臃肿,而且容易引起ClassCastException异常。 增加了泛型支持后的集合,完全可以记住集合中元素的类型,并可以在编译时检查集合中元素的类型,如果试图向集合中添加不满足类型要求的对象,编译器就会提示错误。增加泛型后的集合,可以让代码更简洁、健壮(Java泛型可以保证如果程序在编译时没有警告,运行时就不...
阅读全文
摘要:1 抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体。但在某些情况下,某个父类并不需要实现,因为它只需要当做一个模板,而具体的实现,可以由它的子类来实现。比如说一个长方体的表面积和一个立方体的表面积计算方式是有区别的,长方体表面积需要有三个参数,而立方体需要一个参数。 抽象方法可以只有方法签名,而没有方法实现。1.1 抽象方法和抽象类的定义 抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法。抽象方法...
阅读全文
摘要:1.封装 封装(encapsulation)是面向对象三大特征之一(另外两个是继承和多态(也就是覆写和重载)),它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。 前面已经说明了我们可以通过创建对象的方式来访问类和对象的属性,但这种访问可能是有问题的。比如将某个Person的age属性直接设为1000而不加检查就违背了事实。通过方法来访问属性不仅可以进行设置,而且可以对属性进行检查校验。 类是对象的模板,由于很多对象可能都是共用一个类,而对象...
阅读全文
摘要:1.static关键字 static是一个特殊的关键字,可以用于修饰方法、属性等成员。 我们知道通常调用一个方法需要这样做:假设一个类A是主类(主方法在这个类中),A类要调用别的类的方法,通常是这样干的:用A类构造器创建一个对象,然后用这个对象调用它的方法,被调用的方法可以是静态的,也可以是非静态的。但static这个关键字有很"开挂"的地方是不用通过类创建实例的办法来调用,可以直接通过类来访问。package chapter1; class HelloWorld { public static void main(String...
阅读全文
摘要:Java中常用的一些方法 1.字符串 1、获取字符串的长度 length() 2 、判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith(String s) 后缀 endsWith(String s) 3、比较两个字符串 equals(String s) 4、把字符串转化为相应的数值 int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valu...
阅读全文