自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 k8s operator

Kubernetes Operator 是一种用于特定应用的控制器,可扩展 Kubernetes API 的功能,来代表 Kubernetes 用户创建、配置和管理复杂应用的实例。它基于基本 Kubernetes 资源和控制器概念构建,但又涵盖了特定领域或应用的知识,用于实现其所管理的应用生命周期的自动化。常见的 Kubernetes Operator 包括 etcd-operator、prometheus-operator 等。

2023-11-09 15:27:08 576

原创 面试自行拓展

String 存储的是序列化后的对象数据,存放的是整个对象。Hash 是对对象的每个字段单独存储,可以获取部分字段的信息,也可以修改或者添加部分字段,节省网络流量。如果对象中某些字段需要经常变动或者经常需要单独查询对象中的个别字段信息,Hash 就非常适合。String 存储相对来说更加节省内存,缓存相同数量的对象数据,String 消耗的内存约是 Hash 的一半。并且,存储具有多层嵌套的对象时也方便很多。如果系统对性能和资源消耗非常敏感的话,String 就非常适合。

2023-11-08 17:58:12 140

原创 面试复习整理

而切点类则是用来。

2023-11-08 17:58:01 363

原创 linux卸载rabbitmq

在网上找的卸载文档要么不全面,要么删的多了不能正常启动总结了卸载步骤。

2023-10-23 16:01:32 185

原创 mac postman Collection小时后数据如何恢复

2.如果在访达中找不到可以先在黑窗口找到,粘贴路径到访达(pwd路径去访达执行 Command+Shift+g)3.Import对应文件到postman。1.找到cache json文件路径。

2023-10-22 00:40:14 225

原创 java知识点

synchronized关键字可以用来修饰方法或代码块,实现对对象的互斥访问。当一个线程进入synchronized代码块时,会自动获取对象的锁,其他线程则需要等待锁释放后才能进入。注意:synchronized 锁定的范围应尽量小,避免锁定的时间过长影响性能。synchronized 需要指定一个对象作为锁,多个线程需要使用相同的锁对象才能实现同步。synchronized 仅能保证线程安全性,无法保证数据的正确性,需要结合其他机制并根据具体业务需求来进行处理。

2023-08-17 17:00:49 49

原创 k8s运维

CNI(Container Network Interface)插件是Kubernetes中用于管理和配置容器网络的组件。它负责为容器实例创建和配置网络接口,为容器提供网络互通和访问外部网络的功能。下面列举一些常见的CNI插件:Calico: Calico是一个常用的CNI插件,提供了网络策略和安全性功能,支持部署大规模的容器网络。Flannel: Flannel是另一个常用的CNI插件,使用Overlay Network技术为容器提供网络互通,支持在不同主机之间创建隧道网络。

2023-07-10 10:51:59 599

原创 helm知识点

在 Chart.yaml 文件中,你可以指定一些元数据信息来描述你的 Chart。name:Chart 的名称,它必须是唯一的。version:Chart 的版本号,遵循语义化版本控制规范。:Chart 的描述信息,用于说明该 Chart 的用途。:Chart 的维护者信息,包括名称、电子邮件和 URL。可以列出多个维护者。apiVersion:Helm API 的版本号,一般保持默认值即可。appVersion:应用程序的版本号,用于标识应用程序本身的发布版本。

2023-07-04 14:34:58 599

原创 k8s服务暴露

需要根据具体的需求和环境选择适合的服务类型。通常,ClusterIP 和 HeadLiness Service 适合集群内部服务之间的通信,NodePort 和 LoadBalancer 适合将服务暴露给集群外部访问,而 ExternalName 则用于将服务映射到集群外部的资源。

2023-07-03 17:22:05 95

原创 k8s知识点

总之要想真正掌握 Kubernetes,需要不断学习练习、深入了解其中的原理和机制,并结合实际场景灵活使用 Kubernetes。

2023-06-16 17:29:31 195

原创 go-zero微服务框架

Go-Zero 是一个基于 Golang 的微服务框架,可以帮助开发者快速、高效地构建高性能、高可用的分布式应用系统。RPC 框架和 API 网关,支持多种协议和格式,如 gRPC、HTTP、JSON、Thrift 等;支持微服务通讯和服务治理,包括服务发现、负载均衡、链路追踪、熔断和限流等;支持数据存储和访问,包括 MySQL、Redis、MongoDB 等;支持日志和监控,包括 Prometheus、Grafana 和 Graphite 等;

2023-06-14 17:37:36 4201

原创 Hadoop知识点

Hadoop是一个开源的分布式计算框架,主要用于大规模数据集的存储和处理。Hadoop主要由以下组件组成:Hadoop Common:一个通用的API,用于支持其他Hadoop组件的执行。HDFS:Hadoop分布式文件系统,用于存储大规模数据集。它将数据分成多个块,并存储在集群中的多个节点上。HDFS提供了高容错性、高吞吐量和高可靠性的特性。MapReduce:一个分布式计算模型,用于将数据处理任务分解成多个小的单元并在集群中进行并行处理。

2023-06-14 16:08:44 193

原创 Kafka知识点

RabbitMQ和Kafka是两个常用的分布式消息队列系统,它们的主要区别包括以下几个方面:架构模式:RabbitMQ采用模式和模式,即消息生产者将消息发送到特定的队列,然后等待消费者来处理这个消息,或者发送到订阅的exchange,由绑定到此exchange的队列接收;而Kafka采用模式,即消息生产者把消息发送给主题(topic),然后订阅这个主题的所有消费者都可以接收到消息。

2023-06-14 14:34:45 146

原创 MongoDB知识点

在Go语言中使用MongoDB需要使用第三方的MongoDB驱动程序库,例如官方的MongoDB Go Driver、mgo和gomongo等。总之,在Go语言中使用MongoDB可以通过第三方MongoDB驱动程序库来实现,这使得能够轻松连接到MongoDB数据库,执行CRUD操作,以及使用MongoDB的强大功能。

2023-06-14 10:35:06 40

原创 设计模式及案例

访问者模式:表示一个作用于某对象结构中的各元素的操作,它使得可以在不改变各元素的类的前提下定义作用于这些元素的新操作。例如:不同类型的图形可以使用访问者模式实现不同的操作。观察者模式:定义对象间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都会得到通知并自动更新。解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

2023-06-02 16:09:53 137

原创 消息队列MQ

MQ的原理可以简单概括为生产者将消息发送到队列中,消费者从队列中获取消息进行处理。具体来说,MQ的原理包括以下几个方面:生产者:生产者将消息发送到MQ服务器中,消息可以是文本、对象、文件等形式。生产者可以使用API或者其他工具将消息发送到MQ服务器,同时可以指定消息的优先级、过期时间等属性。队列:MQ服务器接收到生产者发送的消息后,将其存储在队列中。队列是存储消息的容器,可以保证消息的有序性和一致性。MQ服务器可以支持多个队列,每个队列可以有不同的属性和配置。

2023-06-01 17:24:27 3428

原创 配置nginx

Nginx 支持常见的负载均衡算法(轮询、IP 哈希、状态等)和自定义负载均衡方法,选择合适的负载均衡算法能充分发挥服务器的性能。总的来说,在配置 Nginx 时需要注意强化安全性、提高可用性、保障性能等方面,以及根据实际需求合理设置 Nginx 的各项配置参数,才能充分利用 Nginx 伸缩性、高可用性和高性能的特点。在高并发的情况下,服务器的性能是至关重要的。以下是一个基本的 Nginx 配置示例nginx.conf文件,包括监听端口、管理 Web 接口、负载均衡、静态文件服务和反向代理。

2023-06-01 16:35:51 404

原创 用golang Hadoop MapReduce实现:1亿条数据动态增长,取top10

Reducer 程序首先需要将输入数据根据 Key 进行分组,并对每个 Key 的 Value 进行求和,最终使用排序算法对 Key-Value 对按照出现次数降序排序,取排序后的前 10 个 Key-Value 对作为结果。数据按照 输入 Key 去重,按照 Key 进行分组,并按组别进行排序输出。Mapper 程序需要将输入数据转换成 Key-Value 对,并按照输入 Key 对数据进行去重,而 Value 设置为 1,表示出现次数为 1。Hadoop 会将输入数据分成多个数据块,以便并行处理。

2023-05-30 17:29:53 464

原创 linux知识点

如果 Load Average 的值超过 1,代表系统当前的 CPU 负载已经达到或超过了系统 CPU 的处理能力,需要对系统进行调优或者扩容操作,以避免系统出现响应延迟或不能及时响应用户请求等问题。,表示在最近的1分钟中,系统的平均 CPU 负载为2.0,而在5分钟前,系统的平均 CPU 负载为0.5,而在15分钟前,系统的平均 CPU 负载为1.5。Load Average 是 Linux 系统中用来衡量 CPU 负载的一个指标,它反映了在一段时间内系统 CPU 的平均负载情况。

2023-05-24 17:31:46 46

原创 系统知识点

CPU缓存是一种高速存储器,通常被集成在CPU内部,用于临时存储经常使用的数据和指令,以提高CPU的访问速度。缓存可以分为三级,一级缓存位于CPU内部,速度最快,但容量较小;二级缓存位于CPU芯片上,速度稍慢,但容量较大;三级缓存则是位于CPU和主内存之间的高速缓存,容量最大,但速度最慢。CPU缓存的工作原理是将经常访问的数据和指令复制到缓存中,并在需要时直接从缓存中读取,避免了频繁访问主内存的时间延迟,加快了CPU的处理速度。

2023-05-24 17:30:19 264

原创 操作k8s的场景

Kubernetes (k8s) 是一种流行的容器编排平台,可以管理和部署容器化应用程序。以下是一些操作 Kubernetes 的场景:部署应用程序:使用 k8s 部署应用程序非常容易,只需要编写一个 YAML 文件,描述应用程序的部署、服务和配置。扩展应用程序:k8s 可以轻松地扩展应用程序。只需要增加一些 pod,就可以增加应用程序的容量。手动扩展:您可以通过手动更改部署对象的replica数量来实现应用程序的扩展。

2023-05-19 15:20:18 483 1

原创 快速掌握K8s

该文件描述了一个名为my-service的Service,将端口8080映射到Deployment的端口80,使用负载均衡算法将传入的请求分配到该组Pod中的某一个上。可以通过官方的K8s文档和教程学习和实践kubectl命令的用法,例如创建、删除Pod、Service、Deployment、ConfigMap等资源对象,并查看Pod、Service、Deployment状态信息。在学习K8s的过程中,需要不断尝试和实践,通过构建和管理容器化应用程序加深对K8s的了解和掌握。

2023-05-19 11:01:06 146

原创 docker知识点

同时,Docker 也会为容器创建一个网络命名空间,自动为容器分配一个虚拟 IP 地址,使其能够与其他容器或主机进行通信。Docker 可以将一个软件应用及其依赖的运行环境打包成一个容器,使其可以在不同的机器上都能以相同的方式运行,减少了部署和运维过程中的差异性。Docker Registry:是一个存储 Docker 镜像的仓库,可以是本地的私有仓库,也可以是公共的镜像仓库(如 Docker Hub)。Docker Image:是容器的模板,包含应用程序及其依赖的运行环境(如操作系统、库文件等)。

2023-05-17 17:57:13 125

原创 高并发场景下性能下降如何解

分布式系统:通过构建分布式系统,在多个服务器之间共享负载,可以将请求分摊到多个服务器上,从而提高系统的并发能力和反应速度。总之,在高并发场景下,需要综合考虑多种因素,从架构、缓存、代码优化等方面入手,采取综合性的措施来对系统进行优化,从而提高系统的性能和稳定性。使用高性能框架和数据库:选择高性能的框架和数据库非常重要,这些框架和数据库能够在高并发环境下显著提高系统的性能和稳定性。限流和熔断机制:在高并发场景下,通过限制并发数,以及设置熔断机制,可以有效地对系统进行流量控制,避免系统过载崩溃。

2023-05-17 17:34:46 277

原创 加锁和释放锁的过程中可能会出现的异常情况,例如网络故障、程序崩溃等,需要如何处理,以确保分布式锁的正确性和稳定性

引入多个锁服务器可以提高系统的可用性,即当一个锁服务器出现故障时,其他的锁服务器可以继续提供服务。5.实现分布式锁的高可用性:可以使用一些分布式锁框架,例如Zookeeper、Redis等,这些框架提供了分布式锁的实现,同时也具备高可用性的特点,可以有效地防止单点故障的发生。2.设置超时时间:在获取锁时,可以设置一个超时时间,即如果在指定的时间内没有成功获取锁,则放弃获取锁。6.增加日志记录:在程序运行中,可以增加日志记录,记录锁的获取和释放过程中的详细信息,以便在出现异常情况时进行排查和处理。

2023-05-17 10:55:20 229

原创 Redis知识点

1.Cache Aside Pattern(旁路缓存模式)2.Read/Write Through Pattern(读写穿透)3.Write Behind Pattern(异步缓存写入)

2023-05-09 17:48:49 111

原创 Mysql重要知识点

MySQL索引是一种数据结构,用于加快MySQL数据库的查询速度。索引可以理解为一本书的目录,它提供了一个快速查找特定信息的方法。在MySQL中,可以为表中的一列或多列创建索引。当使用索引列作为查询条件时,MySQL可以快速定位匹配的行,从而加快查询速度。MySQL支持多种类型的索引,包括索引、索引、全文索引等。其中,B-Tree索引是最常用的索引类型,它可以用于精确匹配、范围查找和排序等操作。在使用索引时,需要注意以下几点:1.只为需要经常进行查询的列创建索引,不要为所有列都创建索引。

2023-05-09 17:19:28 188

原创 golang的微服务框架

Gin框架是一款基于Go语言的轻量级Web框架,它的设计理念是为了提高Web应用程序的性能和开发效率。

2023-05-08 11:08:21 3548

原创 golang知识点

Go语言使用了一种叫做标记-清除的垃圾回收机制。垃圾回收器会定期扫描程序中的所有对象,并标记那些被引用的对象。然后,它会清除那些未被标记的对象,释放它们所占用的内存空间。具体来说,Go语言的垃圾回收机制分为三个阶段:1.标记(Mark):标记所有还在使用中的对象。2.清除(Sweep):清除所有未被标记的对象,并把它们的内存释放回操作系统。3.压缩(Compact):将所有存活的对象向一端移动,以便把内存空间释放出来。Go语言的垃圾回收机制是自动的,程序员不需要手动管理内存。但是,在某些情况下,垃

2023-05-06 14:33:30 384

原创 Go和java的GC机制区别

但是,了解它们的不同点可以帮助我们更好地理解它们的运行机制,并且在需要优化内存使用的情况下,能够更好地选择合适的方案。总之,Go的垃圾回收机制是一种高效且可靠的机制,它可以自动地管理内存,避免内存泄漏和悬垂指针等问题,从而让开发者可以更加专注于业务逻辑的实现。同时,Go还提供了手动控制垃圾回收的接口,开发者可以通过设置环境变量或代码调用的方式来控制垃圾回收器的行为。Java 中的对象都是在堆上分配的,而 Go 中则是在堆或栈上分配的。老年代中的对象通常有较长的生命周期,垃圾回收器会更少地回收这些对象。

2023-04-28 17:16:29 367

原创 golang接入chatGPT

1.创建 OpenAI 账户,并获取API 密钥。5.将 API 密钥和请求体添加到请求头中。2.设置API 密钥和请求 URL。3.使用 map 定义请求体。4.创建HTTP 请求。6.发送请求并处理响应。

2023-04-28 16:56:05 1012

原创 golang网络编程

【代码】golang网络编程。

2023-04-28 16:47:30 82

原创 使用grpcurl测试grpc

1.安装grpcurl。

2023-04-27 16:43:13 213 1

原创 获取谷歌浏览器插件源码的方法

获取谷歌浏览器插件源码方法

2022-06-01 16:29:59 1083

原创 算法——入门需要关注的25种算法

递归算法分治算法贪心算法动态规划算法01背包问题回溯算法冒泡排序算法插入排序算法选择排序算法希尔排序算法归并排序算法快速排序算法计数排序算法基数排序算法桶排序算法稳定排序算法顺序查找算法二分查找算法插值查找算法哈希查找算法普里姆算法克鲁斯卡尔算法最短路径算法迪杰斯特拉算法弗洛伊德算法...

2022-05-25 14:32:27 88

原创 Spring整合Mybatis的配置文件

<?xml version="1.0" encoding="UTF-8"?><context:property-placeholder location=“classpath:jdbc.properties”/> <!--第三方jar中的bean定义在xml中--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" > <!-- 基本属

2021-08-09 06:08:49 204

原创 java程序中几种常见的异常以及出现此异常的原因

1. 常见异常及异常分类2. 发生异常的原因A. 用户输入了非法数据。B. 要打开的文件不存在。C. 网络通信是连接中断D. JVM内存溢出3. java程序中几种常见的异常以及出现此异常的原因**A. java.lang.NullpointerException(空指针异常)** a. 原因:这个异常经常遇到,异常的原因是程序中有空指针,即程序中调用了未经初始化的对象或者是不存在的对象。经常出现在创建对象,调用数组这些代码中,比如对象未经初始化,或者图片创建时的路径错误等等。对数组代码

2021-08-02 23:36:38 467

原创 SpringIOC循环依赖问题

问题:SpringIOC如何解决循环依赖问题呢?答案:设置三级缓存前置条件:A、B互相引用原理:1.A实例化后放入三级缓存中暴露自己;2.B在创建过程中,去三级缓存中取A,并把A移交到二级缓存中;3.B创建完成后放入一级缓存中;4.A使用一级缓存中的B;注意:只有通过set注入或者@Autowired注入的单例bean才可以解决循环依赖。prototype原型bean创建完成后是游离态的,不在容器中管理,所以不可以解决;单例bean的构造器参数形成的循环依赖也不可以解决。三级缓存机制

2021-06-04 17:01:52 99

原创 ◎ oracle和mysql区别

◦ 1、大小:Oracle是大型数据库,而MySQL是中小型数据库。◦ 2、内存占有量:Oracle的内存占有量非常大,而mysql非常小◦ 3、主键:MySQL支持主键自增长,指定主键为auto increment,插入时会自动增长。Oracle主键一般使用序列。◦ 4、引号:MySQL字符串可以使用双引号包起来,而Oracle只可以单引号◦ 5、分页:MySQL分页用limit关键字,而Oracle使用rownum字段表明位置,而且只能使用小于,不能使用大于。◦ 6、处理长字符串:Oracle

2021-04-15 09:30:20 69

原创 springboot底层实现自动配置的步骤总结:

◦ springboot底层实现自动配置的步骤总结: ‣ 1.springboot应用启动 ‣ 2.SpringBootConfiguration 标明该类为配置类 ‣ 3.EnableAutoConfiguration 启动自动配置功能 ‣ 4.@import(AutoConfigurationPackage.Rigistrar.class) 将Rigistrar类导入到容器中,把 @SpringBootApplication注解标注的类所在包名拿到,并对该包及其子包进行扫描,将组件添加到容器中

2021-04-13 15:57:23 95

空空如也

空空如也

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

TA关注的人

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