- 博客(68)
- 收藏
- 关注
原创 MySQL——查询某个表占用的空间大小以及表的数据量
查询某个表占用的空间大小以及表的数据量-- 要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小(单位B) 数据总数SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS FROM information_schema.`TABLES` WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名'【注】通过DATA_LENGTH+INDEX_LENGTH查询出来的数据大小单位是B需要转换为KB 除以
2020-09-15 11:25:05 6108
原创 SpringBoot整合SwaggerBean的坑
前提因为使用GSON较为顺手的,于是在spring-boot-start-web里将jackson依赖排除了<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--移除Jackson 引入Gson--> <exclusi
2020-09-12 14:36:49 555
原创 Spring中的解耦合是如何实现的?
Spring中的解耦合是如何实现的?首先我们来准备一个最为简单的项目,采取分层的结构【注】此处的客户端调用通过Junit单元测试来模拟。以下就是这一次项目的初始的所有代码:【注】初始代码仅仅作为展示,可以直接从问题开始看!结构为:User类/** * 定义一个实体类 * @version 1.0.0 * @date 2020 -08-20 */@Data@AllArgsConstructor@NoArgsConstructorpublic class User {
2020-08-20 22:42:32 1403 2
原创 访问——访问者模式
访问者模式 Visitor Pattern:访问者模式,是GoF23种设计模式中属于行为型模式的一种。 访问者模式的定义为:表示一个作用于某对象结构中的个元素的操作,可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 实际上来说,就是定义了一个访问者类,而各个元素对象接收这个访问者对象进行操作,如果想要换成不同的操作,简单的修改访问者对象即可让这些元素对象执行不同的操作。结构...
2019-12-31 10:16:44 411 1
原创 文法——解释器模式
解释器模式 Interpreter Pattern:解释器模式,是GoF23种设计模式中属于行为型模式的一种。 解释器模式是用于:定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。 嗯,通俗点说就是,给出一个解释语句的规则,然后用这个规则去解释语句。 比如说:规定句子的组成为主语+谓语+宾语。那么对于用户给出的任意一句语句,都是用这个规则去解释...
2019-12-30 16:25:15 160
原创 共享定制化——享元模式
享元模式 Flyweight Pattern:享元模式,是GoF23种设计模式中属于结构型模式的一种。 享元模式的思想在于享和元两个字:享是共享的意思,而元字就是对象的意思。所以享元说白了就是共享对象(注意这里所说的对象是一个抽象的概念,可以理解为一个类) 所以,享元模式的作用就可以从它的名字中体现出来了。享元模式的作用主要用于减少创建相同对象的数量,达到减少内存占用提高性能的目的。...
2019-12-26 16:55:27 207
原创 统一管理——中介模式
中介者模式 Mediator Pattern:中介者模式,属于GoF23种设计模式中属于行为型模式的一种。 中介者模式,顾名思义,就是有一个中介的意思,和我们现实生活中的什么房屋中介啊,出国留学的中介啊是一个意思,又或者高大上一点的联合国也是充当着一个中介者的角色。 中介者模式呢,就是用一个中介来封装其他所有对象的交互,让对象之间不会直接进行显示的相互调用,而是通过中介对象完成,达到的...
2019-12-20 10:55:44 279
原创 奖学金——责任链模式
责任链模式 Chain of Responsibility Pattern:责任链模式,是GoF23种设计模式中属于行为型模式的一种。 责任链模式的主要就是结构是一个链式的结构,一环扣着一环形成一个处理请求的处理链,处理链又不同的对象构成,每个对象可以选择处理或者不处理这个请求,如果处理则这个链就断了,如果不处理就一直延续到下一个对象直到有一个对象处理这个请求为止。 简单的说,责任链模...
2019-12-20 10:12:36 150
原创 开炮——命令模式
命令模式 Command Pattern:命令模式,是GoF23种设计模式中属于行为型模式的一种。 命令模式:将请求封装为一个对象,并传给调用对象。调用对象寻找可以处理该命令的合适的处理对象,并把该命令传给相应的处理对象执行命令。 命令模式的本质就是将发出请求和处理请求两者分开,一方只负责发出请求,另一方只负责处理请求。达到的目的就是将行为发起者和行为处理者两者解耦合。结构 结...
2019-12-19 10:33:00 406
原创 多维度思考——桥接模式
桥接模式 Bridge Pattern:桥接模式,是GoF23种设计模式中属于结构型模式的一种。 桥接模式通过在抽象和具体实现之间创建桥接的结构用以实现两者的解耦合。抽象部分和实现部分是完全分离的,两者都可以独自变化而不影响对方。 桥接模式的关注点在于抽象和实现两者之间的关系,并不是传统上所体现的抽象类和他的派生类这样的的关系(或者说是父类和子类这样的关系,而是说是一种抽象类具体的表达...
2019-12-18 11:25:55 464
原创 一分为六——单例模式
单例模式 Singleton Pattern:单例模式,是最简单的设计模式之一,但是这里的最简单只是结果简单,因为就只有一个角色而已;实现也是比较简单的,但是麻雀虽小五脏俱全,简简单单的的单例模式的实现的方式确实五花八门的,有多种符合各种场景下的实现方式。 单例模式是GoF23种设计模式中属于创建型模式的一种。结构 单例模式很简单,只有一个角色对象,就是它自己:Singlet...
2019-12-16 18:10:03 170
原创 遍历——迭代器模式
迭代器模式 Iterator Pattern:迭代器模式,是GoF23种设计模式中属于行为型模式的一种。 迭代器的模式已经是很多高级编程语言中常用的设计模式了,体现的位置也是方方面面都可以,比如最常用的for循环就是如此。 在JAVA中,有增强for循环,使用到的就是迭代器模式for(Demo demo : demos){ // TODO} 在Python中,有着fo...
2019-12-16 16:23:48 285
原创 层级结构——组合模式
组合模式 Composite Pattern:组合模式,也可以称为部分整体模式。是GoF23种设计模式之中属于结构型模式的一种。 组合模式是依据树形结构来组合对象体现出部分-整体的层次结构,组合模式hi将一组相似的对象当成一个单一的对象,使得对单个对象和组合对象的使用具有一致性。结构 结合类图简单的分析一下,组合模式共有三个对象:组合模型对象(Component):为组合中...
2019-12-16 15:32:59 1622
原创 重生啦——备忘录模式
备忘录模式 Memento Pattern:备忘录模式,在GoF23种设计模式中属于行为型模式的一种。 备忘录模式的定义是:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 简单一点的说呢,就是保存一个对象的某个或者多个状态,然后当有需要的时候恢复对象被保存下来的状态,有点类似还原点的作用,更直白的说的话就是玩游戏的时...
2019-12-11 15:15:33 146
原创 正则表达式常用收集
限定符表达方式/语法说明*重复零次或更多次+重复一次或更多次?重复零次或一次{n}重复n次{n, }重复n次或多次{n, m}重复n到m次\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。(pattern)匹配pattern并获取这一匹配(?:pattern)匹配patter...
2019-12-11 11:19:57 74
原创 搭个桥——适配器模式
适配器模式 Adapter Pattern:适配器模式,在GoF23种设计模式中属于结构型模式的一种。 适配器模式的作用就是提供将两个不兼容的事物可以进行合理正确的使用的功能。注意一个关键字,不兼容,意思是用户想要使用这个东西,但是和你提供的接口不兼容导致用户使用不了,如果直接不能使用那就会是用户体验不好,这个时候需要的就是通过一个适配器来让这个两个不兼容的东西变成兼容,可以使用。结构...
2019-12-09 17:30:28 112
原创 ON/OFF——状态模式
状态模式 State Pattern:状态模式,是GoF23种设计模式中属于行为型模式的一种。 状态模式是允许通过改变一个对象的内部状态从而改变这个对象的行为,看起来就像是改变了这个对象的实现方式一样。结构 结合类图分析一下,状态模式一共有三个角色:抽象状态类:这是一个接口(或者抽象类),用于封装与Context的一个特定状态相关的行为。具体状态类:每一个具体的状态实现类都实...
2019-12-09 16:28:00 1247
原创 一身帅气西装——抽象工厂模式
抽象工厂模式 Abstract Factory Pattern:抽象工厂模式,是GoF23种设计模式中属于创建型模式的一种,用于创建一族的产品对象。 需要理解什么是产品族(也可以说是产品簇):产品族是满足不同客户个性化需求的一组相关产品,是能够满足不同客户对产品特殊特征和功能需求的相关系列产品集合构成。 简单的用个例子说一下,比如登录网页的模板,很简单,一个输入文本框,一个密码文本框,...
2019-12-09 12:46:34 194
原创 来一场棒球比赛——观察者模式
观察者模式 Observer Pattern:观察者模式,又叫做发布—订阅模式,在GoF23种设计模式之中属于行为型模式的一种,是对于对象之间存在一对多的对于关系的时候使用的一个模式。 这种一对多的关系体现的方面是,当一个对象发生了变化,其他的所有依赖于这个对象的对象本身也会实时的得到通知并且进行更新自己的操作,达到同步更新的效果。结构 通过简单的类图分析一下,观察者模式一共有四个...
2019-12-06 16:36:52 299
原创 腾讯信鸽Java服务端推送IOS静默消息的IOS客户端走两个回调的问题
首先看一下腾讯信鸽的官方文档提供的IOS静默消息推送的JSON数据格式{ "ios":{ "aps": { "content-available": 1 }, "custom": { "key1": "value1", "key2": "value2" ...
2019-12-06 14:51:08 397
原创 RPG——建造者模式
建造者模式 Builder Pattern:建造者模式,也可以称为生成器模式,是GoF23种设计模式之中属于创建型模式的一种。主要是提供一个最佳的创建对象的方式。 建造者模式,简单的说就是将创建对象的流程进行了一个抽象;抽象出来的是构建流程,通过这一套流程我们可以构建这个对象的不同的表现形式。 也就是说呢,建造者模式将对象的构建/创建过程和最终的表现形式发生了分离,可以让使用者通过同一...
2019-11-27 15:33:32 234
原创 黑盒——外观模式
外观模式 Facade Pattern:外观模式,是GoF23种设计模式之中属于结构型模式的一种。外观模式的定义就是为一组接口外面在包装一个一致的接口,通过这个一致的接口再去访问被包装的一组接口。 说起来可能是有点绕,但是可以把这个外观模式想象成黑盒,类比于熟悉的黑盒测试,当我们需要对一个模块进行功能测试的时候,使用黑盒测试,此时我们是不知道这个模块的具体实现的代码的,很有可能的是我们都...
2019-11-26 15:20:48 415
原创 使用其他项目Feign客户端启动出错的问题
通过POM文件引入外部jar包的方式使用jar包中定义的目Feign客户端启动出错的问题记录笔者这个星期编写着一个Feign客户端,并且需要将其打包部署到maven仓库之中,然后给其他的项目通过pom文件引入的方式来使用这个Feign客户端的功能。由于对Feign不是很熟悉,摸摸索索的做出了一个Demo,之后进行测试,于是就开始了报错之旅。分析首先我们可以看到报错是:org.sprin...
2019-11-22 16:07:43 664
原创 把大象装冰箱要几步呢——模板方法模式
模板方法模式 Template Pattern:模板方法模式,也可以称为模板模式。属于GoF23种设计模式中行为型模式的一种。 给个书面定义:定义了一个操作中的算法骨架,而将一些步骤延迟到了子类之中实现。让子类呢可以在不改变大致的骨架之下,重新定义算法中的一些步骤。 简单的理解呢,其实和我们DIY配置了自己的电脑之后的组装一样,我们首先会选择一款合适的主板,这个主板呢就是一个大大的模...
2019-11-18 14:55:07 629
原创 浅/深克隆——原型模式
原型模式 Prototype Pattern:原型模式属于GoF23种设计模式中的创建型模式的一种,提供的是一种最佳的重复创建对象的方式。 简单的理解呢,原型模式的作用就是用一个已经存在了的对象,再去创建另外一个相同的对象,并且不需要知道这个对象创建需要什么,或者说是怎么创建出来的,而是直接拿到这个新的对象,再说的简单点就是克隆了。结构 原型模式这个模式的概念还是很简单的,可以简...
2019-11-17 18:43:23 289
原创 专卖店——工厂方法模式
工厂方法模式 Factory Method Pattern:工厂方法模式是属于GoF23中设计模式中创建型设计模式的一种,用来创建实例对象的。 可以给出对于工厂方法模式的定义:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。 简单的说呢,嗯,就是让用户直接对接具体“工厂”,例如说用户想要买水果,那就给他一个水果店的地址直接让他去,用户要买菜,那就给他一个菜市场的地址也...
2019-11-16 12:58:13 170
原创 找房子有点难——代理模式
代理模式 Proxy Pattern:代理模式是GoF23中设计模式中,属于结构型模式的一种。 关于代理模式的定义官方给出的是:为其他对象提供一种代理以控制对这个对象的访问(好像也是可以理解一点儿的吧。) 笔者自己的理解方式呢,代理,代理嘛,用个不恰当的比喻来说的话,哈哈,那就是叫家长啊,有木有,老师们的终极绝招之一啊,怎么说呢,就是老师要叫家长的需要通知我们自己,然后让我们回家去把...
2019-11-15 17:53:50 160
原创 加糖加冰加牛奶——装饰模式
装饰模式 Decorator Pattern:属于GoF23种设计模式中结构型设计模式的一种,又被称为装饰者模式。 简单的说,装饰模式/装饰者模式就是给一个现有的类,在不改变这个类的情况下,动态的给这个类进行扩展,添加新的东西,比如说添加新的功能。 动态的意思也就是说不需要这个类创建的时候指定,完全可以等这个类创建完成了之后,已经完全成为了一个“活蹦乱跳”的对象了之后,再给他添加新的...
2019-11-14 17:05:37 168
原创 锦囊妙计——策略模式
策略模式 Strategy Pattern:策略模式是GoF23中设计模式中属于行为型设计模式的一种。 策略模式的关键点就在于策略两字,策略是一种方法,一种方式,一种计策。用术语来讲的话,可以将其理解为算法,不同的策略也就是不同的算法。 策略模式的作用呢,就是使得用户在执行某个操作的时候得到一个结果,而这个结果可能是由不同的算法所得到的,但是用户并不知道这些,算法的改变影响不到用户自己...
2019-11-13 18:20:49 270
原创 简单的简单工厂模式
简单工厂模式 Static Factory Method:属于创建型模式的一种,又可以被称为静态工厂方法模式,但是不属于GoF23种设计模式之一。结构 对于简单工厂模式的结构,给出一个简易的UML类图: 从图片中,可以知道简单工厂模式的组成分为三个部分:第一个也就是工厂啦,简单工厂模式说到底也是一个工厂模式嘛,工厂自然是必不可少的。第二个则是一个抽象类(当然,也可以设计成一个...
2019-11-13 14:29:38 115
原创 Spring Data JPA 简单实现增删改查
Spring Data JPA 实现简单的增删改查首先引入JPA部分的Maven依赖<!-- JPA 的依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa<...
2019-11-05 18:09:51 306
原创 令人晕眩的PO,DAO,DTO,VO
什么是 PO,DAO,DTO,VO 呢?引入对于编程的朋友们来说,MVC是不会陌生的,Spring MVC就是MVC模式的一个很成熟的框架,同时呢JAVA是一种面向对象的语言,着重的就是对象的操作了,俗话说万物皆对象,这一点Python似乎比JAVA理解和应用的更加透彻一些,讲道理,Python中int类型的都是对象而不是是JAVA一样属于基本数据类型了(额,其实Python中没有int这一说...
2019-11-02 23:44:31 321
原创 排序算法——计数排序
计数排序计数排序是一种比时间复杂度O(nlogn)还要快速的一种排序,可以达到线性的时间复杂度。这种排序算法是通过数组的下标的位置来确定数据的正确位置的。大致的过程如下:代码实现:public static int[] sort(int[] array){ //首先需要确定建立一个多大的数组,所以先要得到数组中的最大值 int max = array[0]; fo...
2019-10-06 17:54:08 217
原创 排序算法——鸡尾酒排序
鸡尾酒排序鸡尾酒排序是一种在冒泡排序的基础上进行改进的算法。和冒泡排序的从数组的一端一个个排序到另一端的单方向的顺序不同,鸡尾酒排序的元素比较和交换的双向的。双向是什么意思呢?就是说,对于鸡尾酒排序,第一轮从左到右进行排序,这里和冒泡排序一模一样,但是第二轮就不一样了,此时需要的是从右到左,换个方向进行排序,第三轮又变成从左到右进行排序…通俗点来说就是:鸡尾酒排序的过程就像是游乐场里...
2019-10-06 16:43:46 375
原创 排序算法——冒泡排序
冒泡排序冒泡排序是一种基础的交换排序。之所以称为冒泡是因为冒泡排序的每一个元素都可以像气泡一样,通过设定的从小到大或者从大到小的排序顺序,一点点的朝着数组的一侧进行移动,达到最后的排序效果。思想(从小到大顺序)冒泡排序是把相邻的元素进行两两的比较,当一个元素大于它的右侧相邻的元素的时候,这两个元素的位置进行交换,否者,这两个元素的位置不再变化。如果是从大到小的顺序,只需要将大于的条件改...
2019-10-06 16:15:57 322
原创 SpringDataJPA——各种类型的方法实现的底层SQL
起因这个星期都在学习Spring Data JPA,,比如官网上的介绍,各种博客教程,可以知道的就是如何去使用Spring Data JPA。Spring Data JPA 是对JPA规范的一种包装,神奇的是这个是一个抽象,抽象,抽象,什么意思呢?就是说:Spring Data JPA 中只有接口和抽象类,不提供实现!!!所以,如果单独的建立Spring Data JPA的项目,通过外...
2019-09-21 22:37:01 2044 1
原创 安全框架 Shiro
ShiroApache Shiro 只一个强大的,容易使用的Java安全框架,用于执行身份验证,授权,密码学和会话管理。我们另一个比较熟知的安全框架,是Spring家族中的一个Spring Security,但是两者相比来说,使用Shiro会更为简单,更为小巧,更容易上手。贴一张Shiro官网出示的体系结构的图:总共包含的是六个部分,翻译成中文就是:而我们需要知道的,也是最为基础的,...
2019-09-19 22:57:30 158
原创 Spring Data JPA中的七大接口和两大实现类
Spring Data JPA 中的七大接口和两大实现类接口*PS:都是在org.springframework.data.包中的。Repository接口CrudRepository接口PagingAndSortingRepository接口JpaRepository接口QueryByExampleExecutor接口JpaSpecificationExecutor接口Quer...
2019-09-18 22:59:38 2620
原创 Swagger的使用
SwaggerSwagger是什么?简单的来说就是一款自动生成API文档并且支持在线调试的一个十分实用的工具。通过Swagger规定的规范去定义接口几接口相关的信息,再通过Swagger衍生出来的一系列项目和工具,就可以生成各种格式的接口文档。对于程序员来说,最难受的就是需要自己写接口文档等一系列其他文档,但是最最难受的就是别人不写文档。尤其是现在对于前后端分离,如果接口调用不同意,...
2019-09-17 18:31:36 153
原创 Spring Data JPA 基本使用
Spring Data JPA首先我们需要知道JPA是什么JPA Java Persistence API:用于对象持久化的API.那么什么是持久化呢?持久化就是把数据保存到可以永久保存的存储设备中,持久化的要的应用是奖内存中的对象保存到数据库中,或者磁盘文件中,XML数据文件中等等....
2019-09-16 22:41:07 123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人