自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 云原生架构

云原生是一种构建和运行应用程序的方法,旨在充分利用云计算模型的优势。它支持应用程序的弹性扩展,由微服务架构、DevOps实践和以容器技术为代表的敏捷基础设施组成。

2024-06-07 10:07:14 834

原创 K8s:无状态

无状态服务是指服务的实例之间没有持久化状态,每个实例都是相同的,可以互换使用。

2024-06-06 21:52:51 1178 2

原创 K8s:Pod初识

Pod是k8s处理的最基本单元。容器本身不会直接分配到主机上,封装为Pod对象,是由一个或多个关系紧密的容器构成。她们共享。

2024-05-31 17:36:09 546

原创 Golang容器:Channel

是Go语言中一种强大的通信机制,它使得在并发运行的goroutines之间可以高效地交换数据。

2024-05-30 10:32:22 1010

原创 K8s基本概念初识

容器是一种便携式、轻量级的操作系统级虚拟化技术。它使用命名空间(namespaces)来隔离不同的软件运行环境,并通过镜像(images)自包含软件的运行环境。容器技术使得应用程序及其依赖项能够在一个隔离的、一致的环境中运行,从而提高了开发和部署的效率。

2024-05-24 15:39:40 430

原创 Golang容器:切片

如超出cap限制,由于数组长度的不变性,当涉及底层数组大小无法满足要求时,会创建新的数组。append()函数执行时,会首先将传入的切片参数复制一份,生成一个新的切片,动态分配大小连续的空间,切⽚是引⽤类型,当将⼀个切⽚赋值给另⼀个切⽚时,它们引⽤的是相同的底层数组。在 Go 1.18 之前的版本中,切片扩容遵循的策略是:对于容量小于 1024 个元素的切片,扩容时容量翻倍;从 Go 1.18 版本开始,Go 语言对切片扩容策略进行了优化,以更高效地处理大容量切片的扩容问题,减少内存分配和拷贝的开销。

2024-05-23 21:44:39 621

原创 Golang容器:map

map(映射)是一种用于存储key-value(键-值对)的数据结构。与切片中存储元素的有序性相比,map中的key-value是无序的。map的主要优势在于可以根据key来快速查找对应的value。读、写、删时间复杂度O(1)若目标元素不存在,则返回零值(数据类型不同,对应的零值会有不同)。那么,对于返回零值的场景,便可能存在两种情况:一是key对应的元素不存在;二是key对应的元素存在,其值就是零值。这就是map查找中的二义性。

2024-05-23 21:42:35 1474

原创 认识Docker底层原理:Linux内核的Namespace、Cgroup和UnionFS

namespacesDocker使用一种名为命名空间的技术来提供被称为容器的隔离工作空间。当您运行一个容器时,Docker会为该容器创建一组命名空间。这些命名空间提供了一层隔离。容器的每个方面都在一个独立的命名空间中运行,其访问权限仅限于该命名空间。Docker容器技术的核心架构建立在Linux内核提供的三大关键技术之上:Namespace、Cgroup和UnionFS。这些技术共同确保了容器在隔离性、资源管理和文件系统效率方面的高效运作。

2024-05-23 15:41:45 1619

原创 kubectl命令

使用k8sAPI与k8s集群的容器编排进行通信的命令行工具。

2024-05-22 17:11:20 397

原创 Golang设计模式(四):观察者模式

观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式是一种对象行为型模式。

2024-05-22 09:00:00 910

原创 Golang设计模式(三):适配器模式

适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

2024-05-21 20:22:43 1012

原创 代码日记:144. 二叉树的前序遍历,145. 二叉树的后序遍历,94. 二叉树的中序遍历(递归)

递归是一种在函数内部直接或间接调用自身的编程技巧,常处理树结构和分治问题。

2024-05-19 22:50:18 168

原创 Golang设计模式(二):单例模式

优点:在程序启动时立即创建实例,因此不存在线程安全问题,无需加锁,避免了同步控制带来的性能开销。缺点:由于实例在程序加载时即创建,即使该实例未被使用,也会导致资源的提前占用和浪费,不适用于按需创建的场景。适用场景:适合对性能要求高且实例使用频率高的场景。

2024-05-19 10:00:00 1639

原创 设计模式总述

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。设计模式:可复用面向对象软件的基础》一书中所介绍的23种经典设计模式。

2024-05-19 10:00:00 339

原创 Golang设计模式(一)简单工厂 工厂方法 抽象工厂

在简单工厂模式下只提供一个工厂类,该工厂处于对产品类进行实例化的中心位置,它需要知道每个产品对象的创建细节,并决定何时实例化哪个产品类,当有新产品加入时,必须修改工厂类工厂方法模式:定义一个用于创建对象的接口,让子类决定将哪个类实例化。不再提供一个统一的工厂类来创建所有的产品对象,针对不同的产品提供不同的工厂。提供一个抽象工厂接口来声明抽象工厂方法,而由其子类来具体实现工厂方法,创建具体的产品对象。适用于需要将对象创建过程封装起来,同时提供系统扩展性的场景。产品等级结构产品等级结构即产品的继承结构产品族。

2024-05-19 10:00:00 980

原创 代码日记:383. 赎金信

【代码】代码日记:383. 赎金信。

2024-05-18 21:15:00 193

原创 代码日记:15. 三数之和

【代码】代码日记:15. 三数之和。

2024-05-18 21:15:00 131

原创 代码日记:1. 两数之和,167. 两数之和 II - 输入有序数组

双指针通常适用于解决数组、链表等数据结构中,需要对数组中的值进行比较、查找、或者夹逼等操作的场景。双指针可以从数组的两端向中间移动,根据题目条件进行夹逼,从而得到满足条件的解。它在解决数组和链表中的很多问题时都有较高的效率。哈希表通常适用于需要对数据的存储、查找、在一定范围内计数等操作的场景。通过将数组中的值存入哈希表并建立索引,可以加速数据查找和计数的过程。它在解决元素重复、查找元素、计数等问题时具有很大的优势。

2024-05-18 16:27:20 686

原创 代码日记: 454. 四数相加 II

然后,我们再次遍历数组nums3和nums4,计算两数之和,并在哈希表countAB中查找相反数的和,同时累加匹配的次数。首先,我们遍历数组nums1和nums2,计算两数之和,并将结果存储在哈希表countAB中,同时记录每个和出现的次数。最后,返回满足条件的次数作为结果。

2024-05-18 15:39:00 170

原创 代码日记:18. 四数之和

使用双指针加固定循环的方法。在处理排序后的数组时,可能会存在重复的元素,如果不进行特殊处理,会导致在结果中出现重复的四元组。因此,我们需要在固定两个数时对重复的元素进行skip,确保最终结果中的四元组不会重复。,当当前的i大于0(即i已经不是数组的第一个元素),并且当前的nums[i]等于前一个元素nums[i-1]时,我们就可以认定当前的nums[i]和前一个元素重复了,此时我们应该跳过当前元素,以避免在后续的计算中出现重复的情况。j的循环也一样的判断。

2024-05-18 15:22:23 489

原创 代码日记:242.有效的字母异位词

我们可以通过对两个字符串的字符进行计数,然后比较计数结果来判断两个字符串是否为字母异位词。

2024-05-17 14:30:08 193

原创 代码日记:349. 两个数组的交集

使用map来解决这个问题。我们可以遍历第一个数组,将元素存储在map中,并记录它们的出现次数。然后再遍历第二个数组,检查元素是否在map中出现,如果出现则将该元素加入结果中。遍历数组nums2,检查每个元素是否在map中出现,若出现则将该元素加入结果中。遍历数组nums1,使用map记录每个元素出现的次数。

2024-05-17 14:27:03 202

原创 代码日记:202. 快乐数

如果这个数是一个快乐数,那么这两个指针会相遇在1上;如果不是一个快乐数,那么它们最终会进入一个循环,这时候快的指针会追上慢的指针。我们使用快慢指针,快指针每次计算两次平方和,慢指针每次计算一次平方和。在每一轮计算后,慢指针在平方和上前进一步,快指针在平方和上前进两步。

2024-05-17 14:21:33 272

原创 Dockerfile

Dockerfile 是一个文本文件,它包含了一系列的指令和参数,用于构建一个 Docker 镜像。Docker 镜像是一个轻量级、可执行的独立软件包,它包含运行一个软件所需的所有内容,包括代码、运行时环境、系统工具、系统库和设置。Dockerfile 中的指令会按照从上到下的顺序执行,每一个指令都会创建一个新的镜像层,并对镜像产生持久化的影响。FROM:指定基础镜像,所有的 Docker 镜像都是基于另一个镜像构建的。ENTRYPOINT:配置容器启动时执行的命令,可以被 CMD 指令覆盖。

2024-04-28 21:49:03 779

原创 Dockers数据卷Volume

在 Docker 中,容器的文件系统是临时的,当容器被删除时,其文件系统也会随之销毁。但有时我们希望容器内的数据能够持久化,即使容器被删除后,数据也不会丢失,这时就可以使用数据卷。数据卷可以看作是在 Docker 宿主机上的一种特殊的目录,它被挂载到容器内部,使得容器内外可以共享数据。数据卷可以独立于容器的生命周期,即使容器被删除,数据卷中的数据依然存在。

2024-04-24 21:26:33 628 3

原创 Docker初探

Docker 是一种开源的容器化平台,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后可以在任何支持Docker的系统上运行。Docker容器在运行时与其他容器相互隔离,但共享同一操作系统内核,这使得它们比传统的虚拟机更为轻量和高效。

2024-04-24 20:37:14 844 2

原创 Docker常见命令学习

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个轻量级、可移植的容器中,然后发布到任何支持 Docker 的系统上。这些命令覆盖了Docker的大部分基本操作,包括容器的运行、停止、删除,镜像的拉取、推送和构建,以及网络和数据卷的管理。清理所有未使用的资源,如容器、镜像、网络和数据卷。参数可以显示所有容器,包括未运行的。实时显示容器的资源使用情况。查看容器或镜像的详细信息。启动一个已经停止的容器。-列出本地主机上的镜像。在运行的容器中执行命令。停止一个运行中的容器。

2024-04-19 20:31:27 485

原创 Viper介绍

Viper是一个专门为Go语言开发的配置解决方案。它不仅提供了一种简单而直观的方式来处理配置信息,而且它的功能强大且灵活,可以满足各种复杂的配置需求。Viper特别适合于Go项目的配置管理,无论项目大小,都可以轻松应对。最重要的是,它支持多种配置文件格式,包括但不限于JSON、YAML、TOML等,这意味着你可以根据项目的具体需求选择最适合的格式。

2024-04-12 22:05:47 420

原创 JWT介绍

JSON Web Token (JWT) 是一种开放标准 (RFC 7519),提供一种简洁且自包含的方式,以JSON形式在通信双方间传递信息。这些信息可通过数字签名进行验证,确保其可信度。JWT 可以使用密钥(HMAC)或 RSA 或 ECDSA 的公钥/私钥对进行签名。虽然JWT可以加密以提供私密消息,但我们一般指的是已签名的 tokens。

2024-04-12 17:34:39 988

原创 Gin框架(3)

如果你需要更详细的日志记录或想要使用不同的日志库,你可以创建自定义的日志中间件。import ("log""net/http""time"// 访问开始时间// 处理请求c.Next()// 访问结束时间// 访问耗时// 记录日志})在这个例子中,我们定义了一个requestLogger函数,它会在每个请求处理之前记录客户端IP、请求方法、请求路径、状态码和处理请求的耗时。然后,我们通过r.Use(requestLogger)将这个日志中间件添加到Gin路由器中。

2024-04-03 12:07:06 1255

原创 Gin框架(2)

c.Writer提供了最大的灵活性,允许你完全控制响应的生成。和提供了静态文件服务的便捷方法,适用于不同的场景。和c.File提供了在处理函数中发送文件响应的便捷方法,其中允许你指定文件系统。import ("net/http"// 创建一个路由,使用 c.Writer 发送文件// 读取文件内容if err!= nil {return// 设置响应头// 写入文件内容})

2024-03-29 11:15:06 710

原创 GROM学习

Go 语言 ORM(对象关系映射)库,它提供了一种高效、简洁的方式来操作数据库。通过将数据库表映射为 Go 语言的结构体,GORM 让数据库操作变得更加直观和类型安全。GORM 支持主流的数据库系统,包括 MySQL、PostgreSQL、SQLite 和 SQL Server 等GORM 提供了一系列的 API 来操作 MySQL 数据库。

2024-03-26 09:12:07 269

原创 RESTful风格

是一种软件架构风格,它定义了一组约束和原则,用于创建Web服务。REST(Representational State Transfer,表述性状态转移),目的是描述一组架构原则,以实现软件系统的可伸缩性。RESTful Web服务遵循这些原则,使得它们具有无状态、可缓存、统一接口等特点。

2024-03-21 11:12:25 588

原创 Gin框架入门(1)

Gin提供了多种路由定义方式,可以定义参数路由、查询字符串路由、通配符路由等。在Gin中,使用HTTP方法函数定义路由,支持等多种HTTP方法。路由路径支持参数通配符定义,语法与标准库http包一致。r.GET("/path", handleFunc) // 不带参数路由r.GET("/path/*name", func(c *gin.Context){...}) // 参数路由r.GET("/path", func(c *gin.Context){...}) // 查询字符串?key=value。

2024-03-11 20:49:44 544

原创 Fabric模块功能介绍(一)

主要有5个模块,分别是peer、orderer、cryptogen、configtxgen、configtxlatorpeer和orderer属于系统模块,cryptogen、configtxgen和configtxlator属于工具模块。Fabric模块配置信息由配置文件、命令行、环境变量三个部分构成。

2023-05-30 15:43:37 1306

原创 Hyperledger Fabric explorer区块链浏览器搭建

开始运行docker-compose.yaml文件创建explorer、explorerdb两个容器通过浏览器访问explorer:127.0.0.1:8080,登录区块链浏览器。

2023-05-25 22:51:15 2070 2

原创 Fabric搭建中遇到一些问题合集

出现的问题

2023-05-25 20:46:57 433

原创 搭建一个Fabric网络

详细介绍搭建一个Fabric V2.0网络

2023-05-25 20:46:15 916

原创 Hyperledger Fabric理解

组织则是在Hyperledger Fabric中的参与方,它负责管理本地Peer节点,参与网络的授权和交易,组织通常包括若干个Peer节点和一个Orderer节点,它们协同工作以维护整个Fabric网络。Orderer是Fabric网络中负责维护交易顺序、广播交易和维护系统通道(system channel)的组件,是Fabric网络的一个共识节点,它的任务是为整个网络提供全局的一致性服务,保证交易的顺序和一致性,并确保这些交易被所有的Peer节点接收和更新。

2023-05-25 14:52:27 1013

原创 区块链相关技术简介

区块链信任的特点主要体现在区块链上的用户无须信任交易的另一方,无须信任任何一个中心化的机构,只需信任区块链提供的软件系统就可以实现交易,这种自信任的基础就是区块链的共识机制。在1995年,跨领域学者Nick Szabo就提出了智能合约的概念,他对智能合约的定义为:“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。根据2018年发布的《区块链白皮书》划分为基础设施、基础组件、账本、共识、智能合约、接口、应用、操作运维和系统管理等九个部分。

2023-05-14 20:49:59 196

ARCTIME_PRO_2.4_WIN64.7z

剪辑字幕软件

2021-01-23

计算机二级C语言(完整复习资料).doc

计算机二级C语言复习资料,很详细!适合初学者,很有用!C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言C语言

2020-08-05

空空如也

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

TA关注的人

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