07 2021 档案
摘要:构建对象 class User{ private String addr } 将多个User集合中的addr按照;分割合并成一个字符串list List<User> uList = Lists.newArrayList(); User u1 = new User(); u1.setAddr("a1;
阅读全文
摘要:Elasticsearch是一个分布式文档存储。Elasticsearch不会将信息存储为列数据的行,而是存储已序列化为JSON文档的复杂数据结构。当集群中有多个Elasticsearch节点时,存储的文档将分布在集群中,并且可以从任何节点立即访问。存储文档时,将在1秒钟内几乎实时地对其进行索引和完
阅读全文
摘要:computeIfAbsent // 方法定义 default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) { ... } // java8之前。从map中根据key获取value操作可能会有下
阅读全文
摘要:Java从JDK1.5开始支持枚举,也就是说,Java一开始是不支持枚举的,就像泛型一样,都是JDK1.5才加入的新特性。通常一个特性如果在一开始没有提供,在语言发展后期才添加,会遇到一个问题,就是向后兼容性的问题。像Java在1.5中引入的很多特性,为了向后兼容,编译器会帮我们写的源代码做很多事情
阅读全文
摘要:前言Elasticsearch 存储的基本单元是shard, ES中一个Index 可能分为多个shard, 事实上每个shard 都是一个Lucence 的Index,并且每个Lucence Index 由多个Segment组成, 每个Segment事实上是一些倒排索引的集合, 每次创建一个新的D
阅读全文
摘要:java validation内没有对枚举的校验工具,但是离散的枚举值校验确实是有必要的,这里列两种枚举的校验方法,实际大同小异。首先,javax.validation包是提供了方便的自定义校验的入口的,就是javax.validation.ConstraintValidator。1. 对离散值(非
阅读全文
摘要:注解概念:Java 注解(Annotation),是 JDK5.0 引入的一种注释机制。Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。注解可以被看作是对一个类/方法的一个扩展的模版,按照注解类中的规则,处理不同的逻
阅读全文
摘要:主分片修改不了(创建的时候已经确定了),副本分片可以修改数量 写流程:协调节点--》请求转换到指定的节点--》主分片保存数据--》主分片需要将数据发送副本-->副本保存后,进行反馈,主分片进行反馈--客户端获取反馈 读流程:客户端发送查询请求到协调节点,协调节点计算数据所在的分片以及全部的副本位置s
阅读全文
摘要:至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD)。在互联网开发“小步快跑,迭代试错”的大环境下,DDD似乎是一种比较“古老而缓慢”的思想。然而,由于互联网公司也逐渐深
阅读全文
摘要:(一) 强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: Object strongReference = new Object(); 当内存空间不足时,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终
阅读全文
摘要:SearchSearch执行的时候实际上是分为两个步骤运作的:Query 和 Fetch。Query阶段 Fetch 排序es默认采用相关性算分排序,用户可以通过设定sorting参数来自行设定排序规则。 GET book/_search { "query": { "bool": { "must":
阅读全文
摘要:一、Query CacheQuery Cache也称为Filter Cache,顾名思义它的作用就是对一个查询中包含的过滤器执行结果进行缓存。比如我们常用的term,terms,range过滤器都会在满足某种条件后被缓存,注意,这里的bool过滤器是不会被缓存的,但bool过滤器包含的子query
阅读全文
摘要:安装说明,安装三个节点,一个master ,两个slave。集群名称 ip-端口myEsCluster (master) 127.0.0.1:9500myEsCluster(slave) 127.0.0.1:9600myEsCluster(slave) 127.0.0.1:9700 集群名称ip-端
阅读全文
摘要:HTTP协议简介超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定
阅读全文
摘要:HTTP 协议中没有加密机制,但可以通 过和 SSL(Secure Socket Layer, 安全套接层 )或 TLS(Transport Layer Security, 安全层传输协议)的组合使用,加密 HTTP 的通信内容。属于通信加密,即在整个通信线路中加密。HTTP + 加密 + 认证 +
阅读全文
摘要:常见术语文档 Document:用户存储到es中的数据文档。类比数据库中表中的一条数据,是es中的最小单元。索引 Index:由具有相同字段的文档列表组成。类比数据库中的表。DocumentDocument 由 json Object 组成。每个字段可以指定类型。每个Document还包含元数据。字
阅读全文
摘要:见其名知其意,有倒排索引,对应肯定,有正向索引。正向索引(forward index),反向索引(inverted index)更熟悉的名字是倒排索引。在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索引库中,关键词也已经转换为关键词ID)。例如“文档1”
阅读全文
摘要:1、使用dmesg命令查看系统日志dmesg |grep -E 'kill|oom|out of memory',可以查看操作系统启动后的系统日志,这里就是查看跟内存溢出相关联的系统日志。2、这时候,需要启动项目,使用ps命令查看进程ps -aux|grep java 或者是 ps -ef|grep
阅读全文
摘要:一、线程池的拒绝策略线程池中,有三个重要的参数,决定影响了拒绝策略:corePoolSize - 核心线程数,也即最小的线程数。workQueue - 阻塞队列 。 maximumPoolSize - 最大线程数当提交任务数大于 corePoolSize 的时候,会优先将任务放到 workQueue
阅读全文
摘要:(一)Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行。当有多个线程访问共享数据的时候,就需要对线程进行同步。线程中的几个主要方法的比较:Thread类的方法:sleep(),yie
阅读全文
摘要:Redis 底层是双向链表值在键在 值光键亡list的数据结果是是quicklist元素较少的情况下 会使用一块连续的内存存储,这个结构是ziplist也就是压缩链表 它讲所有的元素紧挨着一起存储 分配的是一块连续的内存 当数据量比较多的时候才改成quicklist 因为普通的链表需要的附加指针空间
阅读全文
摘要:mysql里中文占多少个字节?1. 一个中文汉字占多少字节与编码有关:UTF8:一个中文汉字=3个字节,英文字母1字节,每个字符最多占3字节;GBK:一个中文汉字=2个字节,英文字母占1字节,每个字符最多占2个字节;2.varchar(n)能存储几个汉字?varchar(n)表示n个字符,无论汉字和
阅读全文
摘要:查找所有符合给定模式 pattern 的 key 。KEYS * 匹配数据库中所有 key 。KEYS h?llo 匹配 hello , hallo 和 hxllo 等。KEYS h*llo 匹配 hllo 和 heeeeello 等。KEYS h[ae]llo 匹配 hello 和 hallo ,
阅读全文
摘要:Redis4.0新增了非常实用的lazy free特性,从根本上解决Big Key(主要指定元素较多集合类型Key)删除的风险。笔者在redis运维中也遇过几次Big Key删除带来可用性和性能故障。本文分为以下几节说明redis lazy free: lazy free的定义 我们为什么需要laz
阅读全文
摘要:Redis 大keyRedis使用过程中经常会有各种大key的情况, 比如: 单个简单的key存储的value很大 hash, set,zset,list 中存储过多的元素(以万为单位) 由于redis是单线程运行的,如果一次操作的value很大会对整个redis的响应时间造成负面影响,所以,业务上
阅读全文
摘要:平时开发中,大家更多的关注的是线程池的创建、任务的提交和执行。往往会忽略线程池的关闭,甚至忘记调用shutdown()方法,导致内存溢出。大多知道需要调用shutdown()关闭线程池,也少研究其真正的关闭过程。首先看源码中的一句注释: A pool that is no longer refere
阅读全文
摘要:InheritableThreadLocal使用在《ThreadLocal内存泄露总结》中ThreadLocal有一个问题就是子线程不能继承父线程的变量。那么本篇所分析的InheritableThreadLocal类就是为了解决这个问题诞生的。ThreadLocal问题演示 public stati
阅读全文
摘要:线程池可以把线程复用起来,减少线程创建销毁的时间和资源消耗,提高了程序任务执行的吞吐率。就像线程属于全局使用的资源一样,线程池一般也是全局性,对整个应用进程的线程复用做有效的管理。设计者一般都会把线程池作为类的静态成员或者单例成员,存活于整个进程的生命周期。但是还是例外地看到了类似这样的代码,比如放
阅读全文
摘要:多线程通讯题目: 昨天看了一家公司的笔试题,问题生产、销售面包问题,题目是这样的:生产者销售面包,但是因为疫情原因,只能一个一个的生产,生产好之后在通知消费者买,题目大意是这样的。其实这就是一道多线程通讯问题,代码如下所示: package com.springboot.study.tests.th
阅读全文
摘要:热Key问题所谓热key问题就是,突然有几十万的请求去访问redis上的某个特定key。那么,这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服务器宕机。那接下来这个key的请求,就会直接怼到你的数据库上,导致你的服务不可用。怎么发现热key 方法一:凭借业务经验,进行预估哪些是热
阅读全文
摘要:一般会经历以下几个过程:1、首先,在浏览器地址栏中输入url2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。3、在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。4、浏览器向服务器发起tcp连接,与浏览器建
阅读全文