go:Timing Functions Pattern

项目结构:

image

 

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:23
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : settings.go
*/
package config

// 日志配置
const (
	LogLevel      = "INFO"
	LogTimeFormat = "2006-01-02 15:04:05"
	LogSavePath   = "logs/business_perf.log"
)

// 性能监控配置
const (
	PerfLogPrefix     = "【珠宝性能监控】"
	PerfTimeThreshold = 1.0 // 慢任务阈值:超过1秒告警
)



、
/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:24
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : logger.go
*/
package core

import (
	"fmt"
	"godesginpattern/timingfunctions/config"
	"log"
	"os"
	"path/filepath"
	"time"
)

var Logger *log.Logger

// InitLogger 初始化全局日志(控制台+文件双输出)
func InitLogger() {
	// 创建日志目录
	logDir := filepath.Dir(config.LogSavePath)
	if err := os.MkdirAll(logDir, 0755); err != nil {
		panic(fmt.Sprintf("创建日志目录失败: %v", err))
	}

	// 打开日志文件
	logFile, err := os.OpenFile(config.LogSavePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		panic(fmt.Sprintf("打开日志文件失败: %v", err))
	}

	// 日志格式:时间 + 级别 + 信息
	Logger = log.New(
		os.Stdout,
		"",
		log.Lmsgprefix,
	)

	// 同时输出到文件
	log.SetOutput(logFile)
}

// Info 普通日志
func Info(msg string) {
	now := time.Now().Format(config.LogTimeFormat)
	logMsg := fmt.Sprintf("%s - INFO - %s", now, msg)
	Logger.Println(logMsg)
	log.Println(logMsg)
}

// Warn 警告日志(慢任务)
func Warn(msg string) {
	now := time.Now().Format(config.LogTimeFormat)
	logMsg := fmt.Sprintf("%s - WARN - %s", now, msg)
	Logger.Println(logMsg)
	log.Println(logMsg)
}



、/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:25
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : timing.go
*/
package core

import (
	"fmt"
	"godesginpattern/timingfunctions/config"
	"time"
)

// Timing 计时包装函数:无侵入式记录业务函数执行时间
func Timing(name string, fn func()) {
	start := time.Now()

	// 执行业务函数
	fn()

	// 计算耗时
	cost := time.Since(start).Seconds()
	costStr := fmt.Sprintf("%.4f", cost)
	msg := fmt.Sprintf("%s 业务函数[%s] 执行耗时: %s 秒", config.PerfLogPrefix, name, costStr)

	// 慢任务告警
	if cost >= config.PerfTimeThreshold {
		Warn(fmt.Sprintf("%s 【慢任务告警】耗时超过阈值%.1fs", msg, config.PerfTimeThreshold))
	} else {
		Info(msg)
	}
}

  

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:25
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : supply.go
*/
package business

import (
	"godesginpattern/timingfunctions/core"
	"time"
)

func MaterialPurchaseCheck() {
	core.Timing("MaterialPurchaseCheck", func() {
		time.Sleep(1200 * time.Millisecond)
		println("✅ 原料采购核验完成:黄金99.99纯度、钻石4C质检达标,入库登记")
	})
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:26
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : design.go
*/
package business

import (
	"godesginpattern/timingfunctions/core"
	"time"
)

func JewelryDraft() {
	core.Timing("JewelryDraft", func() {
		time.Sleep(800 * time.Millisecond)
		println("✅ 设计制图完成:新款首饰3D模型渲染完毕,图纸下发车间")
	})
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:26
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : production.go
*/
package business

import (
	"godesginpattern/timingfunctions/core"
	"time"
)

// 加工生产
func ProduceJewelry() {
	core.Timing("ProduceJewelry", func() {
		time.Sleep(2500 * time.Millisecond)
		println("✅ 加工生产完成:首饰毛坯镶嵌抛光完成,转入质检")
	})
}

// 质检
func QualityInspect() {
	core.Timing("QualityInspect", func() {
		time.Sleep(600 * time.Millisecond)
		println("✅ 质检完成:无工艺缺陷,出具质检合格证书")
	})
}

// 包装
func ProductPack() {
	core.Timing("ProductPack", func() {
		time.Sleep(300 * time.Millisecond)
		println("✅ 包装完成:高端礼盒封装,绑定唯一防伪码")
	})
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:27
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : logistics.go
*/
package business

import (
	"godesginpattern/timingfunctions/core"
	"time"
)

func GoodsDelivery() {
	core.Timing("GoodsDelivery", func() {
		time.Sleep(1000 * time.Millisecond)
		println("✅ 物流完成:首饰保价出库,物流单号已同步系统")
	})
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:27
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : finance.go
*/
package business

import (
	"godesginpattern/timingfunctions/core"
	"time"
)

func FinanceCalcStat() {
	core.Timing("FinanceCalcStat", func() {
		time.Sleep(1800 * time.Millisecond)
		println("✅ 财务核算完成:生产成本与销售营收统计报表生成")
	})
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:27
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : marketing.go
*/
package business

import (
	"godesginpattern/timingfunctions/core"
	"time"
)

func MarketingPromotion() {
	core.Timing("MarketingPromotion", func() {
		time.Sleep(1500 * time.Millisecond)
		println("✅ 营销推广完成:节日活动方案落地,广告投放上线")
	})
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:28
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : sales.go
*/
package business

import (
	"godesginpattern/timingfunctions/core"
	"time"
)

func SalesCustomerService() {
	core.Timing("SalesCustomerService", func() {
		time.Sleep(900 * time.Millisecond)
		println("✅ 销售业务完成:客户订单确认,售后工单归档")
	})
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:28
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : hr_admin.go
*/
package business

import (
	"godesginpattern/timingfunctions/core"
	"time"
)

func HrAdminWork() {
	core.Timing("HrAdminWork", func() {
		time.Sleep(700 * time.Millisecond)
		println("✅ 人事行政完成:月度考勤统计,行政物资盘点")
	})
}



/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:29
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : it_ops.go
*/
package business

import (
	"godesginpattern/timingfunctions/core"
	"time"
)

func ItSystemOps() {
	core.Timing("ItSystemOps", func() {
		time.Sleep(1100 * time.Millisecond)
		println("✅ IT运维完成:全业务数据库备份,服务器巡检正常")
	})
}

  

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:29
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : flow_service.go
*/
package service

import "godesginpattern/timingfunctions/business"

// JewelryBusinessFlow 业务流程服务
type JewelryBusinessFlow struct{}

func NewJewelryBusinessFlow() *JewelryBusinessFlow {
	return &JewelryBusinessFlow{}
}

// RunFullProductionFlow 产销主流程:原料→设计→生产→质检→包装→物流
func (j *JewelryBusinessFlow) RunFullProductionFlow() {
	println("\n======= 启动珠宝产销主流程 =======")
	business.MaterialPurchaseCheck()
	business.JewelryDraft()
	business.ProduceJewelry()
	business.QualityInspect()
	business.ProductPack()
	business.GoodsDelivery()
	println("======= 产销主流程执行结束 =======\n")
}

// RunBackendSupportFlow 后台支撑流程
func (j *JewelryBusinessFlow) RunBackendSupportFlow() {
	println("\n======= 启动后台职能支撑流程 =======")
	business.FinanceCalcStat()
	business.MarketingPromotion()
	business.SalesCustomerService()
	business.HrAdminWork()
	business.ItSystemOps()
	println("======= 后台支撑流程执行结束 =======\n")
}

// RunAllBusiness 执行全流程
func (j *JewelryBusinessFlow) RunAllBusiness() {
	j.RunFullProductionFlow()
	j.RunBackendSupportFlow()
}

  

调用:

/*
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : goLang 2024.3.6 go 26.2
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 22:30
# User      :  geovindu
# Product   : GoLand
# Project   : godesginpattern
# File      : timingfunctionsbll.go
*/
package bll

import (
	"godesginpattern/timingfunctions/core"
	"godesginpattern/timingfunctions/service"
)

func TimingfunctionMain() {
	// 初始化日志
	core.InitLogger()
	core.Info("===== 珠宝企业性能监控系统启动 =====")

	// 启动业务流程
	flow := service.NewJewelryBusinessFlow()
	flow.RunAllBusiness()

	core.Info("===== 所有业务流程执行完毕 =====")
} 

 

输出:

5de4222738086bd65c964494fa134327

 

posted @ 2026-07-03 22:38  ®Geovin Du Dream Park™  阅读(5)  评论(0)    收藏  举报