首页 文章 精选 留言 我的

精选列表

搜索[服务],共10000篇文章
优秀的个人博客,低调大师

刚才,我们宣布推出了IPv6转换服务

随着海量智能设备的出现和新兴网络技术如5G、物联网的发展,网络应用对IP地址的需求呈现爆炸式增长。 大家所不了解的事实是全球IPv4地址,也就是现在大部分设备在使用的标准地址,已经枯竭。我国7.51亿互联网用户仅有3.38亿个IPv4地址,人均拥有量仅有0.45个IPv4地址。物以稀为贵,继续购买新的IPv4地址,成本势必不断攀升。 2017年11月26日,中共中央办公厅、国务院办公厅印发《推进互联网协议第六版(IPv6)规格部署行动计划》,并发出通知,要求各地区各部门结合实际认真贯彻落实。计划指出,到2018年底,国内用户量排名前50位的商业网站及应用,省部级以上政府和中央企业外网网站系统,中央和省级新闻及广播电视媒体网站等必须全面支持IPv6。 到2020年底,IPv6活跃用户数将超过5亿。 在全球开发者大会WWDC2015上,苹果

优秀的个人博客,低调大师

E店宝ERP软件服务电商日化类目案例分析

一商宇洁是全球最大的日化企业宝洁在亚洲最大的线上代理商,负责宝洁在电商平台的整体运营。全权代理宝洁天猫官网旗舰店、SK2、玉兰油、帮宝适、沙宣、吉列品牌旗舰店。 E店宝与一商宇洁自2010年开始合作,合作层级和规模不断提升,已达成全面战略合作关系。 合作的金额不断提升的原因在于,E店宝为一商宇洁提供了整体电子商务集成方案,以E店宝ERP为核心,集成OMS订单管理解决方案、WMS仓储管理解决方案、CRM客户关系管理解决方案,同时集成线下财务系统及外包仓储管理系统。除了电商信息化集成方案,E店宝还为一商宇洁提供前端的电商业务咨询方案、架构体系建设及人员岗位设置管理的建议。 作为电商日化类目的TOP1,E店宝还根据此类目客户新品多、会员多的特性,为一商宇洁定制了会员CRM客户关系管理方案,增加老客户的精准管理和精准营销。同时定制了新品促销类管理方案,支持新产品推陈出新的多种促销活动。 2010年合作之初,一商宇洁在线销售的日均单量为200单,2016年,一商宇洁在线销售的日均单量已上升为20000单,。2015年双11当天,一商宇洁的的单日总单量为220万单,单日订单金额达到3亿8千万,再次刷新了日化类目的记录。 E店宝电商一体化平台完整的满足一商宇洁的业务发展需求,并连续6年支持其双11电商大促,所有业务及订单都在淘宝规定的3天内完整处理,顺利发货。 除了提供电商信息化解决方案及一站式电商ERP解决方案平台,基于E店宝在电商行业12年的经验,在一商宇洁电商业务的发展中,E店宝还为其提供战略咨询支持及业务方向指导,并参与其整体电商规划的制定和人员架构的管理咨询。 本文出处:畅享网 本文来自云栖社区合作伙伴畅享网,了解相关信息可以关注vsharing.com网站。

优秀的个人博客,低调大师

容器服务K8S存储卷挂载常见问题

相关链接 K8S存储插件日志查询;链接K8S存储插件升级步骤;链接 K8S挂载云盘问题整理;链接K8S挂载NAS问题整理;链接K8S挂载OSS问题整理;链接 检查Flexvolume是否安装? 在master节点上执行下面命令: # kubectl get pod -n kube-system | grep flexvolume flexvolume-4wh8s 1/1 Running 0 8d 查看flexvolume pod状态是否为Running,且运行的数量与节点数量相同; 如果没有安装,请参考:插件安装 检查动态存储插件是否安装? 如果使用云盘的动态存储功能,需要确认是否安装动态存储插件,执行下面命令: # kubectl get pod -n kube-system | gre

优秀的个人博客,低调大师

Go 语言反射和范型在 API 服务中的应用

Go reflect 为何需要使用 reflect 获取:减少重复代码 1. API 接口中抽取参数的逻辑大量重复 API 接口自然是要获取传过来的数据,不同接口要获取的数据自然也不一样,如果不做特殊处理,必然是每个接口都有一堆功能重复的从 request 里获取参数的代码。 2. API 框架提供的抽取参数的方式并不满足需求 当然 API 框架会提供这些功能,不过有些情况不能满足需求,比如gin-gonic,提供了将将 request 转为对应结构体的函数,但存在两个问题,第一个问题是参数区分大小写,我觉得应该实现大小写的通配,这样健壮性更高;第二是结构体直接对应数据库表结构,部分数据是不应该从接口请求中读取的,比如创建时间和删除标志,全转换的方式就很有问题。 不过也有可能是因为我对 gin 不熟悉,不知道更好的用法,才自己造轮子,如果大家有更简洁漂亮的写法,请不吝赐教。 3. Golang 强类型语言的限制 Go 语言是强类型语言,函数间传递参数或者返回值,必须有特定的类型,如果要实现这种范类型的处理相对 Python 等弱类型的语言要困难一些。 Python 对于 struct 参数没有严格的限制,传什么内容都行,Golang 就没那么友好了,这部分要靠范型来处理。 # struct 是要获得的数据结果,params 是要抽取的参数名称数组,request 是接口的请求结构体。 def ExtractParamFromBody(struct, params, request): ... 还有一点就是要能获取到 struct 结构体中每个参数的类型,并且给其赋值,Golang 提供的 reflect 机制可以很好的完成这项功能。 4. 实例 以下代码先是建立了数据库连接(请注意,数据的连接需要提前建立好,并按照代码中的用户名、密码、地址、端口和数据库名称建立,不然代码无法运行成功);之后在数据库中建立了一个叫 User 的表;之后有一个创建用户的接口 "POST /users",对应的函数为 CreateUser。 ExtractParamFromBody 是通用的参数抽取函数,不光是 User 类型,interface{} 是 Golang 中范型,可以对应任何结构体。 package main import ( "fmt" "reflect" "strconv" "strings" "github.com/gin-gonic/gin" "github.com/jinzhu/gorm" ) type User struct { ID uint `json:"id" gorm:"PRIMARY_KEY;AUTO_INCREMENT"` Name string `json:"name" gorm:"INDEX:name;UNIQUE;NOT NULL;type:varchar(100)"` Password string `json:"password" gorm:"NOT NULL"` Mobile string `json:"mobile"` Email string `json:"email"` Role_id uint `json:"role_id"` Create_Time uint `json:"create_time"` Login_Time uint `json:"login_time"` Last_Login_Time uint `json:"last_login_time` Login_Count uint `json:"login_count"` Deleted bool `json:"deleted" gorm:"DEFAULT:0"` } var db *gorm.DB var err error func ExtractParamFromBody(s interface{}, params []string, c *gin.Context) { var typ reflect.Type var val reflect.Value ptyp := reflect.TypeOf(s) if ptyp.Kind() == reflect.Ptr { val = reflect.ValueOf(s).Elem() typ = reflect.TypeOf(s).Elem() } else { val = reflect.ValueOf(s) } for _, param := range params { ret := c.PostForm(param) if ret != "" { for i := 0; i < typ.NumField(); i++ { if strings.ToLower(typ.Field(i).Name) == param { if val.Field(i).Kind() == reflect.String && val.CanSet() { val.Field(i).SetString(ret) } else if val.Field(i).Kind() == reflect.Uint && val.CanSet() { ret_int, _ := strconv.Atoi(ret) val.Field(i).SetUint(uint64(ret_int)) } } } } } } func InitMysql() *gorm.DB { mysql_connection_string := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", "root", "mysql", "127.0.0.1", "3306", "test_db") db, err = gorm.Open("mysql", mysql_connection_string) if err != nil { log.Logger.Critical("Fail to connect MySQL: %s. Exit.", err) os.Exit(5) } db.AutoMigrate(&User{}) return db } func CreateUser(c *gin.Context) { var user mysql.User params := []string{"name", "password", "email", "mobile", "role_id"} ExtractParamFromBody(&user, params, c) if err := db.Create(&user).Error; err != nil { c.JSON(200, gin.H{ "code": 3, "result": "failed", "msg": "Fail to create user", }) } else { c.JSON(200, gin.H{ "code": 0, "result": "success", "msg": "success", "resultBean": user, }) } } func main() { InitMysql() r := gin.Default() r.POST("/v1/users", CreateUser) r.Run(":8080") }

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册