golang开发常用软件设置整理

本文介绍了如何使用MobaXterm记录终端日志、解决IDEA中Git操作缓慢的问题、将IDEA终端切换为GitBash、设置IDEA自动格式化代码和导入包排序,以及在Windows环境下编译Xserver的详细步骤,包括环境变量配置和解决编译过程中的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.mobaxterm将终端输出记录到日志文件(带时间戳)

按照下图所示将日志文件存储到本地,可以设置日志文件的存储路径
在这里插入图片描述

2.关于IDEA软件进行git操作过慢的解决办法

(1)原因
IDEA的操作Git特别的慢,status、fetch、pull、checkout、commit等基础操作都执行的特别慢,下方的Task进度条一直处于等待中,等待差不多10秒多的时候才开始执行进度。
(2)处理
IDEA在执行 Git 命令的时候,其实是调用了一个runnerw.exe程序来执行名令的,问题就出在这个runnerw.exe程序上面,猜测是公司给初始化的系统本身有什么域设置不合理导致在我这个系统版本执行的提特别慢,就像是队列里面排队等候一样,最终试着把runnerw.exe改了后缀名,问题就解决了。
处理方案:Goland安装目录 --> bin -->runnerw.exe (64位系统的runnerw64.exe)
找到这两个文件删除即可,或者直接更改后缀名。
注意:如果 runnerw64.exe不存在,便只需对文件runnerw.exe 删除或改后缀名即可。

3.IDEA 更改终端为 Git Bash

设置 -> 工具 -> 终端,把 “powershell.exe” 更改为 Git Bash的安装路径即可。
在这里插入图片描述

4.IDEA 设置保存时自动格式化代码并对导入包排序

IDEA可以在不下载第三方插件的情况下实现保存时自动格式化代码,具体步骤如下:
设置 -> 工具 -> 保存时的操作,将其中的重新格式化代码和优化import选项勾选即可
在这里插入图片描述

5.Win编译Xserver

1、解压gcc-linaro-7.4.1-2019.02-i686-mingw32_aarch64-linux-gnu.tar.xz
2、 解压过程中遇到存在文件覆盖 全部选是
3、 添加环境变量
解压后的目录gcc-aarch64-linux-gnu\gcc-linaro-7.4.1-2019.02-i686-mingw32_aarch64-linux-gnu\bin添加到系统环境变量PATH中
在这里插入图片描述
4、cmd运行aarch64-linux-gnu-gcc
执行 aarch64-linux-gnu-gcc –v
在这里插入图片描述
备注:配置完成后重启GolandIDE,防止Goland未更新PATH环境变量
5、编译项目
将相关依赖文件压缩包mod.tar解压到C:\Users\nova005329\go\pkg路径下
配置编译参数到Goland中
GOOS=linux;GOARCH=arm64;CC=aarch64-linux-gnu-gcc;CGO_ENABLED=1
在这里插入图片描述
关于CX40PRO项目的编译配置如图
在这里插入图片描述
在终端执行go mod tidy指令
在这里插入图片描述
得到如上图所示结果后,运行main.go文件
在这里插入图片描述
编译出现下面弹窗 选择 仍然继续
在这里插入图片描述

<think>好的,用户想了解Golang中常用的软件设计模式及其最佳实践。首先,我需要回忆Golang的设计模式常见资料,并结合用户提供的引用内容。 用户提供的引用里提到了选项模式、单例模式,还有领域驱动设计。引用2详细说明了选项模式的应用,因为Golang不支持默认参数,选项模式可以优雅地处理可选参数。引用4提到了单例模式的最佳实践,使用sync.Once和atomic包确保线程安全且高效。引用3提到了领域驱动设计在Golang中的实践,可能涉及工厂模式或仓储模式。引用1提到创建型模式,比如工厂方法和单例模式,这些都是常见的设计模式。 接下来,我需要整理Golang中常用的设计模式,确保涵盖创建型、结构型和行为型。除了用户提到的选项模式和单例模式,可能还有工厂模式、装饰器模式、策略模式等。需要结合Go语言的特点,比如接口、组合、并发等,说明这些模式的具体实现。 例如,选项模式通常用于构建复杂对象,通过传递函数选项来设置属性。单例模式使用sync.Once确保只实例化一次。工厂模式可以利用Go的接口和结构体来创建对象。装饰器模式可以通过函数闭包实现。策略模式则可以利用接口实现不同算法的替换。 还要注意引用中的最佳实践,比如实例5的单例模式实现,强调正确性和性能。同时,选项模式如何解决默认参数的问题,提高代码的可读性和扩展性。 需要确保回答结构清晰,分点列出每个模式,说明用途、实现方式和示例代码。同时,生成相关问题,可能涉及其他模式、具体实现细节或性能优化等。 最后,检查是否符合用户的要求,比如使用中文回答,正确使用LaTeX格式,引用标记正确。确保每个模式都有对应的引用支持,比如选项模式引用2,单例模式引用4,领域驱动设计引用3,创建型模式引用1。</think>### Golang常用软件设计模式及最佳实践 在Go语言开发中,设计模式的应用既遵循通用软件工程原则,又需结合Go特有的语法特性。以下是几种典型模式及其实现: #### 1. 选项模式(Functional Options) *适用场景*:需要处理多个可选参数的复杂对象初始化 *实现方式*:通过函数闭包传递配置参数 ```go type Server struct { Host string Port int } type Option func(*Server) func WithHost(host string) Option { return func(s *Server) { s.Host = host } } func NewServer(opts ...Option) *Server { s := &Server{Host: "localhost", Port: 8080} // 默认值 for _, opt := range opts { opt(s) } return s } // 使用示例:NewServer(WithHost("192.168.1.1")) ``` 此模式解决了Go不支持默认参数的问题,同时保持API简洁[^2]。 #### 2. 单例模式(Singleton) *适用场景*:全局唯一实例的线程安全创建 *最佳实践*:使用`sync.Once`确保原子性 ```go var ( instance *Database once sync.Once ) type Database struct { // 数据库连接字段 } func GetInstance() *Database { once.Do(func() { instance = &Database{} // 初始化操作 }) return instance } ``` 此实现保证线程安全且避免重复初始化,优于双重检查锁定等传统方式[^4]。 #### 3. 工厂模式(Factory) *适用场景*:对象创建逻辑封装 *Go实现*:通过接口隐藏具体类型 ```go type Document interface { Export() string } type PDFDocument struct{} func (p PDFDocument) Export() string { return "PDF content" } func NewDocument(format string) Document { switch format { case "pdf": return &PDFDocument{} // 其他格式实现 } return nil } ``` #### 4. 装饰器模式(Decorator) *适用场景*:动态扩展功能 *Go实现*:利用函数闭包 ```go type HttpHandler func(w http.ResponseWriter, r *http.Request) func WithLogging(h HttpHandler) HttpHandler { return func(w http.ResponseWriter, r *http.Request) { log.Println("Request started") h(w, r) log.Println("Request completed") } } ``` #### 5. 策略模式(Strategy) *适用场景*:算法替换 *Go实现*:接口组合 ```go type CompressionStrategy interface { Compress(data []byte) []byte } type ZipStrategy struct{} func (z ZipStrategy) Compress(data []byte) []byte { // zip压缩实现 } type Compressor struct { strategy CompressionStrategy } func (c *Compressor) SetStrategy(s CompressionStrategy) { c.strategy = s } ``` ### 领域驱动设计实践 在复杂业务系统中,Go可通过以下方式实现DDD: - 使用`聚合根`管理领域对象生命周期 - 通过`仓储模式`隔离数据访问层 - 采用`CQRS`分离读写操作 如GoDDD项目展示了如何将Java的DDD模式适配到Go语言[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值