随笔分类 - Java基础
摘要:1在并发编程中有两类关键问题:线程之间如何通信及线程之间如何同步(这里线程是并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递2共享内存并发模型里,线程间共享程序的公共状态,线程间通过写--读内存中的公共状态来隐式进行通信。消息传递并发模型里,线程间没有公共状态,线程间必须通过明确的发送消息来显示进行通信。)3 同步指程序用于控制不同线程间操作发生的相对顺序的机制。在共享内存并发模型中,同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。在消息传递的并发模型中,由于消息的发送必须在消息的接收之前,.
阅读全文
摘要:编辑代码常用快捷键格式化代码的快捷键 Ctrl + Shift + F格式化缩进的快捷键是 Ctrl + I,只能对选中的文本进行缩进删除一行的快捷键是 Ctrl + D当前窗口最大化最小化切换 Ctrl + M转到最后进行修改编辑的位置 Ctrl + Q快速查找选中的字符 Ctrl + K(向下) Ctrl + Shift + K(向上)光标放到一个括号,切换到另一个成对的括号 Ctrl + Shirt + PAlt+shift+S 打开快捷菜单,相当于在源代码上鼠标右键Ctrl + Alt + ↑ 或 Ctrl + Alt + ↓ 复制选中的一段代码Alt + ↑ 或 Alt + ↓ 移动
阅读全文
摘要:并发集合是原有集合框架的补充,为多线程并发程序提供了支持。主要有:BlockingQueue,ConcurrentMap,ConcurrentNavigableMap三个接口。新的java.util.concurrent包可用的具体集合类中加入了BlockingQueue接口和5个阻塞队列类。阻塞队列实质上就是一种有点扭曲的FIFO数据结构,不是立即从队列中添加或删除元素,线程执行操作被阻塞,直到有空间或元素可用。生产者中 put()操作会在没有空间可用时阻塞,而消费者的take()操作会在队列中没有任何东西时阻塞。五个队列所提供的各有不同:ArrayBlockingQueue :一个由数组支
阅读全文
摘要:使用Amino框架Amino是Apache旗下的开源软件。读者可以访问http://amino-cbbs.sourceforge.net/得到其最新版本。面向并发编程,它有以下特点:1) 可操作性和良好的伸缩性2) 跨平台性3) 无论在Java、C++或其他流行语言中,编程风格一致4) 适用于多核的各种操作系统5) 可以进行并发编程正确性的测试Amino Java类库将涉及下面四个方面的内容:1) 数据结构该组件将提供一套免锁的集合类。因为这些数据结构采用免锁的运算法则来生成,所以,它们将拥有基本的免锁组件的特性,如可以避免不同类型的死锁,不同类型的线程初始化顺序等。2) 并行模式Amino将
阅读全文
摘要:1 import java.util.Timer; 2 import java.util.TimerTask; 3 /** 4 * 传统定时器技术 new Timer().schedule(TimeTaks()实例,多少秒后执行,第一次执行后每隔多少秒执行一次) 5 * new Timer().schedule(TimeTaks()实例,new Date()固定日期执行,第一次执行后每隔多少秒执行一次) 6 * 如果没有最后一个参数,则定时器里的任务只执行一次。 7 * 更复杂的调试任务可以考虑用调度框架quartz 8 */ 9 public class TimerTest...
阅读全文
摘要:非阻塞NIO使用场景: NIO是Java提供的非阻塞I/O API。 非阻塞的意义在于可以使用一个线程对大量的数据连接进行处理,非常适用于"短数据长连接"的应用场景,例如即时通讯软件。 在一个阻塞C/S系统中,服务器要为每一个客户连接开启一个线程阻塞等待客户端发送的消息.若使用非阻塞技术,服务器可以使用一个线程对连接进行轮询,无须阻塞等待.这大大减少了内存资源的浪费,也避免了服务器在客户线程中不断切换带来的CPU消耗,服务器对CPU的有效使用率大大提高. 与原始IO对比,异步IO是一种没有阻塞地读写数据的方法,通常,在原始IO中,在代码进行read()调用时,代码会阻塞直至
阅读全文
摘要:Java中Properties类用来处理有键值对的属性文件,利用它可以快速地把属性文件加载到内存,也可以快速把属性存放到文件中。它继承自hashTable类,除了拥有hashTable所有拥有的所有方法外,另外它还附加了用于与文件流操作的方法。下面示例展示了Properties类的用法: 1 public class PropertiesTest { 2 public static void main(String[] args)throws Exception { 3 4 Properties p = new Properties(); 5 ...
阅读全文
摘要:NIO概述: NIO弥补了原来IO的不足,它在标准Java基础上提供了高速的,面向块(缓冲区)的IO操作。NIO的创建目的是为了让Java程序员可以实现高速IO而无需编写操作流中数据代码。NIO将最耗时的IO操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。原来的 I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。 面向流的 I/O 系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的 I/O 通常相当慢。一个面向块的 I/O 系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)..
阅读全文
摘要:JavaIO在javaIO中主要有5个类和1个接口,它们是:File,InputStream,OutputStream,Reader,Writer,Serializable接口。File类主要功能是完成与平台无关的文件操作。其中File.pathSeparator表示路径分隔符“:\” File.separator则表示分隔符“/”或“\\”字节流和字符流:字节流:(inputStream,OutputStream)字符流:(reader,writer)OutputStream.write(byte[] b) 一次性写入一个定义的字节数组OutputStream.write(int...
阅读全文
摘要:1.注解的一些基本概念Java从1.5开始引入注解。注解的功能类似于代码中的注释,所不同的是注解不是提供代码功能的说明,而是实现程序功能的重要组成部分。Java注解已经在很多框架中得到了广泛的使用,用来简化程序中的配置。在使用注解时候的配置参数的值必须是编译时刻的常量(java基本类型和String类型,Class类型,Enum类型,Anotation类型,数组类型)从某种角度来说,可以把注解看成是一个XML 元素,该元素可以有不同的预定义的属性。而属性的值是可以在声明该元素的时候自行指定的。在代码中使用注解,就相当于把一部分元数据从XML 文件移到了代码本身之中,在一个地方管理和维护。 1
阅读全文
摘要:一个枚举类,可以看成包括它的一些子类(枚举)的一个类,而且枚举类的构造方法只能是私有的,如下面代码以交灯为示例: 1 public class Test { 2 3 public static void main(String[] args) { 4 Trafficlight light = Trafficlight.RED; 5 6 System.out.println(light.time); 7 System.out.println(light.nextLigth()); 8 // ordinal...
阅读全文
摘要:1.switch条件语句中可以加入字符串了,实现方法是利用了字符串的hashcode()值作业真正的值2.增加了一种可以在字面量中使用的进制,二进制,通过在数字前面加“0b”或“0B”3.在数字字面量中使用下划线来分隔数字方便阅读,不影响数值大小。基本原则是前后都是数字的才可以出现下划线4.java7对异常做了两个改动: 4.1.支持在一个catch子句中同时捕获多个异常,另外一个是在捕获并重新抛出异常时的异常类型更加精确。java7中Throwable类增加addSuppressed方法,当一个异常被抛出的时候,可能有其他异常因为该异常而被抑制住,从而无法正常抛出。这时可以通过addSup.
阅读全文

浙公网安备 33010602011771号