自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个编程爱好者的博客

本博客是一个技术类型的博客,主要发布一些编程相关的技术技巧

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

原创 详解23种设计模式——工厂模式

工厂模式 设计思想 工厂模式是最常用的设计模式之一,属于创建型模式,将创建对象的权利交给了一个工厂类,从而提供了一种不使用构造方法的情况下创建对象的途径,无需指定要创建的具体类,将创建对象的过程进行封装,通过提供的通用接口和一组实现类,隐藏了具体的对象实例化细节,使得实际对象创建的逻辑与使用该对象的逻辑分离,降低了程序的耦合度,实现解耦。需要注意的是,这里说的不使用构造方法创建对象是在业务逻辑中通过调用工厂方法来获取对象的,并不是说在工厂方法的具体实现中不使用构造方法。

2024-04-25 23:42:03 858

原创 详解23种设计模式——单例模式

单例模式 单例模式是最常用的设计模式之一,他可以保证在整个应用中,某个类只存在一个实例化对象,即全局使用到该类的只有一个对象,这种模式在需要限制某些类的实例数量时非常有用,通常全局只需要一个该对象即可,如一些配置文件映射对象、数据库连接对象等。单例模式是最常用的设计模式之一,他可以保证在整个应用中,某个类只存在一个实例化对象,即全局使用到该类的只有一个对象,这种模式在需要限制某些类的实例数量时非常有用,通常全局只需要一个该对象即可,如一些配置文件映射对象、数据库连接对象等。饿汉模式 和 懒汉模式。

2024-04-25 23:41:17 849

原创 Git 远程管理

Git 远程管理 远程仓库操作 对于远程仓库的操作,Git 提供了 git remote 命令,用于用于管理 Git 仓库中的远程仓库。以下是 git remote 命令的常见用法: 列出当前仓库中已配置的远程仓库 列出当前仓库中已配置的远程仓库,并显示它们的 URL 添加一个新的远程仓库。该指令是在获取远程分支数据后,将本地分支没有的数据合并到本地分支,即使用远程数据覆盖本地数据。从远程仓库获取代码库到本地需要两步,首先获取远程分支数据,然后将本地分支没有的数据进行合并。

2024-04-22 15:36:57 1081 1

原创 Git 分支管理

但是,需要注意的是,如果在切换分支之前对当前分支的工作目录做了一些修改,但没有提交这些更改,那么这些更改将会被暂存或者丢弃,而不会被应用到切换后的目标分支。

2024-04-22 15:35:22 1122

原创 Git 仓库内容操作

commit 指令详看后续 添加一个或多个文件到暂存区: 添加指定目录到暂存区 添加当前目录下的所有文件到暂存区 查看仓库状态 在使用添加指令向暂存区添加文件后,可以使用如下指令来查看仓库当前状态,可以查看在上次提...git restore 是 Git 2.23 版本引入的一个命令,如果你使用的是较早版本的 Git,可能无法使用 git restore 命令,但你仍然可以使用 git checkout 等命令来进行类似的操作。以上命令将文件 恢复到暂存区的状态,但不影响工作目录中的文件。

2024-04-22 15:34:24 1033

原创 Git 创建版本库

Git 创建版本库 在 Git 上创建版本库有两种方式,一种是直接拷贝远程 Git 仓库到本地,另外一种是我们自己创建本地的版本库。执行完上述步骤后,Git 会克隆远程仓库到本地,并在当前目录下创建一个与远程仓库同名的文件夹。如果你想要一个不一样的名字, 你可以在该命令后加上你想要的名称。在 Git 上创建版本库有两种方式,一种是直接拷贝远程 Git 仓库到本地,另外一种是我们自己创建本地的版本库。在当前执行目录下初始化仓库,即创建一个新的代码仓库,既可以在空目录下初始化,也可以在已有内容的目录下初始化。

2024-04-22 15:33:06 351

原创 Git 工作原理

Git 工作原理 | CoderMast编程桅杆。

2024-04-22 15:32:22 427

原创 Git 介绍和安装

Git 介绍和安装 Git介绍 Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。一直下一步即可完成安装。

2024-04-22 15:31:02 834

原创 Docker - Compose

Docker - Compose 在部署应用时,常常使用到不止一个容器,那么在部署容器的时候就需要一个一个进行部署,这样的部署过程也相对来说比较繁琐复杂,也容易出问题,那么有没有一种更为简单的方法呢?这个文件不仅定义了所使用的服务,还包括了这些服务的配置,例如使用的Docker镜像、端口映射、依赖关系、环境变量等。在部署应用时,常常使用到不止一个容器,那么在部署容器的时候就需要一个一个进行部署,这样的部署过程也相对来说比较繁琐复杂,也容易出问题,那么有没有一种更为简单的方法呢?

2024-04-21 00:52:39 1201

原创 Docker - Dockerfile

Docker 是一种容器化平台,允许开发者将应用程序及其依赖项打包到一个可移植的容器中,以确保在不同环境中的一致性和可移植性。当 Docker 引擎读取 DockerFile 时,它会逐行执行其中的指令,以最终创建一个镜像。Docker 是一种容器化平台,允许开发者将应用程序及其依赖项打包到一个可移植的容器中,以确保在不同环境中的一致性和可移植性。Docker File 文件中的每条指令都会创建一个新的镜像层,当本地环境中已经下载好了某些镜像,那么会直接使用这些镜像,不会重复下载,提高了效率。

2024-04-21 00:51:34 1022

原创 Docker - 容器互联

Docker - 容器互联 在上一个章节中我们学习了 Docker 容器的端口映射,可以将 Docker 容器和本地以及网络中的端口进行连接起来。但端口映射并不是唯一把 Docker 连接到另一个容器的方法,Docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。容器命名 在创建一个容器的时候,Docker 会自动为其进行命名,也可以使...但端口映射并不是唯一把 Docker 连接到另一个容器的方法,Docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。容器建立了互联关系。

2024-04-21 00:50:15 894

原创 Docker - WEB应用实例

这里出现了警告信息,是因为我的电脑是 M1 芯片,是 ARM 架构,而所需要的平台是请求的映像的平台(linux/aamd64)与检测到的主机平台(linux/alm64/v8)不匹配,这里每个人的电脑环境不同,不必理会。,即将本地 IP 的 55000 端口,映射到了该 Docker 容器中的 5000 端口,即我们在本地访问 55000 端口,即可访问该 Docker 容器。端口映射既可以是本地端口映射,也可以是网络端口映射,即将 Docker 容器中的端口直接映射到某个指定的网络 IP 的端口。

2024-04-21 00:49:28 1077

原创 Docker - 镜像、容器、仓库

Docker 仓库就是存放 Docker 镜像的地方,严格意义上来说可以分为本地仓库和远程仓库,远程仓库由 Docker 官方维护,包含了几乎所有的 Docker 镜像,Docker 本地仓库只有你拉取的镜像。Dokcer 镜像的更新就是在目前运行的 Docker 容器上进行修改,然后将更新后的 Docker 容器的所有内容,导出为一个 Docker 镜像,随后就可以使用该镜像创建 Docker 容器。如果一个镜像创建了多个容器,那么在删除该镜像之前,必须删除所有使用该镜像的容器,才能够删除该镜像。

2024-04-21 00:48:11 728

原创 Docker - 入门基础

Docker 客户端与 Docker 守护进程,负责构建、运行和 分发 Docker 容器。Docker 安装好之后,在使用时我们需要拉取 Docker 镜像,这些 Docker 镜像存储在国外的 DockerHub 中,在国内访问不稳定,故此 Docker 官方和国内许多服务商提供了国内的加速器服务。Docker客户端:可以是基于命令行的 Docker 客户端,也可以是基于图形化界面的 Docker 应用。Docker服务端:一个运行 Docker 服务的机器,可以是本地主机,也可以是远程的服务器。

2024-04-21 00:09:32 998

原创 Docker - HelloWorld

在学习本小节之前,你必须确保你正确安装了 Docker,正确安装 Docker 是后续学习的前提,务必确保你已经成功安装。另外当你在学习本小节时,可能会出现你完全按照教程进行,但是运行结果并不与教程相符合的情况。这种情况不必担心,因为 Docker 镜像源默认是在海外,国内访问可能不够稳定,在后续的章节中会一一解决这些问题。在本章节中的所有关于 Docker 的专有名词,如 镜像、容器、仓库等,不理解属于正常情况,这些内容都会在后续中进行讲解。

2024-04-21 00:08:46 598

原创 Docker - 安装

Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。博主目前只有一台 MacOS 的电脑,无法制作更详细的 Windows 平台下的安装教程,后续会更新。手动下载的是 Docker 的桌面管理程序,安装打开后会自动检测系统当前的 Docker 环境。由于涉及到应用的安装,系统会进行拦截,在这期间可能会需要输入电脑的密码,输入即可。如果你的电脑没有安装Docker,则会自动进行安装。原文地址,使用效果更佳!

2024-04-21 00:01:20 648

原创 Docker - 简介

Docker可以理解为普通虚拟机是在宿主机的物理环境上,将操作系统进行虚拟化,类似于提供一个整体的虚拟环境,你可以在这个环境内干任何想干的事,而 Docker 在宿主机的基础上,仅仅只虚拟化所指定的依赖项。生态系统: Docker拥有丰富的生态系统,包括Docker Hub,其中存储了大量的公共和私有Docker镜像,使得开发人员可以轻松共享和获取镜像。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

2024-04-20 23:45:22 1012

原创 HomeBrew 从安装到精通,一篇足矣!

Homebrew 是安装苹果没有包含在 macOS 中的 UNIX 工具的最简单、最灵活的方式。它还可以安装不适合您的 Linux 发行版的软件,而不需要 sudo。举个例子,如果你想要安装 Node.js,并且你知道他在 brew 中的软件包名,那么你可以直接使用该指令安装,如果你不知道的话,可以先试用。使用 versions 命令可以查看已安装软件包的版本历史。要查看软件包的依赖关系,可以使用 deps 命令。tips:因为update会一次更新所有的包的,当我们想忽略的时候可以使用这个命令。

2024-04-20 23:41:50 1154

原创 Redis进阶 - Lua语法

原文首更地址,阅读效果更佳!Redis进阶 - Lua语法 | CoderMast编程桅杆。

2023-08-29 09:00:00 216

原创 Redis进阶 - JVM进程缓存

原文首更地址,阅读效果更佳!

2023-08-28 17:32:58 1268

原创 Redis进阶 - Redis分片集群

原文首更地址,阅读效果更佳!Redis进阶 - Redis分片集群 | CoderMast编程桅杆。

2023-06-29 18:10:59 344

原创 Redis进阶 - Redis哨兵

原文首更地址,阅读效果更佳!Redis进阶 - Redis哨兵 | CoderMast编程桅杆思考slave 节点宕机恢复以后可以找 master 节点同步数据,那么 master 节点宕机怎么办?

2023-06-27 22:29:34 2572 4

原创 Redis进阶 - Redis主从

如果 slave 的 offset 小于 master 的 offset,说明 slave 数据落后于 master,需要更新。因此 slave 做数据同步,必须想 master 声明自己的 replication id 和 offset,master 才可以判断到底需要同步哪些数据。如果 slave 断开时间过久,导致数据被覆盖,则无法实现增量同步,只能再次全量同步。单节点 Redis 的并发能力是有上限的,要进一步提高 Redis 的并发能力,就需要搭建主从集群,实现读写分离。

2023-06-25 00:39:45 666

原创 Redis进阶 - Redis持久化

当子进程写新的 RDB 文件时,此时主进程大量修改数据,则需要对数据进行拷贝,当主进程需要对所有的数据都进行修改时,则需要两倍原来的内存,故我们在配置 Redis 服务时,不能将所有的实际内存分配给 Redis ,需要预留一部分缓冲空间。fork 的速度是非常快的,因为 fork 只复制了对应的页表,而不是复制真实的数据,类似于只复制数据的索引。默认情况下会在当前目录生成一个 dump.rdb 的文件,下一次启动 Redis 时,默认会加载这个文件,恢复 Redis 数据。RDB 会在什么时候执行?

2023-06-23 18:02:40 1110

原创 Redis原理 - 内存策略

原文首更地址,阅读效果更佳!Redis 本身是一个典型的 key-value 内存存储数据库,因此所有的 key、value 都保存在之前学习过的 Dict 结构中。不过在其 database 结构体中,有两个 Dict :一个用来记录 key-value;另外一个用来记录 key-TTL答:利用两个 Dict 分别记录 key-value 和 key-ttl答:并不是到期立刻删除,而是采用和。

2023-06-22 23:54:18 3605

原创 Redis原理 - 通信协议RESP

基于 Socket 自定义 Redis 客户端。try {// 1.建立连接// 2.获取输出流、输入流// 3.发出请求// 3.1.获取授权 auth codermast// 3.2.set name 小鹏sendRequest("set", "name", "小鹏");// 4.解析响应// 3.2.set name 小鹏// 4.解析响应// 3.2.set name 小鹏// 4.解析响应// 5.释放连接try {

2023-06-22 23:53:27 1046

原创 Redis原理 - Redis网络模型

原文首更地址,阅读效果更佳!Redis原理 - Redis网络模型 | CoderMast编程桅杆。

2023-06-22 23:50:33 1075

原创 Redis原理 - 五种数据类型的底层结构关系

​字符串对象StringString 是 Redis 中最常见的数据存储类型。其基本编码方式是 RAW ,基于简单动态字符串(SDS)实现,存储上限为 512 MB。如果存储的 SDS 长度小于 44 字节,则会采用EMBSTR编码,此时 object head 与 SDS 是一段连续空间。申请内存时只需要调用一次内存分配函数,效率更高。​

2023-06-21 11:24:22 1500

原创 Redis原理 - IO详解

能监听的 FD 最大不超过 1024 个每次 select 都需要把所有要监听的 FD 都拷贝到内核空间每次都要遍历所有 FD 来判断就绪状态poll 利用链表解决了 select 中监听 FD 上限的问题,但是依然要遍历所有的 FD ,如果监听较多,性能会下降基于 epoll 实例中的红黑树保存要监听的 FD ,理论上无上限,而且增删改查效率都非常高,性能不会随监听的 FD 数量增多而产生显著的下降。

2023-06-21 11:23:20 1554

原创 Redis原理 - 数据结构的底层实现

动态字符串SDS#基本概念Redis 中保存的 Key 是字符串,Value 往往是字符串或者字符串的集合。可见字符串是 Redis 中最常见的一种数据结构。Redis 是使用 C 语言来编写的,C 语言中也有字符串,但是 Redis 中并没有直接使用 C 语言的字符串,这是因为 C 语言中字符串存在着很多的问题:获取字符串长度需要进行运算非二进制安全,不能包含特殊字符因为C字符串以空字符作为字符串结束的标识,而对于一些二进制文件(如图片等),内容可能包括空字符串,因此C字符串无法正确存取;

2023-06-21 11:20:17 1498

原创 Redis原理 - RedisObject对象机制

原文首更地址,阅读效果更佳!Redis原理 - RedisObject对象机制 | CoderMast编程桅杆。

2023-06-19 00:53:41 676

原创 Redis客户端 - RedisSerializer

自定义的序列化方式也加进去了对引用类型的序列化,我们来实际测试一下。编写一个 User 类@Data类中属性需要给出 set 和 get方法将 User 对象存储至 Redis@Test// 插入一条 Object 类型的数据// 获取一条 Object 类型的数据虽然 JSON 的序列化方式可以满足我们存储对象的需求,为了在反序列化时知道对象的类型,将对象的类路径地址也序列化进 JSON 结果中,存入 Redis ,会带来额外的资源消耗。

2023-06-17 18:09:43 1435

原创 Redis客户端 - SpringDataRedis

提供了对不同 Redis 客户端的整合 (Lettuce 和 Jedis)提供了 RedisTemplate 统一 API 来操作Redis支持 Redis 的发布订阅模型支持 Redis 哨兵和 Redis 集群支持基于 Lettuce 的响应式编程支持基于 JDK、JSON、字符串、Spring对象的数据序列化和反序列化支持基于 Redis 的 JDKCollection 实现。

2023-06-17 18:08:39 1048

原创 Redis客户端 - Jedis连接池

在单线程环境中可以不使用Jedis连接池,但是多线程环境下必须使用Jedis连接池,并且使用Jedis连接池较为可靠,我们不必关注与资源的获取和释放等问题,可以将注意力集中于业务逻辑上。Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们使用Jedis连接池代替Jedis的直接连接方式。Redis客户端 - Jedis连接池 | CoderMast编程桅杆。原文首更地址,阅读效果更佳!

2023-06-16 19:21:56 257

原创 Redis客户端 - Jdies快速入门

Jedis是Redis 的 Java 客户端,专为性能和易用性而设计。

2023-06-16 19:18:53 742 2

原创 Redis入门 - Lua脚本

原文首更地址,阅读效果更佳!Redis入门 - Lua脚本 | CoderMast编程桅杆Redis 脚本使用 Lua 解释器来执行脚本。Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。

2023-06-16 19:18:27 1854

原创 Redis入门 - Redis Stream

原文首更地址,阅读效果更佳!Redis入门 - Redis Stream | CoderMast编程桅杆Redis入门 - Redis Stream Redis Stream 是 Redis 5.0 版本新增加的数据结构。Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。

2023-06-16 19:17:54 1510

原创 Redis入门 - 事务

Redis的事务和MySQL的事务是不同的,MySQL的事务要么全部执行,要么全部不执行。单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。原文首更地址,阅读效果更佳!

2023-06-16 19:17:18 1407

原创 Redis入门 - 5种基本数据类型

原文首更地址,阅读效果更佳!Redis入门 - 5种基本数据类型 | CoderMast编程桅杆说明在我们平常的业务中基本只会使用到Redis的基本数据类型(String、List、Hash、Set、Sorted Set),特殊类型(Geo、Bitmap、Hyperloglog)类型只有在特殊的业务场景下会使用到,通常只需要掌握基本数据类型即可,特殊类型作为了解即可。

2023-06-16 19:14:57 1825

原创 Redis入门 - 发布订阅

此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel) 发布消息,订阅该频道的每个客户端都可以收到该消息,Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis入门 - 发布订阅 | CoderMast编程桅杆。Redis 客户端可以订阅任意数量的频道。

2023-06-16 16:02:19 1509

空空如也

空空如也

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

TA关注的人

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