- 博客(63)
- 资源 (9)
- 收藏
- 关注
原创 JavaWeb工作原理
解析HTTP协议 分层模型: OSI: 物理层->数据链路层->网络层->传输层->会话层->表示层->应用层 TCP/IP...
2019-09-20 00:17:55 2865 1
原创 观察者模式
1、定义观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2、角色抽象主...
2019-08-15 22:49:45 168
原创 策略模式
策略模式的重心策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。算法的平等性策略模式一个很大的特点就是各个策略算法的平等性。对于一系列具体的策略算法,大家的地位是完全一样的,正因为这个平等性,才能实现算法之间可以相互替换。所有的策略算法在实现上也是相互独立的,相互之间是没有依赖的。 所以可以这样描述这一系列策略算法:策略算法是相同...
2019-08-15 22:43:21 152
原创 模板方法
1、定义模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。2、角色:抽象模板角色有如下责任:定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。定义并实现...
2019-08-15 22:34:38 198
原创 桥梁模式
1、含义桥梁模式的是将问题的抽象和现实分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题2、用意在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。抽象化存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一...
2019-08-13 22:53:21 107
原创 代理模式
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
原创 装饰器模式
1、含义装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案2、结构装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展3、角色抽象构件角色:给出一个抽象接口,以规范准备接收附加责任的对象。具体构件角色:...
2019-08-13 22:39:54 99
原创 外观模式
1、定义将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口,供上层应用使用2、意图为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用3、角色外观角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。子系统角色:可以同时有...
2019-08-13 22:33:24 78
原创 适配器模式
1、含义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。2、适配器模式的结构:适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。1.类适配器模式:类的适配器模式把适配的类的API转换成为目标类的API模式所涉及的角色有:目标角色:这就是所期待得到的接口。注意:由于这里讨论的是类适配器模式,因此目标不可以是...
2019-08-13 22:29:02 106
原创 创建模式
定义:将一个复杂对象的构建与表示分离,从而一步一步创建一个复杂的对象,使得同样的构建过程可以创建不同的表示。对于使用者来说,无须关心内部的具体构建细节。应用:复杂对象的构建,比如:机车的装配,以及本文视频中所描述的星际争霸中各个飞机的构建等等。为何使用?简言之,是为了解耦合。解除复杂对象的构建过程和具体部件的耦合。过程和部件不再混为一体。前提是复杂对象,否则没有必要。从而达到以下目...
2019-08-07 23:44:06 156
原创 原型模式
1、浅度克隆浅度复制:对于对象中的其他对象的引用复制的其实就是对象的句柄,仍然是同一个对象。我们操作的仍然是同一个对象,改变其中一个对象,另外的对象也会随之发生改变。 这就是浅度复制。public class User implements Cloneable{ //自定义类 public Order o ; public User(Order o) { this.o = o; ...
2019-08-07 23:15:39 84
原创 工厂模式
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
原创 单例模式4种经典写法
1、静态常量(饿汉式)public class Singleton1 { private static final Singleton1 SINGLETON = new Singleton1(); /** * 私有化构造方法 */ private Singleton1() {} /** * 提供公共方法,获取对象 * @return */ public ...
2019-08-07 22:54:39 157
原创 创建型设计模式
1、模式分类架构模式:架构是指一个软件系统整体的组织结构。架构模式描述软件系统的组织结构的一些规则和指南。通过这些规则和指南,我们可以把预定义的、职责明确的子系统有效地组织起来。设计模式:设计模式描述的是在软件系统的某一局部不断重现的核心解决方案,这种解决方案以完善的设计结构出现,可以被应用到以后出现的类似的环境中。和架构模式相比,设计模式关注的是更为微观的问题2、设计模式的分类...
2019-08-07 00:07:47 75
原创 面向对象设计原则
1、高内聚、低耦合内聚度定义:表示一个应用程序的单个单元所负责的任务数量和多样性。内聚与单个类或者单个方法单元相关。好的软件设计应该做到高内聚理想状态下,一个代码单元应该负责一个内聚的任务,也就是说一个任务可以看作是一个逻辑单元。一个方法应该实现一个逻辑操作,一个类应该代表一种类型的实体。内聚原则背后的主要原因是重用。遵循该规则的另一个优点是,当一个应用程序的某些方面需要做出改变时,我...
2019-08-06 23:36:16 101
原创 Java网络编程02
1、TCP套接字编程ServerSocket(服务端)和Socket(客户端)1.ServerSocketjava.net.ServerSocket类用于服务器程序获得一个端口,并监听客户端请求。该类有四个构造器:构造器用法public ServerSocket(int port) throws IOException.创建绑定到特定端口的服务器套接字。如果该端口已...
2019-08-01 23:22:36 95
原创 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
原创 java网络编程01
1、Java对网络编程的支持JDK预定义的网络编程相关类均存放在java.net包中2、InetAddressInetAddress类代表IP地址。该类没有构造器,但是提供多个方法:方法用处getByName(String host)根据主机获取对应的InetAddress对象。该方法是静态方法。getByAddress(byte[] address)根据原...
2019-07-31 22:44:39 163
原创 DTD简单介绍
1、DTD作用:验证XML声明方式:DTD可以声明在XML内部,也可以声明在XML外部1.声明在内部,通过如下语法包含一个内部校验的DTD<!DOCTYPE 根节点 [节点的声明]>2.引入外部DTD<!DOCTYPE 根节点 SYSTEM "外部DTD地址">为何使用DTD:通过 DTD,可以为每一个 XML 文件均可携带一个有关其自身格式的描述...
2019-07-30 23:37:34 446
原创 XML简单介绍
1、作用XML 被设计用来传输和存储数据。2、语法语法:所有 XML 元素都须有关闭标签<元素></元素><元素/>XML 标签区分大小写XML 必须正确地嵌套 错误示例:<table> <reader>...
2019-07-29 23:57:31 117
原创 Java IO流02_字符流
1、字符流字符流用于处理文本文件。所有字符流都继承于抽象类Reader和Writer两个父类。其中Reader为读取字符流的父类, Writer为写入字符流的父类。Reader方法描述int read()从流中读取一个字符,并将其返回,读到末尾返回-1int read(char[] buffer)将流中读出的字符放到字符数组buffer中,返回读出的字符数...
2019-07-29 23:38:43 144
原创 Java IO流02_字节流
1、字节流所有面向字节的流类都继承于InputStream类(输入流)或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能。InputStream方法描述int available()返回可从该输入流中读取的字节数void close()关闭输入流,并释放所有与该流相关联的系统资源abstract int read...
2019-07-25 22:45:46 298
原创 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
原创 Java多线程03_三线程通信
1、线程间的通信需求:在一个线程执行增值后,两个线程进行读取,等待两个线程都读取完成之后再次进行增值。采用了三种方式解决方式一:使用传参确定当前线程和本线程执行完成后开启的下一个线程方式二:使用Set集收集读取过的线程,所有读取功能线程读取完成,开启增值线程方式三:使用Map集收集读取过的线程,所有读取功能线程读取完成,开启增值线程代码示例:Calculation 类public ...
2019-07-24 23:36:31 181
原创 Java多线程02_状态,同步,通信
文章目录1、线程的状态2、线程同步(synchronized—Lock)synchronizedLocksynchronized与lock的区别死锁3、线程之间的相互通讯(wait-notify 机制)生产者和消费者示例1、线程的状态新建:线程创建就绪:使用start()方法启动线程运行:开始执行run()方法挂起:Thread的 yield()方法,让出此次CPU分配的时间阻塞...
2019-07-22 23:56:28 98
原创 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
原创 Java反射
1、定义Java的反射技术是java程序的特征之一,它允许运行中的Java程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。使用反射可以获得Java类中各个成员的名称并显示出来。简单的说,反射就是让你可以通过名称来得到对象(类,属性,方法)的技术。一句话:运行时探究和使用编译时未知的类。2、反射原理对象创建过程:比如要创建Dog类的三个对象 &nbs...
2019-07-16 22:47:10 316
原创 mysql常用语句
DDL:创建数据库creat database gezhi查看所有数据库show databases删除数据库 并且设置数据库编码集drop database gezhi CHARACTER SET ‘UTF8’;使用数据库use gezhi创建表create table student(studentName varchar(20));修改表名alter table st...
2019-07-15 09:46:13 101
原创 使用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
原创 mysql存储过程及流程控制
1、存储过程1)、基本概念基本语法:create procedure 存储过程名字([参数列表])begin sql语句集end;使用delimiter进行修改定义储存过程的结束符默认为;delimiter $create procedure 存储过程名字([参数列表])begin sql语句集end $delimiter ;定义完存储过程记得将结束符修改回来查看...
2019-07-10 23:27:12 334
原创 数据库事务的概述
1、数据库中事务的四大特性(ACID)1)、 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败进行回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。2)、一致性(Consistency)  ...
2019-07-09 22:40:58 604
原创 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
原创 数据库,常用函数及事务的理解
1、日期函数//now() 可以返回系统当前日期时间 2019-07-04 12:53:56select now() from dual;//CURDATE() 返回系统当前日期select CURDATE() from dual; 2019-07-04//CURTIME() 返回系统当前时间select CURTIME() from dual;//...
2019-07-04 22:37:21 324
原创 数据库,DQL03
DQL1、子查询:嵌套在查询中间的查询,叫做子查询子查询可以作用的地方:select 语句,from语句,where语句,group by语句,order by语句,having语句之上作用在select语句:根据两张表,完成关联数据的查询: SELECT ( SELECT stu_name FROM t_student WHERE t_student...
2019-07-03 23:19:38 252
原创 数据库,DQL02
DQL1、limit 分页关键字 //第一个0代表从哪个位置上获取数据 第二个10表示从那个位置开始取10条数据select * from t_student limit 0,10; limit主要用于MySQL数据库进行分页。 //between and 是区间取值select * from t_student where age between 18 a...
2019-07-02 22:55:45 113
原创 数据库,DDL、DML、DQL01
1、DDL:drop table 表的表名; 删除某一张表alter table t_user add COLUMN 字段名 字段的数据类型 字段约束; //给表中添加新的字段例如:alter table t_user add COLUMN is_marry int FIRST | AFTER age;alter table t_user dro...
2019-07-01 21:56:36 189
原创 数据库,DDL
1、SQL语句的作用:使用客户端连接工具和DBMS进行通讯SQL(结构化查询语言,一种用于和DBMS进行数据通讯的语言):DDL、DML、DQL、 DCLSQL语句中,关键字不区分大小写 create === CREATEDDL:数据定义语言 创建,修改,删除 (数据库,表,列,索引,存储过程,视图,函数,触发器……),通常来使用的关键是:create,alter,drop……D...
2019-06-27 22:42:47 103
原创 数据库,mysql5.6.44安装
1.mysql5.6.44 压缩包安装方式由于在用mysql安装版的时候遇到无法启动MYSQL服务”1067 进程意外终止的问题,所以暂时改用压缩包直接安装。Windows安装:下载地址:https://dev.mysql.com/downloads/mysql/5.6.html#downloads下载完之后将文件解压到自己想安装的位置我的位置:E:\ProgrammingTo...
2019-06-27 22:38:33 664
原创 初略介绍类加载与垃圾回收
1.类的加载机制类的生命周期:加载 → 连接 → 初始化 → 使用 → 卸载1.加载:将xxx.calss 读到jvm的内存中加载期间,堆中放有类的类对象(用来访问方法区的类数据)方法区中放类的数据(模板,不变的东西)类加载器:下列名义上是父子但是不是用extends名字加载方向(c++)根加载器(Bootstrap)只加载核心代码 java.*↓...
2019-06-26 22:40:47 195
原创 Java基础测试
问答题:1.请详细描述Java语言的特征(至少6项)简单、结构中立、面向对象、分布式、可移植、高性能、多线程、健壮、动态、安全2. 如下代码的输出结果是_____B_____________Pattern p = Pattern.compile("x.y");String [] values = {"xy", "xay", "xaby", "xa"};for(String value ...
2019-06-25 23:19:39 384
bytestreamdemo.zip
2019-07-25
thread.zip
2019-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人