自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 动态规划(一)

什么是动态规划?     和分治法一样,动态规划(dynamic programming)是通过组合子问题而解决整个问题的解。     分治法是将问题划分成一些独立的子问题,递归地求解各子问题,然后合并子问题的解。     动态规划适用于子问题不是独立的情况,也就是各子问题包含公共的子子问题。     此时,分治法会做许多不必要的工作,即重复地求解公共的子问题。动态规划算法对每个子问题只求解一次,...

2018-07-12 21:31:00 191

原创 递归

一、什么是递归程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递...

2018-07-11 10:10:30 291

原创 Java序列化整合教程

1.什么是序列化    序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。简而言之就是Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。2.为什么需要序列化与反序列化 我们知道,...

2018-06-15 16:11:39 194

原创 模式设计-单例模式

1.什么是单例模式单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。注意:1、单例类只能有一个实例。2、单例类必须自己创建自...

2018-03-27 19:41:23 175

原创 模式设计-代理模式

1.什么是代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决.这就是代理思想在现...

2018-03-27 19:10:07 131

原创 模式设计-装饰者模式

1.什么是装饰者模式装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2.装饰者模式的特点(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象的引用(reference)(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。...

2018-03-26 16:53:44 131

原创 设计模式-策略模式

1.什么是策略模式策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的优点有:策略模式提供了管理相关的算法族的办法、策略模式提供了可以替换继承关系的办法、使用策略模式可以避免使用多重条件转移语句。2.策略模式的组成—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。—具体策略角色:包装了相关的算法和行为。—环境...

2018-03-25 10:25:17 148

原创 设计模式-简单工厂

1.什么是简单工厂简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。2.简单工厂的基本职责该模式中包含的角色及其职责工厂(Creator)角色简单工厂模式的核心,它负责实现...

2018-03-24 09:46:34 157

原创 编译原理文法

1.什么是文法文法是用于描述语言的语法结构的形式规则。任何一种语言都有它自己的文法,不管它是机器语言还是自然语言。就像自然语言里有主谓宾这样的文法一样,机器语言也有描述它语言构成的特定文法2.术语解释终结符和非终结符在计算机科学和语言学的领域是用来指定推导规则的元素。在某个形式语法之中,终结符和非终结符是两个不交的集合。通俗的说,终结符号就是语言中用到的基本元素,一般不能再被分解;名词,动词,形容...

2018-03-24 08:48:01 385

原创 Java8增强的工具类-Arrays

Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组。让我们看看JDK文档是怎么说的:public class Arrays extends Object 此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出...

2018-03-10 10:38:16 134

原创 Java内部类与lambda表达式

最复习的时候发现内部类已经有部分知识开始遗忘了。所以特地抽出时间学习内部类。1.为什么需要使用内部类大部分的时候,类被定义成一个独立的程序单元。内部类就是把一个类放在另一个类的内部,包含内部类的类也被称为外部类。内部类主要有以下作用:a.内部类提供更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类.b.内部类成员可以直接访问外部类私有数据,因为内部类被当做其外部类成员,同一...

2018-03-10 10:23:30 1094

原创 Java虚拟机(四)-HotSpot的算法实现

前面介绍了对象存活判定算法和垃圾收集算法,而在HotSpot虚拟机上实现这些算法时,必须对算法的执行效率有严格的考量,才能保证高效运行。1.枚举根节点从可达分析中从GC Roots节点找引用链这个操作为例,可作为GC Roots的节点主要在全局性引用于执行上下文,现在很多应用仅仅方法区就有数百M,如果要逐个检查必定会消耗很多时间。另外,可达性分析对执行时间的敏感还体现在GC停顿上,这个分析工作必须...

2018-03-08 09:40:47 177

原创 Java虚拟机(三)-垃圾收集算法

前面讲了如何定位要回收的对象,那问题来了,怎么回收对象也是一个问题。1.标记-清除算法这是最基础的收集算法,这就和他的名字,分为“标记”和“清除”两个阶段;首先标记出所有需要回收的对象,在标记完成后统一进行回收,他是最基础的算法,后续的算法都会在这种思维上进行优化改进。他的不足有两个,一个是效率问题,标记和清除效率都不高,第二个是空间问题,标记清除之后会残生大量不连续的内存碎片,空间碎片太多可能会...

2018-03-07 12:15:16 131

转载 Java虚拟机(一)-Java内存区域详解(转载)

一 jvm运行时数据区有哪些我们先来看一张图 JVM运行时数据区分类 1. JVM栈 (Java Virtual Machine Stacks) 2. 堆内存 (Heap Memory) 3. 方法区 (Method Area) 4. 本地方法栈 (Native Method Stacks) 5. 程序计数器 (Program Counter (PC) Register)二 详解数据区2.1 JV...

2018-03-07 11:09:17 129

原创 Java虚拟机(二)-垃圾收集器与内存分配策略

1.概述垃圾收集器,大部分人都会觉得这项技术当做Java语言的伴生产物。但是事实上GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。GC主要需要完成下面三件事情:1.哪些内存需要回收?2.什么时候回收?3.如何回收?当前似乎垃圾回收技术已经十分成熟了,那我们还需要学习吗?答案是肯定的,当需要排除各种内存溢出,内存泄露问题时,当垃圾收集成为系...

2018-03-07 10:14:49 148

原创 java虚拟机(一) --Java内存区域与内存溢出异常(1)

一、概述对于c和c++开发来说,担负着每一个对象生命开始到终结的维护负责。但是对于Java开发者而言,则不需要,因为这一块由Java虚拟机负责,但是不了解Java虚拟机,排错将会成为一件很痛苦的事情二、运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则依赖用...

2018-03-05 08:46:08 180

原创 Java泛型(一)

1.前言一般的类和方法,只能使用具体的类型;要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。在面向对象编程语言中,多态算是一种泛化机制可有的时候,多态对程序的约束还是太强了。因为一旦指明了接口,他就要求代码必须实现。正因为多态并不是很好的解决问题,,JavaSE5引入了泛型的概念有很多原因促成泛型的出现,而最引人注目的一个原因,就是为了创造...

2018-03-01 11:04:07 137

原创 类型信息

运行时类型信息使得你可以在程序运行时发现和使用类型信息它可以使你从只能在编译期执行面向类型的操作的禁锢中解脱了出来,并且可以使用某些非常强大的程序。主要有两种方式:一种是传统的RTTI,它嘉定我们在编译时已经知道了所有的类型;另一种是反射机制,它允许我们在运行时发现和使用类的信息。...

2018-02-27 08:16:25 127

原创 字符串(一)——JAVA

字符串操作是计算机程序设计中最常见的行为1.不可变的StringString对象是不可变的。String类中每一个看起来会修改String值的方法,实际上都只是简单粗暴的创建一个全新的String对象,而最初的String对象是丝毫不动的。示例:package thinkingstring;public class NoChangeStringTest { public static v...

2018-02-24 11:01:27 182

原创 Java枚举类

1.什么是枚举枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型  。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。2.早期的枚举和它所存在的问题/* * @author WLNSSS * @time 2018.1.18 * */public class Test

2018-01-18 22:59:19 927 1

原创 java注解一篇就够了

1.什么是注解注解,可以看作是对 一个 类/方法 的一个扩展的模版,每个 类/方法 按照注解类中的规则,来为 类/方法 注解不同的参数,在用到的地方可以得到不同的 类/方法 中注解的各种参数与值注解也就是Annotation,相信不少人也和我之前一样以为和注释和doc一样,是一段辅助性的文字,其实注解不是这样的。从JDK5开始,java增加了对元数据(描述数据属性的信息)的支持。其实说白就是代码里

2018-01-17 21:49:04 290

原创 PHPunit的配置和使用

[  必要准备配置  ]1、PHP开发环境2、配置PHP环境变量  -  类似与  java  配置环境变量(https://jingyan.baidu.com/article/f00622283dd0c5fbd3f0c893.html)3、安装x-debug,记得开启  php.ini  配置文件里面的  x-debug  扩展4、安装composer,环境变量等5、安装ph

2018-01-15 15:03:53 2920

原创 二叉查找树 java实现

1.什么是二叉查找树二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;(3)左、

2018-01-14 19:31:08 201

转载 java内部类

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲:  一.内部类基础  二.深入理解内部类  三.内部类的使用场景和好处  四.常见的与内部类相关的笔试面试题  若有不正之处,请多谅解并欢迎批评指正。 一

2018-01-03 10:43:49 164

原创 树-孩子兄弟表示法的实现

1.什么是树树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树;图解(灵魂画师)2.树的相关知识节点的

2017-12-26 20:08:05 3680 1

原创

1.栈是什么栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。2.实现方式栈的实现方式主要有两种,一种是数组实

2017-12-20 17:17:15 272

原创 快速排序

1.快速排序综述       快速排序它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.快速排序图解3.代码示例package Quick

2017-12-18 17:12:35 191

原创 java队列

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。每次在队尾插入一个元素是,rear增1;删除一个元素时front增一。队列可以划分为顺序队列,循环队列顺序队列就是建立顺序队列结构必须为其静态分配或动态申请一片连续的存储空

2017-12-06 21:47:00 219

转载 数据库设计-范式

最近做大创项目时候发现一个十分严重的问题,数据库设计严重不合理,每次新增功能就要对数据库进行规模不小的改动,虽然有别的方法可以改动较少,但是要新增关系表。这让我觉得数据库设计是一门很重要的学问,我还是太年轻了。搜了下各位大牛写的帖子大概理解了范式,确实这样设计数据库会使得数据库更合理。侵删首先https://www.zhihu.com/question/24696366但是里面函数

2017-12-01 17:08:01 99

原创 java数据结构 -双链表

最近由于比较忙所以没空写数据结构,趁着下班也写了个双链表package DLinkList;public class DoublelinkList  {public DoublelinkList() {// TODO Auto-generated constructor stubthis.head = new Node(null,null,null);this.

2017-11-28 20:10:41 163

原创 冒泡排序

function maopao(){ $testData = array(1,3,7,4,3,8,3,5,7,21); for($i =0;$icount($testData);$i++) { for ($x = $i + 1; $x count($testData); $x++) { if ($testData[$x] $testData

2017-11-22 17:30:01 165

原创 数据结构(1)-选择排序和插入排序

选择排序趁着下班时候撸了个选择排序,参考了下别人的插入排序选择排序package Test;public class SelectSort {public void sortTest(int arr[]){    for(int i=0;i    {    int flag = i;    for(int x = i+1;x    { 

2017-11-16 17:53:36 143

转载 数据结构(1)-递归

为什么要用递归编程里面估计最让人摸不着头脑的基本算法就是递归了。很多时候我们看明白一个复杂的递归都有点费时间,尤其对模型所描述的问题概念不清的时候,想要自己设计一个递归那么就更是有难度了。很多不理解递归的人(今天在csdn里面看到一个初学者的留言),总认为递归完全没必要,用循环就可以实现,其实这是一种很肤浅的理解。因为递归之所以在程序中能风靡并不是因为他的循环,大家都知道递归分两步

2017-11-12 17:47:03 133

原创 数据结构(1)-线性表

今天看了线性表,顺便自己手打了个线性表IMyTest.javapackage Test;public interface IMyList {//清除线性表public void clear();//判断线性表是否为空public boolean isEmpty();//线性表长度public int length();//指定

2017-11-12 17:41:59 137

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除