编程体系相关基础
算法、数据结构、设计模式、JVM虚拟机、数据库、设计模式、操作系统、计算机网络等基础知识
YEN_csdn
这个作者很懒,什么都没留下…
展开
-
备忘录模式-Memento Pattern
模式概述UML类图题目GitHub源码源码运行结果模式概述 Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later. 在不破坏封装性的前提下,捕获一个对象的内部原创 2017-06-21 11:20:53 · 890 阅读 · 0 评论 -
观察者模式-Observer Pattern
前言GitHub源码题目UML类图代码运行结果补充说明前言 Define a one-to-many dependency between objects so that when one object changes state,all its dependents are notified and updated automatically. 定义对象间一种一对多的依赖原创 2017-06-14 11:25:27 · 756 阅读 · 0 评论 -
责任链模式 - Chain of Responsibility Pattern
模式简介UML图GITHUB源码下载示例代码运行结果模式简介Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request原创 2017-06-07 11:02:35 · 810 阅读 · 0 评论 -
原型模式prototype-发送邮件实例
模式简介UML源码下载题目代码运行结果模式说明C写法模式简介 Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype. 用原型示例指定创建对象的种类,并且通过复制这些原型创建新的对象。UML源原创 2017-05-31 11:59:18 · 1432 阅读 · 0 评论 -
策略模式StrategyPattern
简介UML题目代码基本写法改进写法运行结果简介 Define a family of algorithms,encapsulate each one, and make them interchangeable. 定义一组算法,将每组算法都封装起来.UML题目使用策略模式实现商场收银程序,满足商场随时可能会变化的优惠活动的需求,具体描述如下:收费模式现有3种:1、正常收费原创 2017-05-31 10:56:31 · 846 阅读 · 0 评论 -
外观模式-Facade
前言UML题目源码下载地址代码基础的类外观类客户端测试运行结果前言 Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. 要求一个子原创 2017-05-17 11:16:36 · 850 阅读 · 2 评论 -
适配器模式Adapter
前言示例说明源码下载类适配器模式UML示例代码测试结果对象适配器模式UML示例代码测试结果前言 Convert the interface of a class into another interface clients expect.Adapter lets classes work together that couldn’t otherwise because o原创 2017-05-10 22:24:46 · 980 阅读 · 0 评论 -
装饰模式(Decorator)
GitHub地址装饰模式概述题目UML类图代码运行结果GitHub地址https://github.com/YEN-GitHub/PatternDemo/tree/master/src/StructuralPattern/DecoratorPattern装饰模式概述 Provide a surrogate or placeholder for another object to con原创 2017-05-03 13:43:17 · 1153 阅读 · 0 评论 -
组合模式
模式概述UML类图题目程序定义抽象构件接口叶子节点分支节点客户端测试代码运行结果模式概述 Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of o原创 2017-05-03 12:02:35 · 1037 阅读 · 0 评论 -
工厂方法模式
工厂方法模式: Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses. 定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使原创 2017-03-22 09:41:50 · 501 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式: Provide an interface for creating families of related or dependent objects without specifying their concrete classes. 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。例子:package CreationalPattern.abstractF原创 2017-03-22 10:06:03 · 450 阅读 · 0 评论 -
代理模式
Provide a surrogate or placeholder for another object to control access to it. 为其他对象提供一个代理以控制对这个对象的访问。源码:https://github.com/YEN-GitHub/PatternDemo/tree/master/src/StructuralPattern/proxyPatternUML类原创 2017-04-05 11:15:41 · 869 阅读 · 0 评论 -
建造者模式
Separate the construction of a complex object from its representation so that the same construction process can create different representations. 将一个复杂的对象的建造过程与他的表示分离,使得同样的建造过程可以创建不同的表示。题目: 请用生成器模原创 2017-04-05 11:46:40 · 721 阅读 · 0 评论 -
ArrayList的实现
ArrayList泛型类的实现。 内部类实现方式源码:package main.java.arraydemo;import java.util.Iterator;/** * DateTime: 2016/11/4 09:42 * 功能:实现ArrayList泛型类的实现: * MyArrayList将保持基础数组,数组的容量,以及存储在MyArrayList中的当前项数; *原创 2016-11-04 10:38:59 · 801 阅读 · 0 评论 -
LinkedList的实现
package main.java.LinkedListdemo;import java.util.ConcurrentModificationException;import java.util.Iterator;import java.util.NoSuchElementException;/** * DateTime: 2016/11/4 15:02 * 功能: * 思路: */p原创 2016-11-07 13:21:08 · 719 阅读 · 0 评论 -
算法——大整数乘法
import java.util.Scanner;/** * DateTime: 2016/10/28 08:55 * 功能:大整数乘法 * 思路:把数值存在数组中,每次取其中两位来计算,这样就不会存不下 */public class BigInt { private static final int MAXA=400; private static final int MA原创 2016-10-28 09:40:17 · 1215 阅读 · 0 评论 -
设计模式——建造者模式
概述 建造者模式又称为生成器模式,是一种较为复杂,使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。客户端无需知道复杂对象的内部组成部分与装配部分,只需知道所需的创建者类型即可。建造者模式关注如何一步一步得创建一个复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者很方便吗无需修改已有代码,系统具有良好的扩原创 2016-10-23 15:09:10 · 815 阅读 · 0 评论 -
Map映射—Java实现—LinkedHashMap、HashMap、TreeMap
映射是一种键值对存储数据结构。 Map接口和List不同的是Map并没有实现Collection接口。 映射数据结构有一个性质:一个键在映射中只出现一次,如果插入同一个键,那么这个键原来的值就会被覆盖。HashMap是Java的散列表的实现,这个类包含一个内部类Entry,用来表示键值对,元素保存在Entry中。保存键时会调用hashCode方法。TreeMap是Map接口的另一个实现,这个实现原创 2016-10-21 20:04:43 · 1547 阅读 · 0 评论 -
二叉树JAVA实现
二叉树是一种常用的数据结构,每一个元素最多有两棵子树。在二叉搜索树中,“小于等于”指定节点元素的元素被放到左子树,“大于”指定节点元素的元素放到右子树。二叉树的定义:package tree;/** * DateTime: 2016/10/21 16:08 * 功能:一棵树的定义 * 思路: */public class SimpleTree<T extends Comparable>原创 2016-10-21 18:10:45 · 1132 阅读 · 2 评论 -
MySQL优化之——高效插入0-N这N个整数
插入0-N这N个整数,首先,创建一个表和一个存储过程:#创建一个存数据的表CREATE TABLE tb_nums (a INT NOT NULL PRIMARY KEY) ENGINE = INNODB;#创建存储过程CREATE PROCEDURE pCreateNums (x INT UNSIGNED)BEGINDECLARE s INT UNSIGNED DEFAULT (1);TRU原创 2016-10-17 16:18:21 · 1079 阅读 · 0 评论 -
数据库基础知识汇总
最近在复习期末考,就顺便把这些笔记保存下来,也方便以后查看,涉及的都是一些基础知识,大牛就勿喷啊,有错误之处欢迎指教~~~~首先,当然得记住一些常用的词汇啊!!!下面就把会出现的词汇都大概的总结出来,方便查看,省得满文章的去找(英语好的就自行跳过吧!)。当然,不是纯纯的单词翻译,后面跟的文字可能是翻译也可能是他用到的地方。-DBCC ShrinkDataBase :收缩数据库 - Constra原创 2016-07-03 15:46:53 · 37620 阅读 · 6 评论 -
MySQL存储引擎及其面向的数据库应用
MySQL数据库中一些常用的存储引擎及面向的数据库应用:InnoDB存储引擎支持事务,设计目标主要是联机事务处理(OLTP)的应用。 特点是:行锁设计、支持外键、并支持类似Orcale的非锁定表,即默认读取操作不会产生锁。是MySQL5.5.8版本依赖默认的存储引擎。InnoDB通过使用多版本并发控制(MVCC)来获得高并发,并且实现了SQL标准的四种隔离级别,默认是Repeatable,同时使用原创 2016-10-17 14:25:04 · 515 阅读 · 0 评论 -
MySQL数据类型
类型属性UNSIGNED UNSIGNED属性就是将数字类型无符号化。ZEROFILL 如果宽度小于设定的宽度,则自动填充0。时间和日期类型 类型 所占空间 说明 DATETIME 8字节 日期范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59 DATE 3字节 日期范围:1000-01-01 到 9999-12-31原创 2016-10-17 15:30:30 · 508 阅读 · 0 评论 -
MySQL查询处理——逻辑查询处理和物理查询处理
对于查询处理,可将其分为逻辑查询处理和物理查询处理。逻辑查询处理表示执行查询应该产生什么样的结果,而物理查询代表MySQL数据库是如何得到结果的。逻辑查询处理MySQL真正的执行顺序如下:(8)SELECT (9)DISTINCT<select_list>(1)FROM <left_table>(3)<join_type>JOIN<right_table>(2) ON <join_co原创 2016-10-18 14:47:09 · 4274 阅读 · 0 评论 -
众数问题
问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,多重集合S中重数最大的元素称为众数。 例如:S={1,2,2,3,5}.多重集S的众数是2,其重数是3.解法:import java.util.*;/** * DateTime: 2016/10/6 07:50 * 功能:众数问题 * 思路: */public class Topic2_1 { pu原创 2016-10-06 11:27:52 · 1403 阅读 · 0 评论 -
半数集问题和半数集单集问题
问题描述: 给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。 注意半数集是多重集。其实很容易想到使用递归实现,算原创 2016-10-06 12:18:52 · 5558 阅读 · 1 评论 -
排序算法——冒泡排序
重复的走访要排序的数列,一次比较两个元素,如果遇到顺序错误就把他们交换过来,重复直到没有需要交换的,就说明已经排好序了。流程:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。原创 2016-10-10 21:36:30 · 580 阅读 · 0 评论 -
排序算法——归并排序
归并排序,采用的是分治法,各层的分治递归可同时进行。 关于排序原理,我们可以先看一个小动画(图片来自:维基百科)。 归并排序(Mergesort)时间空间复杂度(图片来自:程序师) 看一下归并排序的伪代码:伪代码:method mergersort(List list) if list.size < 2 return list let middleIndex=list原创 2016-10-15 12:26:12 · 596 阅读 · 0 评论 -
排序算法——快速排序
快速排序又称划分交换排序,快速排序使用分治法策略来把一个序列分为两个子序列。递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了/*伪代码:method quicksort(list list): if list.size<2 return list let pivot=list(0) let lower=new list let h原创 2016-10-15 12:47:32 · 744 阅读 · 0 评论 -
设计模式:单例模式及其线程安全
单例模式确实已经接触了好久了,现在就着线程安全对这个设计模式做一个总结(顺序:单例模式基础->单例模式线程安全->线程安全的基础上改进效率->防止Java反射机制再创建对象),有错误之处请指教。单例模式的本质就是要控制类的实例的个数,就是要保证每个类只能有一个实例对象。 单例模式实现的方式就是: - 构造函数私有化; - 创建一个本类对象; - 提供方法返回这个对象;单例模原创 2016-06-18 10:38:20 · 830 阅读 · 0 评论 -
工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式
工厂模式适合凡是出现大量对象需要创建,而且这些对象拥有相同的接口,可以使用工厂模式进行创建。简单工厂模式 简单工厂模式分为三种:普通工厂模式、多个方法工厂模式、静态方法工厂模式以发送QQ消息或者微信消息为例来说明: 普通工厂模式/** * 两种共同的接口 */public interface Message { public void send();}//QQ消息public原创 2016-07-25 22:45:40 · 1063 阅读 · 0 评论 -
设计模式:原型模式
概述 当我们创造一个类的一个实例很复杂,并且需要创建多个这样的类的实例时,如果用new操作符去创建这样的类实例,这会增加类的复杂度和耗费更多的内存空间,因为这样在内存中分配了多个一样的类实例对象,如果采用工厂模式创建的话,随着产品类的不断增加,导致子类数量不断增多,又会增加系统的复杂度。原型模式的思想是:只创建一个类实例对象,如果后面需要更多的类实例,可以通过原来的对象拷贝一份来完成创建,这样在内原创 2016-07-26 21:10:31 · 421 阅读 · 0 评论 -
设计模式概述
模式是在特定环境下人们解决某类重复出现问题的一套成功或者有效的解决方案。 软件模式是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板。软件模式并非只限于设计模式,还包括架构模式、分析模式和过程模式。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码经验设计的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码的可靠性。 设计模式分为创建型原创 2016-07-30 13:31:59 · 487 阅读 · 0 评论 -
JAVA集合框架学习总结
集合框架 HashMap HashSet Hashtable LinkedHashMap LinkedHashSet ArrayList LinkedList原创 2016-06-07 10:12:05 · 4140 阅读 · 1 评论 -
Java中Fail-Fast机制、ConcurrentModificationException异常
ConcurrentModificationException 异常:当方法检测到对象的并发修改,但不允许修改时就会抛出这个异常。Fail-Fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合操作时就可能会产生Fail-Fast 事件。 比如:有两个线程A和B,线程A通过iterator 遍历集合T中的元素时,某个时候线程B修改了集合T的结构,此时就会产生F原创 2016-06-07 20:58:27 · 1066 阅读 · 0 评论 -
Java集合框架使用场景
不需要唯一用List 需要快速插入、删除元素:用LinkedList 需要快速访问元素: |–单线程环境:用ArrayList |–多线程环境:用Vector 需要先进后出的特殊结构用Stack需要唯一用Set 需要指定的顺序:TreeSet 不需要指定的顺序:HashSet 需要得到与存储一致的顺序:LinkedHashSet存储的是键值对用Map 涉及堆栈、队原创 2016-06-14 10:02:26 · 3714 阅读 · 3 评论 -
多线程的实现基础知识总结
多线程是在同一程序内部并行执行,因此会对相同的内存空间进行并发读写操作。Java中实先多线程的方式主要有如下几种:1.继承Tread类2.实现Runable接口3.实现Callable接口(应用程序可以使用Executor框架来创建线程池)。其中最常见的是继承Tread类和实现Runable接口这两种方式。这两种方式的话一般选择实现Runable接口,因为实现Runable接口比继承Trea原创 2016-06-14 22:05:00 · 743 阅读 · 0 评论 -
多线程执行时为什么调用的是start()方法而不是run()方法
Thead类中start()方法和run()方法的区别 start()用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thead类中start()方法来启动的线程处于就绪状态(可运行状态),此时并没有运行,一旦得到CPU时间片,就自动开始执行run()方法。此时不需要等待run()方法执行完也可以继续执行下面的代码,所以也由此看出run()方法并没有实现多线程。原创 2016-06-15 11:34:25 · 10950 阅读 · 5 评论 -
关于线程的中断机制
Java中没有提供任何的机制来安全的终止线程,那我们应该怎么让线程停止或者中断呢? java停止或中断线程有下列方式: 1.调用Thread.stop() 2.利用Thread.interrupt()方法和机制调用Thread.stop() 使用这种方法强迫停止一个线程,并抛出一个新创建的ThreadDeath对象作为异常,停止一个还未启动的线程也是允许的,如果稍后启动该线程,他会立即终止。原创 2016-06-15 13:08:14 · 3407 阅读 · 0 评论 -
线程的生命周期与常用方法
线程的生命周期一共五个状态:新建、就绪、运行、堵塞、死亡 (1)新建 new Thread Thread thread=new Thread(); 当创建一个Thread对象时,这个线程就进入了新建状态,有了自己的内存空间,但还没有启动,此时线程还不是活的。 (2)就绪 runable 线程已经启动,正在等待CPU时间片。(通过线程的start()方法启动线程后进入就绪状态),此时具备运原创 2016-06-15 14:24:28 · 1180 阅读 · 0 评论