自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 带你了解如何使用ElasticSearch下

官方提供了各种不同语言的客户端,用来操作ES。在elasticsearch提供的API中,与elasticsearch一切交互都封装在一个名为RestHighLevelClient的类 中,必须先完成这个对象的初始化,建立与elasticsearch的连接。:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。:查询出所有数据,一般测试用(不会显示出所有,自带分页功能)。all:一个组合字段,其目的是将多字段的值 利用copy_to合并,提供给用户搜索。

2023-09-06 17:03:25 62 1

原创 带你了解如何使用ElasticSearch上

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基 于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布, 是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速, 安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他 语言中都是可用的。

2023-09-06 16:25:44 64 1

原创 了解LinkedList源码以及他的执行原理!

ArrayList和LinkedList都实现Collection接口,区别在于ArrayList基于数组实现,而LinkedList基于链表实现,由于数组是由连续的存储空间组成,其注定了ArrayList在查找方面的优势,但在执行插入删除等操作时,插入点/删除点之后的元素需要依次位移来填补空缺,其性能必将受到一定的影响,而链表这种数据结构正好解决了这个问题,在LinkedList中,使用大量的Node节点来存储数据,每个节点中item用于存储内容,next用于记录下一个节点,prev则用于记录上一个节点,

2023-05-27 20:38:01 136 2

原创 对于TCP协议的理解

TCP的流量控制是为了解决端到端的数据传输速率问题,即根据接收方的实际接收能力,来控制发送方的数据发送速率,从而让发送方的发送速率不要太快,要让接收方来得及接收。接收方来不及接收就会造成数据的丢失。TCP协议使用滑动窗口机制来实现对发送方的流量控制。在建立连接时,发送的报文段中就会有接收窗口的单位值,发送方的窗口不能超过接收方给出的接收窗口的数值。滑动窗口的大小是动态调整的,每一次接收方回复给发送方的确认报文段里会更新新的接收窗口值。

2023-09-22 17:36:09 58

原创 HTTP请求全过程

A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。Server 确认了:自己接收正常,对方发送正常。首先搜索浏览器自身的DNS缓存,看是否是有域名对应的条目,且没有过期,如果有且没有过期则解析到此结束,否则进行下一步。三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是。举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,

2023-09-14 18:41:49 90

原创 Git的安装与使用

最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人 把它移植到了Windows上。现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行 了。由于开发机大多数情况都是windows,所以本教程只讲解windows下的git的安装及使用。软件下载下载地址:https://git-scm.com/download软件安装1.在安装包上面右键点击,选择以管理员身份运行。

2023-09-11 19:21:05 70

原创 了解Java 的类加载机制以及类加载器

两个类相等,需要类本身相等,包括类的Class对象的equals()方法、方法、方法的返回结果为true,也包括使用instanceof关键字做对象所属关系判定结果为true。除此之外,还要求两个类使用同一个类加载器进行加载,因为每一个类加载器都拥有一个独立的类名称空间。

2023-09-11 18:45:11 61

原创 HashMap的数据结构

jdk1.8以前HashMap内部数据结构使用数组+链表进行存储。jdk1.8以后HashMap内部数据结构使用数组+链表+红黑树进行存储。//数组//链表节点类//哈希值//键V value;//值//下一个元素数组类型为Node[],每个Node都保存了某个KV键值对元素的key、value、hash、next等值。由于next的存在,所以每个Node对象都是一个单向链表中的组成节点。当新添加一个KV键值对元素时,通过该元素的key的hash值,计算该元素在数组中应该保存的下标位置。

2023-09-09 10:05:33 30

原创 Spring MVC的执行流程

(2)符合要求就会将用户的请求路径交给一个处理器映射器(HandlerMapping)的组件,通过映射的方式查看程序中是否有一个控制器(Handler)可以来处理请求,并将这个结果返回给请求控制器。(5)处理器适配器返回一个ModelAndView模型视图对象给请求控制器,ModelAndView中包含了数据模型以及相应的视图信息,Model是返回的数据对象,View是View视图的逻辑名称。(7)并根据请求控制器返回的Model数据模型传给View视图文件,并执行渲染执行,产生响应结果。

2023-09-09 09:38:52 114

原创 Spring中Bean的生命周期

Spring容器在进行初始化时,会将xml或者配置类中配置的相关的类通过Java Proxy(反射)的方式创建出一个BeanDefinition对象,然后将所有的BeanDefinition对象存在一个beanDefinitionMap的集合中去,xml中配置的bean的id或者注解配置的value属性作为存入Map的key,整个BeanDefinition对象作为value保存。但在这个过程中,可能会出现引用的那个Bean对象中也引用了引用它的Bean对象,这个时候就会产生循环依赖的情况。

2023-09-09 08:56:17 34 1

原创 Java中AES算法的使用方式以及CBC和ECB两种工作模式

ECB是最简单的AES加密模式,这种一对一的加密方式会导致安全性降低。3、使用SecretKey,IvParameterSpec初始化Cipher实例,并设置加密模式或解密模式。显而易见,AES是不二之选。ECB是最简单的AES加密模式,它需要一个固定的秘钥,固定的明文会产生固定的密文。2、根据算法名称初始化一个SecretKey实例,秘钥必须是指定长度。秘钥的长度决定加密长度,工作模式和填充模式可以看成是对称加密算法的参数和格式选择。DES算法由于秘钥长度较短,可以在短时间内暴力破解,所以已经不安全了。

2023-09-08 08:59:31 626 1

原创 ThreadLocal的基本理解和使用

是 Java 中的一个特殊类,它通过提供每个线程的上下文并为每个线程单独维护它们来帮助我们实现线程安全。换句话说,是一个 Java 类,可以用来定义只由创建它们的线程访问的变量。这在很多情况下都很有用,但最常见的使用情况是,你需要存储不在线程之间共享的数据。例如,假设一个开发者正在编写一个多线程的应用程序,每个线程需要有自己的变量副本。如果你只是简单地使用一个普通的变量,有可能一个线程会在另一个线程有机会使用它之前就覆盖了该变量的值。有了。

2023-09-07 18:00:48 41

原创 Linux介绍和文件管理(基础操作)

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、 支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和 64位硬件。Linux内核是一个Linux系统的内核,而不是一个操作系统Linux操作系统红帽操作系统(RedHat),乌班图(Ubuntu)等 才是操作系统的名字,他们都使用Linux内核,我们 常常把它们笼统的称为Linux操作系统。

2023-09-07 14:51:27 42

原创 Spring bean生命周期

SpringBean的生命周期和其对Spring框架原理理解的重要性,所以接下来我们就来分析一下Bean生命周期的整体流程。首先Bean就是一些Java对象,只不过这些Bean不是我们主动newBean的实例化(Instantiation):Spring框架会取出BeanDefinition的信息进行判断当前Bean的范围是否是singleton的,是否不是延迟加载的,是否不是FactoryBean等,最终将一个普通的singleton的Bean通过反射进行实例化Bean的属性赋值(Populate)

2023-09-05 19:08:58 37 1

原创 什么是乐观锁、悲观锁与死锁

乐观锁是一种乐观的并发控制策略。它的核心理念是,认为在大多数情况下,数据不会发生冲突,因此不会立即阻塞其他线程的读取操作。在乐观锁机制中,线程读取数据时并不持有锁,而是在更新数据时检查是否有其他线程已经修改了这个数据。在Java 中的 StampedLock、AtomicInteger、ReadWriteLock是一种乐观锁思想的实现。优点:适用于读多写少的场景,避免了不必要的阻塞和等待。不需要显式的锁定和解锁,减少了开销和线程切换。缺点可能需要重试机制,增加了编程复杂性。

2023-09-05 18:43:50 49 1

原创 Spring IOC/DI简介

是什么Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。

2023-08-24 19:45:36 57 2

原创 SpringBoot自动装配原理

① 定义条件类:自定义类实现Condition接口,重写 matches 方法,在 matches 方法中进行逻辑判 断,返回 boolean值。

2023-08-24 19:24:18 34 1

原创 带你快速入门MyBatis之基于XMl的实现方式

mybatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录。

2023-08-21 19:30:12 230 1

原创 线程池的执行流程

核心线程数,可以理解为线程池维护的最小线程数量,核心线程创建后不会被回收。大于核心线程数的线程,在空闲时间超过keepAliveTime后会被回收。最大线程数,线程池允许创建的最大线程数量;(包含核心线程池数量)非核心线程存活时间,当一个可被回收的线程的空闲时间大A于keepAliveTime,就会被回收。非核心线程存活时间的时间单位工作队列,用于存储等待执行的线程任务线程工厂,用于创建线程,以及自定义线程名称,需要实现ThreadFactory接口;拒绝策略。

2023-07-20 18:35:59 59

原创 ReentrantLock与synchronized的区别

用法不同:synchronized 可以用来修饰普通方法、静态方法和代码块,而 ReentrantLock 只能用于代码块。获取锁和释放锁的机制不同:synchronized 是自动加锁和释放锁的,而 ReentrantLock 需要手动加锁和释放锁。锁类型不同:synchronized 是非公平锁,而 ReentrantLock 默认为非公平锁,也可以手动指定为公平锁。

2023-07-20 18:06:22 60

原创 Java创建线程的四种实现方式

继承Thread重写run方法,在run方法中执行线程逻辑在主线程中启动新线程。

2023-07-17 19:00:52 139 1

原创 Java反射的基本概念

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。获取Class对象的三种方式2.任何数据类型(包括基本数据类型)都有一个“静态”的class属性。

2023-07-14 16:56:23 44 1

原创 什么是哈希(Hsah)算法,哈希算法的作用以及Java中常见的哈希算法的使用案例。

使用静态方法MessageDigest.getInstance()获取消息摘要对象,传入需要使用的算法模型。

2023-07-10 18:55:18 811 1

原创 FTP协议文件上传下载代码实现案例

简介:FTP是基于TCP协议之上的具有C/S架构的文件服务器。需要通过控制连接20端口来控制双方的通信需要通过数据连接21端口来进行双方的通信在基于FTP实现文件的上传下载钱,我们首先需要下载commons-net-3.6.jar,

2023-07-08 16:45:41 273

原创 怎样用Java发出自己的第一封邮件。

怎么使用Java发送一封邮件呢,我们以网易邮箱举例,首先我们要拥有一个网易邮箱的邮箱账号,注册好账号之后我们需要在设置中打开POP3/SMTP服务。之后在下方授权密码管理处点击新增授权密码通过手机验证码便可以获取一个只显示一次的关于本邮箱的授权码。做好这一系列的准备工作之后,我们还需要额外下载javax.mail-1.6.2.jar这个jar包,他是一个Java的扩展包,可以在Java的官网免费下载。现在我们正式开始使用Java来发送自己的第一封邮件吧。

2023-07-08 16:02:52 83

原创 ArrayList扩容方式的理解

ArrayList是常用的集合框架之一,它实现了Collection接口,内部使用数组的形式存放数据,今天我们来谈一谈对于ArrayList扩容方式的理解。ArrayList有三种构造方法:(1)无参构造:即直接使用new ArrayList()创建,内部维护的elementData会被赋值一个Object空数组常量,此时ArrayList初始容量为0。

2023-05-25 15:06:56 253 2

mybatis-3.5.11.jar

mybatis-3.5.11.jar

2023-05-30

mysql-connector-java-8.0.29.jar

JDBC驱动jar包

2023-05-30

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

TA关注的人

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