随笔分类 - JAVA
摘要:pom <dependency> <groupId>com.googlecode.aviator</groupId> <artifactId>aviator</artifactId> <version>4.2.10</version> </dependency> <dependency> <grou
阅读全文
摘要:包含: 程序计数器 虚拟机栈 本地方法栈 堆 方法区(包含运行时常量池) 直接内存 线程私有:程序计数器,虚拟机栈,本地方法栈线程共享:堆,方法区 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程执行的字节码行号指示器,JVM 通过改变这个计数器的值,来选取下一条需要执行的字节码指令,
阅读全文
摘要:这次在上一篇的基础上,这次用到4个库,将库db0、db1各增加一个从库dbS0\dbS1 四个库再执行脚本: -- Table structure for `user0`-- DROP TABLE IF EXISTS `user0`;CREATE TABLE `user0` ( `id` int(1
阅读全文
摘要:ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由ShardingSphere-JDBC、ShardingSphere-Proxy和ShardingSphere-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功
阅读全文
摘要:Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块,此模块中包含网关限流的规则和自定义 API 的实体和管理逻辑: GatewayFlowRule:网关限流规则,针对 API Gateway 的场景定制的限流规则,可以针对不同 rout
阅读全文
摘要:热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如: 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制 热点参数限流会统计传入参数中的热点参数,并根据配
阅读全文
摘要:系统保护规则是从应用级别的入口流量进行控制,从单台机器的总体 Load、RT、入口 QPS 和线程数四个维度监控应用数据,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。 系统保护规则是应用整体维度的,而不是资源维度的,并且仅对入口流量生效。入口流量指的是进入应用的流量(EntryType.I
阅读全文
摘要:降级策略 我们通常用以下几种方式来衡量资源是否处于稳定的状态: 平均响应时间 (DEGRADE_GRADE_RT):当资源的平均响应时间超过阈值(DegradeRule 中的 count,以 ms 为单位)之后,资源进入准降级状态。接下来如果持续进入 5 个请求,它们的 RT 都持续超过这个阈值,那
阅读全文
摘要:在18年Hystrix停止更新,Sentinel和Resilience4j逐步成熟,在国内Sentinel的使用企业更加多一些,接下来通过一个实站例子把Sentinel的主要功能使用起来。 功能对比 SentinelHystrixresilience4j 隔离策略 信号量隔离(并发线程数限流) 线程
阅读全文
摘要:众所周知的几个知识点 volatile保证了可见性和有序性,仅在32位long、double类型保证原子性; synchronized保障了原子、有序、可见性,实际上是内部锁; 显式的可重入锁ReentrantLock或者一些工具类如Semaphore, CountDownLatch保障原子、有序、
阅读全文
摘要:要点 ConcurrentHashMap是HashMap的线程安全版本; 不允许[key,value]为null; 比Hashtable锁粒度更细; 采用CAS和synchronized来保证并发安全。数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树; 负载因子0.75; 默认初始化
阅读全文
摘要:在原子类持续累加或累减时,比如AtomicInteger的incrementAndGet时,是不存在ABA问题的,但compareAndSet或者updateAndGet是可能存在ABA问题,像AtomicBoolean或AtomicLong等这样的变量在多线程修改时,也都存在ABA的问题。为了理解
阅读全文
摘要:ArrayBlockingQueue是一个基于数组实现的有界的阻塞队列。 几个要点 ArrayBlockingQueue是一个用数组实现的队列,所以在效率上比链表结构的LinkedBlockingQueue要快一些,但是队列长度固定,不能扩展,入列和出列使用同一把锁。LinkedBlockingQu
阅读全文
摘要:ArrayList是非线程安全的,Vector虽是线程安全的,但由于简单粗暴的锁同步机制,性能较差。而CopyOnWriteArrayList则提供了另一种不同的并发处理策略(当然是针对特定的并发场景)。 很多时候,我们的系统应对的都是读多写少的并发场景。CopyOnWriteArrayList容器
阅读全文
摘要:几个要点 LinkedList的底层数据结构是双向链表;LinkedList继承于AbstractSequentialList的双向链表,实现List接口,因此也可以对其进行队列操作,它也实现了Deque接口,所以LinkedList也可当做双端队列使用;LinkedList是非同步的;和 Arra
阅读全文
摘要:几个要点 ArrayList非线程安全; ArrayList基于动态数组,是一种线性表。随机访问友好,其可以保证在 O(1) 复杂度下完成随机查找操作,插入和删除效率低; ArrayList 实现了RandmoAccess接口,即提供了随机访问功能。RandmoAccess是java中用来被List
阅读全文
摘要:几个要点 HashTable底层的数据结构基于链表(O(n))的数组; HashTable不允许空key和空value; HashMap元素非按照写入时顺序排序,而是按Key的hash取n模来排序(算法优化采用(n - 1) & hash) HashTable线程安全类,但它是直接在方法上使用syn
阅读全文
摘要:几个要点 HashMap底层的数据结构基于链表(O(n))和红黑树(O(logN))的数组; HashMap允许空key和空value; HashMap元素非按照写入时顺序排序,而是按Key的hash取n模来排序(算法优化采用(n - 1) & hash) HashMap非线程安全类,Hashtab
阅读全文
摘要:整理出近几年的随笔笔记分类。 #Java多线程开发系列 Java多线程开发系列-基础 Java多线程开发系列-线程间协作 Java多线程开发系列-线程安全设计 Java多线程开发系列-线程活性故障 Java多线程开发系列-线程管理 CompletableFuture组合异步编程 Swing中的线程并
阅读全文
摘要:Selenium 是目前用的最广泛的Web UI 自动化测试框架,核心功能就是可以在多个浏览器上进行自动化测试。支持多平台:windows、linux、MAC ,支持多浏览器:ie、ff、safari、opera、chrome,多语言C、 java、ruby、python...Selenium ID
阅读全文