首页 文章 精选 留言 我的

精选列表

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

gout v0.2.7 版本更新,Go 实现的 http RESTful 客户端和 benchmark lib

项目地址 https://github.com/guonaihong/gout https://gitee.com/guonaihong/gout 本次更新 支持响应中间件 修复host写全url, 内容不对的问题 响应中间件例子 import ( "bytes" "encoding/json" "errors" "fmt" "github.com/gin-gonic/gin" "github.com/guonaihong/gout" "io/ioutil" "log" "net/http" "time" ) // response拦截器修改示例 type demoResponseMiddler struct{} func (d *demoResponseMiddler) ModifyResponse(response *http.Response) error { // 修改responseBody。 因为返回值大概率会有 { code, data,msg} 等字段,希望进行统一处理 //这里想验证code. 如果不对就返回error。 对的话将 data中的内容写入body,这样后面BindJson的时候就可以直接处理业务了 all, err := ioutil.ReadAll(response.Body) if err != nil { return err } obj := make(map[string]interface{}) err = json.Unmarshal(all, &obj) if err != nil { return err } code := obj["code"] msg := obj["msg"] data := obj["data"] // Go中json中的数字经过反序列化会成为float64类型 if float64(200) != code { return errors.New(fmt.Sprintf("请求失败, code %d msg %s", code, msg)) } else { byt, _ := json.Marshal(&data) response.Body = ioutil.NopCloser(bytes.NewReader(byt)) return nil } } func demoResponse() *demoResponseMiddler { return &demoResponseMiddler{} } func main() { go server() //等会起测试服务 time.Sleep(time.Millisecond * 500) //用时间做个等待同步 responseUseExample() } func responseUseExample() { //成功请求 successRes := new(map[string]interface{}) err := gout.GET(":8080/success").ResponseUse(demoResponse()).BindJSON(&successRes).Do() log.Printf("success请求 --> 响应 %s \n err %s \n ", successRes, err) //fail请求 failRes := new(map[string]interface{}) err = gout.GET(":8080/fail").ResponseUse(demoResponse()).BindJSON(&failRes).Do() log.Printf("fail请求 --> 响应 %s \n err %s \n ", successRes, err) } type Result struct { Code int `json:"code"` Msg string `json:"msg"` Data interface{} `json:"data"` } type Item struct { Id string `json:"id"` Name string `json:"name"` } func server() { router := gin.New() router.GET("/success", func(c *gin.Context) { c.JSON(200, Result{200, "请求成功了", Item{"001", "张三"}}) }) router.GET("/fail", func(c *gin.Context) { c.JSON(200, Result{500, "查询数据库出错了", nil}) }) router.Run() } feature 支持设置 GET/PUT/DELETE/PATH/HEAD/OPTIONS 支持设置请求 http header(可传 struct,map,array,slice 等类型) 支持设置 URL query(可传 struct,map,array,slice,string 等类型) 支持设置 json 编码到请求 body 里面(可传struct, map, string, []byte 等类型) 支持设置 xml 编码到请求 body 里面(可传struct, string, []byte 等类型) 支持设置 yaml 编码到请求 body 里面(可传struct, map, string, []byte 等类型) 支持设置 protobuf 编码到请求 body里面(可传struct) 支持设置 form-data(可传 struct, map, array, slice 等类型) 支持设置 x-www-form-urlencoded(可传 struct,map,array,slice 等类型) 支持设置 io.Reader,uint/uint8/uint16...int/int8...string...[]byte...float32,float64 至请求 body 里面 支持解析响应body里面的json,xml,yaml至结构体里(BindJSON/BindXML/BindYAML) 支持解析响应body的内容至io.Writer, uint/uint8...int/int8...string...[]byte...float32,float64 支持解析响应header至结构体里 支持接口性能benchmark,可控制压测一定次数还是时间,可控制压测频率 支持retry-backoff,可以指定重试条件 支持发送裸http数据包 支持导出curl命令 传入自定义*http.Client 支持请求中间件(https://github.com/antlabs/gout-middleware) 支持响应中间件ResponseUse 支持设置chunked数据格式发送 支持body, header的数据校验 等等更多

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

gout v0.1.8 版本更新,go 更新的 http RESTful 客户端和 benchmark lib

地址 gitee:https://gitee.com/guonaihong github:https://github.com/guonaihong/gout 更新内容 * 新增全局设置超时函数。 全部特性 feature 支持设置 GET/PUT/DELETE/PATH/HEAD/OPTIONS 支持设置请求 http header(可传 struct,map,array,slice 等类型) 支持设置 URL query(可传 struct,map,array,slice,string 等类型) 支持设置 json 编码到请求 body 里面(可传struct, map, string, []byte 等类型) 支持设置 xml 编码到请求 body 里面(可传struct, string, []byte 等类型) 支持设置 yaml 编码到请求 body 里面(可传struct, map, string, []byte 等类型) 支持设置 form-data(可传 struct, map, array, slice 等类型) 支持设置 x-www-form-urlencoded(可传 struct,map,array,slice 等类型) 支持设置 io.Reader,uint/uint8/uint16...int/int8...string...[]byte...float32,float64 至请求 body 里面 支持解析响应body里面的json,xml,yaml至结构体里(BindJSON/BindXML/BindYAML) 支持解析响应body的内容至io.Writer, uint/uint8...int/int8...string...[]byte...float32,float64 支持解析响应header至结构体里 支持接口性能benchmark,可控制压测一定次数还是时间,可控制压测频率 支持retry-backoff,可以指定重试条件 支持发送裸http数据包 支持导出curl命令 传入自定义*http.Client 支持请求中间件(https://github.com/antlabs/gout-middleware) 等等更多

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

阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:6. 设备事件上报

根据阿里云物联网普通的定义,事件上报有 信息、告警、故障三种类型,事件是设备上传的消息通知,应当及时处理。 1)定义事件 打开阿里云物联网控制台,进入产品,点击 自定义功能 ,添加一个事件。 2)上传事件的方法 CZGL.AliIoTClient 中,有四个上传事件的方法 public int Thing_Event_Post(string eventName, string content, [bool isToLower = True]) public int Thing_Event_Post(string eventName, string content, [bool isToLower = True], [System.Text.Encoding encoding = null]) public int Thing_Event_Post<TModel>(TModel model, string eventName, [bool isToLower = True]) public int Thing_Event_Post<TModel>(TModel model, string eventName, [bool isToLower = True], [System.Text.Encoding encoding = null]) eventName: 事件的名称,即标识符。 content: Alink json 内容isToLower:是否转为小写encoding: 自定义上传 Alink json 的编码model: 事件的模型 第一种方法需要手动编写好 json,然后通过方法上传。第二种方法在第一种方法的基础上允许自定义字符编码。第三种、第四种是传入模型,由 CZGL.AliIoTClient 处理好再上传。 3)编写事件模型 每次只能上传一个事件,一个事件对应一个 模型 或 Alink json。 在 CZGL.AliIoTClient 中,你每次上传一个事件时,都需要设置此事件的名称。 根据上面在阿里云物联网控制台定义的事件,编写模型。 预览要生成的 Alink json : { "id": "123", "version": "1.0", "params": { "value": { "temperature":100.1 }, "time": 1524448722000 }, "method": "thing.event.cpuerror.post" } 对应模型如下: public class Cpuerror { public Cpuerror() { @params = new Params(); } public string id { get { return DateTime.Now.Ticks.ToString(); } set { } } public string version { get { return "1.0"; } set { } } public Params @params { get; set; } public class Params { public Params() { value = new Value(); } public Value value { get; set; } public long time { get { return AliIoTClientJson.GetUnixTime(); } set { } } public class Value { public float temperature { get; set; } } } public string @method { get { return "thing.event.cpuerror.post"; } set { } } } 一个事件对应一个类,如果事件里有多个输出参数,则在 Value 里定义好。 { ... ... public class Value { public float temperature { get; set; } /* *定义多个输出参数 */ } ... ... } 上报事件: Cpuerror cpuerror = new Cpuerror(); cpuerror.@params.value.temperature = 100.1F; client.Thing_Event_Post<Cpuerror>(cpuerror, "cpuerror", false); 4)容错上传事件的 Alink json 可以 容错 ,这给我们编写代码时带来了方便。、 例如将上面上传事件的代码改一下: public class Cpuerror { public string name = "cpuerror"; public Cpuerror() { @params = new Params(); } public string id { get { return DateTime.Now.Ticks.ToString(); } set { } } public string version { get { return "1.0"; } set { } } public Params @params { get; set; } public class Params { public Params() { value = new Value(); } public Value value { get; set; } public long time { get { return AliIoTClientJson.GetUnixTime(); } set { } } public class Value { public float temperature { get; set; } } } public string @method { get { return $"thing.event.{name}.post"; } set { } } } Cpuerror cpuerror = new Cpuerror(); cpuerror.@params.value.temperature = 100.2F; client.Thing_Event_Post<Cpuerror>(cpuerror, cpuerror.name, false); 对于 消息ID 等是必不可少的,“可多不可少”,其它无关字段可以增加上去,不会影响到上传和使用,例如上面的例子增加了一个 name 属性。 5)补充说明

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

阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:8. 委托事件

CZGL.AliIoTClient 里设置了 7 个委托事件,在程序的不不同生命周期触发。 1)7个委托事件 /// <summary> /// 服务器属性设置 /// </summary> public PublishPropertyEventHandler PubPropertyEventHandler; /// <summary> /// 服务调用 /// </summary> public PublishServiceEventHandler PubServiceEventHandler; /// <summary> /// 收到其它Topic时触发 /// </summary> public PublishCommonEventHandler PubCommonEventHandler; /// <summary> /// 当 QOS=1或2时,收到订阅触发 /// </summary> public uPLibrary.Networking.M2Mqtt.MqttClient.MqttMsgPublishedEventHandler PubedEventHandler; /// <summary> /// 向服务器发布 Topic 时 /// </summary> public uPLibrary.Networking.M2Mqtt.MqttClient.MqttMsgSubscribedEventHandler SubedEventHandler; /// <summary> /// 向服务器发布 Topic 失败时 /// </summary> public uPLibrary.Networking.M2Mqtt.MqttClient.MqttMsgUnsubscribedEventHandler UnSubedEventHandler; /// <summary> /// 断开连接时 /// </summary> public uPLibrary.Networking.M2Mqtt.MqttClient.ConnectionClosedEventHandler ConnectionClosedEventHandler; 使用方法 public static void TestEvent(object sender, MqttMsgPublishEventArgs e) { { // handle message received string topic = e.Topic; string message = Encoding.ASCII.GetString(e.Message); Console.WriteLine("- - - - - - - - - - "); Console.WriteLine("get topic message,Date: " + DateTime.Now.ToLongTimeString()); Console.WriteLine("topic: " + topic); Console.WriteLine("get messgae :\n" + message); } client.PubPropertyEventHandler += TestEvent; 这里是旧版本的文档,可以参考一下。 https://www.cnblogs.com/whuanle/p/10786991.html

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

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等操作系统。

用户登录
用户注册