- 博客(86)
- 收藏
- 关注
原创 既然选择不了躺平,那就只能卷到底!【2024年8、9月份面试总结】
今非昔比,记得在几年前面试,但凡你肚子里有点货,学历是本科,面试找工作就跟闹着玩似的,而如今,这都是情理之中的事情了,什么呢?待遇持平算你运气好,面试问题回答到百分之八九十,那都算你复习的不够扎实,此篇就我个人8、9月份找工作面试心得总结,希望对正在突围的码友们有所帮助。而如今,这都是情理之中的事情了,什么呢?待遇持平算你运气好,面试问题回答到百分之八九十,那都算你复习的不够扎实。
2024-10-08 09:52:52 888 1
原创 Spring AI 集成【千帆 QianFan】大模型
了解 AI,学习 AI,拥抱 AI!自 2022年11月30日 ChatGPT(全名:Chat Generative Pre-trained Transformer)发布,人工智能已正式以产品化的形式出现在大众面前,也迅速累计了大量用户,仅仅 5 天时间就破了百万用户,ChatGPT 的问世可谓是百年一遇的 “奇异点而如今,被称之为是大模型时代,人工智能领域的产品层出不穷,各个大厂也是争先恐后有自己的大模型应用,百度有文心一言,阿里有通义千问,还有昆仑万维的天工,月之暗面的Kimi,抖音的豆包。
2024-10-08 09:48:17 830
原创 PostgreSQL的基本类型和 Schema,我又学废了
PostgreSQL 数据库提供了及其丰富的数据类型,我们在定义表结构的时候,要指定每个字段的类型,就需要明了每个数据类型的特性,以便我们在指定字段类型的时候能根据业务需要指定合适的类型。一个 PostgreSQL 数据库集群中包含一个或多个数据库,角色和一些其他对象类型被整个集群共享,连接到服务器的客户端只能访问单个数据库中的数据,可以在连接请求中指定那一个。
2024-08-12 09:40:35 840
原创 ElasticSearch 的 Translog 到底有多安全?
ElasticSearch 实现了近实时搜索,也要持久化变更,为了保证数据不丢失使用了 Translog,其目的是保证操作不会丢失。这引出了这个问题: **Translog 有多安全?**
2024-06-03 09:24:34 845
原创 ElasticSearch如何实现近实时搜索,如何提效【面试题,面道既学到】
当文档存储在 ElasticSearch 中时,文档就会被索引,并且在接近实时(1秒)内进行搜索,即 近实时搜索,也就是 动态更新索引,怎样在索引不变的前提下实现倒排索引的更新?答案是 用更多的索引,通过增加新的补充索引进来,而不是直接重写整个倒排索引,每一个倒排索引都会被轮流查询到,然后对结果进行合并。
2024-06-03 09:23:51 1227
原创 Linux安装Postgres,你学废了吗?
哪凭啥说 PostgreSQL 是开源界的 Oracle 呢,也是 去O首选呢?* PG数据库 是完全开源免费的,这就很香啊!在灵活的 BSD 许可证下发行,可以拿来任意使用、修改和二次开发。【**这是很重要的**】* PG 还遵循了``SQL标准``,有丰富的``数据类型``,包括几何、时间戳、数组等;而且还提供了对 JSON类型的原生支持;内置了全文``搜索功能``,在大量文本数据中进行搜索变得简单而高效。* PG 有足够的``安全性``,``可靠性``和``稳定性``,包括SSL支持、角
2024-05-22 09:12:04 1199 1
原创 GO 面试题基础篇【面试官这样问】
这不,最近又是金三银四了, gopher 们又双叒叕开启了开挂模式,疯狂刷面试题,疯狂投简历,疯狂面试。既然如此,针对于go语言,那面试官们平时喜欢问什么呢?面试官这样问。
2024-04-02 09:00:42 1923
原创 ElasticSearch 8.x 创建父子文档,用Join类型字段以及用has_child、has_parent 检索
那对于 ES 来说,这种情况只能有两种方式来做了,第一就是字段嵌套,需要定义一个 nested(嵌套)类型的字段,字段中有多个 对象,第二就是本文要讲到的 父子文档嵌套并用 has_child、has_parent 来检索。
2024-02-27 09:53:26 1769
原创 ElasticSearch 8.x 使用 High Level Client 以 HTTPS 方式链接,SSL 证书、主机名验证器 各是什么,如何忽略
生产环境的 ElasticSearch 有时可能是通过域名来访问的,并且是 https 开头的,那就需要 SSL/TLS 认证了,但是我们并不需要,那只能忽略了。那该如何忽略呢?
2024-02-05 11:04:32 3103
原创 静态代码块中使用 ExecutorService 执行多线程会出现什么情况呢?
我们可以看到 一般场景 和 static {} 场景 的运行结果完全不同,static {} 场景 则出现了等待超时的情况,而不是等待所有线程都运行结束,这是为什么呢?
2024-02-05 11:00:49 988
原创 ElasticSearch 8.x 版本如何使用 SearchRequestBuilder 检索
那如果特殊情况下,比如需要和老项目融合的时候,可能需要使用到 SearchRequestBuilder 来检索,该如何做呢?就是用 ElasticsearchClient 来包装 RestHighLevelClient 来执行查询,真正的检索使用 RestHighLevelClient 来执行的,而ElasticsearchClient则是构建为了融合并初始化 SearchRequestBuilder而创建的。
2024-01-29 10:47:44 2513
原创 ElasticSearch 8.x 使用 snapshot(快照)进行数据迁移
Elasticsearch 的快照就是指对数据和元数据的定期备份。因为快照中不仅包含了所有数据,也包含了所有的相关信息,比如:映射、配置等;这些快照可以保存在本地文件系统,也可以保存在共享文件系统或者专门存储快照的地方。在快照的概念中,数据并不都是每次全部备份一遍,而是采用增量的方式进行进行备份。首次备份会进行全力备份,而后续的备份则是在上一次备份后的更新的数据,增量备份可以有效地减少备份所需的存储空间和节省时间。
2024-01-29 10:45:55 2051
原创 ElasticSearch 8.x 弃用了 High Level REST Client,移除了 Java Transport Client,推荐使用 Elasticsearch Java API
从 ElasticSearch 7.0.0 版本开始,ElasticSearch 官方就不建议使用 TransportClient 客户端了,推荐使用 High Level REST Client 客户端了。然后接下来,从 ElasticSearch 7.15.0 版本开始,ElasticSearch 官方就不建议使用 High Level REST 客户端了,推荐使用 ElasticSearch-java 客户端了。
2024-01-11 10:14:48 5440
原创 ElasticSearch 7.x 版本使用 BulkProcessor 实现批量添加数据
BulkProcessor是 ElasticSearch 客户端中的一个功能,用于批量执行索引、更新或删除操作,BulkProcessor 运行将多个操作打包成一个请求进行发送,以提高效率和性能。性能优势:将多个操作打包成一个请求,这样可以减少网络开销,提高数据传输效率,从而可以加快数据写入索引速度。减少开销:较少的网络开销和较少的服务器的交互,减少服务器开销,尤其是大规模写入数据时。原子性:批量操作可以保证一组操作要么全部成功,要么全部失败,报错数据的一致性。
2024-01-11 10:12:16 2971 1
原创 SpringBoot+FastJson 优雅的过滤 Response Body
在 Spring Boot 中,默认使用 Jackson 库来将返回体转换为 JSON 格式的数据,Jackson 是一个流行的 JSON 处理库,Spring 框架中集成了它作为默认的 JSON 序列化和反序列化工具。FastJson 中有一个 FastJsonHttpMessageConverter 是 FastJson 中提供的消息【转换器】,我们就通过继承FastJsonHttpMessageConverter 并重写转换功能来实现返回体字段过滤。
2023-12-17 12:16:13 1411
原创 SpringBoot 学习之常用 Filter / Advice 总结
Spring Boot 的 Filter 是在处理 HTTP请求和响应前后执行特定的操作。可以执行比如 身份验证、日志记录、请求转发以及对请求体和响应体做处理。在 SpringBoot 中,通知(Advice)是一种拦截器,用于在请求处理的不同阶段或响应进行全局的处理和定制化操作,允许开发者在请求处理的特定时刻介入对请求和响应做出修改或扩展。
2023-12-10 11:52:17 1288
原创 GO学习之 单例模式 sync.Once
在 JAVA 开发中,Spring 框架使用了 单例模式 来创建实体 Bean,我们在开发中也是多用单例模式来避免实例的重复创建。在 Go 标准库中,sync.Once 的 “仅仅执行一次” 的特性被多用于初始化操作或者是资源清理的过程中,以避免重复执行导致性能不是最佳。
2023-12-02 16:36:28 1272
原创 GO学习之 条件变量 sync.Cond
sync.Cond实例的初始化需要一个满足实现了sync.Locker接口的类型实例,通常使用 sync.Mutex。条件变量需要互斥锁来同步临界区数据。各个等待条件成立的 goroutine 在加锁后判断条件是否成立,如果不成立,则调用 sync.Cond 的 Wait 方法进去等待状态。Wait 方法在 goroutine 挂起前会进行 Unlock 操作。
2023-12-02 12:44:33 1387 2
原创 GO学习之 互斥锁、读写锁该如何取舍
sync包提供了两种锁,互斥锁(Mutex)和 读写锁(RWMutex),一般有推荐用 互斥锁,它常被用来对结构体对象的内部状态、缓存等进行保护,使用最为广泛。相比之下,读写锁则使用率就不是那么多了,但既然存在,那就有存在的道理和使用场景。
2023-11-12 11:15:37 580
原创 GO学习之 同步操作sync包
Go 语言提倡 不要通过共享内存来通信,而是要通过通信来共享内存,一般的场景中,先使用 CSP 并发模型实现,就是 goroutine + channel 编程。但也有一些特殊的场景,需要 sync包 提供的低级同步原语。在 Go 中,channel 属于高级同步原语,其实现是建立在低级同步原语之上的,所以 channel 自身的性能与低级同步原语相比要稍微逊色一点了。因此,在需要需要高性能的情况下,sync包 提供的低同步原语更为重要。
2023-11-04 17:29:40 467
原创 GO学习之 通道(nil Channel妙用)
对一个 nil channel 执行获取操作,该操作会被阻塞 ,因此已经被置为 nil 的 c1 c2 再也不会被 select 选中执行了。
2023-10-29 17:40:38 794 1
原创 GO学习之 goroutine的调度原理
Go 语言的设计哲学之一是 “原生并发,轻量高效”。Go 并未使用操作系统线程作为分解后的代码片段的基本执行单元,而是实现了 goroutine 这一由Go运行时负责调度的用户层轻量级线程为并发程序设计提供原生支持。goroutine相比传统操作系统线程而言具有如下优势:1. 资源占用小,每个 goroutine 的初始栈大小仅为 2KB。2. 由 Go 运行时而不是操作系统调度,goroutine 上下文切换代价小。3. 语言原生支持:goroutine 由 Go 关键字函数或方法
2023-10-21 16:50:37 1114
原创 GO学习之 远程过程调用(RPC)
RPC 是远程过程调用(Remote Procedure Call, RPC)是一个计算机通信协议。RPC 协议允许一台计算机的程序调用另一台计算机的子程序,我程序员无需要额外地为这个交互编程。RPC 允许应用程序调用另一个地址空间(通常是远程服务器)上的函数和方法,就像本地调用一样。RPC 的核心思想就是使远程调用过程对开发者透明,就像本地调用一样。
2023-09-16 17:32:44 1094 2
原创 GO学习之 消息队列(Kafka)
Kafka 是由 Apache 软件基金会开发和维护的开源的、分布式的消息队列系统,用于高吞吐量、持久性的消息传递。主要用于实时数据处理,可以处理海量的数据流,并将数据流可靠地传递给多个消费者应用程序。首先用 ``sarama.NewConfig()`` 来创建一个 config 配置实体,然后通过 sarama.NewSyncProducer() 来创建一个生产者,用 &sarama.ProducerMessage{} 生成一个消息,通过 producer.SendMessage(message)。消
2023-09-03 10:41:58 1385 2
原创 GO学习之 搜索引擎(ElasticSearch)
使用 Go 语言操作 ElasticSearch 具有高性能、并发性和易维护性等优势,适用于需要快速、高效处理大量数据的场景。不过,也需要根据项目需求和团队技术栈的考量来决定是否选择 Go 语言来操作 ElasticSearch。
2023-08-27 22:56:25 1727
原创 GO学习之 数据库(Redis)
此篇仅仅用了 github.com/go-redis/redis 库对 Redis 的基本操作针对不同的数据结构进行了简单的操作,其实如若对 Redis 的命令熟悉,那用 Go 来操作 Redis 就不复杂了。总之,Redis 是一个功能丰富、高性能的内存数据存储系统,适用于缓存、数据库和消息队列等多种应用场景。在使用 Redis 缓存时,需要考虑数据存储需求、缓存失效策略等因素,以实现更高效的数据访问和管理。
2023-08-20 13:38:01 1045
原创 GO学习之 数据库(mysql)
对数据库操作,少不了各个语言对数据库操作的驱动,就像 JAVA 中有 mysql-driver 的驱动包,拉取下来就可以通过JDBC 对数据库操作了,当然 Spring、Mybatis 等框架也提供了对数据库很方便的操作。那在 Go 中也是提供了驱动 ``github.com/go-sql-driver/mysql``,我们通过 go get 拉取驱动来进行CRUD操作。
2023-08-19 17:59:16 1065
原创 GO学习之 微框架(Gin)
什么是微框架(Gin),Gin 框架是一个轻量级的,高性能的 Web 框架,专门为构架快速的 Web 应用和 API 而设计。它是基于 Go 语言的标准库开发,提供简单易用的 API 和其他更多的功能,开发者可以快速的构建出 Web 应用并且部署。通过 go get github.com/gin-gonic/gin 来安装 Gin 框架到开发者环境,通过 框架提供的 路由和处理函数来快速开发 API,接受参数通过函数处理业务逻辑,然后通过 Gin 框架提供的 JSON、String、HTML等方法返回给前
2023-08-12 19:05:33 1209
原创 GO学习之 网络通信(Net/Http)
Go 语言还有许多第三方的 HTTP 客户端和服务器库,可以帮助我们更方便地实现 HTTP 请求和服务。一些常用的 HTTP 客户端库有 `github.com/go-resty/resty`、`github.com/parnurzeal/gorequest` 等;HTTP 服务器库有 `github.com/gin-gonic/gin`、`github.com/gorilla/mux` 等
2023-08-07 00:18:11 1717
原创 GO学习之 接口(Interface)
那在 Go 语言中也有 `interface`,我们可以通过 `interface`来定义一种对象的行为规范,也就是定义了一组行为,不需要关注这些规范如何实现,我们可以通过接口将代码解耦,使得不同模块之间依赖减少,提高代码可维护性。如果一个类型实现了接口中定义的所有方法,就视为该类型实现了接口如果一个类型实现了某个接口,那么可以将该类型的实现赋值给接口类型变量一个类可以实现多个接口
2023-08-06 15:54:44 1589
原创 GO学习之 函数(Function)
在 Go 语言中,函数(Function)是一种可执行的代码块(对特定功能进行提取,形成代码片段),用于执行特定的任务或操作。函数是 Go 语言中的基本组件,实现了模块化和复用的机制,让代码更加结构化和可维护。无需声明原型,支持不定参数,支持多返回值,支持命名返回参数,支持匿名函数和闭包函数也是一种类型,可以把一个函数赋值给一个变量
2023-08-05 17:02:44 1405
原创 GO学习之 协程(goroutine)
在 Go 语言中,goroutine 是一种非常轻量的执行单元,有 Go 运行是(runtime)进行调度,不是有固定大小的线程来处理的。与传统线程相比,goroutine的创建和切换开销很小,因此可以创建大量的 goroutine 来并行执行任务,而不会造成太大的系统负担。* goroutine 更像是一种高效的协程,它在并发编程中提供了轻量且较高的方式来处理并发,而不需要显式地创建和管理线程池。
2023-07-31 15:33:49 4319 1
原创 GO学习之 通道(Channel)
Go 语言中的通道(Channel)是一种特殊的类型。见名知意,一边进来另一边出去,或者说通道就像一个队列,总是遵循 先入后出(First In Frist Out) 的规则,以便能保证顺序。每个通道都是一个具体类型的管道,也就是在声明的时候需要指定元素的数据类型一样。
2023-07-29 18:49:23 1729 1
原创 GO学习之 结构体 操作
此篇博客就来了解 go 语言中是如何进行自定义类型的,就像 JAVA 中可以定一个实体 Bean (class Persion)来封装数据。Go 语言提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型叫结构体(struct)。使用 type 和 struct 关键字来定义结构体;类型名:自定义结构体的名称,同一个包内不能重复,就像JAVA 的类名,同一个包
2023-07-23 17:20:48 807
原创 GO学习之 Map 操作
什么是 Map 呢?就是一种无序的以 key-value 键值对方式存储的数据结构,在 Go 语言中,Map也一样,类似于哈希或者字典,是引用类型,所以必须初始化才能使用,适用于快速查找和存储键值对的场景。>Map 是一种引用类型,需要 make() 函数来创建, 这样来定义 **map[键类型]值类型**,例如 **map[string]int** 表示键为字符串类型,值为整数类型的 map。
2023-07-22 11:12:12 766
原创 GO学习之切片操作
什么是切片呢?切片(Slice)是 Go 语言中的一种动态长度的数据结构,它是对数组的一个连续片段的引用,并且提供了一种方便且灵活的方式来操作和管理一组相同类型的元素。切片的定义:1. 切片由三部分组成:指针、长度 和*容量。2. 指针指向数组的第一个元素,切片的长度表示切片表示当前存储元素的个数,容量表示切片底层数组的长度。
2023-07-16 11:28:22 29471 3
原创 GO学习之入门语法
首先,了解 Go 语言的基本概念和其用途。Go 是一种静态类型、编译型的编程语言,旨在提高软件开发的效率。它特别适用于并发和分布式系统开发。学习 Go 语言的基础语法,包括变量、常量、数据类型、函数、控制结构(如 if-else 和循环)、指针、结构体和接口等。
2023-06-24 16:00:52 1176
原创 Logstash部署与使用
Logstash是一个收集与处理数据的引擎,就像ElasticSearch是专门用来检索的引擎一样,Logstash用于收集、处理和转换各种数据源(文件、数据库、网站等)的数据,并将其转换为统一的格式。Logstash支持多种插件,进行数据过滤、转换和输出,可以方便地与 ES 和 Kibana 集成使用。还支持多线程处理和事件模型,可以在大规模数据处理场景下提供高性能、高可用的服务。
2023-06-04 16:15:44 8952 1
原创 ELK技术栈介绍
ELK技术栈由三个技术组成:Elasticsearch、Logstash和Kibana。每个技术都有自己的功能点和用法,同时它们也可以相互关联使用,形成一个完整的日志解决方案。此外,还有一个名为Beats的技术,它是一个轻量级的数据收集器,可以收集各种类型的数据并将其发送到Logstash或Elasticsearch进行处理和存储。ELK技术栈的三个技术可以相互关联使用,形成一个完整的日志解决方案。
2023-05-21 13:22:17 1190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人