自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java基础-----(反射)

1.什么是反射?    引用百度百科的解释。java反射机制是在运行状态中,对于任意一个实体类,都能够知道这个实体类的所有属性和方法;对于任意一个对象,都能够调用他的属性和方法;这种动态获取类信息以及调用对象方法的功能称为java语言的反射机制。2.反射可以做什么?     我们知道反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,包括包括其modifiers(修饰符...

2019-01-07 14:04:08 145

原创 数据结构和算法(8)-----堆

在数据结构和算法(5)-----队列中我们介绍了优先级队列,优先级队列是一种抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,优先级队列可以用有序数组来实现,这种实现方式尽管删除最大数据项的时间复杂度为O(1),但是插入还是需要较长的时间 O(N),因为每次插入平均需要移动一半的数据项,来保证插入后,数组依旧有序。  本篇博客我们介绍另外一种数据结构—...

2018-12-28 17:12:48 179

原创 数据结构和算法(7)-----二叉树

接下来我们将会介绍另外一种数据结构——树。二叉树是树这种数据结构的一员,后面我们还会介绍红黑树,2-3-4树等数据结构。那么为什么要使用树?它有什么优点?  前面我们介绍数组的数据结构,我们知道对于有序数组,查找很快,并介绍可以通过二分法查找,但是想要在有序数组中插入一个数据项,就必须先找到插入数据项的位置,然后将所有插入位置后面的数据项全部向后移动一位,来给新数据腾出空间,平均来讲要移动N/...

2018-12-24 23:27:09 200

原创 数据结构和算法(5)-----队列

1、队列的基本概念队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。  队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在...

2018-12-24 15:37:48 410

原创 数据结构和算法(4)-----算法的时间复杂度和空间复杂度

1.算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度。记作:T(n)=O(f(n))。它表示随问题n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中,f(n)是问题规模n的某个函数。    这样用大写O()来...

2018-12-24 12:17:53 255

原创 数据结构和算法(3)-----栈

1、栈的基本概念 栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。  栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删...

2018-12-24 11:28:50 137

原创 数据结构和算法(2)-----数组

1.JAVA数据介绍在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型(Object类型数组除外)。①、数组的声明第一种方式:数据类型 []  数组名称 = new 数据类型[数组长度];第二种方式:数据类型 [] 数组名称 = {数组元素1,数组元素2,......}这种方式声明数组的同时直接给定了数组的元素,数组的大小由给定的数组元素个...

2018-12-24 10:31:03 105

原创 Maven-----idea最简单方式打出可执行jar

依赖插件: <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true&

2018-12-21 15:47:06 303

原创 java基础(11)-----CallBackListener监听回调

直接贴一个小demo吧AbstractCallBackListener类:/** * 监听回调抽象类 * @author zisong yue * @date 2018-12-05 */public abstract class AbstratCallBackListener { void callBackOnStateChang(String message){};...

2018-12-05 14:36:39 1474

原创 java基础(10)-----JDK中观察者模式和事件驱动模型源码解析

      引用百度百科,观察者模式概念:观察者模式(Observer)是软件设计模式的一种,在此模式中,一个目标物件管理所有依附于它的所有观察者物件,并且在它本身的状态发生改变时主动发出通知。这通常通过呼叫观察者实现的方法来实现,此种常被用来实现事件处理系统,例如事件驱动模型1.JDK中的观察者模式设计用一个UML图看下JDK提供了我们哪些接口和类:Observer:观察者。...

2018-12-03 14:31:34 348 1

原创 数据结构和算法(6)-----链表

1.链表和数组的比较1).数组作为数据存储的一种结构,有一定的缺陷,比如无序数组搜索效率低,有序数组插入效率低,两者删除效率都比较低。而且在创建数组的时候需要指定数组的大小,如果无法提前预知大小,数组的动态扩展也是件麻烦事(netty的bytebuf是动态扩展的数组,有时间可以看看怎么实现的),给的值足够大的话,会造成不必要的内存开销。那么链表呢,可以有效解决扩容的问题。2).数组可以用来...

2018-11-30 13:57:50 133

原创 数据结构和算法(1)-----简介

数据结构和算法是编程的基础,优秀的开源项目和JDK源码可以看到里面充斥着这些,那,如果你觉得看这些源码吃力的话,比如netty中使用了双向链表,如果你练概念都不清楚,就更别谈能不能看懂了,看了网上其他人的文章,有的写的真的非常好,我就借鉴一下,顺便把自己的理解也share下。1.数据结构数据结构:计算机存储和组织数据的一种方式,指相互之间存在一种或多种特定关系的元素的集合数据结构的基本...

2018-11-30 11:32:17 138

原创 java基础(9)-----Future和Callable

     在多线程协作场景中,我们可以通过继承Thread或者实现Runnable接口。但是,Runnable接口并没有返回值,如果我们需要之前的执行结果,发现没辙了;这个时候出现了Callable和Future,通过实现Callable接口得到执行结果;通过Future获取、监视、控制执行结果。1.Callable和Runnable的区别通过源码我们一起看下,Callable接口:...

2018-11-26 15:50:00 4274 2

原创 java基础(8)-----Lock and synchronized

     synchronized可以实现同步,为什么我们还需要Lock呢?jdk5之后增加了一个新的包java.util.concurrent,java在这里提供了新的并发编程的工具,其中下面的Locks包都是关于Lock这一部分的,如图:1.和synchronized比较     synchronized可以修饰变量、代码块、方法,对象中有这个关键字的代码被访问的时候,线程就可以获...

2018-11-22 11:57:24 249

原创 java基础(7)-----管道pipedInputStream和pipedOutputStream

1.介绍    网上已经有很多关于管道介绍和源码分析的文章,有相当一部分对管道的介绍是这样子的:用于多线程之间的通信,又叫做管道通信。总感觉这样的说法不太准确,也非常含糊,java管道的设计,就决定了要使用管道,起码要两个线程,因为同一个线程内使用管道,会造成死锁,而多线程之间的通信只是管道的一个附属品,并不是他的用处,他的用处在于,管道可以创建一个循环数组缓冲区,这是他的核心,所以说,对于管...

2018-11-20 15:22:06 383

原创 java基础(6)-----对象和方法的作用域

java的作用域有四个,分别是public、protected、default(friendly)、private。作用域即:对象之间访问权限的控制。下面对四个作用域说明下:public修饰符:对象本身、同一个包下、子类、其他包下对象都可以调用protected修饰符:对象本身、同一个包下、子类对象可以调用default修饰符:对象本身、同一个包下对象可以调用private修饰符:...

2018-11-20 11:15:05 1931

转载 java基础(5)-----设计模式-单例(Singleton)

写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据。但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像findbugs等代码检查工具还会认为使用System.out.println()是一个bug。为什么作为Java新手神器的System.out.println(),到了真正项目开发当中会被唾弃呢?...

2018-11-01 15:09:00 108

原创 敏捷开发---scrum认知和实践

scrum是一个开发和维护复杂产品的管理框架,是一个增量的,迭代的开发过程。整个开发过程分为若干个迭代周期,每个迭代周期称为一个sprint,一个sprint周期一般是1到4周,相对于传统的瀑布式开发(需求-设计-开发-测试),项目失败的概率更低,可控性更高。基本概念三个角色(Role):产品经理:Product Owner项目经理:Scrum Master项目团队:Scrum...

2018-11-01 13:43:19 246

原创 java基础(4)-----序列化

什么是序列化?我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。本文对常见的几种序列化的方式介绍下并做了简单的对比,有java原生序列化(serialize)、json序列化(jackson)、fastjson序列化1.java原生序列化public class JavaSerialize { public stati...

2018-10-31 17:06:30 344

原创 java基础(3)-----泛型

1.概述(什么是泛型?)泛型,即“参数化类型”,顾名思义,将具体的类型参数化,在调用的时候再传入具体的类型2.一个简单的例子public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("qqy...

2018-10-31 14:50:40 206

原创 java基础(2)-----枚举

JDK1.5之后引入了新的类型-枚举,本质就是继承了Enum类,下面是工作中我们可能要用到的一些场景,示例附带测试代码,大家可以直接黏贴进行测试,加深理解,有不足的地方,欢迎指导。一、最简单的用法--常量public enum Color { GREEN,RED,YELLOW; public static void main(String[] args) { ...

2018-10-23 17:30:33 116

原创 java基础(1)-----编写并运行第一个java程序

 下面是一个简单的java程序,将在控制台输出hello worldpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); }}下面将逐步介绍该段程序的编辑、保存、运行步骤使用任一编辑器新建文本,我这里...

2018-10-23 14:20:43 487 1

空空如也

空空如也

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

TA关注的人

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