go:Timing Functions Pattern

项目结构:

Go 复制代码
/*
# 版权所有  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)
    }
}
python 复制代码
/*
# 版权所有  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运维完成:全业务数据库备份,服务器巡检正常")
    })
}
Go 复制代码
/*
# 版权所有  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()
}

调用:

Go 复制代码
/*
# 版权所有  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("===== 所有业务流程执行完毕 =====")
} 
 

输出:

相关推荐
GreenTea4 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
风流 少年4 小时前
Spring AI 2.0:Memory
java·后端·spring
2603_965148114 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
万少5 小时前
给 DeepSeek Harness 装个"应用商店":一条命令,595 个插件随你逛
前端·javascript·后端
知无不研7 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
cfm_29148 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
IT_陈寒9 小时前
Python的GIL让我多写了500行代码
前端·人工智能·后端
C++ 老炮儿的技术栈9 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011169 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据9 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具