08 2021 档案
摘要:1、前言在《从源码分析ReentrantLock原理》这一篇文章中分析了以非阻塞同步算法为基础实现的可重入独占锁ReentrantLock。所谓** “独占” 即同一时间只能有一个线程持有锁。而 “重入” 是指该线程如果持有锁,可以在同步代码块内再次请求占有锁而不被阻塞,线程重入后将AQS内部状态s
阅读全文
摘要:数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,统计数量操作更是经常被用到。关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是CO
阅读全文
摘要:一 condition 介绍及demoCondition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更
阅读全文
摘要:一、Semaphore是什么Semaphore 通常我们叫它信号量,可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。可以把它简单的理解成我们停车场入口立着的那个显示屏,每有一辆车进入停车场显示屏就会显示剩余车位减1,每有一辆车从停车场出去,显示屏上显示的剩余车辆就会加
阅读全文
摘要:1.RocketMQ的存储架构 1.1存储特点 消息主体以及元数据都存储在CommitLog当中 Consume Queue相当于kafka中的partition,是一个逻辑队列,存储了这个Queue在CommiLog中的起始offset,log大小和MessageTag的hashCode。 每次读
阅读全文
摘要:Buket Aggregations(桶聚合)不像metrics Aggregations(度量聚合)那样计算字段上的度量,而是创建文档桶,每个文件桶有效地定义一个文档集。除了bucket本身之外,bucket聚合还计算并返回“落入”每个bucket的文档的数量。与度量聚合相反,桶聚合可以嵌套子聚合
阅读全文
摘要:Metric聚合,主要针对数值类型的字段,类似于关系型数据库中的sum、avg、max、min等聚合类型。一、avg 平均值 对字段grade取平均值。对应的java示例如下: @Resource private RestHighLevelClient client ; @Test public v
阅读全文
摘要:虽然我们都知道有23个设计模式,但是大多停留在概念层面,真实开发中很少遇到。Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用:1、Builder模式,例如SqlSessionFactoryBuilde
阅读全文
摘要:1、实例代码在实例搭建文章中,通过 SqlSession 对象查询数据,可乐写了两种方法。①、常规的需要我们拼接 statement 方式;②、xxxMapper.interface 接口代理方式; 对应下面两种方法: //根据id查询person表数据 @Test public void test
阅读全文
摘要:第一步:读取配置文件 mybatis-config.xml 输入流第二步:根据输入流构建 SqlSessionFactory; 一.流程图如下所示: 二、代码剖析根据上面的时序图,我们分析根据源码分析每个步骤。①、获取配置文件输入流 InputStream inputStream = Resourc
阅读全文
摘要:一、建造者模式的概念建造者模式属于创建型设计模式。指的是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。建造者模式主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,
阅读全文
摘要:1. Redis6.0之前的版本真的是单线程吗?Redis在处理客户端的请求时,包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。但如果严格来讲从Redis4.0之后并不是单线程,除了主线程外,它也有后台线程在处理一些
阅读全文
摘要:CommitLog消息内容原文的存储文件,同Kafka一样,消息是变长的,顺序写入,生成规则:每个文件的默认1G =1024 * 1024 * 1024,commitlog的文件名fileName,名字长度为20位,左边补零,剩余为起始偏移量;比如00000000000000000000代表了第一个
阅读全文
摘要:Spring Boot的出现,得益于“习惯优于配置”的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成),这是基于Spring 4.x提供的按条件配置Bean的能力。我们看到,MyApplication作为入口类,入口类中有一个main方法,这个方法其实就是一个标准的Java应用的
阅读全文
摘要:为何对慢SQL进行治理从数据库角度看:每个SQL执行都需要消耗一定I/O资源,SQL执行的快慢,决定资源被占用时间的长短。假设总资源是100,有一条慢SQL占用了30的资源共计1分钟。那么在这1分钟时间内,其他SQL能够分配的资源总量就是70,如此循环,当资源分配完的时候,所有新的SQL执行将会排队
阅读全文
摘要:其实map主要是操作集合中的每一个元素1.对象列表 - >字符串列表 List<String> collect = staff.stream().map(x -> x.getName()).collect(Collectors.toList()); 2.对象列表 - >其他对象列表 List<Sta
阅读全文
摘要:list转map在Java8中stream的应用1.利用Collectors.toMap方法进行转换 public Map<Long, String> getIdNameMap(List<Account> accounts) { return accounts.stream().collect(Co
阅读全文
摘要:链接地址:https://www.cnblogs.com/-guz/p/10258557.htmlhttps://www.jianshu.com/p/b30955885e6d
阅读全文