- 博客(53)
- 资源 (2)
- 收藏
- 关注
原创 Java注解学习总结
1、注解的作用 java注解有两个作用:1、它不是程序的本身,可以对程序做出解释(这一点和我们的注释区别不大,比如我们的@Deprecated 它表示的是我们当前的代码已废弃或存在风险,不建议使用);2、可以被其他程序读取(比如我们的编辑器读取)。java的注解是jdk1.5以后的版本加入的功能,它的包是java.lang.annotation。对于注解我的理解是它使我们的程序更加的优雅,让我们在某种业务场景上可以更灵活方便的处理。api中我们常用的内置注解有:@Override、@De...
2021-06-30 22:51:47 206 2
原创 java学习之:HashMap源码分析
HashMap的put操作源码学习一、HaspMap集合简介二、HashMap的数据结构2.1 put操作2.2 扩容机制2.3 继承关系一、HaspMap集合简介基于哈希表的 Map接口的实现。这种实现提供了所有可选的Map操作,并允许 null值和 null关键。(这 HashMap类大致相当于 Hashtable,除了它是不同步的,允许空值。)此外hashMap中的映射不是有序的。在jdk1.8以前,HashMap由数组和链表组成,数组是HaspMap的主体,而链表则是为了解决哈希冲突而引入的结
2020-06-09 01:21:24 329
原创 java学习之:JVM学习与总结
初始JVM虚拟机一、JVM结构1、jvm概述2、jvm体系结构2.1 Class Loader SubSystem2.2 运行时数据区3.2 执行引擎二、JVM分代介绍1、新生代1.1 Eden1.2 Survivor2、老年代三、JVM垃圾回收算法1 、引用计数(Reference Counting)2、复制(copying)3、标记-清除(Mark Sweep)4、标记-整理(Mark-Compact)四、垃圾收集器1、Serial2、ParNew3、Parallel Scaverage4、CMS5、S
2020-06-05 01:54:58 268
原创 数据结构之:哈希表
数据结构学习之:哈希表一、哈希表概述二、散列函数的设计1、直接定址法2、数据分析法3、平方取中法4、取余法5、随机法三、散列冲突解决方案1、开放地址法线性探测法二次探测法再哈希法2、链地址法一、哈希表概述哈希表又称为散列表,哈希表是一种重要的数据结构,像java中的HashMap,HashSet、HashTable等等都是基于哈希表创建的集合类容器。像这些容器它的优势就是查找效率高,因此我们知道,哈希表其实是为了提高数据查找效率的一种数据结构。如下图所示,其实哈希表就是通过散列函数创建的一种对应关系表,
2020-05-29 01:00:16 1021
原创 数据结构之:多路查找树
数据结构学习之:多路查找树一、计算机存储概述二、B树和B+树1、B数2、B+数一、计算机存储概述计算机的存储一般分为两种:1、内存存储,2、硬盘存储内存的存储一般用作cpu的高速缓存,而我们的硬盘的数据可永久存储。现在我们使用的硬盘一般分为机械硬盘和固态硬盘两种,前者的读取数据速度较慢,但是造价低,后者读取数据速度快,但是造价较高。考虑到成本因数,一般较多使用的还是机械硬盘。因为机械硬盘的读取数据较慢,所以我们在读取机械硬盘的数据时,要尽量减少IO操作。通常情况下,计算机在读取数据的时候,不会将全部的
2020-05-28 00:51:12 183
原创 数据结构之:平衡二叉树
数据结构学习之:平衡二叉树一、 平衡二叉树概述二、平衡二叉树单旋转1、右旋转2、右旋转三、平衡二叉树双旋转四、代码实现平衡二叉树的单、双旋转一、 平衡二叉树概述平衡二叉树(AVL树)按个人理解其实是对二叉排序树的一个升级,它其实是解决二叉排序树的一个缺陷,那么二叉排序树存在怎样的缺陷?我们知道二叉排序的查找效率是相对比较高的,不过对于下图这种二叉排序树,它的查找效率并不会提升。平衡二叉树的出现就是为了解决这种缺陷问题,对我们的二叉树做一个平衡,以便保证它的查询效率,那怎样才能算是一棵平衡二叉树呢?我
2020-05-27 00:55:21 364
原创 数据结构之: 二叉排序树
数据结构学习之:二叉排序树二叉排序树概述二叉排序树代码实现二叉排序树概述二叉排序树的规则比较简单:二叉排序树又名二叉搜索树(BST),对于二叉树中任何一个叶子节点,要求其左子节点小于当前节点,右子节点大于当前节点。根据名字我们可以知道这种二叉树结构它的查找效率是比较高的如图所示:它的中序遍历为:1 3 5 7 10 19 23其实二叉排序树的中序遍历就是一个有序的数组二叉排序树代码实现package tree;/** * 二叉排序树 */public class SortBinar
2020-05-24 21:28:25 329
原创 数据结构之:赫夫曼树
数据结构学习之:赫夫曼树1、赫夫曼书概述2、赫夫曼树的编码实现3 、赫夫曼编码概述4、赫夫曼编码代码实现4.1 数据压缩与解压4.2 赫夫曼编码压缩解压文件1、赫夫曼书概述赫夫曼树又称为最优二叉树,那什么叫做最优二叉树呢?最优二叉树是指n个叶子节点构成的所有二叉树中,带权路径最小的一个。我们用wpl来表示树的带权路径长度,如下图所示:图a的带权路径长度 wpl = 92+42+52+22 = 40图b的带权路径长度 wpl = 91+52+43+23 = 37图c的带权路径长度
2020-05-24 19:39:43 660
原创 数据结构之:线索二叉树
数据结构学习之:线索二叉树线索二叉树1、线索二叉树概述1.1 线索二叉树的使用背景1.2线索二叉树创建原理2、线索二叉树代码实现2.1 线索二叉树创建线索二叉树1、线索二叉树概述1.1 线索二叉树的使用背景对于一颗二叉树而言(如下图所示),每次我们想要查找二叉树里面的一个节点的时候,我们都必须遍历这棵树,以中序遍历为例,遍历的顺序为4251637,当我们遍历到标号为5这个节点的时候,如果有个指针指向5的前一个节点2或者后一个节点1的话,那么我们跳转到2或者1的效率肯定会大大的提升,那我们在哪里去创建
2020-05-22 22:35:41 474
原创 数据结构之:树结构
一、树的概念1、定义我们先来看看树的形式化定义:算法的集合树(Tree)是由一个或多个结点组成的有限集合T,其中有一个特定的称为根的结点;其余结点可分为(m≥0)个互不相交的有限集T1,T2,T3,…,Tm,每一个集合本身又是一棵树,且称为根的子树。按照自己的理解,我们可以认为树其实是一种抽象的数据结构,数据之间的关系就像是树的形状一样如下图所示:从A(根节点出发),可以散发子节点(B、C、D),子节点又可以散发子节点,直到散发到叶子节点(E、F、G、H、I、J)结束。2、树的专用术语1、根
2020-05-21 01:06:23 640
原创 数据结构之:八常用排序算法总结
数据结构学习之:排序算法总结常用排序算法一、交换排序1、冒泡排序功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入常用排序算法 了解数据结构,对于我们开发者而言是非常必要的,而排序算法更是我们必须要了解和掌握的知识,在这
2020-05-17 23:38:17 420
原创 Java设计模式——行为型模式之访问者模式
一、前言 我们在项目开发中,访问者模式的使用还是比较少的。访问者模式主要是为了将数据结构和数据操作做分离。所以我们在使用这种设计模式的时候常常会要求我们的数据结构不要轻易做出改变,它主要是我了解决稳定的数据结构和易变的操作耦合问题。二、访问者模式概述:表示一个作用于某对象结构中的各元素的操作。 它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。使用场景:1.一...
2019-03-03 15:16:44 169
原创 Java设计模式——行为型模式之模板模式
一、前言 在我们的某些项目中,一些流程步骤或者算法往往都已经是固定好了的,唯一不同的是这些流程步骤或者算法中,某一个小的步骤有不同的实现方式。我们将这些不同实现方式的步骤抽取出来,将整个流程或者算法固定住,不允许子类改变,子类唯一可以做的就是现实父类中抽象的步骤或者方法。这种结构的设计模式我们称之为模板模式。二、模板模式概述:在模板模式(Template Pattern)中,一个抽...
2019-03-03 14:49:18 157
原创 Java设计模式——行为型模式之策略模式
一、前言 策略模式是我们在项目设计中会经常用到的一种设计模式。在一些场景中,一些算法或者类的行为需要改变,如果用传统的继承来实现的话,会使得代码的设计不合理,而且在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。策略模式就是为了解决这个些算法或者类的行为需要改变的场景。二、策略模式概述:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得...
2019-03-03 00:11:26 185
原创 Java设计模式——行为型模式之状态模式
一、前言 对象在不同的状态可能会有不同的行为方式,当我们的状态发生改变的时候,我们相应的行为也要发生改变,状态模式就是为了处理这样的场景而设计出来的一种开发模式。状态模式主要是为了解决对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。二、状态模式概念:在状态模式(State Pattern)中,类的行为是基于它的状态改变的。当我们的代码中包含大量与...
2019-03-02 00:23:55 182
原创 Java设计模式——行为型模式之观察者模式
一、前言 在生活中我们会遇到这样的场景:用水壶烧开水。当水烧开时,你会有一个关火的过程。在烧水的过程中,你一直观察着这个烧水的进度,当它的状态改变时会触发你关火的这个动作。观察者模式就是处理这种场景而设计出来的一种设计模式。二、观察者模式概述: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式是为了处理一个...
2019-02-28 23:37:01 233
原创 Java设计模式——行为型模式之备忘录模式
一、前言 备忘录模式的概念对我们来说非常容易理解,像我们在玩象棋或者其它策略类游戏时,经常有回退上一步的动作,这种设计模式就是为了解决用户某些误操作而需要回退的问题。二、备忘录模式概述:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 在代码中我们是通过编写一个备忘录的类来专门储存对象状态。...
2019-02-27 23:30:32 203
原创 Java设计模式——行为型模式之中介者模式
一、前言 中介者模式的概念就像我们生活中的中介一样,它的职责就是处理不同类与对象之间的通信,降低了 它们通信的复杂度,这种设计模式支持松耦合,且代码易于维护。二、中介者模式 概述:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式主要解决对象与对象之间存在大量的关联关系,这样势必...
2019-02-26 23:14:03 127
原创 Java设计模式——行为型模式之迭代器模式
一、前言 迭代器模式是Java中常用的设计模式,我们在遍历访问集合元素的时候,使用的 iterator就是迭代模式。这种模式的访问不需要知道集合对象的底层表示。迭代模式有几个我们经常用到的关键代码:hasNext, next。二、迭代模式概述:迭代模式的使用就是为了提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。使用场景: 1.访问一个聚...
2019-02-26 23:01:48 160
原创 Java设计模式——行为型模式之解释器模式
一、前言 解释器模式,就像我们生活场景中的翻译一样,它给定某种语言,并定义它的文法表示,解释器通过这种标识来对语句进行翻译。解释器模式一般很少用于我们的代码开发中,不到万不得已我们是不会考虑 解释器这种设计模式的。因为这种设计模式应用场景很少,而且需要的类也很多,很容易引起类膨胀,复杂的语法也使得其难以维护。二、解释器模式概述:给定一个语言,定义它的文法的一种表示,并定义一个解释器...
2019-02-21 23:12:27 155
原创 Java设计模式——行为型模式之命令模式
一、前言 命令模式一种数据驱动的设计模式,属于行为型的设计模式,在我们生活中常常会见到命令模式的场景,比如说家中的电路开关,电视遥控器,空调遥控器等等。命令模式将命令封装成一个对象 ,这样就可以用不同的请求对客户进行参数化。命令模式的存在主要是为了处理一些特定场景下请求方与处理方之间的耦合关系,比如说日志的记录、消息的撤销、事务的处理等等。二、命令模式概述:将一个请...
2019-02-20 23:19:11 150
原创 Java设计模式——行为型模式之责任链模式
一、前言 责任链模式将请求的处理类链接在一起,请求发送方不需要关心谁处理这个请求,接受方也不需要知道目前这个请求是谁发出的,在处理这个请求的时候,接受者根据职责链依次往下寻找能处理该请求的类,直到找到为止。这种设计模式将请求者和接受者进行了解耦。二、职责链模式概述: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链, 并沿着这条链传递...
2019-02-18 23:56:05 168
原创 Java设计模式——结构型模式之代理模式
一、前言 我们在生活中经常会听到什么代理商,或者中间商之类的名词,他们的存在隐藏了真实厂商的存在,在我们java中,代理模式的设计就是为其他对象提供一种代理以控制对这个对象的访问。简单来说就是在真正实现类上再套一个代理类,用户调用的是代理类的方法或者接口,但真正实现的是这个被包装的类的方法。代理模式与装饰模式有点相似,但它们却有很大区别,装饰模式是增加或者减少额外的职责,而代理模式不添...
2019-02-16 23:38:55 124
原创 Java设计模式——结构型模式之享元模式
一、前言享元模式的设计初衷是为了支持大量细粒度对象。在我们的某些系统中,可能会有大量的对象产生,造成很大的储存开销,比如说连接数据库的session对象,我们通过缓存池来管理这些session。享元模式就是为了解决这种内存开销问题,享元模式属于结构型的设计模式。二、享元模式概述:运用共享技术有效地支持大量细粒度的对象。主要用于减少创建对象的数量,以减少内存占用和提高性能。享元模式的...
2019-02-16 00:22:22 213
原创 Java设计模式——结构型模式之外观模式
一、前言今天我们一起来学习外观模式。外观模式为用户提供一个统一的facade高层接口,我们的使用者面对仅仅就是facade这个接口,这样用户使用就显得简单,而facde下的子接口也容易扩展。自我感觉有点像我们生活中那些一键搞定的那种傻瓜式的操作模式。二、外观模式概述:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。使用场景:1、客户端不需要知道系统内部的复杂联系...
2019-02-14 22:48:52 183
原创 Java设计模式——结构型模式之装饰模式
一、前言 装饰器模式是我们在设计中常用的一种设计模式,我们从模式的名字就大概能知道,这种设计模式的主要作用就是给某一个对象增加额外的职责,而这种装饰可以是多种的。就像我们给一个洋娃娃装饰它的衣物一样,这样就使得我们很容易理解这种设计模式扩展性非常好,灵活性也比较高。就增加功能来说,装饰器模式相比生成子类更为灵活。当我们在不想很多子类的情况下,我们可以考虑使用装饰器模式。二、装饰器模式...
2019-02-13 23:21:35 155
原创 Java设计模式——结构型模式之组合模式
一、前言 组合模式又名部分整体模式(别问我怎么知道 ,百度的),组合模式顾名思义就是将对象依据树形结构来整合的一种设计模式。说到树形结构,我们脑海中就会联想到一个树的形状,它是一种具有层次结构的设计。组合模式使得用户对单个对象和组合对象的使用具有一致性。说通俗一点就是组合模式通过对象组合的方式嵌套起来,形成一种树形结构层次,然后使用递归的方式来处理组合对象。二、组合模式概述:将...
2019-02-12 23:27:01 171
原创 Java设计模式——结构型模式之桥接模式
一、前言 今天我们来学习java设计模式中的桥接模式,桥接模式是一种应用比较广泛的一种设计模式,这种设计模式将抽象与实现独立出来,使得我们的实现可以独立的变化。桥接模式是一种处理多维度变化的设计模式,最终达到多维度之间的解耦效果。比如说我们的画笔和纸就是一种多维度的关系,不同的画笔可以在不同的纸张上作画,通俗一点来说就是多对多的一种维度关系。桥接模式就是处理这种多维度关系的一种方式...
2019-01-30 01:09:28 188
原创 Java设计模式——结构型模式之适配器模式
一、前言 今天我们来一起学习结构型模式中的适配器模式,适配器模式在我们的生活场景中会经常遇到,比如说各种设备的转换接口。其实,我们从适配器这个模式的名字就能很容易想到,这种设计模式的存在就是为了让原本不兼容的接口变得兼容,因为这样做可以省去了很多开销成本。二、适配器模式 适配器模式的原理:将一个类的接口转换成客户需要的接口,使得原本因接口不兼容不能一起工作的类...
2019-01-29 00:31:23 185
原创 Java设计模式——创建型模式之原型模式
一、前言 今天我们来分享java设计模式中的原型模式。原型模式对于我自身而言,到目前为止我还没有见到过原型模式的应用(其实是因为自己道行太浅啦)。不过呢,虽然目前不会用到,但是我们还是需要了解什么是原型模式,以及原型模式的一些应用场景,以便于今后使用时做好准备。 合适使用场景: 1、复制对象的结构与数据。 2、希望对目标对象的修改不影响既有的对象。 ...
2019-01-28 01:04:12 130
原创 Java设计模式——创建型模式之单例模式
一、前言 今天我们来一起来进行单例模式的学习,在我们的开发中,单例模式的应用可能我们自己写代码的过程中本身会用的很少,但是这种设计模式却又是一种常见的模式,在一些jar包中可以找到它们的身影,它的出现常常会跟工厂模式一起配合使用。那么使用单例模式有什么好处呢?就用工厂模式来举例,从我们正常的认知上来讲,工厂通常只需要一个就可以,调用者不需要每次使用工厂就要New一个工厂对象,这样做不仅...
2018-12-03 00:01:28 150
原创 Java设计模式——创建型模式之建造者模式
一、前言 今天板凳君跟大家一起来学习java设计模式中的建造者模式,小编对建造者模式的理解就是使一个复杂的对象进行分模块处理,并且使这些模块各自独立,这样做的好处是什么呢?小编个人觉得这样可以使一个复杂的对象简单化,分模块之后可以对提高系统的维护性能,当然还可以有其他好处,但是(暂时想不出来)小编觉得这种设计模式最大的优点就是这个了。当然有缺点就必然有它的缺点啦,一旦模块化后,对应的...
2018-11-25 23:34:01 171
原创 Java设计模式——创建型模式之抽象工厂模式
一、前言 抽象工厂模式其实是对简单工厂模式中工厂行为的一个抽象,我们不妨在这里思考一下,如果我将工厂进行抽象了,那有什么好处呢?有会有什么弊端呢?我们又如何扬长避短呢?二、抽象工厂 我们先来谈谈什么是抽象工厂,抽象工厂模式的概述可以用如下这句话表达:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。什么意思呢?我的理解就是,这个工厂的作用就是生产...
2018-11-20 23:22:14 188
原创 Java设计模式——创建型模式之工厂模式
作为程序员菜鸟的板凳君,决定开始打牢固Java基础,那么就先从开始从设计模式开刀吧!1、前言 首先我们应该知道我们为什么要学习设计模式,板凳君就先谈谈自己的看法吧!其实设计模式说通俗一点就是我们的无数的前辈们总结的一套案例或者说是模板。因为在开发中,我们会经常遇到很多相同地场景,这个时候,我们的前辈们就把处理这种相似场景的思路或者说解决办法总结成一套模板,让后辈们在遇到相似场景的时...
2018-11-11 21:04:46 288
原创 poi文件解析
一、这篇文章主要描述使用poi文件解析技术实现excel的读取。解决通过上传excel实现批量添加的问题。其代码演示如下:1、这次演示的项目采用的是ssh构建的maven项目,在项目中需要导入poi文件解析得相关jar包:<properties> <commons.version>1.3.1</commons.version> <...
2018-08-21 00:23:33 2766
原创 SpringBoot 定时器
这里介绍一种注解版本基于springboot的定时器1、springboot中已经集成了spring 定时器需要引入得jar包,所以这里不需要再导包了2、写一个定时器得类,将该类注入到spring容器中,并在该类的方法上加入@Scheduled注解,如图:package com.example.springboot.task;import org.springframework....
2018-08-13 21:33:15 247
转载 Java多线程的三种实现方式
Java多线程的实现方式分别是:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程是我们比较熟悉得,并且执行完后都没有返回值,只有最后一种是带返回值的。下面分别讲述三种方式的实现代码:第一种:继承Thread类:重写run()方法public class MyThrea...
2018-08-13 21:23:32 4232
原创 在使用jquery时attr("checked") 返回checked或undefined 原因以及解决方法
问题:在使用jquery时attr("checked") 返回checked或undefined ?演示代码如下:<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title>
2018-05-29 23:36:05 1896
原创 用JS完成图片在窗体中的弹碰效果
一、由于是动态效果这里就不展示效果图了,先来简介编程思路:1、图片需要移动移动方式:将图片设置为绝对定位,通过改变绝对定位的位置来达到图片移动的效果(当然,这只是一种思路,读者可自行选择其它方式)移动方法:需要使用setInterval();;间隔计时器来控制速度和移动效果2、碰撞需要获取自身电脑的屏幕宽度,碰撞其实就是边界的检测,如果检测到在边界则改变移动方向,3、图片的移动方向图片移动只有八个...
2018-05-26 23:51:54 717
原创 简单购物车模型
在这里为大家展示一个用JS编写的简单的购物车模型图形如下:一、先来分析这小程序结构:1、一个表格、表格中镶嵌了四个复选框,三个文本输入框二、介绍业务内容:1、复选框业务:点击全选下的复选框,其图三个复选框也会全部选中;点击全选后,随意取消一个选项,全选选项也会自动取消;当除全选选项其它选项全部点中时,全选自动变成选中状态2、文本输入框业务:当文本框输入数量时,当前行的价格会自动计算3、总价业务:只...
2018-05-26 23:27:34 1438
activemq之系统分离
2018-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人