自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (2)
  • 收藏
  • 关注

原创 【C语言基础】第02章_变量与进制

语言中变量、函数、数组名、结构体等要素命名时使用的字符序列,称为标识符。技巧:凡是自己可以起名字的地方都叫标识符。

2023-11-09 00:01:40 186

原创 【C语言基础】第01章_C语言入门

1969年,美国贝尔实验室的肯·汤普森(Ken Thompson)与丹尼斯·里奇(Dennis Ritchie)一起开发了Unix 操作系统。Unix 是用 汇编语言 写的,依赖于计算机硬件。为了程序的 可读性 和 可移植性 ,他们决定使用高级语言重写。但是,当时的高级语言无法满足他们的要求,汤普森就在 BCPL 语言的基础上发明了 B 语言 。

2023-11-05 17:40:33 214

原创 【PostgreSQL】【存储管理】表和元组的组织方式

外存管理负责处理数据库与外存介质(PostgreSQL8.4.1版本中只支持磁盘的管理操作)的交互过程。在PostgreSQL中,外存管理由SMGR(主要代码在smgr.c中)提供了对外存的统一接口。SMGR负责统管各种介质管理器,会根据上层的请求选择一个具体的介质管理器进行操作。每个表在磁盘中都以一定的结构进行存储,针对磁盘,外存管理模块提供了磁盘管理器和VFD机制。在PostgreSQL8.4.1版本中,还为每个表文件创建了两个附属文件,即空闲空间映射表(FSM)和可见性文件映射表(VM)。

2023-10-01 16:40:12 463

原创 【PostgreSQL】【存储管理】存储管理器的体系结构

数据库管理系统的本质任务是向存储设备上写入数据或者从存储设备上读出数据。在PostgreSQL中有专门的模块负责管理内存和外存的存储设备,我们称之为存储管理器。存储管理器提供了一组统一的管理外存和内存资源的功能模块,所有对外存与内存的操作都将交由存储管理器处理,可以认为存储管理器是数据库系统与物理存取设备的接口。

2023-09-29 18:27:48 327

原创 【软件工程】软件建模基本概念和常用UML模型图

若要创建一座大厦,首先要做的肯定不是先去买所需要的材料,而是需要对建筑物的大小,形状和样式做一个规划,做出相应的图纸和模型。软件开发过程中,不同的阶段需要用到不同的UML图,选择使用那些图,需要深刻理解改图的主要用途,以及它表达的优势。软件建模体现了软件设计思想,需求和实现之间架起了一座桥梁,通过模型指导软件系统的具体实现。在不同的领域和场景下有不同的软件建模方法,其各自的建模思想和采用的建模工具也不尽相同。模型并不是软件系统的一个完备表示,而是所研究的系统的一种抽象。顺序图,活动图和状态图的对比。

2023-08-27 23:29:05 1093

原创 【软件工程】需求分析和需求管理

用户解决某个问题或者达到某个目标所需要的条件和能力;一个系统或者系统组件为了实现某个锲约,便准,规格说明或其他需求遵循的文件而必须满足的条件或拥有的能力;对上述两点描述的条件或能力的文档化表示。在不同的条件和能力下,会有不同的解决方案。也就是说一个问题可以有多个解决方案,这就是需求的二重性需求=问题+解决方案,关键是挖掘根因定义:准确理解用户的要求,进行细致的调查分析,即将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转化到相应形式的规约(需求规格说明)的过程。

2023-08-27 16:18:41 299

原创 【PG基础】数据库命令及数据集簇

使用PostgreSQL数据库命令行交互工具psql登录数据库后,可以执行SQL命令或者psql提供的元命令。数据库初始化过程中创建整个数据库系统的数据集簇(目录)并创建两个模板数据库和默认用户数据库,该过程由initdb程序完成的,它属于一个独立的程序。

2023-08-10 23:39:32 995

原创 【PG基础】概述与安装

本文主要简单介绍了pg数据库的简介和特性。然后主要介绍了pg在Linux系统上的安装步骤,最后实现了测试和远程连接实战。

2023-07-30 19:48:18 242

原创 详细介绍MySQL性能分析工具的使用

定位了查询慢的SQL之后,我们就可以使用EXPLAIN或DESCRIBE工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLA1N语句是一样的,并且分析结果也是一样的,MySQL中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Quey提供它认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)

2023-04-10 16:44:05 359 1

原创 详细介绍MySQL中的索引的创建与设计原则

索引是一把双刃剑,可提高查询效率,但也会降低插入和更新的速度并占用磁盘空间。选择索引的最终目的是为了使查询的速度变快,上面给出的原则是最基本的准则,但不能拘泥于上面的准则,大家要在以后的学习和工作中进行不断的实践,根据应用的实际情况进行分析和判断,选择最合适的索引方式。

2023-04-09 18:42:51 568

原创 详细介绍InnoDB数据存储结构

页a、页b、页c … 页n 这些页可以不在物理结构上相连,只要通过双向链表相关联即可。每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录。

2023-04-04 18:49:18 614

原创 详细介绍MySQL中索引的底层数据结构

索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现高级查找算法。索引是在存储引擎中实现的,因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有索引类型。同时,存储引摩可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。有些存储擎支持更多的索引数和更大的索引长度。

2023-04-02 18:00:35 1169

原创 详细介绍各种MySQL存储引擎

MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。

2023-04-02 11:59:48 778

原创 详细介绍逻辑架构与SQL执行流程

首先MySQL是典型的C/S架构,即Client/Server 架构,服务器端程序使用的mysqld。那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?这里以查询请求为例展示:下面具体展开看一下:连接器:MySQL服务器之外的客户端程序(与具体语言有关系)基础服务组件。

2023-04-01 15:59:45 282

原创 JVM完整笔记

本文章是一篇学习笔记,记录了整个JVM相关的知识。

2023-03-28 13:47:39 521

原创 Leetcode_135_分发糖果 Candy (Hard)

我们只需要简单的两次遍历即可:把所有孩子的糖果数初始化为 1;先从左往右遍历一遍,如果右边孩子的评分比左边的高,则右边孩子的糖果数更新为左边孩子的糖果数加 1;再从右往左遍历一遍,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。通过这两次遍历,分配的糖果就可以满足题目要求了。这里的贪心策略即为,在每次遍历中,只考虑并更新相邻一侧的大小关系。

2023-03-26 19:41:14 59

原创 Leetcode_455_分发饼干(Assign Cookies (Easy))

因为胃口值最小的孩子最容易满足,所以我们先考虑这个孩子。为了尽量使得剩下的饼干可以满足胃口值更大的孩子,所以我们应该把大于等于这个孩子胃口值的、且大小最小的饼干给这个孩子。满足了这个孩子之后,我们采取同样的策略,考虑剩下孩子里胃口值最小的孩子,直到没有满足条件的饼干存在。:给剩余的孩子里最小胃口值的孩子分配最小的能满足他的饼干,这样尽可能满足越多的孩子。本题目中:贪心选择是每一次给剩余的孩子里最小胃口值的孩子分配最小的能满足他的饼干。

2023-03-26 18:40:07 63

原创 1.1 三大组件

本文主要介绍了NIO的三大组件

2022-07-04 14:37:26 154

原创 学习设计模式总结

这里就是我的整个设计模式学习笔记的导航,方便快速查找相关信息。我觉得设计模式是一种编程思想,需要我们经常反复看,特别是在学习框架的源代码的时候需要经常查看相关设计模式。

2022-07-03 20:44:16 143

原创 解释器设计模式

由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。每一条文法规则都可以表示为一个类,因此可以方便地实现一个简单的语言。在抽象语法树中每一个表达式节点类的实现方式都是相似的,这些类的代码编写都不会特别复杂。增加新的解释表达式较为方便。如果用户需要增加新的解释表达式只需要对应增加一个新的终结符表达式或非终结符表达式类,原有表达式类代码无须修改,符合 “开闭原则”。...

2022-07-03 02:25:45 548

原创 备忘录设计模式

备忘录模式提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。备忘录模式简化了发起人类。发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由管理者进行管理,这符合单一职责原则。...

2022-07-03 01:36:14 455

原创 访问者设计模式

访问者模式在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。访问者模式通过访问者来定义整个对象结构通用的功能,从而提高复用程度。访问者模式通过访问者来分离无关的行为,把相关的行为封装在一起,构成一个访问者,这样每一个访问者的功能都比较单一。...

2022-07-03 00:17:32 435

原创 迭代器设计模式

迭代器它支持以不同的方式遍历一个聚合对象,在同一个聚合对象上可以定义多种遍历方式。在迭代器模式中只需要用一个不同的迭代器来替换原有迭代器即可改变遍历算法,我们也可以自己定义迭代器的子类以支持新的遍历方式...

2022-07-02 09:16:47 555

原创 中介者设计模式

中介者模式通过把多个同事对象之间的交互封装到中介者对象里面,从而使得同事对象之间松散耦合,基本上可以做到互补依赖。这样一来,同事对象就可以独立地变化和复用,而不再像以前那样“牵一处而动全身”了。...

2022-07-02 08:25:00 140

原创 观察者设计模式

观察者模式降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。被观察者发送通知,所有注册的观察者都会收到信息【可以实现广播机制】

2022-07-02 07:46:37 152

原创 状态设计模式

状态模式可以将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。并且允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块。...

2022-07-02 07:26:46 174

原创 责任链设计模式

责任链模式降低了请求发送者和接收者的耦合度,并且增强了系统的可扩展性,后期可以根据需要增加新的请求处理类,满足开闭原则。增强了给对象指派职责的灵活性,比如当工作流程发生变化,可以动态地改变链内的成员或者修改它们的次序,也可动态地新增或者删除责任。最后责任链简化了对象之间的连接,一个对象只需保持一个指向其后继者的引用,不需保持其他所有处理者的引用,这避免了使用众多的 if 或者 if···else 语句。...

2022-07-01 23:10:26 1727

原创 命令设计模式

降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,它满足“开闭原则”,对扩展比较灵活。可以实现宏命令。命令模式可以与组合模式结合,将多个命令装配成一个组合命令,即宏命令。方便实现 Undo 和 Redo 操作。命令模式可以与后面介绍的备忘录模式结合,实现命令的撤销与恢复。...

2022-07-01 22:11:48 205

原创 策略设计模式

一个系统需要动态地在几种算法中选择一种时,可将每个算法封装到策略类中。一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现,可将每个条件分支移入它们各自的策略类中以代替这些条件语句。系统中各算法彼此完全独立,且要求对客户隐藏具体算法的实现细节时。系统要求使用算法的客户不应该知道其操作的数据时,可使用策略模式来隐藏与算法相关的数据结构。多个类只区别在表现行为不同,可以使用策略模式,在运行时动态选择具体要执行的行为。...

2022-07-01 21:41:02 1248

原创 模板方法设计模式

算法的整体步骤很固定,但其中个别部分易变时,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制。...

2022-07-01 21:22:36 82

原创 享元设计模式

享元模式极大减少内存中相似或相同对象数量,节约系统资源,提供系统性能,享元模式中的外部状态相对独立,且不影响内部状态

2022-07-01 01:34:49 864

原创 组合设计模式

组合模式可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次,它让客户端忽略了层次的差异,方便对整个层次结构进行控制。客户端可以一致地使用一个组合结构或其中单个对象,不必关心处理的是单个对象还是整个组合结构,简化了客户端代码。在组合模式中增加新的树枝节点和叶子节点都很方便,无须对现有类库进行任何修改,符合“开闭原则”。组合模式为树形结构的面向对象实现提供了一种灵活的解决方案,通过叶子节点和树枝节点的递归组合,可以形成复杂的树形结构,但对树形结构的控制却非常简单。...

2022-07-01 01:11:32 126

原创 外观设计模式

降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易。

2022-06-30 16:05:50 90

原创 桥接设计模式

桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。

2022-06-30 15:53:08 75

原创 装饰者设计模式

饰者模式可以带来比继承更加灵活性的扩展功能,使用更加方便,可以通过组合不同的装饰者对象来获取具有不同行为状态的多样化的结果。装饰者模式比继承更具良好的扩展性,完美的遵循开闭原则,继承是静态的附加责任,装饰者则是动态的附加责任。...

2022-06-30 14:55:55 90

原创 代理设计模式

本文简述了代理模式概述和结构,重点详细介绍了静态代理,JDK动态代理,CGLIB动态代理。最后比较了三种代理和代理模式的优缺点,使用场景。

2022-06-24 23:43:19 80

原创 树结构的基础部分

树结构的基础部分

2022-05-04 12:40:40 161

原创 详细介绍递归和哈希表

详细介绍递归和哈希表,但是需要多做相关的题目才会进一步巩固这些知识

2022-05-03 17:32:53 107

原创 详细介绍栈和其使用

本文详细介绍了有关栈的基础知识和其入门使用,特别指出了其在计算器中的使用。

2022-05-03 16:18:04 211

原创 详细介绍和使用链表

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)

2022-04-23 21:23:16 456

计算机基础知识总结.pdf

主要介绍了整体的计算机基础知识点,适合于入行者,或者准备计算机等级考试的人

2021-04-22

面试算法必刷题-算法复习.pdf

面试算法必刷题

2021-04-05

空空如也

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

TA关注的人

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