当前位置: 首页 > news >正文

asp手机网站源码下载做seo推广网站

asp手机网站源码下载,做seo推广网站,建可收费的网站,受欢迎的购物网站建设比较有名的方案有 使用viper管理配置[1] 支持多种配置文件格式#xff0c;包括 JSON,TOML,YAML,HECL,envfile#xff0c;甚至还包括Java properties 支持为配置项设置默认值 可以通过命令行参数覆盖指定的配置项 支持参数别名 viper[2]按照这个优先级#xff08;从高到低包括 JSON,TOML,YAML,HECL,envfile甚至还包括Java properties 支持为配置项设置默认值 可以通过命令行参数覆盖指定的配置项 支持参数别名 viper[2]按照这个优先级从高到低获取配置项的取值 explicit call to Set: 在代码逻辑中通过viper.Set()直接设置配置项的值 flag命令行参数 env环境变量 config配置文件 key/value storeetcd或者consul default默认值 按照这个优先级从高到低获取配置项的取值 explicit call to Set: 在代码逻辑中通过viper.Set()直接设置配置项的值 flag命令行参数 env环境变量 config配置文件 key/value storeetcd或者consul default默认值 优先级 验证一下 viper.Set() 的优先级高于 配置文件 package mainimport ( fmt github.com/spf13/viper)func main() { loadConfig()}func loadConfig() { configVar : shuang-config.yaml configVar   // 这行如果注释掉则从指定的configVar读取配置文件否则就各种条件去找了 viper.Set(Global.Source, 优先级最高) if configVar !  {  // SetConfigFile 显式定义配置文件的路径、名称和扩展名。  // Viper 将使用它而不检查任何配置路径。  viper.SetConfigFile(configVar) } else {  // 如果没有显式指定配置文件则  // 会去下面的路径里找文件名cui-config的文件  name of config file (without extension)  // 按照 []string{json, toml, yaml, yml, properties, props, prop, hcl, tfvars, dotenv, env, ini}的顺序(居然还支持Java用的properties)  viper.SetConfigName(cui-config)  viper.AddConfigPath(/etc/myapp) // 找寻的路径  viper.AddConfigPath($HOME/.myapp/)  viper.AddConfigPath(.) } err : viper.ReadInConfig() if err ! nil {  panic(fmt.Errorf(error reading config: %s, err)) } fmt.Printf(到底用的是哪个配置文件: %s\n, viper.ConfigFileUsed()) fmt.Printf(Global.Source这个字段的值为: %s\n, viper.GetString(global.source))} 输出: 到底用的是哪个配置文件: /Users/fliter/config-demo/cui-config.yamlGlobal.Source这个字段的值为: 优先级最高 验证一下 环境变量 的优先级高于 配置文件 package mainimport ( fmt github.com/spf13/viper)func main() { loadConfig()}func loadConfig() { configVar : shuang-config.yaml configVar   // 这行如果注释掉则从指定的configVar读取配置文件否则就各种条件去找了 viper.Set(Global.Source, 优先级最高) viper.AutomaticEnv() if configVar !  {  // SetConfigFile 显式定义配置文件的路径、名称和扩展名。  // Viper 将使用它而不检查任何配置路径。  viper.SetConfigFile(configVar) } else {  // 如果没有显式指定配置文件则  // 会去下面的路径里找文件名cui-config的文件  name of config file (without extension)  // 按照 []string{json, toml, yaml, yml, properties, props, prop, hcl, tfvars, dotenv, env, ini}的顺序(居然还支持Java用的properties)  viper.SetConfigName(cui-config)  viper.AddConfigPath(/etc/myapp) // 找寻的路径  viper.AddConfigPath($HOME/.myapp/)  viper.AddConfigPath(.) } err : viper.ReadInConfig() if err ! nil {  panic(fmt.Errorf(error reading config: %s, err)) } fmt.Printf(到底用的是哪个配置文件: %s\n, viper.ConfigFileUsed()) fmt.Printf(LANG这个字段的值为: %s\n, viper.GetString(LANG))} viper.AutomaticEnv()会绑定所有环境变量 如果只希望绑定特定的可以使用SetEnvPrefix(global.source, MYAPP_GLOAL_SOURCE)注意这个函数不会自动加上MYAPP的前缀. 验证一下 命令行参数的优先级高于 配置文件 viper可以配合pflag来使用pflag可以理解为标准库flag的一个增强版viper可以绑定到pflag上 和cobraviper一样pflag也是同一作者的作品 验证一下 默认值的优先级低于 配置文件 package mainimport ( fmt github.com/spf13/viper)func main() { loadConfig()}func loadConfig() { configVar : shuang-config.yaml configVar   // 这行如果注释掉则从指定的configVar读取配置文件否则就各种条件去找了 //viper.Set(Global.Source, 优先级最高) viper.AutomaticEnv() viper.SetDefault(Global.Source, 优先级最低) if configVar !  {  // SetConfigFile 显式定义配置文件的路径、名称和扩展名。  // Viper 将使用它而不检查任何配置路径。  viper.SetConfigFile(configVar) } else {  // 如果没有显式指定配置文件则  // 会去下面的路径里找文件名cui-config的文件  name of config file (without extension)  // 按照 []string{json, toml, yaml, yml, properties, props, prop, hcl, tfvars, dotenv, env, ini}的顺序(居然还支持Java用的properties)  viper.SetConfigName(cui-config)  viper.AddConfigPath(/etc/myapp) // 找寻的路径  viper.AddConfigPath($HOME/.myapp/)  viper.AddConfigPath(.) } err : viper.ReadInConfig() if err ! nil {  panic(fmt.Errorf(error reading config: %s, err)) } fmt.Printf(到底用的是哪个配置文件: %s\n, viper.ConfigFileUsed()) fmt.Printf(Global.Source这个字段的值为: %s\n, viper.GetString(Global.Source))} Watch机制(配置更新后 热加载) 该机制可以监听配置文件的修改, 这样就实现了热加载修改配置后无需重启服务 对于本地文件是通过fsnotify实现的然后通过一个回调函数去通知应用来reload; 对于Remote KV Store目前只支持etcd做法比较ugly(5秒钟)轮询一次 而不是watch api package mainimport ( fmt time github.com/fsnotify/fsnotify github.com/spf13/viper)func main() { loadConfig()}func loadConfig() { configVar : shuang-config.yaml configVar   // 这行如果注释掉则从指定的configVar读取配置文件否则就各种条件去找了 if configVar !  {  // SetConfigFile 显式定义配置文件的路径、名称和扩展名。  // Viper 将使用它而不检查任何配置路径。  viper.SetConfigFile(configVar) } else {  // 如果没有显式指定配置文件则  // 会去下面的路径里找文件名cui-config的文件  name of config file (without extension)  // 按照 []string{json, toml, yaml, yml, properties, props, prop, hcl, tfvars, dotenv, env, ini}的顺序(居然还支持Java用的properties)  viper.SetConfigName(cui-config)  viper.AddConfigPath(/etc/myapp) // 找寻的路径  viper.AddConfigPath($HOME/.myapp/)  viper.AddConfigPath(.) } viper.WatchConfig() viper.OnConfigChange(func(e fsnotify.Event) {  fmt.Printf(配置文件 %s 发生了更改!!! 最新的Global.Source这个字段的值为 %s:, e.Name, viper.GetString(Global.Source)) }) err : viper.ReadInConfig() if err ! nil {  panic(fmt.Errorf(error reading config: %s, err)) } fmt.Printf(到底用的是哪个配置文件: %s\n, viper.ConfigFileUsed()) fmt.Printf(Global.Source这个字段的值为: %s\n, viper.GetString(Global.Source)) time.Sleep(10000e9)} Go viper 配置文件读取工具[3] 动态获取配置文件(viper[4] configor[5] Configor: 一个Golang配置工具支持YAMLJSONTOMLShell环境支持热加载 出自jinzhu大佬[6] package mainimport ( fmt github.com/jinzhu/configor)type Config struct { APPName string default:app name DB      struct {  Name     string  User     string default:root  Password string required:true env:DBPassword  Port     uint   default:3306 } Contacts []struct {  Name  string  Email string required:true }}func main() { var conf  Config{} err : configor.Load(conf, config.yml) // err : configor.New(configor.Config{Debug: true}).Load(conf, config.yml)  // 测试模式也可以通过环境变量开启测试模式(CONFIGOR_DEBUG_MODEtrue go run main.go )这样就无需修改代码 //err : configor.New(configor.Config{Verbose: true}).Load(conf, config.yml) // 模式也可以通过环境变量开启详细模式(CONFIGOR_VERBOSE_MODEtrue go run main.go )这样就无需修改代码 if err ! nil {  panic(err) } fmt.Printf(%v \n, conf)} 开启 测试模式 or 详细模式 既可以在代码中显式开启如 err : configor.New(configor.Config{Debug: true}).Load(conf, config.yml) 也可以通过环境变量开启如 CONFIGOR_DEBUG_MODEtrue go run main.go 加载多个配置文件 // application.yml 的优先级 大于 database.json, 排在前面的配置文件优先级大于排在后的的配置configor.Load(Config, application.yml, database.json) 根据环境变量加载配置文件 or 从shell加载配置项 详细可参考 Golang Configor 配置文件工具[7] 热更新 package mainimport ( fmt time github.com/jinzhu/configor)type Config struct { APPName string default:app name DB      struct {  Name     string  User     string default:root  Password string required:true env:DBPassword  Port     uint   default:3306 } Contacts []struct {  Name  string  Email string required:true }}func main() { var conf  Config{} // reload模式,可实现热加载 err : configor.New(configor.Config{  AutoReload:         true,  AutoReloadInterval: time.Second,  AutoReloadCallback: func(config interface{}) {   // config发生变化后出发什么操作   fmt.Printf(配置文件发生了变更%#v\n, config)  }, }).Load(conf, config.yml) // 无reload模式 //err : configor.Load(conf, config.yml) // err : configor.New(configor.Config{Debug: true}).Load(conf, config.yml)  // 测试模式也可以通过环境变量开启测试模式(CONFIGOR_DEBUG_MODEtrue go run main.go )这样就无需修改代码 //err : configor.New(configor.Config{Verbose: true}).Load(conf, config.yml) // 模式也可以通过环境变量开启详细模式(CONFIGOR_VERBOSE_MODEtrue go run main.go )这样就无需修改代码 if err ! nil {  panic(err) } fmt.Printf(%v \n, conf) time.Sleep(100000e9)} 完整代码[8] 参考资料 [1] 使用viper管理配置: https://cloud.tencent.com/developer/article/1540672 [2] viper: https://github.com/spf13/viper [3] Go viper 配置文件读取工具: https://cloud.tencent.com/developer/article/1677426 [4] 动态获取配置文件(viper: https://segmentfault.com/a/1190000022828484 [5] configor: https://github.com/jinzhu/configor [6] jinzhu大佬: https://github.com/jinzhu [7] Golang Configor 配置文件工具: https://www.jianshu.com/p/f826d2cc361b [8] 完整代码: https://github.com/cuishuang/config-demo 本文由 mdnice 多平台发布
http://www.w-s-a.com/news/66059/

相关文章:

  • 网站优化建议怎么写网站维护主要有哪些内容和方法
  • 建设网站需要钱吗网络推广加盟
  • 高清素材图片的网站泰安网签备案查询
  • 自助网站建设怎么建设房地产的最新政策
  • 企业网站 生成html网站侵权怎么做公证或证据保存
  • php 手机网站cms系统购物网站制作流程
  • 网络公司网站开发河北省城乡住房和建设厅网站
  • 做网站配置wordpress 中文api
  • 怎样把网站做的好看县蒙文网站建设汇报
  • 网站的优化什么做广西桂林新闻最新消息
  • 做网站准备什么软件搜索引擎广告推广
  • 网站开发地图板块浮动网页设计与制作的模板
  • 中国建设招聘信息网站昆明做网站建设的公司排名
  • 那些网站可以做自媒体wordpress 分类seo
  • 淮安市盱眙县建设局网站北京西站到八达岭长城最快路线
  • 在线免费网站企业查查官网入口官网
  • 天津网站优化公司哪家专业超融合系统
  • 邹平网站建设公司报价网站建设备案多长时间
  • 三合一网站开发教程wordpress主题汉化中文版
  • 广州网站建设高端全网营销图片
  • 措勤网站建设罗定城乡建设局网站
  • 苏州建网站流程wordpress不显示内容你
  • 网站流量数据golang建设网站
  • 2020电商网站排行榜如何开设网站
  • 绍兴seo网站管理创新的网站建站
  • 做网站需要的图片网站的视频怎么下载
  • 教人做家务的网站滕州网站建设网站行吗
  • 湖北专业的网瘾学校哪家口碑好seo百度百科
  • 保定网站制作软件网页制作工具程
  • o2o网站建设教程计算机培训班培训费用