自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

你今天真好看呀

心若有所向往,何惧道阻且长

  • 博客(1353)
  • 收藏
  • 关注

原创 Spring - Spring 注解相关面试题总结

}用指定Spring容器扫描的包路径。它可以自动扫描指定包及其子包下的所有类,并将标记为@Component、@Controller、@Service、@Repository等注解的类注册为Spring容器中的Bean。如果不加@Component注解,那么OtherBean就不会被Spring容器扫描注册,dataSource也不会注册为Spring容器的bean了。

2023-03-25 16:28:31 69

原创 ElasticSearch - SpringBoot整合ES:实现搜索结果排序 sort

具体来说,TF-IDF 算法会根据查询条件中每个词的词频(TF)和文档集合中包含该词的文档数的倒数(IDF)来计算每个查询条件与文档的匹配程度,然后将所有查询条件的匹配程度加权求和,得到文档的相关性得分。需要注意的是,相关性排序并不一定是最优的排序方式,因为它只考虑了查询条件与文档的匹配程度,而没有考虑其他因素,例如文档的时间戳、文档的重要性等。在某些情况下,其他排序方式可能更适合。需要注意的是,如果要按照非文本类型的字段进行排序,需要将字段的类型设置为相应的数据类型,否则可能会出现排序错误的情况。

2023-03-25 12:48:26 89

原创 设计模式实战 - 工厂模式获取进程行为类型

【代码】设计模式实战 - 工厂模式获取进程行为类型。

2023-03-24 11:19:14 27

原创 ElasticSearch - SpringBoot整合ES:实现分页搜索 from+size、search after、scroll

ElasticSearch 向 my_index 索引中索引了 12 条文档:02. ElasticSearch 查询所有文档ElasticSearch 查询所有文档根据查询结果可以看出,集群中总共有12个文档,hits.total.value=12, 但是在 数组中只有 10 个文档。如何才能看到其他的文档?03. ElasticSearch size参数指定搜索结果的条数Elasticsearch 接受 和 参数:from 和 size 参数的默认值分别为 0 和 10,因此如果不指定这

2023-03-23 11:25:29 380

原创 ElasticSearch - SpringBoot整合ES:指定搜索结果返回的字段_source

在 ElasticSearch 中,可以使用 _source 字段来指定返回的字段。默认情况下,ElasticSearch 返回匹配文档的所有字段,但是可以通过 _source 字段来指定只返回需要的字段,这样可以减少网络传输和解析的开销,提高搜索性能。需要注意的是,如果某个字段被存储在索引中,但是没有被指定在 _source 字段中,那么在搜索结果中将无法获取该字段的值。在上面的示例中,我们使用 _source 字段来指定只返回 title 字段,同时使用 match 查询来搜索包含。

2023-03-20 21:44:08 230

原创 ElasticSearch - SpringBoot整合ES:解析搜索返回字段

部分告诉我们在查询中参与分片的总数,以及这些分片成功了多少个失败了多少个。如果我们遭遇到一种灾难级别的故障,在这个故障中丢失了相同分片的原始数据和副本,那么对这个分片将没有可用副本来对搜索请求作出响应。假若这样,Elasticsearch 将报告这个分片是失败的,但是会继续返回剩余分片的结果。:匹配的文档的分数。它衡量了文档与查询的匹配程度,默认情况下,首先返回最相关的文档结果,就是说,返回的文档是按照score 降序排列的。:与查询所匹配文档的_score的最大值。:匹配的文档的原始数据。

2023-03-20 19:42:23 1365

原创 ElasticSearch - ElasticSearch 索引的增删改查操作

我们可以通过索引一篇文档创建一个新的索引 ,这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射。如果我们需要对这个建立索引的过程确保这个索引有数量适中的主分片,并且在我们索引任何数据之前 ,分析器和映射已经被建立好,那就需要手动创建索引,在请求体里面传入设置或类型映射。在Elasticsearch中,可以使用PUT请求创建一个新的索引,并通过settings参数指定分片数量和副本数量。如下:我们创建了一个名为my_index的索引,并指定了3个分片和2个副本。

2023-03-20 17:56:23 20

原创 Spring - Spring Bean实例相关面试题总结

一个Spring Bean定义包含以下元素:① Bean的唯一标识符(ID):每个Bean都必须有一个唯一的ID,用于在Spring容器中标识该Bean。② Bean的类:指定要在Spring容器中创建的Bean的类。③ Bean的作用域(Scope):指定Bean的生命周期和可见范围。④ Bean的依赖关系:指定Bean与其他Bean之间的依赖关系,包括构造函数注入、Setter方法注入等。⑤ Bean的属性值:指定Bean的属性值,包括基本类型、引用类型、集合类型等。

2023-03-16 07:41:31 69

原创 ElasticSearch - 分片内部原理之动态更新索引、近实时搜索、持久化变更、段合并

倒排索引被写入磁盘后是不可改变的,它永远不会修改。不变性有重要的价值:① 不需要锁。如果你从来不更新索引,你就不需要担心多进程同时修改数据的问题。② 一旦索引被读入内核的文件系统缓存,便会留在哪里,由于其不变性。只要文件系统缓存中还有足够的空间,那么大部分读请求会直接请求内存,而不会命中磁盘。这提供了很大的性能提升。③ 其它缓存(像filter缓存),在索引的生命周期内始终有效。它们不需要在每次数据改变时被重建,因为数据不会变化。

2023-03-14 23:11:50 351

原创 Spring - Spring IoC容器相关面试题总结

Spring IOC容器是Spring框架的核心部分之一,它负责管理应用程序中的对象及其依赖关系。IOC 是一种设计模式,通过将对象的创建和依赖关系的管理交给容器来实现,从而降低了组件之间的耦合度,提高了代码的可维护性和可测试性。在 Spring 中,IOC 容器负责创建和管理 Bean 对象,Bean 是指在Spring 容器中被管理的对象。容器会根据配置文件或注解来创建Bean对象,并将它们注入到需要它们的地方。

2023-03-11 20:54:18 266

原创 Spring - Spring 框架概述相关面试题总结

Spring 是一个轻量级的 Java EE 开发框架,是针对bean的生命周期进行管理的轻量级容器。它的目的主要是为了简化Java EE的企业级应用开发,解决了开发者在J2EE开发中遇到的许多常见的问题,提供了IOC、AOP 及Web MVC等功能。

2023-03-08 07:47:40 251

原创 ElasticSearch - 分布式文档索引、搜索、更新和删除文档的过程

完成数据的存储后,该节点会将请求转发给该分片的其他副分片所在的节点,直到所有副分片节点全部完成写入,协调节点向客户端报告写入成功。当协调节点接收到来自客户端的获取某个索引的某文档的请求时,协调节点会找到该文档所在的所有分片,然后根据轮询算法在主/副分片中选择一个分片并将请求转发给该分片所在的节点,该节点会将目标数据发送给协调节点,协调节点再将数据返回给客户端。索引一个文档时,这个文档会被存储到主分片中,主分片再将数据拷贝到副本分片中,而主分片和各个副本分片都在不同的节点上,所以每个节点上都有。

2023-03-07 20:08:29 404

原创 ElasticSearch - ElasticSearch基本概念及集群内部原理

通过将索引中的文档分布在多个分片上,并将这些分片分布在多个节点上,Elasticsearch 可以确保冗余,这既可以防止硬件故障,又可以在节点添加到集群时增加查询容量。默认情况下,Elasticsearch 索引每个字段中的所有数据,每个索引字段都有一个专用的、优化的数据结构。总结:在ES中,一个分片对应的就是一个Lucene索引,每个分片可以设置多个副分片,这样当主分片所在的计算机因为发生故障而离线时,副分片会充当主分片继续服务。倒排索引列出出现在任何文档中的每个唯一单词,并标识每个单词出现的所有文档。

2023-03-06 16:44:44 416

原创 ElasticSearch - SpringBoot整合ES之全文搜索匹配查询 match

官方测试数据下载地址:https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip ,数据量很大,我们自己构造数据吧。权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/structured-search.html。在匹配之前分析提供的文本,返回与提供的文本、数字、日期或布尔值匹配的文档。查询是执行全文搜索的标准查询,包括模糊匹配选项。

2023-03-04 11:20:10 787

原创 Java - JDK1.8 HashMap底层源码及常见面试题总结

HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。在JDK1.8 之前 HashMap 由数组+链表数据结构组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。在 JDK1.8 之后 HashMap 由数组+链表 +红黑树。

2023-03-03 07:14:02 37

原创 ElasticSearch - SpringBoot整合ES之查询所有 match_all

官方测试数据下载地址:https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip ,数据量很大,我们自己构造数据吧。权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/structured-search.html。对匹配的搜索结果进行排序,相关性分数衡量每个文档与查询的匹配程度。最简单的查询,它匹配所有文档,默认给它们一个_score 1.0。

2023-03-02 20:30:55 193

原创 Java - JDK 1.7 HashMap底层源码及常见面试题总结

/ 遍历旧数组table,[0,1,2,3,4] for(Entry < K , V > e : table) {// 遍历当前桶中的链表,等while循环结束,该桶中的链表就全转移到新数组中了 while(null!= e) {// 定义一个next指针指向e.next Entry < K , V > next = e . next;// 是否进行重哈希,默认false if(rehash) {

2023-02-27 06:44:12 42

原创 ElasticSearch - SpringBoot整合ES:实现文档的增删改操作

① 下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-4-2。⑦ kibana下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-7-4-2。⑦ kibana下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-7-4-2。

2023-02-24 17:23:08 1628

原创 Java - JDK 1.8 HashSet底层源码及Set常见面试题总结

当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据该HashCode值决定该对象在HashSet中的存储位置。如果两个对象通过equals()方法比较返回true,但这两个对象的hashCode()方法返回不同的hashCode值时,这将导致HashSet会把这两个对象保存在Hash表的不同位置,从而使两个对象都可以添加成功,这就与Set集合的规则有些出入了。(1) 不能保证元素的排列顺序,顺序有可能发生变化。

2023-02-24 07:36:25 35

原创 Java - JDK 1.8 CopyOnWriteArrayList底层源码及集合的快速失败机制

既然每次添加元素的时候都会重新复制一份新的数组,那就带来了一个问题,就是增加了内存的开销,如果容器的写操作比较频繁,那么其开销就比较大。CopyOnWrite(写时复制)就是在修改器对一块内存进行修改时,不直接在原有内存块上进行写操作,而是将内存复制一份,在新的内存中进行写操作,写完之后,再将原来的指针(或者引用)指向新的内存,原来的内存被回收。那么,该如何解决此问题呢?(2) 无法保证读取到的数据是原集合中最新的数据,即迭代器进行遍历的是拷贝的集合,在遍历期间原集合发生的修改,迭代器是检测不到的。

2023-02-24 06:41:58 164

原创 ElasticSearch - 索引增加字段并查询增加字段前的历史数据

从上面的结果可以看出,在ElasticSearch中为已有索引增加一个新字段以后,老的数据并不会自动就拥有了这个新字段,也就不可能给他一个默认值。我们项目中有一个需求:ElasticSearch存在很多历史数据,然后需求中索引新增了一个字段,我们需要根据条件查询出历史数据,但历史数据中这个新增的字段并不存在,如何查询到历史数据呢?在ElasticSearch中,如果一个字段不存在或者这个字段的值为null,在检索的时候该字段会被忽略,因此也就无法做空值搜索。这个文档新增了height字段的值。

2023-02-23 20:18:41 304

原创 ElasticSearch - 文档 | 索引文档 | 检索文档 | 创建索引并指明映射

无需进行执行管理任务,如创建一个索引或指定每个属性的数据类型之类的(可以不事先创建索引,也可以不事先指定映射),可以直接只索引一个文档。Elasticsearch 不仅存储文档,而且索引每个文档的内容,使之可以被检索。存储数据到 Elasticsearch 的行为叫做索引 ,但在索引一个文档之前,需要确定将文档存储在哪里。请求并指定文档的地址就可以返回原始的 json 文档,返回结果包含了文档的一些元数据,以及。索引(名词):一个索引类似于传统关系数据库中的一个数据库,是一个存储关系型文档的地方。

2023-02-23 19:23:11 509

原创 Java - JDK 1.8 ArrayList底层源码及遍历删除List元素方法

在扩容时,首先考虑扩容1.5倍(如果扩容的太大,可能会浪费更多的内存,如果扩容的太小,又会导致频繁扩容,申请数组拷贝元素等对添加元素的性能消耗较大,因此1.5倍刚好)。在扩容时会申请一块更大内存容量的数组,将原来数组中的元素拷贝到这个新的数组中,同时让elementData指向该数组,而原来的数组由于没有新的指针指向它,就会被垃圾回收机制回收。数组中的元素,从要插入的位置index开始,将index索引元素及其后面的元素向后移动一个位置,给要插入的元素腾出一个位置,将该元素插入到index位置处。

2023-02-22 23:09:10 173

原创 Java - Iterator迭代器和集合体系结构面试题总结

Iterator 迭代器的特点是更加安全,它可以保证当使用Iterator迭代访问Collection集合元素时,Collection集合里的元素不能被改变,只有通过Iterator的remove方法删除上一次next方法返回的集合元素才可以;Collections是一个操作Set、List和Map等集合的工具类,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。上面三类方法的参数是原有的集合对象,返回值是该集合的“只读”版本。

2023-02-20 20:21:24 280

原创 Java多线程 - 利用Callable或CompletableFuture实现多线程异步任务执行

对于Calleble来说,Future和FutureTask均可以用来获取任务执行结果,不过Future是个接口,FutureTask是Future的具体实现,而且FutureTask还间接实现了Runnable接口,也就是说FutureTask可以作为Runnable任务提交给线程池。如果异步任务没有执行完成,异步结果获取线程(调用线程)会一直被阻塞,一直阻塞到异步任务执行完成,其异步结果返回给调用线程。(2) RunnableFuture通过继承Future接口,从而保证了可以获取未来的异步执行结果。

2023-02-20 17:00:07 1290

原创 Java - 类 | 对象 | 继承 | 多态 | 抽象类 | 接口 | static| 包装类等面试题总结

答:子类自动继承父类的属性和方法,子类中不再存在重复代码,从而实现代码的重用。(1) 子类继承父类所有的成员变量和成员方法,但不能继承父类的构造方法。在子类的构造方法中,可使用语句super关键字调用父类的构造方法。(2) 子类继承父类中被声明为 public 和 protected 的成员变量和成员方法,但是不能继承被声明为 private 的成员变量和成员方法。(3) 重写父类成员,包括数据成员和成员函数。

2023-02-15 12:49:48 272

原创 leetcode - 02 数组专题 42-43-45-48-49-50-54-55-56-57-58-59-62-63-64-66

算法

2023-02-09 12:49:29 53

原创 MySQL - 存储过程游标循环插入数据

【代码】MySQL - 存储过程游标循环插入数据。

2023-02-09 11:42:14 199

原创 Java - String类常见面试题总结

首先需要先理解这两个知识点:(1) 字符串常量池中存的是引用值而不是具体的实例对象,具体的实例对象是在堆中开辟的一块空间存放的。(2) 使用final修饰的引用类型变量不能被重新赋值,但可以改变引用类型变量所引用对象的内容。String类是不可变类,即创建String对象后,该对象中的字符串是不可改变的,直到这个对象被销毁,每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。} }

2023-02-07 08:01:51 434

原创 Java - equals() 和 == 及equals() 和 hashcode() 的区别与联系

如果一个类的对象如果不会存储在HashTable,HashSet,HashMap等散列存储结构中 : hashcode()方法和equals()方法没有关系,比较两个对象是否相等时,重写equals()方法即可。如果一个类的对象如果不会存储在HashTable,HashSet,HashMap等散列存储结构中 : hashcode()方法和equals()方法就必须满足下面的关系。(1) equals() 和hashCode() 需要同时覆盖,重写equals()方法就必须重写hashcode()方法;

2023-02-07 06:48:35 215

原创 Java - Java是跨平台的语言及与JDK\JRE\JVM的联系

Java虚拟机启动之后,在我们的电脑上或者服务器上表现出来的就是一个java进程,这个进程里面运行的是我们的Java程序;JVM本身是C语言开发的,并且不同的电脑操作系统是不同的版本,比如针对windows有windows的jvm,针对Linux有Linux的 jvm;JVM是Java程序跨平台的关键部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。它是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。

2023-02-07 06:43:23 231

原创 leetcode - 01 数组专题 1-15-18-4-16-11-26-27-31-33-34-35-36-39-40-41-46-47-53

return end;return end;} }

2023-01-13 12:48:18 363

原创 实战 - 将接口权限按照菜单栏配置展示

【代码】实战 - 解析yml文件 (树形结构)

2023-01-03 11:07:36 73

原创 SpringSecurity Oauth2 - 11 只要请求访问后台接口就延长访问令牌过期时间

系统使用的是SpringSecurity Oauth2框架做认证授权中心,当请求访问系统受限资源时都会判断请求携带的token是否正确,所以可以自定义CustomTokenExtractor继承BearerTokenExtractor,在提取到token后,通过token获取redis中存储的控制页面退出登录时长的key和用于延长token过期时长的key,将控制页面过期时长的key的过期时间重新设置为延长token过期时长的key的value值。这个续期时长要和页面自动退出登录的时长一致。

2022-12-16 12:35:20 576

原创 Kafka实战 - 06 Kafka消费者:从指定Topic拉取工单处置记录信息并存入MongoDB数据库

*** 写处置记录** @param recordDto 处置记录内容/*** 批量写处置记录** @param recordDtos 处置记录列表}try {

2022-12-15 07:16:26 165

原创 Kafka实战 - 05 Kafka生产者:将告警和事件发起工单后的处置记录信息发送到指定Topic

前端传入的工单基本信息 RiskOrderQo。

2022-12-14 09:57:58 68

原创 Kafka实战 - 04 Kafka消费者:将S平台处置闭环后告警和事件的处置状态同步给X平台

SIR平台上,从XDR平台接入的安全告警数据,为了保证两个平台安全告警数据的处置状态一致,SIR平台需要将已经处置闭环的安全告警数据的处置状态同步给XDR平台,从而更新XDR平台上安全告警数据的处置状态。

2022-12-14 09:57:41 45

原创 Kafka实战 - 03 Kafka生产者:将X平台的告警和事件数据接入到S平台

资产可能会遭受各种网络攻击,安全事件和安全告警就是已经被攻击的资产产生的日志,一条攻击链路可能会经过多个资产,由此产生的日志为安全事件,而具体某一个被攻击的资产产生的日志为安全告警。但是XDR产品无法对安全事件和安全告警处置闭环,因此需要将XDR平台的安全告警和安全事件数据接入到SIR平台处置闭环,待处置完成后将数据的处置状态同步给XDR平台,保证两个平台的数据的处置状态一致;kafka的相关配置:项目的配置中心使用的confd,#{{}}是相关配置文件语法,不影响。

2022-12-14 07:06:49 108

原创 Kafka实战 - 02 Kafka生产者:将告警和事件的处置状态发送到指定Topic

XDR平台的安全告警和安全事件数据会接入SIR平台进行处置闭环,当工单处置闭环后需要将安全事件和安全告警数据的处置状态同步给XDR平台。① 在操作安全告警或安全事件的处置状态后,需要将该数据的处置状同步给XDR平台。即将数据和修改后的安全告警状态封装成DealStatusSyncDto对象通过kafka生产者发送到 kafka 的 topic 中。② kafka消费者通过定时任务从kafka的topic中取数据,并同步给XDR平台。

2022-12-14 07:06:11 296

原创 Kafka实战 - 01 自定义 SpringBoot Starter 实现 Kafka 的自动配置

确保在 pom.xml 文件中声明了使用该组件所需要的全部 dependency利用 @ConfigurationProperties 注解对外暴露恰当的 properties利用条件注解 @ConditionalXXX编写XXXAutoConfiguration 类。

2022-12-14 07:05:50 158

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除