阿巩鸽子突然回归前段时间由于工作需要,要实现从服务端生成自定义PDF文件,阿巩将这次方案制定到具体实现的详细流程分享出来供大家参考,方案可以满足需求但并不完美,还请大家多多指教!需求是这样的,以下是我们要生成自定义PDF的模版初稿样式(这里仅供演示非实际样式稿),需要将某同学的考试信息及每个项目的成绩数据填入到对应的分数中,下方展示学生的作品图片。首先想到的 ......
58
0
0
2024-09-22
在Go语言的并发编程中,互斥锁(sync.Mutex)与读写锁(sync.RWMutex)是实现线程安全、保护共享资源免受竞态条件影响的核心工具。本文将深入浅出地解析这两种锁的特性和用法,探讨常见问题、易错点及应对策略,并通过代码示例加深理解。互斥锁(sync.Mutex)互斥锁,顾名思义,确保同一时刻只有一个goroutine能够访问受保护的资源。在Go中 ......
59
0
0
2024-09-16
工厂方法模式什么是工厂方法模式工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化推迟到其子类。这个接口就是工厂接口,子类就是具体工厂类,而需要创建的对象就是产品对象。客户端代码只需要调用工厂接口的方法,而无需关心具体的产品对象是如何创建的。用于创建对象的过程中将实例化的逻辑封装在一个工厂方法中 ......
85
0
0
2024-09-15
一、引言(一)垃圾回收 概述垃圾回收(Garbage Collection,GC) 是Go语言的核心特性之一,是实现内存自动管理的一种形式。golang的自动垃圾回收屏蔽了复杂且容易出错的内存操作,让开发变得更加简单、高效。在Go语言中,从实现机制上来说,垃圾回收可能是最复杂的模块了。了解垃圾回收的机制,有助于更好地理解Go语言的内存管理机制,从而更好的使用 ......
86
0
0
2024-09-03
原文:https://go.dev/ref/mem怎样理解编程语言的内存模型?编程语言的内存模型是理解编程语言如何管理和操作计算机内存的关键。 它定义了编程语言中变量、数据结构和程序的存储方式,以及它们之间的交互方式。通过理解内存模型,程序员可以更有效地利用内存资源,优化程序性能,并避免常见的内存错误。Go语言的内存模型是怎样的?Go语言的内存模型主要定义了 ......
116
0
0
2024-08-29
一、引言并发编程是现代编程语言的重要组成部分,Go语言通过goroutines和channel实现了高效的并发编程机制。Channel是一种特殊的类型,可以用于在goroutines之间传递任何类型的对象,实现数据的共享和同步。Channel的出现,使得Go语言的并发编程变得更加简单和安全,大大提高了程序的执行效率。二、设计哲学Go语言遵循**通信顺序进程* ......
100
0
0
2024-08-27
目录一、gomock 工具介绍二、安装三、使用3.1 指定三个参数3.2 使用命令为接口生成 mock 实现3.3 使用make 命令封装处理mock四、接口单元测试步骤三、小黄书Service层单元测试四、flags五、打桩(stub)参数六、总结6.1 测试用例定义6.2 设计测试用例6.3 执行测试用例代码6.4 运行测试用例6.5 不是所有的场景都很 ......
105
0
0
2024-08-26
目录一、httptest1.1 前置代码准备1.2 介绍1.3 基本用法二、gock2.1介绍2.2 安装2.3 基本使用2.4 举个例子2.4.1 前置代码2.4.2 测试用例一、httptest1.1 前置代码准备假设我们的业务逻辑是搭建一个http server端,对外提供HTTP服务。用来处理用户登录请求,用户需要输入邮箱,密码。package ma ......
116
0
0
2024-08-24
引入正常的业务开发之后的测试流程,都是先单元测试,后集成测试。单元测试:针对每一个方法进行的测试,单独验证每一个方法的正确性。集成测试:多个组件合并在一起的测试,验证各个方法、组件之间配合无误。所以一般项目都是开发人员要先搞单元测试,单元测试初步验证之后,再集成测试。单元测试验证了各个方法的基本逻辑之后,集成测试就比较少问题了。一、单元测试基本介绍1.1 什 ......
120
0
0
2024-08-21
一、引言在Go语言中,匿名函数与闭包是两个重要的概念,它们增强了Go语言的表达力和功能性,使得代码更加简洁和强大。 本文将深入探讨Go语言中的匿名函数与闭包,帮助读者更好地理解和应用这两个概念。匿名函数在Go语言中提供了一种灵活的方式来定义即用即抛的函数逻辑,减少了命名负担并且可以直接在代码中嵌入。闭包则允许匿名函数捕获并持有其定义时作用域中的变量,使得函数 ......
114
0
0
2024-08-18
一、引言原生支持并发编程是Go语言的核心特性之一,Go语言通过goroutine和channel提供了简单而强大的并发模型。goroutines是由Go运行时管理的轻量级线程,它们使用非常少的内存,启动速度快,调度灵活,这使得在Go中创建成千上万个并发任务成为可能。要高效地管理这些goroutines,就需要一个强大的调度器。GMP是Go运行时的调度器模型, ......
138
0
0
2024-08-12
在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug;压力测试(压测)是确保系统在高负载情况下仍能稳定运行的重要步骤。通过模拟高并发场景,可以评估系统的性能瓶颈、可靠性和稳定性,进而优化系统架构和资源配置。一、压力测试相关术语响应时间 (RT):指系统对请求作出响应的时间。吞吐量 (Throughput):指系统在 ......
194
0
0
2024-08-04
1. 引言在当今软件开发领域,跨语言编程已经成为一种常见的需求。不同的编程语言各自有其优势和适用场景,因此在项目开发过程中,经常需要将多种编程语言进行集成和协作。Go语言(简称Go)和Python作为两种流行的编程语言,在不同的领域都有着广泛的应用。为了实现Go与Python之间的无缝集成和交互,Go-Python库应运而生。介绍Go-Python库及其作用 ......
180
0
0
2024-08-01
简介在如何有效地测试Go代码一文中,我们谈论了单元测试,针对它的两大难点:解耦、依赖,提出了面向接口、mock 依赖的解决方案。同时,该文还讨论了一些 Go 领域内的实用测试工具,欢迎读者阅读。单元测试关注点是代码逻辑单元,一般是一个对象或者一个具体函数。我们可以编写足够的单元测试来确保代码的质量,当功能修改或代码重构时,充分的单元测试案例能够给予我们足够的 ......
167
0
0
2024-07-28
简介现在,很多开源库都支持构建应用程序。我应该向你推荐一些库,它们可以帮助启动具有简单设计、干净代码和良好性能的项目。一、CLI 命令(spf13/cobra)Cobra 既是一个用于创建强大的现代 CLI 应用程序的库,也是一个用于生成应用程序和命令文件的程序。我使用这个库来管理命令应用程序,执行运行程序,初始化配置,并启动 Rest API。基于 cob ......
164
0
0
2024-07-28