Entry

[Spring-Cloud-Alibaba] Sentinel 整合RestTemplate & Feign

喜夏-厌秋 提交于 2020-11-30 21:12:36
Sentinel API Github : WIKI Sphu (指明要保护的资源名称) Tracer (指明调用来源,异常统计接口) ContextUtil(标示进入调用链入口) 流控规则(针对来源属性) @GetMapping("/test-sentinel-api") public String testSentinelAPI(@RequestParam(required = false) String a) { String resourceName = "test-sentinel-api"; ContextUtil.enter(resourceName, "user-center-service"); // 定义一个sentinel 保护的资源,名称是test-sentinel-api Entry entry = null; try { entry = SphU.entry(resourceName); // ...被保护的业务逻辑处理 if (StringUtils.isEmpty(a)) { // Sentinel 默认只会统计BlockException & BlockException的子类,如果想统计其他异常信息,添加Tracer throw new IllegalArgumentException("A is not empty."); } return a

Gson解析json

浪子不回头ぞ 提交于 2020-11-30 20:58:09
Gson Gson 的 节点对象: JsonElement : 所有的节点 都是 JsonElement 对象. JsonPrimitive : 基本的 数据类型的 节点 对象, JsonElement 的子类. JsonNull : 代表 空节点 对象,即 有 key,value 为空,JsonElement 的子类. JsonObject : 对象 数据类型的 节点 对象, JsonElement 的 子类. JsonArray : 数组 数据类型的 节点 对象, JsonElement 的 子类. JsonElement的取值 : 'JsonPrimitive' : value 的 取值对应 java int,double,float,long,short,boolean,char,byte,String,BigDecimal,BigInteger,Number 'JsonObject' : value 的 取值对应 java 的 Object 对象. 'JsonArray' : value 的 取值对应 java 的 List 及其子类对象. 整体json String解析 Json的解析成 java 对象 json: {'name':'张三','age':18,'sex':true} 代码: Gson gson = new Gson(); // 将json 转化成

JDK1.8的HashMap实现原理和源码解析

耗尽温柔 提交于 2020-11-30 02:31:40
  哈希表(hash table)也叫散列表,是一种非常重要的数据结构。许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK8的HashMap源码进行分析。 一、什么是哈希表 先了解下基本数据结构。 数组 :采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)。 线性链表 :对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结点间的引用即可,时间复杂度为O(1),而查找操作需要遍历链表逐一进行比对,复杂度为O(n)。 二叉树 :对一棵相对平衡的有序二叉树,对其进行插入,查找,删除等操作,平均复杂度均为O(logn)。 哈希表 :相比上述几种数据结构,在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O(1)。 我们知道,数据结构的物理存储结构只有两种: 顺序存储结构 和 链式存储结构 (像栈,队列,树,图等是从逻辑结构去抽象的,映射到内存中,也这两种物理组织形式),而在上面我们提到过,在数组中根据下标查找某个元素

curl命令基本使用小总结

冷暖自知 提交于 2020-11-30 02:31:00
curl 下载文件 -o:将文件保存为命令行中指定的文件名的文件中 -O:使用URL中默认的文件名保存文件到本地 --limit-rate:限速 -C:对大文件使用断点续传功能 --silent:不显示进度信息 # 当文件在下载完成之前结束该进程 [root@ ~]# curl -O http://www.gnu.org/software/gettext/manual/gettext.html ###### ######## 20.1% # 通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载 [root@ ~]# curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ###### ######### 21.1% 认证授权 在访问需要授权的页面时,可通过**-u**选项提供用户名和密码进行授权 [root@ ~]# curl -u username:password URL 通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史记录时不会将密码泄露 [root@ ~]# curl -u username URL 传递请求数据 默认curl使用GET方式请求数据,可以通过 --data/-d 方式指定使用POST方式传递数据 # GET [root@ ~]

打通电商多模式支持的“任督二脉”

扶醉桌前 提交于 2020-11-30 02:30:44
你听说过任督二脉吗?像这样~ 咳咳~今天不讲武功,讲电商平台设计的功夫~ 背景 当今的电商可不仅仅是B2C商城,接下来还会有O2O,往后可能还会有商超、奥莱、二手交易。。。且称之为业务模式~而每个业务模式下还会有预售、竞拍、拼团等不同组合的子模式。 可是我商城的商品列表页不想展示O2O的商品啊,商品列表的数据希望按一定规则相互隔离。其他模块,有的出于操作习惯的考虑不隔离,有的出于用户行为的考虑需要隔离。 各模块数据隔离需求如下 列表页 商详页 商品组 优惠券 活动 订单 ... 原商城 隔离 隔离 隔离 暂时不隔离 暂时不隔离 隔离 O2O 隔离 隔离 隔离 暂时不隔离 暂时不隔离 隔离 各模块流程差异 新建商品 列表页 购物车 订单 ... 原商城 店铺创建,门店设置库存 基于item建es文档 跨门店 状态流转走快递 O2O 门店创建(沿用原模型但弱化店铺的概念) 基于item建es文档 单个门店 状态流转走配送 于是我们就会面临不同的改造的场景。 场景1,新建商品就是新建商品啊!!! 例如商品的新建保存,是基础服务,已经具备通用存储模型。为了支持新模式我还得改服务接口、发布二方包?咱可不可以这样? 商品服务 Integer bizMode = BizModeContext.getBizMode(); itemDO.setBizMode(bizMode); // ...

Java读源码之ThreadLocal

夙愿已清 提交于 2020-11-30 00:47:24
前言 JDK版本: 1.8 之前在看Thread源码时候看到这么一个属性 ThreadLocal.ThreadLocalMap threadLocals = null; 作用 ThreadLocal实现的是每个线程都有一个本地的副本,相当于局部变量,这样就可以少一些参数传递,是以空间换时间的一周策略,其实ThreadLocal就是内部自己实现了一个map数据结构。 存在的问题 ThreadLocal确实很重要,但想到看源码还是有个小故事的,之前去美团点评面试,问我如何保存用户登录token,可以避免层层传递token? 心想这好像是在说ThreadLocal,然后开始胡说放在redis里或者搞个ThreadLocal,给自己挖坑了 面试官继续问,ThreadLocal使用时候主要存在什么问题么? 完蛋,确实只了解过,没怎么用过,凉凉,回来查了下主要存在的问题如下 ThreadLocal可能内存泄露? 带着疑惑进入源码吧 源码 类声明和重要属性 package java.lang; public class ThreadLocal<T> { // hash值,类似于Hashmap,用于计算放在map内部数组的哪个index上 private final int threadLocalHashCode = nextHashCode(); private static int

你可能没用过这种方式的集合!new HashMap<K,V>(){{put(K,V);}};

笑着哭i 提交于 2020-11-29 15:25:03
来源:https://blog.csdn.net/luman1991/article/details/53034602 一、HashMap的初始化 1、HashMap 初始化的文艺写法 HashMap 是一种常用的数据结构,一般用来做数据字典或者 Hash 查找的容器。普通青年一般会这么初始化: HashMap<String, String> map = new HashMap<String, String>(); map.put("Name", "June"); map.put("QQ", "2572073701"); 看完这段代码,很多人都会觉得这么写太啰嗦了,对此,文艺青年一般这么来了: HashMap<String, String> map = new HashMap<String, String>() { { put("Name", "June"); put("QQ", "2572073701"); } }; 嗯,看起来优雅了不少,一步到位,一气呵成的赶脚。然后问题来了,有童鞋会问:纳尼?这里的双括号到底什么意思,什么用法呢?哈哈,其实很简单,看看下面的代码你就知道啥意思了。 public class Test { /*private static HashMap< String, String> map = new HashMap< String, String>()

java容器 Map Set List

为君一笑 提交于 2020-11-29 04:34:10
容器: 在java中,如果有一个类专门用来存放其他类的对象,这个类就叫做容器,或者叫集合,集合就是将若干性质相同或者相近的类的对象组合在一起而形成一个整体。 boolean add(Object obj):向容器中添加指定的元素 Iterator iterator():返回能够遍历当前集合中所有元素的迭代器 Object[] toArray():返回包含此容器中所有元素的数组。 Object get(int index):获取下标为index的那个元素 Object remove(int index):删除下标为index的那个元素 Object set(int index,Object element):将下标为index的那个元素置为element Object add(int index,Object element):在下标为index的位置添加一个对象element Object put(Object key,Object value):向容器中添加指定的元素 Object get(Object key):获取关键字为key的那个对象 int size():返回容器中的元素数 其中map、set、和List中的方法还是有所区别的,具体用法此处不做太多说明 三种容器接口的方法详解:http://blog.csdn.net/lushuaiyin/article/details

Kettle构建Hadoop ETL实践(九):事实表技术

僤鯓⒐⒋嵵緔 提交于 2020-11-28 13:31:42
目录 一、事实表概述 二、周期快照 1. 修改数据仓库模式 2. 创建快照表数据装载Kettle转换 三、累计快照 1. 修改数据库模式 2. 修改增量抽取销售订单表的Kettle转换 3. 修改定期装载销售订单事实表的Kettle转换 4. 修改定期装载Kettle作业 5. 测试 四、无事实的事实表 1. 建立新产品发布的无事实事实表 2. 初始装载无事实事实表 3. 修改定期装载Kettle作业 4. 测试定期装载作业 五、迟到的事实 1. 修改数据仓库模式 2. 修改定期装载Kettle转换 3. 修改装载月销售周期快照事实表的作业 4. 测试 六、累积度量 1. 修改模式 2. 初始装载 3. 定期装载 4. 测试定期装载 5. 查询 七、小结 上两篇里介绍了几种基本的维度表技术,并用示例演示了每种技术的实现过程。本篇说明多维数据仓库中常见的事实表技术。我们将讲述五种基本事实表扩展,分别是周期快照、累积快照、无事实的事实表、迟到的事实和累积度量。和讨论维度表一样,也会从概念开始认识这些技术,继而给出常见的使用场景,最后以销售订单数据仓库为例,给出Kettle实现的作业、转换和测试过程。 一、事实表概述 发生在业务系统中的操作型事务,其所产生的可度量数值,存储在事实表中。从最细节粒度级别看,事实表和操作型事务表的数据有一一对应的关系。因此

流量防卫兵|Sentinel go 阿里双11 同款

人走茶凉 提交于 2020-11-27 05:47:08
作者 | 于雨 apache/dubbo-go 项目负责人 本文作者系 apache/dubbo-go 项目负责人,目前在 dubbogo 项目中已内置可用 sentinel-go,如果想单独使用可参考 [在 dubbo-go 中使用 sentinel] 一文,若有其他疑问可进 dubbogo 社区【钉钉群 23331795】进行沟通。 导读: 本文主要分析阿里巴巴集团开源的流量控制中间件 Sentinel,其原生支持了 Java/Go/C++ 等多种语言,本文仅仅分析其 Go 语言实现。下文如无特殊说明,sentinel 指代 Sentinel-Go。 基本概念 Resource 和 Rule 1. Resource // ResourceType represents classification of the resources type ResourceType int32 const ( ResTypeCommon ResourceType = iota ResTypeWeb ResTypeRPC ) // TrafficType describes the traffic type: Inbound or Outbound type TrafficType int32 const ( // Inbound represents the inbound traffic