06 2021 档案
摘要:原文地址 :https://www.jianshu.com/p/486b0965c296 Linux的IO的分类 同步IO模型 阻塞I/O(blocking IO) 非阻塞I/O (nonblocking I/O) I/O 复用 (I/O multiplexing) 信号驱动I/O (signal
阅读全文
摘要:用户空间和内核空间 对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。 操作系统的核心是内核(kernel),它独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证内核的安全,
阅读全文
摘要:磁盘IO的分类 缓存IO(标准IO) 缓存I/O又被称作标准I/O,大多数文件系统的默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地址空间。 读操作:操作系统检查内核的缓冲区有没有需要的数据,如果已经缓存了,那么
阅读全文
摘要:spring主要功能 bean 加载的简单过程 spring容器存放数据分析 Bean加载过程 PostProcessor的作用 对象创建的过程 spring中对象创建方式 spring中重要的接口 BeanFactory和FactoryBean的区别 都是用来创建对象,当使用BeanFactory
阅读全文
摘要:BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。 ApplicationContext接口,它由BeanFactory接口派生而
阅读全文
摘要:多shard场景下相关度分数(relevance score)不准确问题 在es中检索某个field中是否包含关键字,会使用到TF/IDF算法来计算相关度分数 计算相关度分数主要从以下三点考虑 在一个doc中field中关键字出现的次数(越大相关度越高) 在所有doc中field中关键字出现的次数(
阅读全文
摘要:ES的Java API Transport Client:TransportClient不推荐使用,而推荐使用Java High Level REST Client,并将在Elasticsearch 8.0中删除。 JAVA REST Client Java Low Level REST Clien
阅读全文
摘要:什么是相关度 相关性描述的是⼀个⽂档和查询语句匹配的程度。ES 会对每个匹配查询条件的结果进⾏算分_score。_score 的评分越高,相关度越高。 信息检索工具性能的3大指标 查准率 Precision:尽可能返回较少的无关文档; 查全率 Recall:尽可能返回较多的相关文档; 排序 Rank
阅读全文
摘要:分词器的概念 Analysis和Analyzer Analysis:文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词 Analysis是通过Analyzer来实现的。 当一个文档被索引时,每个Field都可能会创建一个倒排索引(Mapping可以设置不索引该Field)。 倒
阅读全文
摘要:Mapping 概念 mapping就是ES数据字段field的type元数据,ES在创建索引的时候,dynamic mapping会自动为不同的数据指定相应mapping,mapping中包含了字段的类型、搜索方式(exact value或者full text)、分词器等 查看Mapping #查
阅读全文
摘要:在http://192.168.232.128:5601/app/dev_tools#/console连接中进行直接数据操作(安装了Kibana) 没有安装的直接连接也可用postman直接连接ES 新增数据 #相关测测试数据 PUT /product/_doc/1 { "name" : "xiao
阅读全文
摘要:ES的容错机制 假设场景,现在一共有9个shard,其中3个shard 6个replica,一共有三个es节点,node1是master节点,具体如下图: 如果下载master节点挂掉,shard1,replica2-1,replica3-1 节点会丢失,在master节点挂掉的一瞬间 shard1
阅读全文
摘要:环境 JDK 8 centos 7 elasticsearch的基于lucene开发, lucene是java语言开发,因此需要java环境 安装es 安装包下载 https://www.elastic.co/cn/downloads/elasticsearch 解压安装包 tar -zxvf el
阅读全文
摘要:什么是搜索引擎 搜索引擎,即指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统.小到一个网站的内部搜索功能,如博客文章的搜索,电商平台商品的搜索,大到提供全网搜索的网站,如谷歌、百度等 倒排索引 索引就类似于目
阅读全文
摘要:MySQL优化官网参考 如何优化 设计数据库时:数据库表、字段的设计,存储引擎 利用好MySQL自身提供的功能,如索引等 横向扩展:MySQL集群、负载均衡、读写分离 SQL语句的优化(收效甚微) 字段设计 字段类型的选择,设计规范,范式,常见设计案例 存储IP地址 常规做法: varchar(15
阅读全文
摘要:分库分表前的问题 任何问题都是太大或者太小的问题,我们这里面对的数据量太大的问题。 用户请求量太大 因为单服务器TPS,内存,IO都是有限的。 解决方法:分散请求到多个服务器上; 其实用户请求和执行一个sql查询是本质是一样的,都是请求一个资源,只是用户请求还会经过网关,路由,http服务器等。 单
阅读全文
摘要:索引是什么? 索引是什么了,查阅了官方文档。官方文档写了索引的作用和没有索引会带来全表扫描,非常费时间。 Indexes are used to find rows with specific column values quickly. Without an index, MySQL must b
阅读全文
摘要:为什么需要主从复制? 在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。 做数据的热备 架构的扩展。业务量越来越大,I/O访问频
阅读全文
摘要:调优原则 在性能优化时,我们必须遵循一定的原则,否则,有可能得不到正确的调优结果。主要有以下几个方面: 对性能进行分析时,要多方面分析系统的资源瓶颈所在,因为系统某一方面性能低,也许并不是它自己造成的,而是其他方面造成的。如CPU利用率是100%时,很可能是内存容量太小,因为CPU忙于处理内存调度。
阅读全文
摘要:为什么要有事务 数据库引入事务的主要目的是事务会把数据库会从一种一致状态转换到另一种一致状态,数据库提交工作时可以确保要么所有修改都保存,要么所有修改都不保存。 事务的四大特性(ACID) A(Atomicity) 原子性 C(Consistency) 一致性 I(Isolation) 隔离性 D(
阅读全文
摘要:title: MySQL的Sql执行流程 date: 2021-03-09 14:47 tags: MySQL categories: MySQL description: MySQL的Sql执行流程 hidden: false abbrlink: 6b5d697 updated: top: 执行流
阅读全文
摘要:MySQL的约束 排序查询 语法:order by 子句 order by 排序字段1 排序方式1 , 排序字段2 排序方式2... 排序方式: ASC:升序,默认的。 DESC:降序。 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 聚合函数 将一列数据作为一个整体,进行纵向的计算
阅读全文
摘要:操作数据库:CRUD C(Create):创建 创建数据库: create database 数据库名称; 创建数据库,判断不存在,再创建: create database if not exists 数据库名称; 创建数据库,并指定字符集 create database 数据库名称 charact
阅读全文
摘要:相关环境 操作系统:centos7 mysql版本:mysql 5.7 MySQL 5.7 的安装 检测系统是否自带安装mysql yum list installed | grep mysql 删除系统自带的mysql及其依赖(防止冲突) #此处对应的是自身版本 yum -y remove mys
阅读全文
摘要:Executor框架 线程池就是线程的集合,线程池集中管理线程,以实现线程的重用,降低资源消耗,提高响应速度等。线程用于执行异步任务,单个的线程既是工作单元也是执行机制,从JDK1.5开始,为了把工作单元与执行机制分离开,Executor框架诞生了,他是一个用于统一创建与运行的接口。Executor
阅读全文
摘要:ThreadLocal spring的声明式事务会使用到,保证当前线程中数据库连接是同一个连接 强引用 只要一对象有强引用,垃圾回收机制不会回收 软引用 在内存不够用时,会优先回收只有软引用的内存空间,主要是做缓存用 弱引用 只要是触发垃圾回收机制进行回收,只具有弱引用的对象就会被回收 tomcat
阅读全文
摘要:概述 AbstractQueuedSynchronizer抽象队列同步器简称AQS,它是实现同步器的基础组件,juc下面Lock的实现以及一些并发工具类就是通过AQS来实现的,这里我们通过AQS的类图先看一下大概,下面我们总结一下AQS的实现原理。先看看AQS的类图。 (1)AQS是一个通过内置的F
阅读全文
摘要:ReentrantLock(可重入锁) 概念 ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重入性,synchr
阅读全文
摘要:volatile 作用 保证线程可见性 使用volatile,将会强制所有线程都去堆内存中读取变量的值 -MESI(CPU的缓存一致性协议) 详细可看 https://www.cnblogs.com/z00377750/p/9180644.html 禁止指令重排序(CPU级别的支持) cpu级别增加
阅读全文
摘要:分布式锁 分布式锁的思路是每个客户端都在某个目录下注册一个临时有序节点,每次最小的节点会获取锁,当前节点会去监听上一个较小节点,如果较小节点失效之后,就会去获取锁。 java原生zookeeper客户端 引入jar包 <dependency> <groupId>org.apache.zookeepe
阅读全文
摘要:官方文档地址 Zookeeper介绍 Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 Zooke
阅读全文
摘要:Zab算法描述 Zab协议 的全称是 Zookeeper Atomic Broadcast (Zookeeper原子广播)。 Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。 Zab协议是为分布式协调服务Zookeeper专门设计的一种 支持崩溃恢复 的 原子广播协议 ,是Zo
阅读全文
摘要:paxos目的 Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一,其解决的问题就是在分布式系统中如何就某个值(决议)达成一致。 Paxos算法的前提假设是不存在拜占庭将军问题,即: 信道是安全的(信道可靠),发出的信号不会被篡改,因为Pax
阅读全文
摘要:分布式的问题 分布式因为网络的不确定性,节点故障等情况,会带来各种复杂的问题。我们在学习分布式的相关理论时,一定要明确这样一个道理,就是:网络不可靠,网络分区以及节点宕机是常态,另外网络带宽资源是及其珍贵的,我们必须在网络不可靠、分区以及节点宕机的前提下,构建高性能、高可用的分布式系统。 分布式环境
阅读全文
摘要:安装环境 系统:CentOS 7 Java环境: JDK8 下载及安装 Zookeeper有单机、伪集群、集群三种部署方式,我使用的Zookeeper版本是:Zookeeper-3.5.9 下载Zookeeper wget https://apache.claz.org/Zookeeper/Zook
阅读全文
摘要:概要 当redis集群的主节点故障时,Sentinel集群将从剩余的从节点中选举一个新的主节点,有以下步骤: 故障节点主观下线 故障节点客观下线 Sentinel集群选举Leader Sentinel Leader决定新主节点 选举过程 主观下线 Sentinel集群的每一个Sentinel节点会定
阅读全文
摘要:引言 系统中修改已有数据时,需要先读取,然后进行修改保存,此时很容易遇到并发问题。由于修改和保存不是原子操作,在并发场景下,部分对数据的操作可能会丢失。 在单服务器系统我们常用本地锁来避免并发带来的问题,然而,当服务采用集群方式部署时,本地锁无法在多个服务器之间生效,这时候保证数据的一致性就需要分布
阅读全文
摘要:1. Redis 的击穿,穿透,雪崩 1.1 Redis 击穿 产生原因:在高并发的情况下,在某一时间点,在高频获取的key在此时过期,大量请求直接请求到服务器上,导致缓存击穿 解决方案: 可以将热点数据设置为永远不过期; 基于 redis or zookeeper 实现互斥锁,等待第一个请求构建完
阅读全文
摘要:1.单节点redis的缺陷 单点故障导致服务不可用 redis的容量优先 redis的服务压力 2. 集群的AKF原则 AKF原则 x轴:全量,镜像 Y轴:业务,功能 Z轴:优先级,逻辑再拆分 2.1 redis使用AKF原则扩展为集群产生的问题 通过AKF一变多 :数据一致性问题 X轴:redis
阅读全文
摘要:1. redis的持久化方式 RDB持久化 原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化 AOF持久化 原理是将Reids的操作日志以追加的方式写入文件 两种持久化方式区别 二者选择的标准,就是看系统是愿意牺牲一些性能,换取更高的缓存一致性(aof),还是愿意写操作频繁的
阅读全文
摘要:1.Redis 管道(Pipelining) Redis 管道(Pipelining) 一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。 重要说明: 使用管道发送命令时,服务器将被迫回复一个队列答复,占用很多
阅读全文
摘要:Liunx的IO BIO 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有到达(比如,还没有收到一
阅读全文
摘要:1.redis相关介绍 redis中文网 1.1 redis的介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序
阅读全文
摘要:操作系统为centOs7 redis为6.0.8版本 1.当Make命令提示无cc环境时需要进行安装Gcc安装包重新安装,同时需要执行make distclean清理相关文件,再执行make命令 //一般错误为gcc套装错误 yum install cpp yum install binutils
阅读全文
摘要:操作系统为centOS7 redis为6.0.8版本 安装wget命令 yum install wget 安装GCC包(redis是c语言编写,liunx需要安装相关软件) yum install gcc 在指定目录获取安装包(或者下载之后移动到指定目录 ) https://redis.io/dow
阅读全文
摘要:线程的状态图 新建(NEW):新创建了一个线程对象。 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。 运行(RUNNING):可运行状态(runnable)的线程获
阅读全文

浙公网安备 33010602011771号