01 2021 档案
摘要:HashMap基于哈希表的Map接口实现,是以key-value存储形式存在(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同)。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不
阅读全文
摘要:Hash的定义 散列(哈希)函数:把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值,是一种压缩映射。hashCode是Object的一个方法,返回的是对象的存储地址。 public int hashCode() { int lockWord = shadow$_monitor_;
阅读全文
摘要:数字类型 名字存储尺寸描述范围 smallint 2字节 小范围整数 -2^15 (-32,768) 到 2^15 - 1 (32,767) integer 4字节 整数的典型选择 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) bigint 8字
阅读全文
摘要:数组与链表在处理数据时各有优缺点,数组查询速度很快而插入很慢,链表在插入时表现优秀但查询无力。哈希表则整合了数组与链表的优点,能在插入和查找等方面都有不错的速度。 Map Map也是基于key-value的数据格式,并且key值不可以重复,每个key对应的value唯一。Map的key也可以为nul
阅读全文
摘要:数据结构 LinkedBlockingQueue是一个底层为单向链表的,有界的,FIFO阻塞队列;访问和移除操作是在队头,添加操作在队尾进行,并且使用不同的锁进行保护。 LinkedBlockingQueue中维持两把锁,一把锁用于入队,一把锁用于出队,这也就意味着,同一时刻,只能有一个线程执行入队
阅读全文
摘要:ConcurrentLinkedQueue是一个基于链接节点的无界线程安全队列,遵循队列的FIFO原则,队尾入队,队首出队。其非阻塞的方式使用自旋CAS(Compare and swap,即比较并交换)的方式来实现。 ConcurrentLinkedQueue 由 head 节点和 tail 节点组
阅读全文
摘要:ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的互斥访问;有界,则是指ArrayBlockingQueue对应的数组是有界限的。 阻塞队列,是指多线程访问竞争资源时,当
阅读全文
摘要:Queue源码解析 Queue是Java集合框架中的一员,继承于Collection接口。与List、Set相同的是,Queue也实现了一种数据结构,这就是队列。队列是计算机中的一种数据结构,保存在其中的数据具有“先进先出(FIFO,First In First Out)”的特性。 public i
阅读全文
摘要:HashSet源码分析 底层是HashMap public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { static final long serialVer
阅读全文
摘要:表连接 表t1: num | name + 1 | a 2 | b 3 | c 表t2: num | value + 1 | xxx 3 | yyy 5 | zzz 1.交叉连接 T1 CROSS JOIN T2 对来自于T1和T2的行的每一种可能的组合(即笛卡尔积),连接表将包含这样一行:它由所有
阅读全文
摘要:PostgreSQL支持基本的表划分。 范围划分:表被根据一个关键列或一组列划分为“范围”,不同的分区的范围之间没有重叠。例如,我们可以根据日期范围划分,或者根据特定业务对象的标识符划分。 列表划分:通过显式地列出每一个分区中出现的键值来划分表。 哈希分区:通过为每个分区指定模数和余数来对表进行分区
阅读全文
摘要:PostgreSQL实现了表继承.capitals用于省会城市,cities用于非省会的城市.语法如下: CREATE TABLE cities ( name text, province text, state int ); CREATE TABLE capitals ( level float
阅读全文
摘要:PostgreSQL允许带有命名参数的函数被使用位置或命名记号法调用。命名记号法对于有大量参数的函数特别有用,因为它让参数和实际参数之间的关联更明显和可靠。在位置记号法中,书写一个函数调用时,其参数值要按照它们在函数声明中被定义的顺序书写。在命名记号法中,参数根据名称匹配函数参数,并且可以以任何顺序
阅读全文
摘要:值表达式被用于各种各样的环境中,例如在SELECT命令的目标列表中、作为INSERT或UPDATE中的新列值或者若干命令中的搜索条件。为了区别于一个表表达式(是一个表)的结果,一个值表达式的结果有时候被称为一个标量。值表达式因此也被称为标量表达式(或者甚至简称为表达式)。表达式语法允许使用算数、逻辑
阅读全文
摘要:中文社区 常量 1.字符串常量 在SQL中,一个字符串常量是一个由单引号(')包围的任意字符序列,例如'This is a string'。为了在一个字符串中包括一个单引号,可以写两个相连的单引号,例如'Dianne''s horse'。注意这和一个双引号(")不同。 2.美元引用的字符串常量 虽然
阅读全文
摘要:LinkedList继承于AbstractSequentialList的双向链表,实现List接口,因此也可以对其进行队列操作,它也实现了Deque接口,所以LinkedList也可当做双端队列使用,还有LinkedList是非同步的。由于LinkedList的底层是双向链表,因此其顺序访问的效率非
阅读全文
摘要:基于数组实现,是一个动态数组,其容量能自动增长。 ArrayList不是线程安全的,建议在单线程中使用,多线程可以选择Vector或CopyOnWriteArrayList。 实现了RandomAccess接口,可以通过下标序号进行快速访问。 实现了Cloneable接口,能被克隆。 实现了Seri
阅读全文
摘要:List是Collection三大直接子接口之一,其中的数据可以通过位置检索,用户可以在指定位置插入数据。List的数据可以为空,可以重复。 List Collection主要提供一些通用的方法,而List则针对线性表的结构,提供了对位置以及子表的操作。特有方法如下: public interfac
阅读全文
摘要:Collection Collection是List、Queue和Set的超集,它直接继承于Iterable,也就是所有的Collection集合类都支持for-each循环。 public interface Collection<E> extends Iterable<E> { //返回集合的长
阅读全文
摘要:rollover可以根据索引大小,文档数或使用期限自动过渡到新索引。 当rollover触发后,将创建新索引,写别名(write alias)将更新为指向新索引,所有后续更新都将写入新索引。对于基于时间的rollover来说,基于大小,文档数或使用期限过渡至新索引是比较适合的。 在任意时间rollo
阅读全文
摘要:1.索引调优 设计阶段调优: 1)根据业务增量需求,采取基于日期模板创建索引,通过rollover API滚动索引;见 ElasticSearch-rollover 2)使用别名进行索引管理; 3)每天凌晨定时对索引做force_merge操作,以释放空间; 4)采取冷热分离机制,热数据存储到SSD
阅读全文
摘要:分布式特性 Elasticsearch 可以横向扩展至数百(甚至数千)的服务器节点,同时可以处理PB级数据。Elasticsearch 天生就是分布式的,并且在设计时屏蔽了分布式的复杂性。这里列举了一些在后台自动执行的操作: 分配文档到不同的容器 或 分片 中,文档可以储存在一个或多个节点中 按集群
阅读全文
摘要:什么是倒排索引 倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。 当用户在主页上搜索关键词“华为手机”时,假设只存在正向索引(forward index),那么就需要扫描索引库中的所有文档
阅读全文
摘要:IK分词器插件安装 1.安装插件并重启 root@ryj-dev10:/opt/modules# docker container psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES592f35773efc kibana:7.10.1 "/
阅读全文
摘要:文本类型 text:当一个字段需要用于全文搜索(会被分词), 比如产品名称、产品描述信息, 就应该使用text类型. keyword:当一个字段需要按照精确值(不会被分词)进行过滤、排序、聚合等操作时, 就应该使用keyword类型. 数字类型 日期类型 date:在ES中, 日期可以是包含格式化日
阅读全文
摘要:接口语法 点击官方API url -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>' 使用示例 index PUT /<index> You can use the create index API to a
阅读全文
摘要:1.docker拉取kibana镜像 docker pull kibana:7.10.1 2.启动容器 docker run --name kibana -d -p 5601:5601 kibana:7.10.1 此时容器启动成功,但是页面访问 http://IP:5601/ 会提示错误:[Kiba
阅读全文
摘要:Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 服务端处理命令,并将结果返回给客户端。 Redis完整的请求交互流程图如下: 客户端进程调用
阅读全文
摘要:1. 理解单线程模型 Redis基于Reactor模式开发了自己的网络事件处理器,称之为文件事件处理器(File Event Hanlder)。文件事件处理器由Socket、IO多路复用程序、文件事件分派器(dispather),事件处理器(handler)四部分组成。IO多路复用程序会同时监听多个
阅读全文
摘要:1.redis基本数据类型及常用客户端命令 string、list、set、zset、hash。相关指令见 redis常用客户端命令 2.redis过期key删除策略 Redis中过期key的删除策略,分为三种:定时删除、定期删除、惰性删除。其中,定时删除和定期删除是主动删除策略,惰性删除是被动删除
阅读全文
摘要:MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。 主从复制原理 执行步骤:
阅读全文
摘要:MySQL在未启用分区功能时,数据库的单个表内容是以单个文件的形式存放在文件系统上的。当启用分区功能后,MySQL将按用户指定的规则将单个表内容分割成几个文件存放在文件系统上。水平分区是将表的数据按行分割成不同的数据文件,分片要遵循完备性原则(所有数据必须映射到某个片段上)、可重构性原则(所有分片数
阅读全文
摘要:重做日志(redo log) 内容:物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。 作用:确保事务的持久性。redo日志记录事务执行后的状态,用来恢复未写入data file的已成功事务更新的数据。防止在发生故障的时间点,尚
阅读全文
摘要:1.查看mysql运行状态 Debian 上运行命令 service mysql status;在RedHat 上运行命令 service mysqld status 2.开启或停止 MySQL 服务 service mysqld start 开启服务; service mysqld stop 停止
阅读全文
摘要:从数据操作的粒度上可以分为如下三种: 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度
阅读全文
摘要:事务是由一组SQL语句组成的逻辑处理单元,具有4个属性,通常简称为事务的ACID属性。 A (Atomicity) 原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行
阅读全文
摘要:1.Mysql逻辑架构 见 MySQL 逻辑体系架构 1.客户端请求:客户端/服务端通信协议是“半双工”的,再任一时刻,要么是服务器向客户端发送数据,要么是客户端向服务器发送数据 2.查询缓存:在解析一个查询语句前,如果缓存是打开的,那么MySQL会检查这个查询语句是否命中查询缓存中的数据。 3.语
阅读全文
摘要:ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是
阅读全文
摘要:APM (ApplicationPerformance Management) 即应用性能管理,致力于监控和管理应用软件性能和可用性,通过监测和诊断复杂应用程序的性能问题,来保证应用程序的良好运行。主要特征有三个特征: 多级应用性能监控:覆盖通讯协议1-7层,通过事务处理过程监控、模拟等手段实现端到
阅读全文
摘要:一般来说,API网关有四大职能: 请求接入:作为所有API接口服务请求的接入点,管理所有的接入请求 业务聚合:作为所有后端业务服务的聚合点,所有业务服务都可以在这里被调用 中介策略:实现安全、验证、路由、过滤、流控、缓存等策略,进行一些必要的中介处理 统一管理:提供配置管理工具,对所有API服务的调
阅读全文
摘要:分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。目前比较常用的分布式事务解决方案包括强一致性的两阶段提交协议、三阶段提交协议以及最终一致性的可靠事件模式、补偿模式、阿里的TCC模式。 事务是指由一组操作组成的一个工作单元,这个工作单元具有原子性(atomicity)、一致性(
阅读全文
摘要:采用微服务架构后,当分布式系统到达一定量级时,每个环境都可能出错,因此在系统设计时应该考虑如何减轻故障的影响,如何从故障中快速恢复。一般从以下两点来考察系统的稳定性: 高可用:当前服务依赖的下游服务性能降低或者失败时,该服务怎么相应,是快速失败还是重试?大促时如何应对瞬间涌入的流量? 高并发:底层服
阅读全文
摘要:注册中心原理 注册中心主要涉及到三大角色:服务提供者、服务消费者、注册中心。它们之间的关系大致如下: 各个微服务在启动时,将自己的网络地址等信息注册到注册中心,注册中心存储这些数据。 服务消费者从注册中心查询服务提供者的地址,并通过该地址调用服务提供者的接口。 各个微服务与注册中心使用一定机制(例如
阅读全文
摘要:Docker内的文件系统是如何工作? Docker镜像是由多个文件系统(只读层)叠加而成,当启动一个容器的时候,Docker会加载只读镜像层并在其上(镜像栈顶部)添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只
阅读全文