- 博客(23)
- 收藏
- 关注
原创 Gin--Blog项目-flags文件解析
这个文件 的主要作用是处理程序的命令行参数(也称为标志或flags)。它允许用户在启动程序时通过命令行传递不同的选项,从而控制程序的行为。具体来说,这个文件做了以下几件事情:定义程序可接受的命令行选项:解析命令行参数:根据参数执行特定操作:下面我们来逐行解释代码:这行代码声明了当前文件属于 包。包是 Go 语言中组织代码的一种方式。这里导入了两个标准库:这定义了一个名为 的结构体(struct)。结构体是一种自定义的数据类型,可以包含多个不同类型的字段(成员变量)。这行代码声明了一个名为 的
2025-05-20 10:19:35
644
原创 MySQL中的Change Buffer是什么,它有什么作用?
然而,随着存储技术的发展(尤其是SSD的广泛应用),其必要性和默认配置也在发生变化,需要根据具体的硬件环境和工作负载进行评估和调整。
2025-05-19 21:18:09
708
原创 Git基础面试题
git rm和系统的rm(在 Windows 上是delrmdelgit statusrmrm <文件名>git addgit rmgit addgit rm。
2025-05-19 20:33:52
798
原创 BlogX项目Ai面试系列-配置管理和数据库的读写分离
在项目中,应用程序的配置通过外部化的 YAML 文件管理,主要优点包括配置与代码分离、可读性高、支持复杂数据结构等,但需注意敏感信息的安全处理。GORM 的 dbresolver 插件用于实现数据库读写分离,Sources 配置写库,Replicas 配置读库。GORM 根据操作类型自动路由请求,若读库不可用,读请求会回退到写库。若主库故障,写操作将失败,但读操作仍可通过从库执行,确保部分功能可用。
2025-05-17 09:30:12
624
原创 从配置文件开始到实现数据库读写分离的整个详细的工作流程
本文描述了从读取配置文件到完成数据库读写分离配置的整个工作流程。首先,在 conf/enter.go 中定义了配置结构 Config,包含系统、日志和数据库配置。接着,在 global/enter.go 中创建了全局变量 Config 和 DB,用于存储配置信息和数据库实例。然后,通过 core/init_conf.go 读取并解析 settings.yaml 配置文件,将其内容填充到 Config 结构体中,并将结果存入全局变量。最后,在 core/init_db.go 中,使用加载的数据库配置初始化 G
2025-05-17 09:27:16
520
原创 Gin_BlogX 配置文件解析
settings.yaml 是 Gin_BlogX 项目的配置文件,采用 YAML 格式,用于存储应用程序的运行时设置,如系统配置、日志记录和数据库连接信息。该文件的主要作用包括外部化配置、环境感知、集中管理和提高可读性。通过将配置信息从代码中分离,开发者可以在不重新编译应用程序的情况下修改配置。文件中的 system 部分定义了应用程序的 IP、端口和运行环境;log 部分配置了日志记录;db 和 db1 部分分别定义了主数据库和备用数据库的连接信息,支持读写分离。 在 core/init_db.go 文
2025-05-17 08:53:45
812
原创 Go电商项目--Ai模拟面试:验证码模块
它定义了一套规范或契约,规定了一个“验证码驱动”应该具备哪些行为(方法),比如绘制验证码、生成问题和答案等。对现有设计优点的理解(接口带来的扩展性),实际需求变更时的分析和设计能力,代码组织和模块化思考。总结来说,生产环境的错误处理应该关注日志的完整性、结构化、可追溯性,以及对用户和运维的友好性。对状态管理、存储机制的理解,分布式系统设计中常见问题的认知,以及解决问题的能力。对错误处理重要性的认识,生产环境日志和监控的最佳实践,以及代码健壮性的思考。你好,我看了你项目中的这个验证码模块。
2025-05-15 11:25:33
714
原创 Go商城项目---登录页面实现验证码验证(base64captcha)
首先创建一个store:作用: store 用于存储生成的验证码的ID和其对应的正确答案。DefaultMemStore 是 base64Captcha 库提供的一个默认的基于内存的存储方式。工作机制: 当一个验证码生成时,它的ID和答案会被存入这个 store。当用户提交答案进行验证时,系统会根据ID从 store 中检索出正确的答案进行比较。因为是内存存储,所以如果应用程序重启,这些存储的验证码信息会丢失。其次创建生成验证码的函数:作用: 这个函数用于创建一个新的图形验证码。返回值:i
2025-05-15 11:01:42
601
原创 Gin完结,明天开始学项目
1.路由中间件,全局中间件,中间件的执行顺序,分组路由注册中间件2.自定义model3.实现文件的上传4.gin中cookie和session的实现5.使用gorm实现对数据库的增删改查,以及gorm中事务的使用。
2025-05-13 22:33:30
104
原创 算法日记Day02
这个end是我看灵神的题解才看懂的,真是太神了!target+1的起始位置的前一个位置就是target出现的最后一个位置,另外需要**start==len(nums)**来判断是否越界,比如 1 3 5 7查找9,start=4。
2025-05-09 13:32:57
138
原创 每日八股面试题:map的扩容机制
这种情况是因为频繁插入元素后又删除元素,导致溢出桶增多,但是键值对的总数一直不高,此时 key 的存储比较分散,查询的效率变低。即原有的键值对不会一次性搬迁到新的桶中,每次最多只会搬迁 2 个槽,这个迁移工作分摊到后续的 map 操作(插入、删除、查找)中,以减少扩容对性能的影响。增量扩容:当键值对的数量大于 8 且大于桶数组的 6.5 倍时,此时桶都快满了,需要触发增量扩容,桶数量翻倍。等量扩容:不会增加桶的数量,而是对现有的桶进行排列,将溢出桶中的键值对分散到各个桶中,从而减少溢出桶的数量。
2025-05-09 09:16:05
147
原创 每日八股面试题:Go语言中map的底层实现原理
map的底层是通过hash表来实现的,使用桶数组(buckets)来存储键值对,map在存储时使用hash函数将键映射到相应的桶中,每个桶会存储8个键值对,超出以后会用溢出桶来解决hash冲突。
2025-05-09 08:59:52
212
原创 Go语言基础面试题:数组与切片的区别(面试看这个就够了!)
数组声明时需要指定长度,长度是其类型的一部分,而切片是对数组的抽象,声明时无需指定长度2.创建方式不同数组可以使用字面量和var关键字来创建,切片可以使用字面量,make函数或者从数组、切片中截取来创建切片3.长度固定性不同数组的长度固定,一旦声明,不可修改,而切片的长度是可变的,可以通过append()函数来动态添加元素4.内存分配不同数组是值类型,在传递给函数或者赋值的时候,会复制整个数组,进而会消耗更多内存,对数组的修改只会影响其副本。切片是引用类型,存储的是对底层数组的引用,传递切片时只
2025-05-07 16:07:25
255
原创 全网最通俗易懂的Cookie和Session讲解!看完不会你骂我!
Cookie 像钥匙,Session 像抽屉,两者配合让网站既能 “记住” 你,又能安全高效地处理你的数据。
2025-04-26 14:31:40
417
原创 Go语言map底层原理
通过计算得到的哈希值取其后B位,此图中为5位得到这个键值对存储在哪一个桶中,再通过前八位定位到tophash的第几个,进而得到key和value的值,如果第一个桶没找到,顺着overflow指针查找第二个桶,以此类推。哈希值用于确定这个键 - 值对应存放在哪个桶中。我们可以看到map实现在hmap这个数据结构中,hmap中有一个桶数组,桶数组中存放着tophash,key和value以及overflow指针,当插入一个键 - 值对时,Go 语言会先对。图片来源于掘金社区韩树作者。
2024-11-29 20:49:21
406
原创 Go语言中make和new的区别
2.适用类型的不同 make仅适用于map,channel,slice,而new适用于。(如int、string、bool等)和。1.返回值不同,make返回的是。
2024-11-29 19:24:10
139
原创 go语言中字符串的修改
rune类型的使用:与string类型相互转换,类似的还有byte类型,所以。单个字符用单引号表示,双引号表示string类型!可以和string互相转换。
2024-11-29 19:16:43
373
原创 GO语言中数组与切片的区别以及切片的扩容机制
切片是引用类型,这意味着切片包含一个指向数组的指针、切片的长度和容量(切片的底层结构)。当我们再往切片里面增加数据时,切片的内存占用会变多,还会发生频繁的数据内存分配,从而造成性能的耗费,为此go语言提供了切片的扩容机制。新版:容量小于256时直接扩容至两倍,大于256时按照new = old + ( 3 * 256 + old) / 4这个公式扩容。1.参数的长度:数组是固定的长度,在创建时就要声明数组的长度,而切片是不固定的,可以动态变化。3.内存分配:数组是静态内存分配,切片是动态内存分配。
2024-11-29 18:56:22
300
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人