自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java实现十种行为型模式

目录(一) 模板方法模式(二) 命令模式(一) 模板方法模式模板方法模式(Template Method Pattern): 又称之为模板模式, 在一个抽象类公开定义了执行它的方法的模板, 它的子类可以俺需要重写方法实现, 但调用将以抽象类中定义的方式进行. 属于行为型模式.简单来说, 抽象类中的模板方法定义一个操作中的算法的骨架(如多个抽象方法的执行顺序), 而将一些步骤(抽象方法)延迟到子类中实现, 使得子类可以不改变一个算法的结构, 就可以定义该算法的某些特定的步骤.举例: 玩电子游戏一般会经

2023-03-01 11:32:28 1126

原创 JVM虚拟机

目录(一) JVM 概述(二) JVM 整体架构以及分类(一) JVM 概述虚拟机(Virtual Machine): 是一台虚拟的计算机软件, 用来执行一系列虚拟计算机指令. 可分成 系统虚拟机(VMware) 和 程序虚拟机(JVM虚拟机)Java虚拟机: 是一台执行Java字节码的虚拟计算机, 它拥有独立的运行机制, 如 跨平台性、优秀的垃圾回收器、以及可靠的即时编译器等等. 常用的虚拟机有: Hotspot VM、JRockit、J9等等作用: Java虚拟机就是二进制字节码的运行环境, 负

2023-03-01 11:26:11 2451

原创 JVM垃圾回收机制

目录(一) 垃圾回收概述(二) 垃圾回收算法2.1 垃圾标记阶段算法2.2 垃圾清除阶段算法(一) 垃圾回收概述垃圾(Garbage): 指在运行程序中没有任何指针指向的对象, 这个对象就是需要被回收的垃圾Java自动内存管理, 无需开发人员手动参与内存的分配与回收, 从繁重的内存管理中释放出来. 降低了内存泄漏和内存溢出的风险, 并提供了对内存的监控和调节的技术以及工具Java垃圾回收器可以对堆以及方法区进行垃圾回收:频繁收集年轻代较少收集老年代基本不懂方法区(二) 垃圾回收算法2

2023-03-01 11:22:47 1168 1

原创 Mysql 语句的优化技巧

目录(一) MySQL 逻辑架构(二) MySQL 存储引擎(三) MySQL 索引(四) MySQL 性能分析 Explain(五) MySQL 索引优化(一) MySQL 逻辑架构MySQL 将逻辑架构分为4层:连接层: 最上层是一些客户端和链接服务, 包含本地sock通信和大多数基于客户端/服务端工具实现的 TCP/IP 的通信服务层: 在此层中完成了大多的核心功能- SQL Interface: 接受用户的SQL语句, 并且返回用户需要查询的结果- Parser: 解析器, 区分SQ

2020-10-09 15:15:36 643 2

原创 Mysql 图解锁机制

目录(十) MySQL 锁机制1.0.1: 表锁(MyISAM存储引擎)下, 加读锁, 对多个连接MySQL(并发)会话的造成影响1.0.2: 表锁(MyISAM存储引擎)下, 加写锁, 对多个连接MySQL(并发)会话的造成影响1.0.3: 总结2.0.1: 行锁(InnoDB存储引擎)下, 加读锁, 对多个连接MySQL(并发)会话的造成影响2.0.2: 行锁(InnoDB存储引擎)下, 加写锁, 对多个连接MySQL(并发)会话的造成影响2.0.3 总结(十) MySQL 锁机制MySQL锁: 锁

2020-10-09 15:12:45 658

原创 Java实现七种结构型模式

目录(一) 桥接模式概述(一) 桥接模式概述桥接模式(Bridge Pattern): 又称之为接口模式, 将 抽象部分 与 实现部分 分离, 使它们都可以独立地变化. 属于对象结构模型的一种桥接模式基于类的最小设计原则, 通过使用封装、聚合及继承等行为让不同的类承担不同的职责. 它最主要特点是把 抽象 与 行为实现 分离开来, 从而可以保持各部分的独立性以及应对他们的功能扩展举例: 抽象类Shape中存在draw绘画的抽象方法, 可以画 圆形、正方形、长方形等, 又还需要给这些形状进行上色, 如白

2020-08-12 20:21:58 678

原创 适配器模式之3种实现方式

目录(一) 适配器模式概述(二) 类适配器模式(一) 适配器模式概述适配器模式(Adapter Pattern): 将某个类的接口转换成客户端期望的另一个接口表示, 主要目的是兼容性, 让原本因接口不匹配不能一起工作的两个类可以协同工作, 其别名为包装器(Wrapper).适配器模式属于结构型模式, 主要分为三类:类适配器模式对象适配器模式接口适配器模式适配器模式的工作原理适配器模式将一个类的接口转换成另一种接口, 让原本接口不兼容的类可以兼容从用户的角度看不到被适配者(Adapte

2020-07-29 11:43:07 930

原创 原型和创建者模式

目录(一) 原型模式概述(二) 原型模式-浅拷贝(三) 原型模式-深拷贝(一) 原型模式概述原型模式(Prototype Pattern): 用于创建重复的对象,同时又能保证性能. 用原型对象实例 指定创建对象的种类(需要拷贝的对象), 并且通过拷贝这些原型, 创建新的对象, 允许一个对象再创建另外一个可定制的对象, 无需知道如何创建的细节工作原理: 这种模式是实现了一个原型接口(Cloneable),该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式创建对象有两种方式: n

2020-07-28 10:39:17 373

原创 工厂模式之3种实现方式

目录(一) 工厂模式概述(二) 简单工厂模式(三) 工厂方法模式(四) 抽象工厂模式(五) 总结(一) 工厂模式概述工厂模式: 是Java中最常用的设计模式之一, 它提供了一种创建对象的最佳方式. 在工厂模式中, 我们在使用工厂类创建对象时 不会对客户端暴露 创建逻辑, 并且是通过使用一个共同的接口来指向新创建的对象(二) 简单工厂模式简单工厂模式: 定义一个创建对象的工厂类, 由工厂类决定创建出哪一种对象的实例, 工厂类内部已封装创建出哪一种对象的实例的逻辑代码Phone 手机接口inter

2020-07-27 11:11:22 1214

原创 Vuex 入门笔记

目录(一) Vuex 概述(二) Vuex 基本使用1. vuex 安装2. vuex 基本架构(三) vuex-mutations(一) Vuex 概述Vuex : 是一个专为Vue.js 应用程序开发的状态管理模式, 它采用集中式存储管理应用的所有组件的状态, 并以相应的规则保证状态以一种可预测的方式发生改变.即: 状态管理对象, 存储管理着一些共享的状态对象(如: 登录令牌token、URL路由地址…), 以供各个组件使用、响应式的修改Vuex应用的核心是store(仓库), store 基本

2020-07-15 19:53:03 393

原创 Vue Router 入门笔记

目录(一) Vue Router 路由概述1. 路由2. Vue Router(二) Vue Router 基本使用1. vue-router安装2. vue-router基本架构3. vue-router映射配置4. 路由使用和呈现(三) 动态路由(四) 路由懒加载(五) 嵌套路由(六) 路由组件传参(六) 全局导航shouwei(一) Vue Router 路由概述1. 路由路由: 是网络工程一个术语, 通过互联的网络把信息从 源地址 传输到 目的地址 的活动, 在此存在一个映射关系表: { 源

2020-07-10 18:59:13 609 1

原创 Vue Cli 入门笔记

目录(一) Vue Cli 概述(二) Vue Cli 安装1. node 安装2. Webpack 安装3. Vue Cli 安装(三) Vue Cli2 基本使用(四) Vue Cli3 基本使用(五) runtime-compiler 与 runtime-only(一) Vue Cli 概述Vue Cli: Vue Command-Line Interface(命令行界面), 是一个基于 Vue.js 进行快速开发的完整系统, 俗称 脚手架. 它可以快速搭建Vue开发环境以及对应的webpack

2020-07-06 11:02:53 307

原创 Vue入门笔记之组件化

目录(一) 组件化 概述(二) 组件注册1. 注册全局组件2. 注册局部组件3. 注册组件简写(三) 父子组件1. 注册父子组件2. 父子组件的通信3. 父子组件的访问方式(三) Slot 插槽1. 插槽的基本使用2. 具名插槽3. 作用域插槽(一) 组件化 概述在一个页面中存在大量的处理逻辑, 如果全部放在一起, 处理起来就会变得非常复杂, 且不利于后续维护以及扩展组件化思想: 将页面拆分成一个个小的功能块, 每个功能块完成属于自己这部分独立的功能, 那么之后整个页面的管路和维护就变得非常容易组

2020-07-03 11:04:30 803

原创 Webpack入门笔记

目录(一) Webpack 概述(一) Webpack 基本使用1. node 安装2. Webpack 安装3. webpack 简单使用(一) Webpack 概述Webpack: 是一个现代的JavaScript应用的静态模块打包器, 这是Webpack官方的解释.在这句话中提到两个关键字:模块: 在JavaScript发展初期就是为了实现简单的页面交互逻辑, 但随着前端技术不断更新、迭代, CPU、浏览器性能得到了极大的提升, 导致前端页面逻辑复杂, 代码日益膨胀. 此时就会考虑使用模块化

2020-07-03 11:03:29 279

原创 Vue入门笔记之初体验

目录(一) Vue.js 概述(二) Vue.js 安装(三) Vue 中的 MVVM(四) Vue 中的Options选项(五) Vue 中的生命周期函数(一) Vue.js 概述Vue: 是一套用于构建用户界面的渐进式框架, 与其它大型框架不同的是, Vue 被设计为可以自底向上逐层应用. 渐进式意味着你可以将Vue作为你应用的一部分嵌入其中, 带来更丰富的交互体验. Vue拥有区别其他前端框架的专属特点:解耦视图和数据可复用的组件前端路由技术 (Vue Router)状态管理 (Vuex

2020-06-30 10:36:50 620

原创 单例模式之5种实现方式

目录(一) 单例模式概述(二) 单例模式实现的方式1.饿汉式2.懒汉式3. 双重检查4. 静态内部类5. 枚举(三) 总结(一) 单例模式概述单例模式(Singleton Pattern): 是Java中最简单的设计模式之一, 它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类, 该类负责创建自身的实例对象 且 创建的对象只存在一个实例. 这个类提供了一种访问其唯一对象的方式, 可以直接访问.单例类只能有一个实例单例类必须自己创建自己的唯一实例 且单例类必须给所有其他对象提供这一实例

2020-06-23 16:41:08 766

原创 设计模式之七大设计原则

目录(一) 设计模式(二) 设计模式的七大设计原则1.单一职责原则2. 接口隔离原则(一) 设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式的目的:代码重用性: 相同功能的代码, 不用多次编写代码可读性: 编程规范性, 代码便于阅读、理解代码的可扩展性: 当需要增加新的功能时, 易于扩展, 可维护性高代码的可靠性: 当需要增加新的功能时, 对原有的功能没有影响使程序呈现高内聚, 低耦合的特性

2020-06-22 18:16:14 375

原创 排序算法

目录(一) 选择排序 Selection Sort1.原理2.代码实现(一) 选择排序 Selection Sort1.原理第一次从待排序的数据元素中选出最小(或最大)的一个元素, 存放在序列的起始位置, 然后再从剩余的未排序元素中寻找到最小(大)元素, 然后放到已排序的序列的末尾. 以此类推, 直到全部待排序的数据元素的个数为零.2.代码实现public class Selectio...

2020-05-14 15:41:48 344

原创 数据结构与算法之哈希表

目录(一) Hash表1.哈希(散列)函数2.哈希表3.哈希函数的设计3.哈希冲突的解决方案(二) 自定义HashTable1.HashTable基础结构2.HashTable的CRUD操作(三) 自定义HashTable时间复杂度分析1.HashTable静态空间的时间复杂度分析2.HashTable动态空间处理3.HashTable动态空间的时间复杂度分析(一) Hash表1.哈希(散列)...

2020-04-02 19:36:05 504

原创 数据结构与算法之红黑树

目录(一) 2-3 树(一) 2-3 树2-3树: 是最简单的B-树(或-树)结构, 其每个非叶节点都有两个或三个子节点, 而且一个节点可以包含2个元素.2-3树虽然不是二叉树, 但满足二分搜索树的基本性质.2-3树是一棵绝对平衡的树(对于任意一个节点, 左右子树的高度是相等的)...

2020-03-20 15:50:10 234

原创 数据结构与算法之AVL树

目录(一) 定义(二) 自定义AVL树1.AVL树基础结构2.AVL添加操作3.AVL树删除操作(一) 定义通过前面的 数据结构与算法之二分搜索树 的学习我们知道, 二分搜索树的性能跟树的高度(h)存在必然联系:1. 二分搜索树的添加操作, 删除操作, 查询操作 都需要在二分搜索树中找到合适的结点再进行逻辑操作, 找适到合结点所要经历的最多个数结点为 树的高度h.2. 二分搜索树的高度h...

2020-03-19 11:40:07 240

原创 数据结构与算法之并查集

目录(一) 定义(二) 自定义并查集1.并查集的接口2.Quick Find方式实现的并查集3.Quick Union方式实现的并查集4.Quick Find 与 Quick Union 性能比较5. 基于size的优化6. 基于rank的优化6. 路径压缩的优化(一) 定义并查集(Union Find): 是一种树型的数据结构, 用于处理一些不相交集合(Disjoint Sets)的合并及查...

2020-03-17 15:51:17 254

原创 数据结构与算法之字典树

目录(一) 定义(二) 自定义字典树1.字典树的基本结构2.字典树的添加操作3.字典树的查询操作4.字典树的删除操作(一) 定义字典树(Trie): 又称前缀树, 是一种多叉树形结构, 是一种哈希树的变种. 查询每个条目的时间复杂度和字典树中一共有多少个条目无关, 与查询的字符串的长度相关(O(w)).字典树满足已下性质:根节点不包含字符, 除根节点外每一个节点都只包含一个字符和一个单词结...

2020-03-16 12:13:13 177

原创 数据结构与算法之线段树

目录(一) 定义(二) 自定义线段树1.根据数组创建线段树2.线段树的区间查询操作3.线段树的单个更新操作(三) 时间复杂度分析(一) 定义线段树是一棵平衡的二叉搜索树. 何为平衡? 线段树的左右两个子树的高度差的绝对值不超过1. 线段树的每个结点存储的内容包括两部分:区间或者是线段: [区间左端点, 区间右端点] (以参数的形式表示 或者 节点类的成员属性表示)区间结点存储的元素: 根...

2020-03-12 15:58:15 240

原创 数据结构与算法之二叉堆

目录(一) 定义(二) 自定义基于动态数组的最大堆1.自定义最大堆的基础结构2.堆的添加元素和Sift Up(上浮操作)3.堆的取出最大元素和Sift Down(下沉操作)(一) 定义堆(Heap): 是计算机科学中一类特殊的非线性数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。堆总是满足下列性质:堆一定是一棵完全树(按照元素循序排列成树的形状)堆中任意一个结点的值总是不...

2020-03-11 10:39:40 268

原创 数据结构与算法之映射

目录(一) 定义(二) 自定义映射1.基于链表的映射实现1.基于二分搜索树的映射实现(三) 时间复杂度分析(一) 定义映射Map: 存储(键, 值)数据对的数据结构(Key, Value), 我们可以根据键(Key)来寻找值(Value), 且key在映射中是唯一的.实现映射的方式多种多样, 在JAVA语言表现中, 会将映射定义成一个接口, 提供映射对应的操作的抽象方法./** * 自定义...

2020-03-09 16:18:17 1014

原创 数据结构与算法之集合

目录(一) 定义(二) 自定义集合1.基于二分搜索树的集合实现2.基于链表的集合实现(三) 时间复杂度分析(一) 定义承载元素的一个容器, 容器中的元素无序且唯一(不重复). 实现集合的方式多种多样, 在JAVA语言表现中, 会将集合定义成一个接口, 提供集合对应的操作的抽象方法./** * 自定义集合抽象类Set * * @author Administrator * */p...

2020-03-09 16:03:44 196

原创 数据结构与算法之二分搜索树

目录(一) 定义(二) 自定义二分搜索树BinarySearchTree1. 新建自定义二分搜索树类BinarySearchTree2. 自定义二分搜索树的增加操作3. 自定义二分搜索树的查询操作4. 自定义二分搜索树的遍历操作5. 自定义二分搜索树的删除操作(一) 定义树(Tree): 是一种动态的数据结构. 它是由 n(n>=1) 个有限结点组成一个具有层次关系的集合. 也可...

2020-03-06 10:23:37 438

原创 数据结构与算法之单链表

目录(一) 链表1.定义2. 图解3.数组和链表的对比(二) 自定义链表LinkedList(一) 链表1.定义链表是一种物理存储结构上非连续,非顺序的线性数据存储结构,数据元素的逻辑顺序是通过链表中的节点(Node)链接次序实现的。每个链表中都包含两部分: 存储的数据 和 下一个节点(Node).class Node{ private E e; // 存储的数据 private No...

2020-03-03 11:21:21 491

原创 数据结构与算法之队列

目录(一) 队列1.定义(二) 队列的基本实现1.新建接口Queue2.自定义ArrayQueue数组队列3.自定义LoopQueue循环队列(一) 队列1.定义队列也是一种操作受限的线性表数据结构, 它只允许在表的前端(队首)进行删除操作,而在表的后端(队尾)进行插入操作. 队列是一种先进先出的数据结构(First In First Out: FIFO). 相比较数组, 栈对应的操作是数组...

2020-02-28 22:56:06 485

原创 数据结构与算法之栈

目录(一) 栈定义(二) 栈的基本实现1.新建接口Stack2.自定义ArrayStack类实现Stack接口(一) 栈定义栈是一种线性序列结构, 它的特殊之处在于, 栈对于其中的元素的访问做了限制, 只能从序列的某一端(栈顶)进行读写操作, 而禁止操作的另一端(栈底). 栈是一种后进先出的数据结构. 相比较数组, 栈对应的操作是数组的子集.栈的应用应用很广泛, 如: 撤销操作, 程序调用...

2020-02-27 11:04:04 178

原创 数据结构与算法之数组

(一) 数组1.定义 用来存储固定大小的同类型元素的集合, 数据类型可以是8种基本的数据类型,也可以是引用数据类型. 数组属于引用数据类型.2.两种初始化方式动态初始化: 声明并开辟指定长度的数组, 会为数组之中的每个元素附上该数据类型的默认值(引用类型: null)项目...

2020-02-26 17:09:20 566

空空如也

空空如也

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

TA关注的人

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