07 2022 档案

摘要:IO介绍 阻塞IO 和 非阻塞IO 这两个概念是程序级别的。主要描述的是程序请求操作系统进行IO操作后,如果IO资源没有准备好,那么程序该如何处理的问题: 前者等待;后者继续执行(并且使用线程一直轮询,直到有IO资源准备好了) 同步IO 和 非同步(异步)IO 这两个概念是操作系统级别的。主要描述的 阅读全文
posted @ 2022-07-31 21:32 堤苏白 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2022-07-28 17:03 堤苏白 阅读(7) 评论(0) 推荐(0) 编辑
摘要:Kafka Kafka是一个分布式消息系统,由linkedin使用scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。具有高水平扩展和高吞吐量。 阿里巴巴的Metal,RocketMQ都有Kafka的影子,他们要么改造了Kafk 阅读全文
posted @ 2022-07-28 17:03 堤苏白 阅读(122) 评论(0) 推荐(0) 编辑
摘要:DUBBO使用 服务提供者 首先,我们先把服务端的接口写好,因为其实 dubbo 的作用简单来说就是给消费端提供接口。 实现服务接口 1 /** 2 * 要暴露的服务接口 3 */ 4 5 6 public interface ProviderService { 7 8 String SayHell 阅读全文
posted @ 2022-07-26 16:06 堤苏白 阅读(51) 评论(0) 推荐(0) 编辑
摘要:RPC远程过程调用 RPC协议(Remote Procedure Call Protocol ),远程过程调用协议 ,它是一种通过网络从远程计算机程序上请求服务 , 而不需要底层网络技术的协议 .RPC协议定义了传输的方式(http协议)和传输数据格式(调用哪个方法)。 RPC OVER HTTP 阅读全文
posted @ 2022-07-25 19:57 堤苏白 阅读(49) 评论(0) 推荐(0) 编辑
摘要:问题描述 随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的 Java API 并不能提供分布式锁的能力。为了解决这个问题就需要一种跨 JVM 的互斥机制来控制共享资源的访问,这就是分 阅读全文
posted @ 2022-07-25 17:09 堤苏白 阅读(258) 评论(0) 推荐(0) 编辑
摘要:Redis集群(Redis-Cluster) Redis有四种模式,分别是单机版、主从复制模式、哨兵模式、以及集群模式。 Cluster模式 Cluster是真正的集群模式了,哨兵解决和主从不能自动故障恢复的问题,主机内存有限,主机写能力受限的问题,并且集群之前都是一台redis都是全量的数据,这样 阅读全文
posted @ 2022-07-24 17:48 堤苏白 阅读(490) 评论(0) 推荐(0) 编辑
摘要:Redis 的发布和订阅 1、redis客户端可以订阅任意数量的频道 2、当给这个频道发布消息后,消息就会发送给订阅的客户端 二、发布订阅命令行实现 1、 打开一个客户端订阅 channel1 subscribe channel1 2、打开另一个客户端,给 channel1 发布消息 hello p 阅读全文
posted @ 2022-07-23 21:24 堤苏白 阅读(111) 评论(0) 推荐(0) 编辑
摘要:1. 是什么 反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。 2. 使用步骤 2.1 调整为一主二仆模式,6379 带着 6380 、6381 2.2 自定义的/myredis 目录下新建 sentinel.conf 文件,名字绝不能错 2.3 配置哨兵, , 阅读全文
posted @ 2022-07-23 21:15 堤苏白 阅读(126) 评论(0) 推荐(0) 编辑
摘要:1.是什么 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave 以读为主。默认情况下,每台Redis服务器都 阅读全文
posted @ 2022-07-23 21:05 堤苏白 阅读(223) 评论(0) 推荐(0) 编辑
摘要:1.Redis 事务定义 Redis 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 Redis 事务的主要作用就是串联多个命令防止别的命令插队。 2. Multi 、Exec 、discard 从输入 Multi 命 阅读全文
posted @ 2022-07-23 19:16 堤苏白 阅读(39) 评论(0) 推荐(0) 编辑
摘要:Redis持久化之 RDB 1.是什么 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的 Snapshot 快照,它恢复时是将快照文件直接读到内存里。 2.备份是如何执行的 Redis 会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了 阅读全文
posted @ 2022-07-23 19:02 堤苏白 阅读(30) 评论(0) 推荐(0) 编辑
摘要:redis是一个单线程的key-value的内存数据库,基于内存运行并支持持久化的nosql数据库。 redis有16个数据库, 默认使用的是第0个,使用select切换数据库 基本数据类型 Redis操作键(key) keys * :查看当前库所有key exists key:判断某个key是否存 阅读全文
posted @ 2022-07-23 18:22 堤苏白 阅读(24) 评论(0) 推荐(0) 编辑
摘要:一、事务 ACID原则 即Atomicity(原子性) Consistency(一致性), Isolation(隔离性), Durability(持久性) 原子性:要执行的事务是一个独立的操作单元,要么全部执行,要么全部不执行 一致性:事务的一致性是指事务的执行不能破坏数据库的一致性,一致性也称为完 阅读全文
posted @ 2022-07-22 16:53 堤苏白 阅读(129) 评论(0) 推荐(0) 编辑
摘要:MVCC ​MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式 阅读全文
posted @ 2022-07-22 15:39 堤苏白 阅读(100) 评论(0) 推荐(0) 编辑
摘要:1.sql中 union 和 union all 的用法 如果我们需要将两个 select 语句的结果作为一个整体显示出来(结果集相加),我们就需要用到 union 或者 union all 关键字。union (或称为联合)的作用是将多个结果合并在一起显示出来。 union 和 union all 阅读全文
posted @ 2022-07-20 16:37 堤苏白 阅读(979) 评论(0) 推荐(0) 编辑
摘要:JOIN用于连表查询,主要有5种用法。 一、笛卡尔积:CROSS JOIN CROSS JOIN使两张表的所有字段直接进行笛卡尔积,假设表1有m条数据,表2有n条数据,则结果数量为m*n条 SELECT * FROM tab1 CROSS JOIN tab2 二、内连接:INNER JOIN 内连接 阅读全文
posted @ 2022-07-20 16:31 堤苏白 阅读(800) 评论(0) 推荐(0) 编辑
摘要:explain可用来分析SQL的执行计划 结果输出类型: id 该语句的唯一标识。如果explain的结果包括多个id值,则数字越大越先执行;而对于相同id的行,则表示从上往下依次执行。 select_type 查询类型,有如下几种取值: table 表示当前这一行正在访问哪张表,如果SQL定义了别 阅读全文
posted @ 2022-07-20 16:23 堤苏白 阅读(489) 评论(0) 推荐(0) 编辑
摘要:InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是得在的,而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差了几个数量级,所以当我们 阅读全文
posted @ 2022-07-19 16:38 堤苏白 阅读(255) 评论(0) 推荐(0) 编辑
摘要:”三次握手”的详解 所谓的三次握手即TCP连接的建立。这个连接必须是一方主动打开,另一方被动打开的。 以下为客户端主动发起连接的图解: 握手之前主动打开连接的客户端结束CLOSED阶段,被动打开的服务器端也结束CLOSED阶段,并进入LISTEN阶段。随后开始“三次握手”: (1)首先客户端向服务器 阅读全文
posted @ 2022-07-18 21:02 堤苏白 阅读(38) 评论(0) 推荐(0) 编辑
摘要:MySQL的主从复制原理以及流程 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中; 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中; 从:sql执行线程——执行relay 阅读全文
posted @ 2022-07-18 17:47 堤苏白 阅读(133) 评论(0) 推荐(0) 编辑
摘要:1.Spring和Mybatis整合之后为什么一级缓存会失效? 如果我们没有添加@Transactional注解,Spring认为我的每一次查询都都是相互独立的,便开启了三次不同的事务也即是创建了三个不同的sqlSession对象。即无法使用到MyBatis的一级缓存。 如果我们添加了@Transa 阅读全文
posted @ 2022-07-15 16:01 堤苏白 阅读(58) 评论(0) 推荐(0) 编辑
摘要:1.@PostConstruct 关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种: 通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 通过 在xml中定义init-method 和 destory-method方法 阅读全文
posted @ 2022-07-13 15:46 堤苏白 阅读(23) 评论(0) 推荐(0) 编辑
摘要:mybatis常⽤的标签有: 常用属性: 属性描述 id 在命名空间中唯一的标识符,被用来引用这条语句 parameterType 传入这条语句的参数的类全限定名或别名 resultType 期望从这条语句中返回结果的类全限定名或别名,resultType 和 resultMap 之间只能同时使用一 阅读全文
posted @ 2022-07-12 20:44 堤苏白 阅读(26) 评论(0) 推荐(0) 编辑
摘要:Mybatis常见的注解 @MapperScan 该注解存在着争议,但不可否认的是这个注解确实是Mybatis的注解,是为了集成Spring而写的注解。该注解主要是扫描某个包目录下的Mapper,将Mapper接口类交给Spring进行管理。 在启动类上使用: @SpringBootApplicat 阅读全文
posted @ 2022-07-12 20:43 堤苏白 阅读(53) 评论(0) 推荐(0) 编辑
摘要:java是面向对象的,所以不同的配置文件(xml、properties)都会生成java类,一个配置文件就是一个java对象,解析配置文件就是生成java对象,获得java的各种属性信息就可以得到各种配置信息 传统JDBC链接数据库的缺点: #和$的区别 1、#{}对传入的参数转换为占位符'?',传 阅读全文
posted @ 2022-07-12 20:07 堤苏白 阅读(186) 评论(0) 推荐(0) 编辑
摘要:1.Semaphore (信号量) Semaphore 是一种基于计数的信号量,用来控制同时访问的线程数。 它可以设定一个阈值,基于此,多个线程竞争获取许可信号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。Semaphore 可以用来构建一些对象池,资源池之类的,比如数据库连接池 阅读全文
posted @ 2022-07-09 16:27 堤苏白 阅读(50) 评论(0) 推荐(0) 编辑
摘要:AQS代码 //核心属性 static final class Node { static final Node SHARED = new Node(); static final Node EXCLUSIVE = null; static final int CANCELLED = 1; stat 阅读全文
posted @ 2022-07-08 16:53 堤苏白 阅读(915) 评论(0) 推荐(0) 编辑
摘要:ReentantLock 进行加锁(每个线程都访问的是同一个ReentantLock 对象): 第一个获取锁的线程就做了两件事情: 1、设置AbstractQueuedSynchronizer的state为1 2、设置AbstractOwnableSynchronizer的thread为当前线程 这 阅读全文
posted @ 2022-07-08 16:53 堤苏白 阅读(332) 评论(0) 推荐(0) 编辑
摘要:对象内存结构(oop) 对象内存结构16B:对象头,对象实例数据,对齐填充位。对象头中有锁标识, 64位OS:new Object()时对象为16B,对象头占12B,对象无实例数据,对齐填充4B。 对象头:markWord(8B),类指针(被压缩占4B),(数组长度)。 markword内部结构 T 阅读全文
posted @ 2022-07-07 16:42 堤苏白 阅读(189) 评论(0) 推荐(0) 编辑
摘要:线程池:是一种利用池化技术思想来实现的线程管理技术,主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。 线程池哪有写优点呢? 降低资源消耗:通过池化技术重复利用已创建的线程,降低线程创建和销毁造成的损耗。 提高响应速度:任务到达时,无需等待线程创建即可立即执行。 提高线程 阅读全文
posted @ 2022-07-06 16:30 堤苏白 阅读(102) 评论(0) 推荐(0) 编辑
摘要:并发编程又称为多线程编程,包括同步:线程之间协作;互斥:独占锁 ; 分工:大任务拆解。 并发特性:原子性、可见性、有序性 java线程为内核级线程,jvm不具备直接调度CPU的权限,因为Thread类的start等方法内调用的都是native方法,native方法底层是c++实现的。 Java Th 阅读全文
posted @ 2022-07-04 19:32 堤苏白 阅读(163) 评论(0) 推荐(0) 编辑
摘要:一.lambda表达式 lambda是用来代替匿名内部类,实现函数式接口的。编码时,我们一般尽可能轻量级的将代码封装为数据,传统的解决方案是通过接口和实现类(匿名内部类)实现,这中方式存在语法冗余,this关键字,变量捕捉,数据控制等问题。 lambda表达式仅能放入如下代码: 预定义使用了 @Fu 阅读全文
posted @ 2022-07-03 16:25 堤苏白 阅读(81) 评论(0) 推荐(0) 编辑
摘要:1. 什么是阻塞队列? 阻塞队列(BlockingQueue) 是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线 阅读全文
posted @ 2022-07-01 14:17 堤苏白 阅读(52) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示