- 博客(9)
- 收藏
- 关注
原创 SpringBoot自问世以来,一直有一个响亮的口号“约定优于配置“
我们都知道SpringBoot自问世以来,一直有一个响亮的口号"约定优于配置",其实一种按约定编程的软件设计范式,目的在于减少软件开发人员在工作中的各种繁琐的配置,我们都知道传统的SSM框架的组合,会伴随着大量的繁琐的配置;稍有不慎,就可能各种bug,被人发现还以为我们技术很菜。而SpringBoot的出现不仅大大提高的开发人员的效率,还能避免由于"手抖"带来的配置错误。 很多程序员都感慨SpringBoot的到来大大解放了生产力,但是也有聪明的程序猿会多思考一下下,SpringBoot是怎么做到的
2021-03-11 22:33:27
966
1
原创 可以逐一迭代某个给定的区间、数组、集合内的每个元素。其他编程语言可能称此为foreach循环。
c++11引入了auto类型说明符,auto让编译器通过初始值来推算变量的类型,所以auto定义的变量必须有初始值。 ranged-base for 范围for C++11 引入了一种崭新的for循环形式,可以逐一迭代某个给定的区间、数组、集合内的每个元素。其他编程语言可能称此为foreach循环。 其一般性语法如下: for ( decl : coll) for(auto elem : vec) //编译器会一个一个的取vec中的元素取出来copy到elem中去,然后输出。..
2021-03-11 22:31:09
84
原创 time:处理时间的模块,如获取时间戳,格式化日期等
在开发中经常会与时间打交道,如:获取事件戳,时间戳的格式化等,这里简要记录一下python操作时间的方法。 python中常见的处理时间的模块: time:处理时间的模块,如获取时间戳,格式化日期等 datetime:date和time的结合体,处理日期和时间 calendar:日历相关的模块,如:处理年历/月历 time模块介绍 说明:time模块主要讲解如下内容: 1.时间戳 --> 时间元组格式(time.struct_time) --> 日期字符串 2
2021-03-11 22:30:07
371
原创 表示需要在什么级别保存该注释信息,用于描述注解的生命周期
无注解的作用就是负责注解其他注解,Java定义了4个标准的meta-annotation类型,他们被用来提供对其他annotation类型作说明。 这些类型和它们所支持的类在java.lang.annotation包中可以找到.(@Target,@Retention,@Documented,@Inherited) @Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方) @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期 (SOURCE<
2021-03-11 22:28:57
505
原创 相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问
Annotation是从JDK5.0开始引入的新技术。 Annoltation的作用 不是程序本身,可以对程序作出解释。(这一点在注释(comment)没有什么区别) 可以被其他程序(比如:编译器等)读取 Annotation的格式: 注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@Suppress(value="unchecked"). Annotation在哪里使用? 可以附加在package,class,method.field等上面,相当于给他们添加
2021-03-11 22:27:52
168
原创 数据倾斜和节点宕机都可能会导致缓存雪崩。
若缓存集群内的服务节点比较少,就像我们例子中的三个节点,而哈希环的空间又有很大(一般是 0 ~ 2^32),可能导致较少的服务节点哈希值聚集在一起。 比如下图所示这种情况 node0 、node1、node2 聚集在一起,缓存数据的 key 哈希都映射到 node2 的顺时针方向,数据按顺时针寻找存储节点就导致全都存储到 node0 上去,给单个节点很大的压力!这种情况称为数据倾斜。 节点雪崩 数据倾斜和节点宕机都可能会导致缓存雪崩。 数据倾斜导致所有缓存数据都打到 node0 上面,有
2021-03-11 22:26:57
115
1
原创 一致性哈希能把节点宕机造成的影响控制在顺时针相邻节点之间,避免对整个集群造成影响。
对每个需要存储的数据 key 同样也计算一次哈希值,计算之后的哈希也映射到环上,数据存储的位置是沿顺时针的方向找到的环上的第一个节点。如果超过2^32仍然找不到服务器,就会保存到第一台存储服务器节点上。 一致性哈希的优势 1.增加节点 当缓存集群的节点有所增加的时候,普通哈希算法会导致原有哈希映射大面积失效。而一致性哈希整个环形空间的映射仍然会保持顺时针规则,只有一小部分key的归属会受到影响。 如下图所示,当缓存服务集群要新增一个节点node3时,受影响的只有 key3 对应的数据 v
2021-03-11 22:26:11
166
原创 选择一个足够大的Hash空间(一般是 0 ~ 2^32)构成一个哈希环。
在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓冲中去,降低了系统存储的效率。分散性的定义就是上述情况发生的严重程度。好的哈希算法应能够尽量避免不一致的情况发生,也就是尽量降低分散性。 负载(Load) 负载问题实际上是从另一个角度看待分散性问题。既然不同
2021-03-11 22:25:21
1200
原创 良好的分布式cahce系统中的一致性hash算法应该满足以下几个方面:
考虑到分布式系统每个节点都有可能失效,并且新的节点很可能动态的增加进来,如何保证当系统的节点数目发生变化时仍然能够对外提供良好的服务,这是值得考虑的,尤其实在设计分布式缓存系统时,如果某台服务器失效,对于整个系统来说如果不采用合适的算法来保证一致性,那么缓存于系统中的所有数据都可能会失效(即由于系统节点数目变少,客户端在请求某一对象时需要重新计算其hash值(通常与系统中的节点数目有关),由于hash值已经改变,所以很可能找不到保存该对象的服务器节点),因此一致性hash就显得至关重要,良好的分布式ca
2021-03-11 22:24:20
269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人