自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

坚持、死磕、重复

The best time to plant a tree was 10 years ago.The second best time is now.

  • 博客(42)
  • 收藏
  • 关注

原创 PostgreSql系列(一)分表实践,大数据量下分类型分月存储

数据库的表继承,面向对象的思想也可以应用在数据库中目录一、PostgreSQL的表继承1.1 典型场景1.2 表继承说明二、实例描述三、实践描述3.1 实现思路3.2 实现步骤3.3 具体实现3.3.1 创建告警数据全局唯一ID,所用表id使用这个全局唯一ID3.3.2 告警基本表3.3.3 type=1的类型1子表3.3.4 type=2的类型2子表3.3.5 创建类型1子表触发器3.3.6 创建类型2子表触发器3.3.7 为类型1子表设置触发器3.3.8 为类型2子表设置触发器3.4 结果测试四.

2020-11-10 12:40:00 45

原创 JAVA基础系列(一)概念和历史

回顾一下历史,看看历史时间线上技术的发展,你才能明白明天会是什么样的。

2020-11-27 00:36:35 37

原创 23种设计模式总结篇【理解及应用】

23种设计模式的概念及应用总结

2020-11-24 23:43:42 47

原创 结构性设计模式(十一)访问者模式【运行时 or 编译时】

目录一、概念及原理二、实例说明2.1 需求说明2.2 step1 最简单的实现方式2.2 step2 改进--拆分解耦2.3 step3 解决第二步的问题(核心)2.4 step4 继续添加新功能2.5 step5 再次抽象Visitor 接口2.6 访问者模式小结三、双分派机制3.1 单分派机制和双分派机制3.2 java中的单分派机制四、小结五、参考链接一、概念及原理访问者者模式的英文翻译是 Visitor Design Pattern。在 GoF 的《设计模式》一书中,它是这么定义的:Allo

2020-11-14 15:35:07 15

原创 结构性设计模式(十)中介模式【地方分权到中央集权】

目录一、概念及原理二、实例说明2.1 航空管制2.2 复杂对话框三、中介模式 VS 观察者模式四、小结五、参考链接一、概念及原理中介模式的英文翻译是 Mediator Design Pattern。在 GoF 中的《设计模式》一书中,它是这样定义的:Mediator pattern defines a separate (mediator) object that encapsulates the interaction between a set of objects and the object

2020-11-14 00:13:58 60

原创 结构性设计模式(九)解释器模式【将语法规则拆分成一些小的独立的单元】

目录一、原理和实现二、实例说明三、参考链接一、原理和实现解释器模式的英文翻译是 Interpreter Design Pattern。在 GoF 的《设计模式》一书中,它是这样定义的:Interpreter pattern is used to defines a grammatical representation for a language and provides an interpreter to deal with this grammar.翻译成中文就是:解释器模式为某个语言定

2020-11-13 23:57:15 43

原创 结构性设计模式(八)命令模式【王者荣耀的服务端实现】

目录一、概念及原理二、具体实例2.1 游戏开发背景知识2.2 线程内轮询接收请求和处理请求实现三、命令模式 VS 策略模式四、小结五、参考链接一、概念及原理命令模式的英文翻译是 Command Design Pattern。在 GoF 的《设计模式》一书中,定义如下:The command pattern encapsulates a request as an object, thereby letting us parameterize other objects with different

2020-11-13 23:31:27 66

原创 结构性设计模式(七)备忘录模式【快照和恢复】

备忘录模式,主要是用来防丢失、撤销、恢复等。目录一、原理和实现二、举例说明2.1 实例需求2.2 通用的实现2.3 内存和时间优化三、小结四、参考链接一、原理和实现GoF 的《设计模式》定义如下:Captures and externalizes an object’s internal state so that it can be restored later, all without violating encapsulation.翻译如下:在不违背封装原则的前提下,捕获一个对象.

2020-11-13 13:41:25 15

原创 结构性设计模式(六)迭代器模式【实现一个Java中的迭代器】

编程语言一般都会将迭代器作为基础类库,用来遍历集合,那它是怎么实现的呢?目录一、原理及实现二、具体实现实例2.1 实例需求2.2 Iterator接口定义2.3 具体实现三、迭代器的模式的优势四、遍历集合的时候为什么不能删除集合元素?4.1 未决行为4.2 为什么会出错4.3 如何解决4.4 为什么java里还有remove()五、小结六、参考链接一、原理及实现迭代器模式用来遍历集合对象,集合对象”也可以叫“容器”“聚合对象”,实际上就是包含一组对象的对象,比如数组、链表、树、图、跳表。迭代器模式.

2020-11-11 15:33:43 19

原创 结构性设计模式(五)状态模式【超级玛丽要变身】

状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法。今天,详细讲讲这几种实现方式,并且对比一下它们的优劣和应用场景。目录一、状态机二、解决状态机的几种思路2.1 分支逻辑法2.2 查表法2.3 状态模式法三、状态模式总结三、状态模式总结一、状态机有限状态机,英文翻译是 Finite State Machine,缩写为 FSM,简称为状态机。状态机有 3 个组成部分:状态(State)、事件(Event.

2020-11-02 13:42:35 31

原创 行为型设计模式(四)职责链模式【一环接一环】

一、概念及原理GoF 的《设计模式》中,它是这么定义的Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.翻译成中文就是:将请求的

2020-11-02 11:40:52 62

原创 行为型设计模式(三)策略模式【冗长的 if-else?】

策略的定义、创建和使用一、原理及实现GoF 的《设计模式》中的定义:Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.翻译成中文定义一族算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客.

2020-10-24 16:19:35 17

原创 行为型设计模式(二)模板模式【给你打个样儿】

两大作用:复用和扩展一、原理及实现GoF 的《设计模式》的定义:Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.翻译成中文模板方法模式.

2020-10-24 14:52:43 29

原创 行为型设计模式(一)观察者模式【将观察者和被观察者代码解耦】

进程内、进程间、同步的、异步的几种方式一、原理及通用实现GoF 的《设计模式》的定义:Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.翻译成中文在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。一般情况下,.

2020-10-24 10:32:45 95

原创 结构性设计模式(七)组合模式【树形结构专用】

Compose objects into tree structure to represent part-whole hierarchies.Composite lets client treat individual objects and compositions of objects uniformly.将一组对象组织(Compose)成树形结构,以表示一种“部分 - 整体”的层次结构。组合让客户端(在很多设计模式书籍中,“客户端”代指代码的使用者。)可以统一单个对象和组合对象的处理逻辑。.

2020-10-12 00:13:47 35 2

原创 结构性设计模式(六)享元模式【Java Integer、String 中的应用】

减少运行时对象实例的个数,节省内存目录一、享元模式的原理与实现1.1 原理1.2 实现二、享元模式的应用举例2.1 QQ象棋2.2 文本编辑器三、享元模式 vs 单例、缓存、对象池三、Java Integer、String 中的应用一、享元模式的原理与实现1.1 原理享元”,顾名思义就是被共享的单元。享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象。具体来讲,当一个系统中存在大量重复对象的时候,我们就可以利用享元模式,将对象设计成享元,在内存中只保留一份实例,供多处代码引用,这样.

2020-10-11 23:52:40 42

原创 结构性设计模式(五)门面模式【挑挑拣拣,重新组装】

集中化、简化目录一、概念和实现1.1 都会遇到的痛点1.2 概念二、门面模式有什么用2.1 解决易用性问题2.2 解决性能问题2.3 解决分布式事务问题三、关于接口粒度的小结四、主要参考内容一、概念和实现1.1 都会遇到的痛点如果你平时的工作涉及接口开发,不知道你有没有遇到关于接口粒度的问题呢?为了保证接口的可复用性(或者叫通用性),我们需要将接口尽量设计得细粒度一点,职责单一一点。但是,如果接口的粒度过小,在接口的使用者开发一个业务功能时,就会导致需要调用 n 多细粒度的接口才能完成。调用.

2020-09-26 11:54:16 32

原创 结构性设计模式(四)适配器模式【如何把方的变成圆的】

如何把一个方块放到圆洞里

2020-09-26 11:28:28 621

原创 结构性设计模式(三)装饰器模式【给爱用继承的人一个全新的设计思路】

给爱用继承的人一个全新的设计眼界目录

2020-09-24 01:23:47 32

原创 数据结构与算法(三)【栈】【详解及应用】

后进者先出,先进者后出目录一、概念二、栈的实现方式2.1 基于数组的实现2.2 基于链表的实现三、栈的应用场景3.1 栈在函数调用中的应用3.2 栈在表达式求值中的应用3.3 栈在括号匹配中的应用3.4 栈在浏览器进退中的应用四、主要参考链接一、概念栈是一种操作受限的数据结构,只支持入栈和出栈操作。后进先出是它最大的特点。一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依次取,不能从中间任意抽出。从栈的操作特性上来看,栈是一种“操作受限.

2020-09-20 00:15:18 52

原创 结构性设计模式(二)桥接模式【不只改变你的实现,也改变你的抽象】

通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变目录一、概念二、举例说明三、桥接的优点四、桥接的用途和缺点五、哪些地方用到了桥接模式一、概念两种定义二、举例说明三、桥接的优点将实现予以解耦,让它和界面之间不再永久绑定。抽象和实现可以独立扩展,不会影响到对方。对于”具体的抽象类”所做的改变,不会影响到客户四、桥接的用途和缺点适合使用在需要跨越多个平台的图形和窗口系统上当需要用不同的方式改变接口和实现使,你会发现桥接模式很好用桥接模式的缺点是增加了复杂度五、哪些地.

2020-09-18 23:36:50 50

原创 数据结构与算法(二)【链表】【详解及编程技巧】

链表,一种最考验逻辑思维能力的数据结构目录一、链表和数组的区别1.1 概念1.2 性能对比二、单链表三、循环链表四、双向链表五、双向循环链表六、写链表代码的技巧6.1 技巧一:理解指针或者引用的含义6.2 技巧二:警惕指针丢失和内存泄漏6.3 技巧三:利用哨兵简化实现难度6.4 技巧四:重点留意边界条件处理6.5 技巧五:举例画图,辅助思考6.6 终极技巧:多写多练,没有捷径七、主要参考链接一、链表和数组的区别1.1 概念链表是一种和数据“相反”的数据结构,也是一种非常基础、非常常用的数据结构。.

2020-09-16 00:07:30 26

原创 结构性设计模式(一)代理模式【不想打扰你,只想默默的帮助你】

hi,那个女孩,这几年过的好吗?不想打扰你,只想默默的帮助你。目录

2020-08-30 01:38:47 40

原创 Java反射实战篇【实现一个最最简单的框架】

实现一个“框架”,在不改变该类的任何代码的前提下,实现创建任意类的对象,并执行其中的任意方法。目录一、先定义两个简单的类二、直接new有什么弊端三、大致实现的思路四、实例说明五、小结一、先定义两个简单的类简单的不能再简单的两个类一个男孩public class Boy { public void play() { System.out.println("男孩正在打篮球····"); }}一个女孩public class Girl { public void sing()

2020-08-24 00:25:51 88

原创 Java反射基础篇【简单原理和常用API的使用】

Java反射,是框架设计的灵魂。目录一、概述1.1 什么是反射?1.2 反射有什么好处?二、获取字节码Class对象的三种方式三、Class对象功能详解3.1 概述3.2 获取Field详解3.2.1 获取Field举例说明3.2.2 获取了Field之后有什么用?3.2.3 小结3.3 获取Constructor详解3.3.1 实例说明3.3.2 小结3.4 获取Method详解3.4.1 实例说明3.4.2 小结四、java反射用在了哪些地方?一、概述1.1 什么是反射?将类的各个部分封装成.

2020-08-23 00:49:10 163 1

原创 创建型设计模式(四)原型模式【什么是浅拷贝、深拷贝?】

java这种基于类的面向对象的编程语言,比较少用到原型模式。而JavaScript这种基于原型的面向对象编程语言,原型模式很常用。什么叫原型模式?原型模式有哪些应用场景?它的两种实现方式,深拷贝和浅拷贝。目录一、什么叫原型模式?1.1 什么叫对象的创建成本比较大?1.2 一个例子二、深拷贝和浅拷贝2.1 什么是深什么是浅?2.2 如何实现深拷贝2.3 交替使用深浅拷贝三、参考链接一、什么叫原型模式?如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利

2020-08-20 23:38:16 170

原创 创建型设计模式(三)建造者模式【有构造函数有set,为啥还要建造者模式】

目录一、为什么要用创建者模式二、如何实现创建者模式三、创建者模式和工厂模式的区别?四、主要参考直接使用构造函数或者配合 set 方法就能创建对象,为什么还需要建造者模式来创建呢?建造者模式和工厂模式都可以创建对象,那它们两个的区别在哪里呢?一、为什么要用创建者模式如果一个类中有很多属性,为了避免构造函数的参数列表过长,影响代码的可读性和易用性,我们可以通过构造函数配合 set() 方法来解决。但是,如果存在下面情况中的任意一种,我们就要考虑使用建造者模式了。我们把类的必填属性放到构造函数中,强制

2020-08-19 00:34:02 43

原创 创建型设计模式(二)工厂模式【作坊越来越大,还得建个厂】

目录一、简单工厂(Simple Factory)1.1 第一种实现方式1.2 第二种实现方式二、工厂方法(Factory Method)三、什么时候用简单工厂,什么时候用工厂方法?四、抽象工厂五、哪些地方用到了工厂模式六、小结七、主要参考一般情况下,工厂模式分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。在这三种细分的工厂模式中,简单工厂、工厂方法原理比较简单,在实际的项目中也比较常用。而抽象工厂的原理稍微复杂点,在实际的项目中相对也不常用。一、简单工厂(Simple Factory)通过一个例

2020-08-17 23:54:13 39

原创 创建型设计模式(一)单例模式【栓住对象的N种方法】

目录一、单例的定义二、为什么要使用单例模式2.1 实例一,处理资源访问冲突2.2 表示全局唯一类三、如何实现一个单例模式3.1 饿汉式3.2 懒汉式3.3 双重检验3.4 静态内部类3.5 枚举四、单例有哪些问题?什么时候使用单例4.1 问题4.2 什么时候使用五、扩展知识5.1 单例模式的唯一性5.2 如果实现线程唯一的单例5.3 如果实现集群环境的单例5.4 如果实现一个多例模式?六、主要参考一、单例的定义单例设计模式(Singleton Design Pattern)理解起来非常简单。一个类只允许

2020-08-14 01:58:32 68

原创 知识框架总述(一)【Java基础】

目录一、Java基础知识框架1.1 面向对象1.2 数据类型1.3 基本语法1.4 内存与JVM1.5 常用类系列1.6 其他核心内容1.6.1 接口1.6.2 注解1.6.3 内部类1.6.4 枚举1.6.5 泛型1.6.6 异常1.7 集合1.8 并发1.9 IO二、思维导图一、Java基础知识框架工作四年了,对并发和NIO等都还是小白,努力吧,用一年的时间把慢慢补充丰满,加油。1.1 面向对象1.2 数据类型1.3 基本语法1.4 内存与JVM1.5 常用类系列1.6 其他核心内容

2020-08-01 00:06:32 34

原创 设计模式基础篇(二)【编程规范和重构】

目录一、重构的几个概念1.1 为什么要重构1.2 重构什么1.3 什么时候重构1.4 如何重构二、单元测试2.1 什么是单元测试?2.2 为什么要写单元测试?2.3 如何编写单元测试?三、代码的可测试性3.1 什么是代码的可测试性?3.2 编写可测试性代码的最有效手段3.3 常见的 Anti-Patterns四、大型重构:解耦4.1 “解耦”为何如此重要?4.2 代码是否需要“解耦”?4.3 如何给代码“解耦”?五、小型重构:编码规范5.1 命名与注释5.2 代码风格5.3 编程技巧5.4 统一编码规范六、

2020-07-30 00:56:50 50

原创 设计模式基础篇(一)【设计原则总结】

目录一、SOLID原则:SRP单一职责原则二、SOLID原则:OCP开闭原则2.1 如何理解“对扩展开放,对修改关闭”2.2 如何做到“对扩展开放、修改关闭”三、SOLID原则:LSP里式替换原则3.1 LSP概念3.2 LSP和多态的区别四、SOLID原则:ISP接口隔离原则五、SOLID原则:DIP依赖倒置原则5.1 控制反转5.2 依赖注入5.3 依赖注入框架5.4 依赖反转原则六、KISS保持简单、YAGNI不需要原则七、DRY 不要重复原则八、LOD 迪米特法则8.1 如何理解“高内聚、松耦合”?

2020-07-26 00:11:51 110

原创 知识架构总述(二)【数据结构与算法】

目录一、基础篇二、进阶篇三、高手篇四、骨灰篇五、思维导图总结六、主要参考链接一、基础篇复杂度分析数组 【1】数据结构与算法(一)数组详解及实战.链表栈、队列递归排列、二分查找二、进阶篇散列表二叉树堆和堆排序字符串匹配算法Trie树图的表示深度广度优先搜索三、高手篇四种算法思想跳表拓扑排序Dijkstra算法A*算法B+树位图四、骨灰篇BM、KMP、AC自动机红黑树哈希算法搜索索引并行计算向量空间概率统计五、思维导图总结

2020-07-25 14:50:22 95

原创 Java概念基础篇(一)【你应该掌握的几个面向对象的概念】

这里写目录标题一、面向对象概述二、面向对象四大特征三、面向对象 VS 面向过程四、面向对象分析、设计和编程五、接口 VS 抽象类六、基于接口而非实现编程七、多用组合少用集成7.1 为什么不推荐使用继承?7.2 组合相比继承有哪些优势?7.3 如何判断该用组合还是继承?八、贫血模型和充血模型九、思维导图总结十、主要参考一、面向对象概述编程范式"(programming paradigm),也就是如何编写程序的方法论。主流的编程范式(编程风格)有三种:面向过程(procedure oriented P

2020-07-24 00:00:38 53

原创 知识框架总述(三)【设计模式】

这里写目录标题一、面向对象二、设计原则三、DBMS系列知识四、实战系列五、思维导图总结六、主要参考一、面向对象封装、抽象、继承、多态面向对象编程 VS 面向过程编程面向对象分析、设计、编程接口 VS 抽象类基于接口而非实现编程多用组合少用继承贫血模型和充血模型二、设计原则数三、DBMS系列知识DBMS的发展历史excel+sql的骚操作websql介绍Redis系列 【1】索引概述 【2】索引原理 【3】索引的使用原则 【4】索引的利弊.SQLite介

2020-07-21 00:44:08 54

原创 知识框架总述(四)【数据库】

这里写目录标题一、语法基础二、性能优化三、DBMS系列知识四、实战系列五、思维导图总结一、语法基础SQL历史SQL的执行流程基础语法常见约束设计原则检索数据-select数据过滤-whereSQL函数聚集函数子查询连接视图存储过程事务事务隔离游标二、性能优化数据库调优范式设计反范式设计索引系列数据页磁盘IO锁MVCC多版本并发控制技术查询优化器性能分析工具三、DBMS系列知识DBMS的发展历史excel+sql的骚操作websql介绍

2020-07-21 00:12:52 111

原创 架构基础(二)【什么是分库分表】

笔记类,指在学习课程、专栏过程中对个人有用内容的记录和少许理解。目录一、前言二、业务分库2.1 业务分库的概念2.2 业务分库的问题2.3 业务分库的建议三、分表3.1 分表的概念3.2 分表的问题3.2.1 **垂直分表**3.2.2 **水平分表**四、实现方法五、参考链接在很多面试中都会问,当数据量很大时,你是怎么处理的,几乎都会回答说分库分表。但是细问下去,分库分表带来了哪些问题,你是怎么解决这些问题的,很少有对其所以然说清楚的,这篇对这些问题进行比较系统的说明,希望对大家有用。一、前言.

2020-07-12 00:55:19 309

原创 杂七杂八(一)【HTTP状态码简介及汇总】

这里写目录标题一、错误码简介二、错误码介绍2.1 信息响应(100–199)2.2 成功响应(200-299)2.3 重定向(300–399)2.4 客户端错误(400–499)2.5 服务器错误(500–599)三、参考链接一、错误码简介当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。F12如下图所示:HTTP 响应状态代码指示特定 HTTP 请求是

2020-07-09 21:30:07 100

原创 架构基础(三)【NoSQL介绍】

笔记类,指在学习课程、专栏过程中对个人有用内容的记录和少许理解。目录一、NoSQL的发展历史二、关系型数据的缺点三、常见的NoSQL的分类3.1 K-V存储3.2 文档数据库3.3 列式数据库3.4 全文搜索引擎3.4.1 全文搜索基本原理3.4.2 全文搜索的使用方式四、其他的分类方式五、写在最后一、NoSQL的发展历史定义:只要是为了弥补关系数据库的缺陷的方案,都可算nosql二、关系型数据的缺点关系数据库经过几十年的发展后已经非常成熟,强大的 SQL 功能和 ACID 的属性,使得关.

2020-07-06 23:39:28 134

原创 数据结构与算法(一)【数组】【详解及实战】

目录一、什么是数组?1.1 线性表1.2 非线性表1.3 连续的内存空间和相同类型的数据二、插入和删除为什么低效?2.1 插入操作2.2 删除操作三、容器是否可以取代数组?四、为什么数组要从0开始编号,而不是从1开始呢?五、经典leetcode题(数组)5.1 求三数之和(Three Sum)5.1.1 题目5.1.2 自己的解法-暴力解法5.1.3 优秀解法5.2 求众数(Majority Element)5.2.1 自己的解法-排序法5.2.2 优秀解法-摩尔投票法5.3 求缺失的第一个正数(Missi

2020-07-01 17:32:03 302

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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