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("===== 所有业务流程执行完毕 =====")
} 
 

输出:

相关推荐
Full Stack Developme1 小时前
Java 漏斗算法 及应用场景
java·开发语言·算法
被摘下的星星1 小时前
Go的命名规则
golang
阿里嘎多学长1 小时前
2026-07-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
从此以后自律1 小时前
Spring 全家桶
java·后端·spring
xxie1237941 小时前
Python 闭包:函数嵌套的 “状态捕获” 机制
开发语言·python
骑士雄师2 小时前
java面试记录: sychonized 锁,熔断组件,分布式锁
java·开发语言·面试
lilihuigz2 小时前
Meta Box完整指南:WordPress自定义字段与内容框架高效构建结构化内容 - 易服客工作室
java·开发语言
xxie1237942 小时前
Python 闭包的调用方法与实践
开发语言·python
aini_lovee2 小时前
计算 HOG算子的典型 MATLAB 程序
开发语言·matlab
楷哥爱开发2 小时前
降低网络爬虫成本:基础设施优化指南
服务器·开发语言·php