自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式-领域模式

“领域“模式:在特定领域中,某些变化虽然频繁,但可以抽象为某种规则。这时候,结合特定领域,将问题抽象为语法规则,从而给出在该领域下的一般性解决方案。

2025-03-26 09:29:42 576

原创 设计模式-行为变化

”行为变化“模式:在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化。“行为变化"模式将组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦

2025-03-24 20:14:48 723

原创 设计模式-数据结构

数据结构“模式:常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案。Composite 组合模式Iterator 迭代器模式Chain Of Resposibility 职责链模式。

2025-03-23 14:41:28 1047

原创 设计模式-状态变化

”状态变化“模式:在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化"模式为这一问题提供了一种解决方案。

2025-03-22 19:09:46 749

原创 设计模式-接口隔离

接口隔离”模式:在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。

2025-03-21 17:02:10 687 1

原创 设计模式-对象性能

"对象性能”模式:面向对象很好地解决了“抽象”的问题,但是不可避免地要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某种情况下,面向对象所带来的成本必须谨慎处理。Singleton 单例模式Flyweight 享元模式确保一个类只有一个实例。有些对象全局只应该存在一个,拥有多个在逻辑上会出问题。为该实例提供全局访问点。有些对象有全局访问属性。动机:在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很块充斥在系统中,从而带来很高的运行时代价—主要指内存需求方面的代价。

2025-03-18 15:10:36 885 1

原创 设计模式-对象创建

对象创建”模式:通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。Factory Method 工厂方法Abstract Factory 抽象工厂PrototypeBuilder在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。如何应对这种变化?

2025-03-17 17:59:20 980

原创 设计模式-单一职责

在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。Decorator 装饰模式Bridge 桥模式在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?

2025-03-17 11:18:52 1216

原创 设计模式-组件协作

组件协作模式:现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。Template Method 模板方法Observer/Event 观察者模式Strategy 策略模式动机:在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。

2025-03-16 19:49:36 795 1

原创 设计模式的引入

每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动

2025-02-26 20:01:13 990

原创 Redis持久化

Redis 支持 RDB(RedisDataBase) 和 AOF(AppendOnlyFile) 两种持久化机制,持久化功能有效地避免因进程退出造成数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。

2025-02-17 16:00:51 1044

原创 Redis的常见数据结构

Redis5大数据结构是redis的根基,只有掌握了他们,才能更进一步的学习redis

2025-02-15 17:04:06 773

原创 Redis内部数据结构--跳表详解

skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。

2025-01-23 17:17:32 2002

原创 B树系列详解

B树系列是为了提高外搜索效率的一类数据结构,被广泛应用于数据库中

2025-01-21 16:43:40 1315

原创 Redis基础--基本全局指令与架构

Redis有5种数据结构,但它们都是键值对中的值,对于键来说有⼀些通用的命令。

2024-12-21 19:16:15 779

原创 架构演进之路

架构之所以会进行演变,是因为硬件的限制导致没办法容纳更多的请求

2024-12-21 08:31:20 1188

原创 图论算法 -- 最短路算法

介绍图论最基本的算法,单源已经多源最短路:Dijkstra、bellman-ford、spfa、Floyd

2024-12-20 20:37:37 834

原创 高级IO(多路转接)

我们最常见的IO是和磁盘打交道,众所周知磁盘的速度虽然没有内存、cache、寄存器快,但是对于我们来说也是比较快的,如果读写的内容不多,几乎可以在一瞬间完成IO但IO碰上网络时,等的时间就是肉眼可见的增多了,本节的IO分案主要也是为了解决IO速度问题。

2024-12-12 18:41:00 981

原创 高并发内存池--tcmalloc

tcmalloc是Google开源项目,全称thread caching,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关函数

2024-12-08 16:32:15 843

原创 分布式在线评测系统

此项目是仿leetcode实现在线OJ功能的,只实现类似leetcode的题目列表+在线编程功能主要聚焦于后端设计,前端仅仅实现其功能即可。

2024-11-23 21:10:25 1303

原创 智能指针RAII(C++)

智能指针基于RAII思想,RAII是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。

2024-11-09 17:14:38 955

原创 c++异常详解

异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。

2024-11-08 14:11:54 911

原创 哈希的典型应用

哈希的应用非常广泛,在笔试面试中也是重点考查部分,可以说学会使用此方法是提升实力必不可少的一步。

2024-11-05 20:33:31 697

原创 【数据结构】哈希思想详解

哈希是一种思想,这种思想非常重要,在实际生活中被广泛应用,这篇文章我将重点介绍其概念、细节以及代码实现

2024-11-05 20:27:11 1078

原创 红黑树万字详解

红黑树在AVL树的基础上做了进一步改进,主要体现在不需要频繁调整树的结构

2024-11-03 16:42:40 892

原创 AVL树详解

AVL树是二叉搜索树的改进版本,思考一下,二叉搜索树有什么问题?当我们向二叉搜索树里插入有序序列时,那么二叉搜索树就会退化成线性的,查找效率会变成O(n)

2024-11-01 16:12:40 1045

原创 STL--map、set详解

序列式容器:按元素的插入顺序存储数据,支持顺序访问。每个元素在容器中的位置与其插入顺序相关。关联式容器:按键值对存储数据,通常根据键的值进行排序(在有序关联容器中)或哈希(在无序关联容器中)。

2024-10-25 17:29:01 1021

原创 二叉搜索树详解

想要深入理解和运用C++STL标准库的map和set,掌握二叉搜索树是必不可少的,了解二叉搜索树的特性,有助于更好的理解map和set的特性。

2024-10-24 15:40:39 1038

原创 c#音乐播放器续(联网下载)

书接上文,我们已经实现了一个能够播放本地音乐的音乐播放器,能够播放众多音乐格式,包括.ogg,接下来,我们将为我们的音乐播放器添加一个令人激动的新功能——联网音乐下载和播放!这个功能将使我们能够通过网络获取音乐,并将其添加到我们的播放列表中。

2024-06-19 12:23:01 1104 1

原创 c#实现音乐的“vip播放功能”

最近在QQ音乐里重温周杰伦的歌,觉得好听到耳朵怀孕,兴起想要下载下来反复听,发现QQ音乐VIP歌曲下载下来的格式居然不是MP3格式,是ogg。OMG!ogg是什么鬼,都不能直接听,顿感失落,思来想去决定自己实现一个QQ音乐的播放功能,搞定这ogg!

2024-05-07 10:23:53 866 3

原创 c#让不同的工厂生产不同的“鸭肉”

实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。

2024-04-05 11:52:47 719

原创 c++模板详解

为了提高效率,复用代码,节省资源,更快的迭代开发,c++提供了模板。这一语法的引进,推进了泛型编程的发展。

2022-12-30 16:39:33 569

原创 深入理解c++多态

多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。

2022-10-30 11:53:08 547

原创 深入理解c++继承

继承是一种对代码的复用,在生活中总是存在着一种包含关系,例如:学生,老师,人;

2022-10-24 15:44:47 1094

原创 c++类和对象万字详解

c++是面向对象的语言,学习c++的第一步就是理解c++类和对象的性质,c++由于产生时间较早,在语法学习上相较于其他面向对象的语言会有不少的坑,虽然这些坑会阻碍我们学习,但是当我迈过这些坑以后,会对c++有更深的理解。

2022-09-28 20:06:59 850 10

原创 c++必学的前置语法详解

众所周知,c++是在c语言的基础上扩展了许多新东西,而这些新东西是为了解决c语言中的一些“麻烦”,所以我们在学c++时,先弄懂一个语法为什么产生或许会事半功倍。

2022-09-17 12:36:23 370 21

原创 排序算法大总结

排序在生活中无处不见,是程序员必学的知识,这次就让我们来一起学习一下排序算法吧~

2022-09-13 17:46:32 615 21

原创 基础数据结构万字详解

数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素的集合。

2022-09-02 21:46:36 1994 7

原创 浮点数之间的比较

由于浮点数在内存中的存储并不完整,所以在比较时,应该区别对待~

2022-08-07 18:00:59 742 2

原创 volatile用法详解(c语言)

volatile是易变的、不稳定的意思。或许你没见过这个关键字,但它确的的确确存在着。

2022-08-07 17:31:10 9966 8

空空如也

空空如也

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

TA关注的人

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