Java是单继承,只能继承一个父类,但是可以实现多个接口
继承的子类不能直接访问父类中的私有属性,只能通过get和set方法来访问
在继承的操作中,子类对象在实例化之前必须首先调用父类中的构造方法后再调用子类自己的构造方法。
1 | class person{ |
Java是单继承,只能继承一个父类,但是可以实现多个接口
继承的子类不能直接访问父类中的私有属性,只能通过get和set方法来访问
在继承的操作中,子类对象在实例化之前必须首先调用父类中的构造方法后再调用子类自己的构造方法。
1 | class person{ |
1 | JsonObject origJson = new JsonParser().parse(str).getAsJsonObject(); |
1 | String str = outputJson.toString(); |
1 | JsonArray array = new Gson().toJsonTree(list).getAsJsonArray(); |
Thrift的通信协议主要有下面几种:
TBinaryProtocol:二进制协议
TCompactProtocol:带压缩的二进制协议
TJSONProtocol:Json协议,序列化结果例如
1 | {"2":{"i64":1},"3":{"str":"lintong"},"4":{"lst":["i64",3,1,2,3]}} |
TSimpleJSONProtocol:simple Json协议,该协议为只写,即不可反序列化,序列化结果例如
1 | {'name': 'XiaoMing', 'age': '20'} |
TMultiplexedProtocol
TTupleProtocol
如果想在Gin Web服务中实现限流功能,可以使用ulule/limiter,uber-go/ratelimit
ulule/limiter是一款支持分布式限流的框架,其可以在Redis中存储和共享限流状态,从而在分布式环境中实现一致的限流逻辑。
1.引用
1 | go get github.com/ulule/limiter/v3@v3.11.2 |
2.Gin限流中间件
参考:https://github.com/ulule/limiter-examples/blob/master/gin/main.go
1 | package middleware |
3.在router中使用限流中间件
1 | // ratelimit |
4.限流效果,如果限流的话,接口将会返回429的状态码
1 | curl -i --request GET 'http://172.17.0.229:18080/api/v1/user/3' \ |
在redis中会存储限流状态,如下
其中默认的key是prefix+ip,value是API的请求次数
uber-go/ratelimit是uber提供的Leaky Bucket(漏桶)限流算法的Golang实现,其不支持分布式限流
单例模式(Singleton Pattern)是Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。 这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
1 | package java_basic; |