JAVA基础
文章平均质量分 78
ninetyhe
技术从来都是从实践中总结而来的
展开
-
观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。首先定义一个接口,负责对被观察者对象的属性更新package com.test.observer;/** * 被观察的对象接口 * @author yuewen * */// 抽象观察者角色public原创 2015-08-11 15:59:11 · 811 阅读 · 0 评论 -
线程的生命周期
Java线程生命周期: 一个线程的大致生命周期分为:创建-就绪-(阻塞)-运行-死亡。 1)创建:当一个thread被实例化出来后就完成了线程的创建; 2)就绪:当一个线程调用了start()方法的时候,该线程就处于就绪的状态了; 3)阻塞:如果一个就绪的线程,没有获得cpu的资源的时候,即处于阻塞状态,我们通常调用wait()方法时候,可让该线程会处于阻塞状态‘原创 2016-05-22 16:43:22 · 452 阅读 · 0 评论 -
直击阻塞,非阻塞,异步,同步四者联系与区别
老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。3 老张把响水壶放到火上,立等水转载 2015-10-06 20:02:08 · 537 阅读 · 0 评论 -
Java IO深入浅出
1.What is stream? 流失一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或者是网络连接。类似的,当程序需要写入数据的时候,就会开启通向目的地的流。在Java中,IO的部分很庞大,基本包括两大部分:字节流和字符流。具体结构如下图(图源于网上):2:什么是字节流?以字节为单位传输的流。字节流的输入流祖原创 2015-08-19 22:30:44 · 907 阅读 · 0 评论 -
Java Class 是什么
每一个类被加载后,系统就会生成该类对应的一个class类,该类描述了类的访问属性,类说属于的报名,字段属性,系统通过class对象就能访问到JVM中的这个类。通俗的说就是先生成class 再通过instance得到该类来看下段代码:public class GetClass {private final int id = 0;privat原创 2015-07-08 23:08:14 · 833 阅读 · 0 评论 -
JAVA基础之多态
多态又叫动态绑定是指“在运行期间”(而非编译期间)来判断所引用的对象的实际类型,根据其实际类型调用其相应的方法。就是new出来什么对象就调用那个对象的方法--------多态的三个条件:1.要有继承。2.要有重写。3.父类引用指向子类对象三个条件缺一不可, 只针对与方法,对成员变量无效的/*父类*/public class Animal {public void原创 2015-06-27 22:38:36 · 488 阅读 · 0 评论 -
真正了解单列模式
1.单列模式的特性1)单例类只能有一个实例。2)单例类必须自己创建自己的唯一实例。3)单例类必须给所有其他对象提供这一实例。理论不多说,直接上代码1.最简单的单列实现,没有考虑多线程下public class SingleTonOne {/*** 这个是必须的,私有构造函数,保证不能被其他类实例化*/private SingleTonOn原创 2015-06-27 11:31:13 · 584 阅读 · 0 评论 -
JAVA基础之内部类一
在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。这里首先介绍内部类的基本实例化,包括静态内部类和非静态内部类public class InnerClassTest {private int a = 0;/*** 内部类* @au原创 2015-07-09 22:29:18 · 734 阅读 · 0 评论 -
HashMap海量数据时的常用遍历性能比较
以下的性能测试在10000以上的数据量才会大有体现,在较小的数据量时会出现keyset所耗时间比entrySet旗鼓相当public class MapTest {public static void main(String [] args){Map map = new HashMap();for(int i =0;imap.put("A"+i,"A原创 2015-07-03 09:46:23 · 2923 阅读 · 0 评论 -
Java之socket编程
1,什么是Socket网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。可以认为在scoket实现了应用层下的复杂的通信,并对上层透明。但是,Socket所支持的协议种类也不光TCP/IP一种,原创 2015-07-14 20:17:13 · 513 阅读 · 0 评论 -
关于JVM个人浅谈(三)
在上一篇中,大致讲述了GC回收的算法,接下来就在本篇文章里介绍一下如何去预估Java对象的大小,以便后续再优化JVM提供数据理论基础。一个普通对象的内存大小如下:1._mark对象头 占用8byte;2.oop指针,默认占用4byte;3.数据区 具体根据对象属性而定;4.padding,内存对齐(如果不懂,可以看看计算机组成原理 这本书 大学计算机系必修之一) Java以8的原创 2015-08-12 22:45:24 · 718 阅读 · 0 评论 -
秒懂命令模式
在软件开发中,由于请求者与行为实现者之间存在过高的耦合,这样对于同一个接口存在多处调用的情况下,我们对其进行封装,这样供各处调用,而且大大的降低了请求者与行为执行者之间的耦合度。在实际运用中,例如在客户端发起的请求,可以通过不同的Cmd的命令字来调取相应的接口实现类,完成逻辑,而且这种设计模式已经广泛的运用。于是乎,命令模式成为了设计模式中的十分重要一部分,而且在开发中也是运用十分流行。原创 2015-08-11 17:35:28 · 816 阅读 · 0 评论 -
Java 常用算法 插入,冒泡,快速排序大放送
基础思想不在复述,java的实现如下:import java.util.Arrays;/** * Created by ykanghe on 12/27/16. */public class algorithm { /** * 快速排序 * * @param a * @param left * @param right原创 2016-12-27 23:10:57 · 554 阅读 · 0 评论