Go語言開發工具全解析

Go 語言的開發工具生態對于提高開發效率、保證代碼質量和團隊協作至關重要。一套完善的工具鏈可以幫助開發者:

1. 加速編碼過程

  • 代碼模板快速生成常見模式
    • 例如使用代碼片段(Snippet)快速生成HTTP服務框架
    • 自動生成測試用例模板
  • 實時語法檢查減少錯誤
    • 即時顯示類型不匹配錯誤
    • 未使用變量警告
  • 智能導航快速定位代碼位置
    • 函數/方法定義跳轉
    • 接口實現查找
    • 調用關系分析

2. 提升代碼質量

  • 強制統一的代碼風格
    • gofmt自動格式化
    • 團隊代碼風格配置
  • 提前發現潛在錯誤
    • 靜態分析工具(如staticcheck)
    • 可能的nil指針檢測
  • 遵循最佳實踐建議
    • 如避免使用全局變量
    • 合理的錯誤處理提示

3. 簡化調試和測試流程

  • 可視化調試界面
    • 變量監視窗口
    • 調用堆棧可視化
  • 測試覆蓋率分析
    • 行覆蓋率統計
    • 分支覆蓋率報告
  • 性能瓶頸定位
    • CPU火焰圖
    • 內存分配熱圖

4. 管理復雜的依賴關系

  • 版本沖突解決
    • 依賴版本鎖定
    • 版本升級建議
  • 私有倉庫支持
    • 企業私有模塊代理
    • 認證配置
  • 可重復構建
    • vendor目錄管理
    • 構建環境隔離

5. 支持持續集成/部署

  • 自動化測試流水線
    • 單元測試
    • 集成測試
    • 端到端測試
  • 多環境部署
    • 開發/測試/生產環境
    • 多平臺構建
  • 發布管理
    • 版本號自動遞增
    • 變更日志生成

6. 優化性能分析

  • CPU/內存分析
    • 采樣分析
    • 追蹤分析
  • 并發問題診斷
    • Goroutine泄漏檢測
    • 鎖競爭分析
  • 資源使用優化
    • 內存分配優化
    • GC調優建議

集成開發環境(IDE)

Goland

JetBrains 公司開發的 Go 語言專用 IDE,提供企業級開發體驗:

深度代碼分析
  • 基于類型系統的智能補全
    • 結構體字段自動補全
    • 方法簽名提示
  • 實時代碼錯誤檢查
    • 空指針檢測
    • 類型不匹配提示
    • 未處理錯誤警告
  • 快速修復建議
    • 自動添加缺失的import
    • 自動生成方法存根
    • 錯誤處理快速修復
強大調試功能
  • 可視化斷點管理
    • 條件斷點
    • 日志斷點
    • 臨時斷點
  • 遠程調試Docker容器
    • 容器內調試
    • 多容器調試
  • Goroutine調試視圖
    • Goroutine樹狀圖
    • 狀態監控
    • 上下文切換追蹤
重構工具
  • 安全的重命名重構
    • 跨文件更新
    • 作用域控制
    • 預覽變更
  • 方法提取重構
    • 代碼塊提取為方法
    • 自動參數推斷
  • 接口實現生成
    • 根據接口生成實現骨架
    • 自動實現方法
集成版本控制
  • Git分支可視化
    • 分支圖
    • 提交歷史
    • 差異比較
  • 沖突解決界面
    • 三方合并工具
    • 逐行解決沖突
    • 合并預覽
數據庫工具
  • SQL語法高亮
    • 自動完成
    • 語法驗證
  • 查詢結果表格展示
    • 結果集可視化
    • 數據導出
  • 數據庫結構導航
    • 表結構瀏覽
    • 關系圖

適用場景:大型項目、企業級開發、需要完整IDE功能的團隊

VS Code

微軟開發的輕量級跨平臺編輯器,通過插件擴展功能:

核心功能
  • 通過Go插件實現90%的IDE功能
    • 代碼導航
    • 代碼補全
    • 重構支持
  • 支持調試、測試、代碼導航等
    • 集成Delve調試器
    • 測試運行器
    • 代碼覆蓋率
定制能力
  • 主題市場
    • One Dark Pro
    • Material Theme
    • 自定義主題
  • 鍵位綁定自定義
    • 快捷鍵映射
    • 命令面板
    • 多光標編輯
  • 工作區設置
    • 項目特定配置
    • 環境變量
    • 任務自動化
性能優勢
  • 內存占用優化
    • 通常<500MB
    • 懶加載擴展
  • 秒級啟動速度
    • 冷啟動<2秒
    • 文件級加載
  • 流暢的編輯體驗
    • 異步操作
    • 響應式UI
擴展生態
  • Go擴展(官方維護)
    • 語言服務器支持
    • 工具鏈集成
  • GitLens
    • 代碼作者標注
    • 提交歷史
    • Blame注釋
  • Docker擴展
    • 容器管理
    • 鏡像構建
    • Compose支持

適用場景:中小型項目、個人開發者、偏好輕量級工具的團隊

LiteIDE

專為Go設計的開源輕量級IDE:

核心特性
  • 單文件安裝包
    • 無復雜依賴
    • 便攜式安裝
  • 內置GOPATH管理
    • 多GOPATH切換
    • 環境配置
  • 基礎代碼補全
    • 包級別補全
    • 結構體補全
調試支持
  • 集成GDB調試器
    • 基本斷點功能
    • 堆棧跟蹤
  • 變量查看窗口
    • 局部變量
    • 全局變量
    • 表達式求值
代碼視圖
  • 包瀏覽器
    • 包結構樹
    • 快速導航
  • 文件結構大綱
    • 函數列表
    • 類型定義
  • 簡單的代碼格式化
    • 基本縮進
    • 空格處理

適用場景:Go語言初學者、教學環境、快速原型開發

代碼編輯與調試工具

Delve (dlv)

Go 語言的現代化調試工具:

調試功能
  • 條件斷點
    break main.go:10 if x > 5 && y < 10
    

  • 動態修改變量值
    set variable = "new value"
    

  • Goroutine列表和堆棧查看
    goroutines
    goroutine 5 stack
    

高級特性
  • 核心轉儲分析
    dlv core <executable> <corefile>
    

  • 逆向調試
    dlv debug --check-go-version=false
    

  • 插件系統
    dlv attach --headless --api-version=2 --listen=:2345
    

集成支持
  • IDE集成
    • Goland內置支持
    • VS Code調試適配器
  • 遠程調試
    dlv connect 192.168.1.100:4040
    

  • 測試集成
    dlv test -- -test.run TestSpecific
    

典型工作流:

# 啟動調試
dlv debug ./cmd/server -- -config=dev.yaml# 常用命令
(dlv) break main.go:15            # 設置斷點
(dlv) condition 1 x > 100        # 設置條件
(dlv) continue                    # 繼續執行
(dlv) print variable              # 打印變量
(dlv) stack                       # 查看調用棧
(dlv) goroutine 5 stack           # 查看特定goroutine

gopls

Go 官方語言服務器:

核心能力
  • 基于LSP協議的智能補全
    • 上下文感知補全
    • 文檔提示
  • 跨文件符號跳轉
    • 定義跳轉
    • 引用查找
  • 實時的類型檢查
    • 即時錯誤反饋
    • 類型推斷
進階功能
  • 代碼動作
    // 快速生成方法
    type S struct{}
    // 光標定位后觸發"Implement methods"代碼動作
    

  • 參數提示
    fmt.Printf("%s", x)  // 懸停顯示參數說明
    

  • 文檔懸停
    // 鼠標懸停在函數上顯示文檔
    

配置優化
{"gopls": {"staticcheck": true,"completeUnimported": true,"usePlaceholders": true,"analyses": {"unusedparams": true,"shadow": true}}
}

Goimports

自動管理包導入的工具:

工作模式
  1. 解析AST找出未使用的import
  2. 添加必要的import
  3. 按標準分組排序
    • 標準庫
    • 第三方庫
    • 本地包
集成方式
# 安裝
go install golang.org/x/tools/cmd/goimports@latest# 作為保存時鉤子
echo '*.go !pb.go' > .goimportsignore# 與編輯器集成
# VS Code配置
"go.formatTool": "goimports"

依賴管理與構建工具

Go Modules

Go 官方依賴管理系統:

關鍵概念
  • go.mod 模塊定義文件
    module github.com/user/projectgo 1.18require (github.com/gin-gonic/gin v1.7.4golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
    )
    

  • go.sum 校驗和文件
  • 最小版本選擇(MVS)算法
典型工作流
# 初始化新模塊
go mod init github.com/user/project# 添加依賴
go get github.com/gin-gonic/gin@v1.7.4# 升級依賴
go get -u github.com/gin-gonic/gin# 清理無用依賴
go mod tidy# 驗證依賴
go mod verify# 構建時下載依賴
go build

Makefile

傳統自動化構建工具:

完整示例
BINARY_NAME=myapp
VERSION=1.0.0
BUILD_DIR=bin
SRC_DIR=./cmd/app.PHONY: build test run cleanbuild:@echo "Building version $(VERSION)..."@mkdir -p $(BUILD_DIR)go build -ldflags="-X main.version=$(VERSION)" -o $(BUILD_DIR)/$(BINARY_NAME) $(SRC_DIR)test:go test -v -coverprofile=coverage.out ./...run: build$(BUILD_DIR)/$(BINARY_NAME)clean:rm -rf $(BUILD_DIR)rm -f coverage.out

Air

實時熱加載開發工具:

配置文件示例
[build]
cmd = "go build -o ./tmp/main ."
bin = "./tmp/main"
include_ext = ["go", "tpl", "tmpl"]
exclude_dir = ["assets", "vendor"]
delay = 1000 # ms
log = "build-errors.log"[log]
color = true[test]
watch = ["testdata"][misc]
clean_on_exit = true

啟動命令:

air -c .air.toml

測試與性能分析工具

Go Test

內置測試框架:

高級用法
func TestFetchUser(t *testing.T) {// 測試表驅動tests := []struct {name    stringuserID  stringwantErr bool}{{"valid user", "123", false},{"invalid user", "999", true},}for _, tt := range tests {t.Run(tt.name, func(t *testing.T) {got, err := FetchUser(tt.userID)if (err != nil) != tt.wantErr {t.Errorf("FetchUser() error = %v, wantErr %v", err, tt.wantErr)return}if !tt.wantErr && got.ID != tt.userID {t.Errorf("FetchUser() = %v, want ID %v", got, tt.userID)}})}
}func BenchmarkConcat(b *testing.B) {s1, s2 := "Hello", "World"for i := 0; i < b.N; i++ {_ = s1 + s2}
}func ExampleHello() {fmt.Println("Hello")// Output: Hello
}

運行命令:

# 運行所有測試
go test ./...# 運行特定測試
go test -run TestFetchUser# 運行基準測試
go test -bench=.# 顯示覆蓋率
go test -coverprofile=cover.out && go tool cover -html=cover.out

pprof

性能分析工具:

完整工作流
  1. 導入pprof包
    import _ "net/http/pprof"
    

  2. 啟動HTTP服務
    go func() {log.Println(http.ListenAndServe("localhost:6060", nil))
    }()
    

  3. 生成壓測流量
    wrk -t12 -c400 -d30s http://localhost:8080/api
    

  4. 收集分析數據
    # CPU分析
    go tool pprof -http=:8080 http://localhost:6060/debug/pprof/profile?seconds=30# 內存分析
    go tool pprof -http=:8080 http://localhost:6060/debug/pprof/heap# Goroutine分析
    go tool pprof -http=:8080 http://localhost:6060/debug/pprof/goroutine# 阻塞分析
    go tool pprof -http=:8080 http://localhost:6060/debug/pprof/block
    

Ginkgo

BDD 測試框架:

典型測試結構
var _ = Describe("UserService", func() {var (service *UserServicemockDB  *mocks.MockDatabasectx     context.Context)BeforeEach(func() {mockDB = new(mocks.MockDatabase)service = NewUserService(mockDB)ctx = context.Background()})Describe("CreateUser", func() {Context("with valid input", func() {It("should return user ID", func() {mockDB.On("Create", ctx, mock.Anything).Return("123", nil)id, err := service.CreateUser(ctx, &User{Name: "Alice"})Expect(err).NotTo(HaveOccurred())Expect(id).To(Equal("123"))mockDB.AssertExpectations(GinkgoT())})})Context("with database error", func() {It("should return error", func() {mockDB.On("Create", ctx, mock.Anything).Return("", errors.New("db error"))_, err := service.CreateUser(ctx, &User{Name: "Alice"})Expect(err).To(HaveOccurred())Expect(err.Error()).To(ContainSubstring("db error"))})})})
})

安裝與運行:

# 安裝
go install github.com/onsi/ginkgo/v2/ginkgo@latest# 生成測試套件
ginkgo bootstrap# 添加測試文件
ginkgo generate user_service# 運行測試
ginkgo -r --cover --race

協作與版本控制工具

Git

高效工作流:

功能分支開發
# 創建新分支
git checkout -b feature/user-auth# 開發過程中小步提交
git add .
git commit -m "add jwt token generation"# 保持與主分支同步
git fetch origin
git rebase origin/main

代碼審查流程
  1. 推送分支
    git push -u origin feature/user-auth
    

  2. 創建Pull Request
  3. 解決評論
  4. 交互式變基
    git rebase -i HEAD~3
    

  5. 強制推送更新
    git push -f
    

提交規范
類型(范圍): 簡要描述詳細說明(可選)關聯問題: #123

常見類型:

  • feat: 新功能
  • fix: bug修復
  • docs: 文檔變更
  • style: 代碼樣式
  • refactor: 代碼重構
  • test: 測試相關
  • chore: 構建/工具變更

GitHub Actions

完整CI示例:

name: Go CI Pipelineon:push:branches: [ main ]pull_request:branches: [ main ]env:GO_VERSION: '1.19'jobs:test:name: Run Testsruns-on: ubuntu-lateststrategy:matrix:go: [ '1.18', '1.19' ]steps:- uses: actions/checkout@v3- name: Set up Gouses: actions/setup-go@v3with:go-version: ${{ matrix.go }}- name: Cache dependenciesuses: actions/cache@v3with:path: |~/go/pkg/mod~/go/binkey: ${{ runner.os }}-go-${{ matrix.go }}-${{ hashFiles('**/go.sum') }}- name: Run testsrun: |go test -v -coverprofile=coverage.out -race ./...go tool cover -func=coverage.out- name: Upload coverageuses: codecov/codecov-action@v2lint:name: Lint Codeneeds: testruns-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Set up Gouses: actions/setup-go@v3with:go-version: ${{ env.GO_VERSION }}- name: Run staticcheckrun: go install honnef.co/go/tools/cmd/staticcheck@latest && staticcheck ./...- name: Run go vetrun: go vet ./...build:name: Build Binariesneeds: [ test, lint ]runs-on: ubuntu-lateststrategy:matrix:os: [ ubuntu-latest, macos-latest, windows-latest ]steps:- uses: actions/checkout@v3- name: Set up Gouses: actions/setup-go@v3with:go-version: ${{ env.GO_VERSION }}- name: Buildrun: go build -ldflags="-s -w" -o bin/app ./cmd/app- name: Upload artifactuses: actions/upload-artifact@v3with:name: app-${{ matrix.os }}path: bin/app

Goreleaser

詳細配置:

before:hooks:- go mod tidy- make generatebuilds:- env:- CGO_ENABLED=0flags: - -ldflags=-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}goos:- linux- darwin- windowsgoarch:- amd64- arm64ignore:- goos: windowsgoarch: arm64archives:- format: tar.gzname_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"files:- README.md- LICENSE- CHANGELOG.mdchecksum:name_template: "{{ .ProjectName }}_{{ .Version }}_checksums.txt"snapshot:name_template: "{{ .Tag }}-next"release:github:owner: username: repodraft: falseprerelease: falsedockers:- image_templates:- "ghcr.io/user/repo:{{ .Version }}"- "ghcr.io/user/repo:latest"dockerfile: Dockerfilebuild_flag_templates:- "--label=org.label-schema.version={{.Version}}"- "--label=org.label-schema.vcs-ref={{.Commit}}"changelog:sort: ascfilters:exclude:- '^docs:'- '^test:'

工具組合推薦

微服務架構

API開發
  • Web框架選擇
    • Gin: 高性能,中間件支持
      r := gin.Default()
      r.GET("/users/:id", func(c *gin.Context) {id := c.Param("id")// 處理邏輯
      })
      

    • Echo: 簡潔API設計
      e := echo.New()
      e.GET("/users/:id", func(c echo.Context) error {id := c.Param("id")// 處理邏輯
      })
      

  • API文檔生成
    • Swagger UI + 注釋生成
      // @Summary 獲取用戶詳情
      // @Description 通過ID獲取用戶詳細信息
      // @Tags users
      // @Accept json
      // @Produce json
      // @Param id path string true "用戶ID"
      // @Success 200 {object} User
      // @Failure 404 {object} ErrorResponse
      // @Router /users/{id} [get]
      func GetUser(c *gin.Context) {// 實現
      }
      

    • 生成命令
      swag init -g cmd/server/main.go
      

RPC通信
  • 協議定義
    syntax = "proto3";service UserService {rpc GetUser (GetUserRequest) returns (UserResponse);
    }message GetUserRequest {string user_id = 1;
    }message UserResponse {string id = 1;string name = 2;string email = 3;
    }
    

  • 代碼生成
    protoc --go_out=. --go-grpc_out=. user.proto
    

服務治理
  • 服務發現
    consulConfig := consulapi.DefaultConfig()
    consulConfig.Address = "consul:8500"
    client, _ := consulapi.NewClient(consulConfig)// 服務注冊
    registration := &consulapi.AgentServiceRegistration{ID:   "user-service-1",Name: "user-service",Port: 8080,Check: &consulapi.AgentServiceCheck{HTTP:     "http://localhost:8080/health",Interval: "10s",Timeout:  "5s",},
    }
    client.Agent().ServiceRegister(registration)
    

  • 配置中心
    viper.SetConfigType("yaml")
    viper.AddConfigPath("/etc/app")
    viper.AddConfigPath(".")
    viper.SetEnvPrefix("APP")
    viper.AutomaticEnv()if err := viper.ReadInConfig(); err != nil {log.Fatalf("Error reading config: %v", err)
    }var config Config
    if err := viper.Unmarshal(&config); err != nil {log.Fatalf("Unable to decode config: %v", err)
    }
    

可觀測性
  • 指標采集
    httpRequestsTotal = prometheus.NewCounterVec(prometheus.CounterOpts{Name: "http_requests_total",Help: "Total HTTP requests",},[]string{"method", "path", "status"},
    )func init() {prometheus.MustRegister(httpRequestsTotal)
    }// 在請求處理中
    httpRequestsTotal.WithLabelValues(method, path, status).Inc()
    

  • 鏈路追蹤
    func StartSpan(ctx context.Context, name string) (context.Context, Span) {tracer := otel.Tracer("user-service")ctx, span := tracer.Start(ctx, name)return ctx, span
    }func HTTPMiddleware(next http.Handler) http.Handler {return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {ctx, span := StartSpan(r.Context(), "HTTP "+r.Method)defer span.End()// 傳播上下文carrier := propagation.HeaderCarrier(r.Header)propagator := otel.GetTextMapPropagator()propagator.Inject(ctx, carrier)next.ServeHTTP(w, r.WithContext(ctx))})
    }
    

選擇工具時的考量因素

  1. 團隊規模

    • 小型團隊(1-3人): VS Code + 輕量級工具鏈
    • 中型團隊(4-10人): 標準化工具鏈(Goland/go modules/統一測試框架)
    • 大型團隊(10+人): 企業級解決方案(商業IDE/私有模塊倉庫/完善CI/CD)
  2. 項目復雜度

    • 簡單工具/腳本: LiteIDE + 單文件開發
    • 中型應用: VS Code + 標準工具鏈
    • 復雜微服務: Goland + 完整生態系統(服務網格/可觀測性工具)
  3. 長期維護成本

    • 短期項目: 選擇簡單易用的工具
    • 長期企業項目: 考慮商業支持和長期維護性
    • 開源項目: 選擇社區廣泛支持的工具
  4. 團隊技能水平

    • 新手團隊: 選擇易上手的工具(如VS Code)
    • 經驗豐富團隊: 可考慮高級工具(Goland/Delve高級調試)
  5. 性能需求

    • 高性能應用: 需要完善的性能分析工具鏈
    • 普通業務應用: 基礎工具即可滿足

定期(每6-12個月)重新評估工具鏈,跟上Go生態發展步伐,及時采用新工具和最佳實踐。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96430.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96430.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96430.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[郵件服務器core] 安全通信(SSL/TLS) | OpenSSL庫管理 | 服務端安全SECURITY.md

第5章&#xff1a;安全通信&#xff08;SSL/TLS&#xff09; 歡迎回來 在第4章&#xff1a;服務運行中&#xff0c;我們學習了如何啟動Dovecot郵件服務器并使其運行。 現在&#xff0c;我們的服務器已經啟動并準備好處理電子郵件&#xff0c;但有一個關鍵問題&#xff1a;我…

Lodash方法總結

目錄 1. _.defaults()為對象填充默認值 基本語法 功能說明 示例代碼 注意事項 與其他類似方法的區別 2. _.pickBy()刪除對象中值為空串或 null 的屬性 實現方法 代碼說明 擴展&#xff1a;深層過濾 3._.omitBy()移除滿足條件的屬性 基本語法 核心功能 示例代碼 1…

C#---Expression(表達式)

前言&#xff1a;Expression 是C# 高級編程&#xff0c;表達式的應用場景有 ORM框架&#xff1a;Entity Framework&#xff0c;Dapper等&#xff0c;規則引擎&#xff1a;動態業務規則評估&#xff0c; 依賴注入&#xff1a;高級DI容器實現&#xff0c;測試框架&#xff1a;模擬…

Lodash-es 完整開發指南:ES模塊化JavaScript工具庫實戰教程

簡介 Lodash-es 是 Lodash 庫的 ES 模塊版本&#xff0c;提供了大量實用的 JavaScript 工具函數。它支持按需導入&#xff0c;可以顯著減少打包體積&#xff0c;是現代 JavaScript 項目中的首選工具庫。 主要特性 ES 模塊支持: 完全支持 ES6 模塊語法按需導入: 只導入需要的…

26. AI-Agent-Dify

文章目錄前言一、Dify入門為什么使用 Dify&#xff1f;Dify 能做什么&#xff1f;二、Dify私有化部署Docker Compose 部署前提條件克隆 Dify 代碼啟動 Dify更新 Dify訪問 Dify自定義配置三、Dify構建企業級Agent應用定義如何使用智能助手添加助手需要的工具配置 Agent配置對話開…

云原生:微服務與Serverless指南

Copilot時代的開發者效能提升 代碼生成與補全&#xff1a;減少重復性編碼工作&#xff0c;加快開發速度錯誤檢測與修復&#xff1a;實時提示潛在問題&#xff0c;降低調試時間知識獲取與學習&#xff1a;幫助開發者快速掌握新語言或框架協作效率&#xff1a;通過AI輔助減少團隊…

SpringBoot + Apache Tika:一站式解決文件數據提取難題

在日常開發中&#xff0c;你是否也遇到過這樣的窘境&#xff1a;領導甩來需求“把用戶上傳的 Word、Excel、PDF 里的關鍵信息扒出來存庫”&#xff0c;你卻要對著不同格式逐個攻堅——解析 Word 用 POI 還要處理 .doc/.docx 兼容&#xff0c;解析 Excel 要啃合并單元格、公式計…

車牌模擬生成器:Python3.8+Opencv代碼實現與商業應用前景(C#、python 開發包SDK)

車牌模擬生成器&#xff1a;Python代碼實現與商業應用前景引言在智慧城市建設和汽車行業數字化浪潮中&#xff0c;車牌作為車輛的唯一標識&#xff0c;其相關技術應用正變得越來越重要。今天我們將介紹一個基于Python的車牌模擬生成器&#xff0c;探討其技術實現、功能特點以及…

小程序非主頁面的數據動作關聯主頁面的數據刷新操作

如果在主頁面跳轉到其他頁面。比如說我的收藏頁面&#xff0c;然后有取消收藏的動作&#xff0c;當返回到主頁面的時候&#xff0c;如果有關聯數據顯示在主頁面&#xff0c;刷新頁面對應的狀態。 下面的代碼是實現&#xff1a;//卡片收藏/取消if (newCollectd) {this.setData({…

后端(fastAPI)學習筆記(CLASS 1):擴展基礎

一、python的類型聲明1、類型聲明的背景和作用python 3.6 版本引入了“類型提示”1、類型提示是一種新的語法&#xff0c;用來聲明變量的類型2、提高編譯器和工具的支持能力為什么要學習類型提示1、了解類型提示不僅僅對使用FastAPI有幫助&#xff0c;也能提高代碼的可讀性度和…

2023年系統分析師上半年論文試題分析

試題一 論信息系統的可行性分析信息系統可行性分析的目的是確認在當前條件下企業是否有必要建設新系統&#xff0c;以及建設新系統的工作是否具備必要的條件。如何進行可行性分析是系統分析師所必須面臨的問題。請圍繞信息系統可行性分析論題&#xff0c;依次從以下三個方面進行…

洛谷 P1967 [NOIP 2013 提高組] 貨車運輸(kruskal 重構樹 + 求路徑最小邊權)

題目鏈接 題目難度 洛谷上是藍題&#xff0c;本人認為評高了&#xff0c;此題思維和實現都不難&#xff0c;應該是綠題。 題目解法概括 kruskal 重構樹 倍增優化求路徑最小邊權 代碼 #include <iostream> #include <cstdio> #include <vector> #inclu…

【01】針對開源收銀系統icepos (寶塔面板) 詳細安裝教程詳細參考-優雅草卓伊凡

【01】針對開源收銀系統icepos (寶塔面板) 詳細安裝教程詳細參考-優雅草卓伊凡引言本文做參考&#xff0c;下篇文章 直接實踐&#xff0c;由于已經選型本系統是服務端php開發的系統&#xff0c;他的系統環境如下&#xff1a;系統安裝 環境要求ICEPOS對服務器或電腦硬件要求不高…

MySQL的常用命令

目錄1. 連接MySQL數據庫基本連接語法連接參數說明2. 數據庫操作2.1 查看數據庫2.2 創建數據庫2.3 刪除數據庫3. 表操作3.1 查看表信息3.2 創建表3.3 常用數據類型3.4 修改表結構3.5 刪除表4. 數據操作 (CRUD)4.1 插入數據 (CREATE)4.2 查詢數據 (READ)基本查詢條件查詢排序和分…

Linux: config: CONFIG_CHECKPOINT_RESTORE;CRIU

文章目錄 config CHECKPOINT_RESTORE commit related 簡介 參考 如何使用 Checkpoint/Restore 功能 步驟 1:確保內核支持 步驟 2:安裝 CRIU 步驟 3:檢查點(Checkpoint) 步驟 4:恢復(Restore) 步驟 5:驗證 常見應用場景 注意事項 python config CHECKPOINT_RESTORE bo…

eclipse怎么把項目設為web

在 Eclipse 中將一個項目設置為 Web 項目&#xff08;或稱動態 Web 項目&#xff09;主要有兩種場景&#xff1a;?創建新的 Web 項目? 和 ?將現有項目轉換為 Web 項目。我將為你詳細講解這兩種方法。前提條件&#xff1a;確保你有必要的 Eclipse 組件在開始之前&#xff0c;…

CVPR 2025|基于視覺語言模型的零樣本3D視覺定位

論文信息題目&#xff1a;Zero-Shot 3D Visual Grounding from Vision-Language Models基于視覺語言模型的零樣本3D視覺定位作者&#xff1a;Rong Li, Shijie Li, Lingdong Kong, Xulei Yang, Junwei Liang論文創新點提出全新框架&#xff1a;論文提出SeeGround這一無需訓練的零…

Realtime API 語音代理端到端接入全流程教程(含 Demo,延遲 280ms)

在現代應用中&#xff0c;實時語音交互已經成為重要功能&#xff0c;而低延遲的語音傳輸更是用戶體驗的關鍵指標。本文將詳細介紹如何使用 Realtime API 實現 語音代理 的端到端接入&#xff0c;包括環境搭建、接口調用、低延遲優化及 Demo 演示。通過本教程&#xff0c;開發者…

AI賦能辦公:用Python解決發票合并打印難題

一、問題的提出今天網友提問&#xff1a;報銷時&#xff0c;財務要求要把發票合并打印&#xff0c;即兩張合成一張放在A4紙上&#xff0c;中間還要加一道黑色分界線&#xff0c;如何快速完成數十張發票的打印&#xff1f;問題的提出二、問題分析這個問題可以采用兩種方法解決&a…

Shell編程之正則表達式與文本處理工具

一、正則表達式基礎1. 正則表達式概述?定義?&#xff1a;正則表達式&#xff08;Regular Expression&#xff0c;簡稱Regex&#xff09;是由普通字符?&#xff08;如字母、數字、標點符號&#xff09;與元字符?&#xff08;具有特殊含義的專用字符&#xff09;組成的字符串…