自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bepigkiller

自欢之地

  • 博客(28)
  • 问答 (1)
  • 收藏
  • 关注

原创 堆的数据结构

它是完全二叉树,也就是说除了树的最后一层节点不需要是满的,其他的每一层从左到右都必须是满的。

2021-10-11 22:11:57 847

原创 原型模式[读书笔记]

原型模式(Prototype Pattern)原型模式:使用原型实例只当创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。Protype(抽象原型类):声明克隆方法的接口或抽象类,是所有具体原形类的公共父类。ConcreteProtype(具体原型类):被复制的对象,实现在抽象原型中声明的克隆方法,返回自己的一个克隆对象。伪代码//抽象原型public interface Prototype<T>{ T clone();}//具体原型publi

2021-09-28 10:55:14 116

原创 迭代器模式[读书笔记]

迭代器模式(Iterator Pattern)迭代器模式:提供一种按顺序访问集合/容器对象元素的方法,而又无需暴露集合内部表示。迭代器模式可以为不同的容器提供一致的遍历行为,不用关心容器内元素的组成结构,属于行为型设计模式。迭代器模式的本质是把集合对象的迭代行为抽离到迭代器中,提供一致的访问接口。我们把多个对象聚在一起形成的总体称为集合(Aggregate),集合对象是能够包容一组对象的容器对象,不同的集合其内部元素的聚合结构可能不同,而迭代器模式屏蔽了内部元素的获取细节,为外部提供一致的元素访问行为

2021-09-26 10:52:26 123

原创 模板方式模式[读书笔记]

在现实生活中,很多事情都包含几个实现步骤,例如请客吃饭,无论吃什么,一般都包含点单、吃东西、买单等几个步骤,通常情况下这几个步骤的次序是:点单 --> 吃东西 --> 买单。模板方式模式模板方式模式(Template Method Pattern):模板方式模式实际上封装了一个固定流程,该流程由几个步骤组成,具体步骤可以由子类进行不同的实现,从而让固定的流程产生不同的结果。其实就是类的继承机制,本质是抽象封装流程,具体进行实现。当完成一个操作具有固定的流程时,由抽象固定流程步骤,具体步.

2021-09-25 10:41:23 122

原创 适配器模式[读书笔记]

我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容适配器模式(Adapter Pattern)适配器模式:又叫做变压器模式,它的功能是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够在一起工作,属于结构性设计模式。在软件开发中,基本上任何问题都可以通过增加一个中间层来解.

2021-09-25 10:13:34 160

原创 门面模式[读书笔记]

门面模式(Facade Pattern)门面模式:又叫做外观模式,提供一个统一的入口,用来访问子系统中的一群接口。其主要特征是定义了一个高层接口,让子系统更容易使用。门面模式是迪米特法则的体现:一个软件实体应当尽可能少地与其他实体发生相互作用设计思想Facade (外观角色):客户端可以调用它的方法,在外观角色中可以知道相关子系统(一个或者多个)的功能和责任;在正常情况下,外观角色将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理。SubSystem(子系统角色):在软件系

2021-09-24 09:22:47 67

原创 建造者模式[读书笔记]

无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。建设者模式建设者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使.

2021-09-23 10:34:50 86

原创 代理模式[读书笔记]

在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端与目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。代理模式(Proxy Pattern)...

2021-09-19 11:49:36 100

原创 MyBatisPlus关键字查询

现在存在着这样一张表,每条记录都有属性id,name,gender,birth,start_day。现在有这样一个业务需求,输入关键字查询,只要表中的某条记录有任意一个字段含有该关键字,那么该条记录都应当查询出来。在查询某个具体字段是否包含关键字时,我通常是这样做的select * from patients where name like '%keyWord%'在查询多个字段是否包含同一个关键字时,我通常是这样做的select * from patients where (name like

2021-09-18 10:13:28 2733

原创 外网访问SVN服务器

购买内网穿透服务在点击我处购买隧道,10元一个月。点击编辑,设置的访问端口应与本机上的SVN服务器端口一致。启动服务云服务器设置Properites在properties处做出如下设置自己的SVN端口号,不使用Https(使用也可以,但是一直会弹出非安全连接)。之后在浏览器输入赠送的域名进入服务器页面则代表成功。...

2021-09-17 14:21:51 775

原创 单例模式[读书笔记]

对于系统中的某些类来说,只有一个实例很重要,例如,一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。当这个唯一实例创建成功之后,我们无法再创建一个同类型的其他对象,所有的操作都只能基于这个唯一实例。为了确保对象的唯一性且易于访问,我们可以通过单例模式来实现,这就是单例模式的动机所在。单例模式单例模式(Singleton Pattern):必须确保类只有一个实例,而且自行实例化向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式的要点有三个.

2021-09-16 11:41:53 77

原创 抽象工厂模式[读书笔记]

在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。产品等级结构和产品族产品等级结构:产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机,乐视电视机,TCL电视机,则抽象电视机与具体品牌的电视机构成了产品等级结构,抽象电视机是父类,具体品牌的电视机是子类。产品族:在抽象工厂模式中,产品族是指由同一.

2021-09-16 09:24:32 68

原创 工厂方法模式[读书笔记]

简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响已有代码?工厂方法模式应运而生工厂方法模式工厂方法模式(Factory Method Pattern)又叫作多态性工厂模式,指定义一个创建对象的工厂接口,但由实现这个接口的工厂类决定来实例哪个类,工厂方法把类的实例化推迟到子类中。设计思想抽象工厂(Factory):声明了工厂方法,用于返回产品。.

2021-09-15 11:01:23 63

原创 简单工厂模式[读书笔记]

我们都知道在现实生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)。我们的项目代码同样是由简至繁一步一步迭代而来的,但对于调用者来说,却越来越简单。在日常开发中,凡是需要生成复杂对象的地方,都可以尝试考虑使用工厂模式来代替。

2021-09-15 10:18:46 141

原创 对象内存布局

结构内存布局对象头(Object Header)实例数据(Instance Data)对齐填充对象头对象头包含两部分,分别是运行时元数据和类型指针。运行时元数据(Mark Word)哈希值GC分代年龄锁状态标识线程持有的锁偏向线程ID偏向时间戳类型指针(Klass Word)指向类元数据InstanceKlass,确定该对象所属的类型。指向的其实是方法区中存放的类元信息。...

2021-09-11 09:33:07 50

原创 JVM执行引擎

执行引擎概述执行引擎属于JVM的下层,里面包括解释器,及时编译器,垃圾回收器JVM 的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被 JVM 所识别的字节码指令、符号表,以及其他辅助信息。想要让一个 Java 程序运行起来,执行引擎(Execution Engine)的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。执行引擎的工作流程执行引擎在执行过程中需要执行哪个字节码指令完全依赖于

2021-09-10 10:30:01 73

原创 方法区概览

方法区,内部包含了运行时常量池字节码文件,内部包含了常量池为什么需要常量池Java源文件中的类或接口,在编译后产生一个字节码文件。如果一个类中有多个方法都使用了相同的常量或方法引用,那么可以将这个常量存到常量池中。字节码的code区只需包含指向常量池的引用即可。因为常量池中只保存一份相同值的常量,因此节约了空间。运行时常量池运行时常量池(Runtime Constant Pool)是方法区的一部分,常量池表(Constant Pool Table)是Class文件的一部分,用于存放编译器生成..

2021-09-09 09:04:45 83

原创 方法调用:解析与分派

方法调用:解析与分派Class文件的编译过程中不包含传统程序语言编译的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(也就是之前说的直接引用)。这个特性给Java带来了更强大的动态扩展能力,但也使得Java方法调用过程变得相对复杂,某些调用需要在类加载期间,甚至到运行期间才能确定目标方法的直接引用。在 JVM 中,将符号引用转换为调用方法的直接引用与方法的绑定机制相关。解析调用目标在程序代码写好、编译器进行编译那一刻就已经确定下来。这类方

2021-09-08 09:48:58 186

原创 虚拟机栈的结构

虚拟机栈概述由于不同平台CPU的架构不同,所以为了满足跨平台的要求,Java指令没有设计为基于寄存器的,而是根据栈来设计的。栈是运行时的单位,堆是存储的单位栈解决了程序的运行问题,即程序如何执行堆解决数据的存储问题,即数据怎么放,放哪里Java虚拟机栈Java 虚拟机栈(Java Virtual Machine Stack),早期也叫 Java 栈。每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的 Java 方法调用,线程私有。栈

2021-09-07 09:25:43 6906

原创 类加载子系统

类加载子系统概览类加载子系统的作用类加载子系统负责从文件系统或者网络中加载Class文件。ClassLoader只负责class文件的加载,至于是否执行,则由Execution Engine决定。加载的类信息会存放在方法区的一块内存空间上。除了类信息,方法区还会存放运行时常量池信息,包括字面量和符号引用。class file 存在于本地硬盘上,可以理解为设计师画在纸上的模板,而最终这个模板在执行的时候是要加载到 JVM当中来根据这个文件实例化出 n 个一模一 样的实例。 class fil

2021-09-05 11:49:09 90

原创 深拷贝与浅拷贝

问题的来源在刷leetcode回溯时,发现res.add(list)和res.add(new ArrayList<Integer>(list))得出的结果是不同的。根据参考博客的例子,可以明显的区分这两种结果。result.add(list) ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3);

2021-09-04 22:08:36 43

原创 MySql的数据类型

SQL 用于各种数据库的数据类型:在 MySQL 中,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。1、Text 类型。2、Number 类型。这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。3、Date 类型。即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TI

2021-09-04 14:58:06 386

原创 最长回文子串与最长回文子序列

两道经典的动态规划题最长回文子序列最长回文字串基础概念回文 (Palindrome)回文,指正读反读都能读懂的句子,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,称为回文数(palindrome number),如n=1234321,则n为回文数。回文字符串:即"aba","ccc"这种正读反读都相同的字符串字串和子序列子串:新字符串是原字符串中连续的一部分。子序列:新字符串不一定是原字符串中连续的,可能缺失了中间的某个或某些字符。例:如"asdfgh"子串:“

2021-08-31 23:26:00 318 1

原创 spring-security入门

知乎大神写的关于spring-security的入门学习https://zhuanlan.zhihu.com/p/47395352

2021-07-02 14:12:44 68

原创 剑指offer15:二进制中1的个数

题目:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数)。题解:这道题一直纠结了半天,主要的问题是&运算符的执行。后来突然悟了,& 1 不就是 & 00000000001吗。执行的目的是在看最后一位是否为1,为1则返回1,否则返回0。public class Solution { // you need to treat n as an unsigned value public int hammingWeig

2021-07-01 21:42:48 54

原创 redis与springboot的整合

之前学redis时就在springboot连接redis服务器这个问题中一直卡住,这次终于连接成功!!!Springboot1.导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>

2021-06-21 20:58:47 53

原创 Vue Cli脚手架使用axios&&rap2模拟接口

在脚手架中使用axios安装axios​ 1.安装axios​ npm install axios --save-dev​ 2.配置main.js,引入axios​ import axios from ‘axios’​ Vue.prototype.$http = axios​ 3.使用axios​ 日后使用axios时,使用如下方式 this.http.get()/this.http.get()/this.http.get()/this.http.post(’’)rap2 模拟

2021-06-15 21:00:00 285

原创 前端和后端的JSON数据交互

1、application/x-www-form-urlencoded    @requestbody能解析,但springmvc会进行解析,所以通常不用@requestbody。  2、multipart/form-data    @requestbody不能解析  3、application/json,application/xml等    @requestbody能解析,springmvc不会进行解析,所以必须要加@requestbody注解  一句话概括:@requestb

2021-06-05 21:38:43 14521

空空如也

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

TA关注的人

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