Java学习
Li_Nn
小白一个,慢慢上路
展开
-
观察者模式
1、定义观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2、角色抽象主...原创 2019-08-15 22:49:45 · 168 阅读 · 0 评论 -
工厂模式
1、简单工厂模式public class Factory{ public static Sample creator(int which){ //getClass 产生Sample 一般可使用动态类装载装入类。 if (which==1) return new SampleA(); else if (which==2) return new Sam...原创 2019-08-07 23:06:12 · 263 阅读 · 0 评论 -
单例模式4种经典写法
1、静态常量(饿汉式)public class Singleton1 { private static final Singleton1 SINGLETON = new Singleton1(); /** * 私有化构造方法 */ private Singleton1() {} /** * 提供公共方法,获取对象 * @return */ public ...原创 2019-08-07 22:54:39 · 157 阅读 · 0 评论 -
XML文件解析
1、dom4jDom4j是一个易用的、开源的库,用于XML、XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM、SAX和JAXP。在Java开发社区里,DOM4J的使用最为广泛。JDOM的操作非常简单,但是在处理大XML文件时性能表现不佳,解析10M文档时就会内存溢出。而DOM4J是一个非常优秀的Java XML API,具有性能优异、功能强大和易于使用的...原创 2019-07-31 23:17:31 · 145 阅读 · 0 评论 -
java网络编程01
1、Java对网络编程的支持JDK预定义的网络编程相关类均存放在java.net包中2、InetAddressInetAddress类代表IP地址。该类没有构造器,但是提供多个方法:方法用处getByName(String host)根据主机获取对应的InetAddress对象。该方法是静态方法。getByAddress(byte[] address)根据原...原创 2019-07-31 22:44:39 · 163 阅读 · 0 评论 -
Java多线程02_状态,同步,通信
文章目录1、线程的状态2、线程同步(synchronized—Lock)synchronizedLocksynchronized与lock的区别死锁3、线程之间的相互通讯(wait-notify 机制)生产者和消费者示例1、线程的状态新建:线程创建就绪:使用start()方法启动线程运行:开始执行run()方法挂起:Thread的 yield()方法,让出此次CPU分配的时间阻塞...原创 2019-07-22 23:56:28 · 98 阅读 · 0 评论 -
Java IO流02_字节流
1、字节流所有面向字节的流类都继承于InputStream类(输入流)或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能。InputStream方法描述int available()返回可从该输入流中读取的字节数void close()关闭输入流,并释放所有与该流相关联的系统资源abstract int read...原创 2019-07-25 22:45:46 · 298 阅读 · 0 评论 -
Java IO流01_File
File类常用的一些方法代码示例:private static void test1() { File file = new File("F:\\1.txt"); // 判断文件类型 if (file.isDirectory()) { System.out.println("这是一个文件夹"); } else if (file.isFile()) { System.out....原创 2019-07-24 23:58:47 · 97 阅读 · 0 评论 -
Java多线程03_三线程通信
1、线程间的通信需求:在一个线程执行增值后,两个线程进行读取,等待两个线程都读取完成之后再次进行增值。采用了三种方式解决方式一:使用传参确定当前线程和本线程执行完成后开启的下一个线程方式二:使用Set集收集读取过的线程,所有读取功能线程读取完成,开启增值线程方式三:使用Map集收集读取过的线程,所有读取功能线程读取完成,开启增值线程代码示例:Calculation 类public ...原创 2019-07-24 23:36:31 · 181 阅读 · 0 评论 -
Java IO流02_字符流
1、字符流字符流用于处理文本文件。所有字符流都继承于抽象类Reader和Writer两个父类。其中Reader为读取字符流的父类, Writer为写入字符流的父类。Reader方法描述int read()从流中读取一个字符,并将其返回,读到末尾返回-1int read(char[] buffer)将流中读出的字符放到字符数组buffer中,返回读出的字符数...原创 2019-07-29 23:38:43 · 144 阅读 · 0 评论 -
Java反射
1、定义Java的反射技术是java程序的特征之一,它允许运行中的Java程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。使用反射可以获得Java类中各个成员的名称并显示出来。简单的说,反射就是让你可以通过名称来得到对象(类,属性,方法)的技术。一句话:运行时探究和使用编译时未知的类。2、反射原理对象创建过程:比如要创建Dog类的三个对象 &nbs...原创 2019-07-16 22:47:10 · 316 阅读 · 0 评论 -
原型模式
1、浅度克隆浅度复制:对于对象中的其他对象的引用复制的其实就是对象的句柄,仍然是同一个对象。我们操作的仍然是同一个对象,改变其中一个对象,另外的对象也会随之发生改变。 这就是浅度复制。public class User implements Cloneable{ //自定义类 public Order o ; public User(Order o) { this.o = o; ...原创 2019-08-07 23:15:39 · 84 阅读 · 0 评论 -
创建模式
定义:将一个复杂对象的构建与表示分离,从而一步一步创建一个复杂的对象,使得同样的构建过程可以创建不同的表示。对于使用者来说,无须关心内部的具体构建细节。应用:复杂对象的构建,比如:机车的装配,以及本文视频中所描述的星际争霸中各个飞机的构建等等。为何使用?简言之,是为了解耦合。解除复杂对象的构建过程和具体部件的耦合。过程和部件不再混为一体。前提是复杂对象,否则没有必要。从而达到以下目...原创 2019-08-07 23:44:06 · 156 阅读 · 0 评论 -
策略模式
策略模式的重心策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。算法的平等性策略模式一个很大的特点就是各个策略算法的平等性。对于一系列具体的策略算法,大家的地位是完全一样的,正因为这个平等性,才能实现算法之间可以相互替换。所有的策略算法在实现上也是相互独立的,相互之间是没有依赖的。 所以可以这样描述这一系列策略算法:策略算法是相同...原创 2019-08-15 22:43:21 · 152 阅读 · 0 评论 -
模板方法
1、定义模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。2、角色:抽象模板角色有如下责任:定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。定义并实现...原创 2019-08-15 22:34:38 · 198 阅读 · 0 评论 -
桥梁模式
1、含义桥梁模式的是将问题的抽象和现实分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题2、用意在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。抽象化存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一...原创 2019-08-13 22:53:21 · 107 阅读 · 0 评论 -
代理模式
1、目的为其他对象提供一种代理以控制对这个对象的访问2、分类静态代理和动态代理静态代理简单示例:public interface IUser { void buy();}public class User implements IUser{ @Override public void buy() { System.out.println("买东西"); }}pu...原创 2019-08-13 22:45:55 · 127 阅读 · 0 评论 -
装饰器模式
1、含义装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案2、结构装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展3、角色抽象构件角色:给出一个抽象接口,以规范准备接收附加责任的对象。具体构件角色:...原创 2019-08-13 22:39:54 · 99 阅读 · 0 评论 -
外观模式
1、定义将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口,供上层应用使用2、意图为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用3、角色外观角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。子系统角色:可以同时有...原创 2019-08-13 22:33:24 · 78 阅读 · 0 评论 -
适配器模式
1、含义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。2、适配器模式的结构:适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。1.类适配器模式:类的适配器模式把适配的类的API转换成为目标类的API模式所涉及的角色有:目标角色:这就是所期待得到的接口。注意:由于这里讨论的是类适配器模式,因此目标不可以是...原创 2019-08-13 22:29:02 · 106 阅读 · 0 评论 -
创建型设计模式
1、模式分类架构模式:架构是指一个软件系统整体的组织结构。架构模式描述软件系统的组织结构的一些规则和指南。通过这些规则和指南,我们可以把预定义的、职责明确的子系统有效地组织起来。设计模式:设计模式描述的是在软件系统的某一局部不断重现的核心解决方案,这种解决方案以完善的设计结构出现,可以被应用到以后出现的类似的环境中。和架构模式相比,设计模式关注的是更为微观的问题2、设计模式的分类...原创 2019-08-07 00:07:47 · 75 阅读 · 0 评论 -
面向对象设计原则
1、高内聚、低耦合内聚度定义:表示一个应用程序的单个单元所负责的任务数量和多样性。内聚与单个类或者单个方法单元相关。好的软件设计应该做到高内聚理想状态下,一个代码单元应该负责一个内聚的任务,也就是说一个任务可以看作是一个逻辑单元。一个方法应该实现一个逻辑操作,一个类应该代表一种类型的实体。内聚原则背后的主要原因是重用。遵循该规则的另一个优点是,当一个应用程序的某些方面需要做出改变时,我...原创 2019-08-06 23:36:16 · 101 阅读 · 0 评论 -
Java网络编程02
1、TCP套接字编程ServerSocket(服务端)和Socket(客户端)1.ServerSocketjava.net.ServerSocket类用于服务器程序获得一个端口,并监听客户端请求。该类有四个构造器:构造器用法public ServerSocket(int port) throws IOException.创建绑定到特定端口的服务器套接字。如果该端口已...原创 2019-08-01 23:22:36 · 95 阅读 · 0 评论 -
java多线程01_创建
三种创建多线程的方式:1、直接继承Thread类代码示例:public class Thread1 extends Thread{ @Override public void run() { // TODO Auto-generated method stub System.out.println( "Thread1当前线程是否是守护线程"+Thread.currentThre...原创 2019-07-18 23:24:10 · 91 阅读 · 0 评论 -
使用Properties配置jdbc
Properties类的load方法需要读取一个xxx.properties配置文件我在项目下创建了一个config文件夹,在文件夹中新建jdbc.properties配置文件在jdbc.properties中写入我的配置信息jdbc.driver = com.mysql.jdbc.Driverjdbc.url = jdbc:mysql://localhost:3307/stumanag...原创 2019-07-11 22:10:50 · 544 阅读 · 0 评论 -
Java数据库编程JDBC
1、概述JDBC(Java Database Connectivity)是Java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类库(位于java.sql和javax.sql包中)。JDBC工作流程:在JDBC的基本操作中,最常用的类和接口包括:DriverManager、Connection、Statement、PreparedStatement、Callabl...原创 2019-07-08 22:29:45 · 173 阅读 · 0 评论 -
Java运算符与流程控制03
while循环格式while(布尔逻辑){ 代码块;}do while循环格式do{ 代码块;}while(布尔逻辑);for 循环格式for(循环变量;循环条件;迭代循环条件){ 代码块;}while do....while 和 for 循环的使用...原创 2019-06-03 21:54:07 · 168 阅读 · 0 评论 -
Java运算符与流程控制02
3.选择语句和循环语句if选择语句格式1 if(布尔逻辑){ 代码块}格式2 if(布尔逻辑){ 代码块1}else{ 代码块2}格式3if(布尔逻辑1){ 代码块1}else if (布尔逻辑2){ 代码块2}else{ 代码...原创 2019-06-03 21:53:19 · 87 阅读 · 0 评论 -
Java基础规范02
1.Java基本数据类型与String引用类型的变量定义与使用。Java整数类型都有固定的取值范围和字段长度,不会受到具体操作系统的影响,主要用以保证Java程序的可移植性 Java语言整数常量的三种表现形式:十进制整数、八进制整数、十六进制整数Java语言的整形常量默认为int类型浮点类型与整数类型类似,同样具有固定的表数范围和字段长度,也是为了保证不受操作平台的影响Java语言...原创 2019-06-03 21:52:04 · 114 阅读 · 0 评论 -
Java运算符与流程控制01
1.Java运算符1)比较运算符> < >= <= == !=2)增量减量运算符前缀 ++x --x 先自增或者自减,再运算后缀 x++ x-- 先运算,再自增或者自减3)扩展符运算符d += 5 等价于 的=+= *= /= -=4)位运算符有符...原创 2019-05-30 22:07:35 · 119 阅读 · 0 评论 -
Java基础规范01
1.Java的注释方式有哪几种?如何书写?在java中有三种注释:单行注释、多行注释、文档注释。单行注释: //多行注释:/* */文档注释:/** */2.什么是关键字与标识符关键字:对编译器具有特殊意义的英文单词标识符:在Java代码中我们自己选用的单词\3.Java中的const、goto关键字有什么作用?为了方便c和c++代码转换为java...原创 2019-05-28 23:55:02 · 108 阅读 · 0 评论 -
Java的诞生
1.java起源在1991年,sun公司为了开发一个类似智能家居的遥控器,在选择编程语言时,糅合当时语言新创了一门新的语言。在1992年,start出世,同时为新出的语言取名为“oak”,在注册名字时此名字已经被注册了,在他们喝咖啡想名字时,用了咖啡来源爪哇岛产的咖啡,改名为Java。在1995年初,在一次会议上,展示了Java的一些初略的算法引起了hui会场轰动。在1995年5月...原创 2019-05-27 19:58:29 · 838 阅读 · 0 评论 -
接口
1.接口(interface 关键字)1.定义:将抽象进行得更彻底,使所有方法都是抽象方法,所有方法都不提供具体的实现一种更为特殊的"抽象类"2.格式:/***定义一个接口*/public interface 接口名{ //任意数量static final 常量 //任意数量抽象方法}3.接口和类:相似:①接口不能被实例化;②接口不包含任何构造器;j③接口中的所有...原创 2019-06-14 21:38:44 · 193 阅读 · 0 评论 -
异常处理
1.异常处理概念(Exception)异常:是程序执行过程中所产生的问题异常的分类:1.编译时异常我们在写代码的时候,由编译器检测出来的异常注意:编译时的异常,不是说我们的代码一定会出现问题,而是提醒我们,那段代码可能会出现什么问题,让我们注意。2.运行时异常在程序运行过程中,由程序动态抛出的异常注意:运行时异常,就不是在提醒我们了,就是代码出问题了3.错误程序员没法解决的问题...原创 2019-06-17 21:54:49 · 184 阅读 · 1 评论 -
常用类介绍03,正则表达式01
1.包装类将基本数据类型进行包装基本数据类型包装类booleanBooleanbyteByteintIntegerlongLongcharCharacterfloatFloatdoubleDouble基本数据类型在赋初值的时候数值型为0,布尔是false,char 是‘’包装类是引用数据类型初值是null以int ...原创 2019-06-20 21:14:13 · 156 阅读 · 0 评论 -
常用类介绍02
1.Date(java.util.Date)日期介绍: //定义方式 Date date = new Date(); System.out.println(date); /* Wed Jun 19 11:29:00 CST 2019 * 满足一种规则:EEE MM dd HH:mm:ss zzz yyyy * 满足这个规则的日期格式被称为:格林威制格式 ...原创 2019-06-19 22:44:50 · 174 阅读 · 0 评论 -
类、对象和包01
1. 结构化编程(面向过程编程)与面向对象编程结构化编程是由上至下的方式进行设计,这种设计方法的主要思路是将一个大问题分解为多个小问题进行解决,再针对每个小问题编写方法。再由一个主方法把这些大方法由上至下进行运行。这种编程思想被称之为结构化编程面向对象编程是围绕着要解决的问题中的对象来设计,通过对象和对象间的调用,来解决问题。结构化编程是要求对事件的过程有充分的了解,而面向对象编程只需要分析...原创 2019-06-04 11:47:14 · 125 阅读 · 0 评论 -
类、对象和包02
1.对象实例化以Employee类对象实例化为例:Employee e = new Employee();Employee e 声明一个Employee 引用e = new Employee()创建一个对象并赋值在实例化对象时,会初始化对象的成员变量基本数据类型默认中 数值型的默认为0 字符型默认为null 布尔型默认为false其他的引用数据类型默认为null2.访问对象的...原创 2019-06-04 22:11:09 · 128 阅读 · 0 评论 -
Java集合框架02
1.MapMap是和Collection同级 的容器Map放置 元素是以:Key-Value的结构存在重点掌握HasMap HashTable1.HasMap * HashMap 底层结构:数组+单项链表结构,数组中主要存放键的Hash值, * 而链表中主要存储K-V结构的数据 * * 在向HashMap加数据的时候: * 先比较Hash值,看Hash是否在Hash表中存在...原创 2019-06-24 21:12:27 · 95 阅读 · 0 评论 -
初略介绍类加载与垃圾回收
1.类的加载机制类的生命周期:加载 → 连接 → 初始化 → 使用 → 卸载1.加载:将xxx.calss 读到jvm的内存中加载期间,堆中放有类的类对象(用来访问方法区的类数据)方法区中放类的数据(模板,不变的东西)类加载器:下列名义上是父子但是不是用extends名字加载方向(c++)根加载器(Bootstrap)只加载核心代码 java.*↓...原创 2019-06-26 22:40:47 · 195 阅读 · 0 评论