![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java高级
文章平均质量分 88
Java高级
大家都说我身材好
兴趣是最好的老师
展开
-
Linux Shell 脚本还不会写?岂不是奥特了
Linux Shell 脚本是一种用于在命令行环境中编写和执行批处理任务的脚本语言。它通过组合多条命令来实现复杂的任务自动化。原创 2024-07-16 17:14:08 · 421 阅读 · 0 评论 -
Nginx 负载均衡详解
Nginx负载均衡算法详解,每种算法适用于不同的场景和需求。原创 2024-07-13 17:35:55 · 912 阅读 · 1 评论 -
Nginx 日志统计分析命令
Nginx 日志统计分析命令原创 2024-07-13 17:27:35 · 591 阅读 · 0 评论 -
Nginx 自定义模块实现之权限控制模块
Nginx 自定义模块开发演示原创 2024-07-13 13:47:12 · 1003 阅读 · 0 评论 -
一文了解 StandardTokenizer 分词器,分词原理
StandardTokenizer 是HanLP中的一个分词器,也是默认的标准分词器。它基于词典和规则的方式对中文文本进行分词,将输入的句子切分成一个个独立的词语。基于词典和规则使用一个内置的词典和规则来对中文文本进行分词。词典包含了大量的常见词汇和词语,规则则用于处理一些特殊的情况,如人名、地名、数字等。支持中英文混合分词可以处理中英文混合的文本,并正确地将其切分成独立的词语。例如,“我爱自然语言处理"会被切分成"我”、“爱”、“自然语言处理”。原创 2023-11-24 14:50:03 · 1804 阅读 · 0 评论 -
万字详解 HTTP 协议,WEB开发再也不会迷茫了
HTTP(Hypertext Transfer Protocol)是一种应用层协议,用于在客户端和服务器之间传输超文本数据。它是现代互联网中最重要的协议之一,经常用于浏览器与Web服务器之间的通信。HTTP允许客户端发起请求并接收服务器响应,它的主要目标是实现客户端和服务器之间的通信和数据交换。HTTP是无状态协议,每个独立的请求-响应周期都是相互独立的,服务器不会保留先前请求的任何信息。原创 2023-08-23 16:58:57 · 466 阅读 · 0 评论 -
一文搞懂NoSQL 数据库 MongoDB
MongoDB是一种开源的、面向文档的非关系型数据库管理系统,于2009年首次发布。它使用BSON 类似JSON 风格的文档来存储数据,而不是传统的行和列的表格形式。MongoDB的设计目标是在处理大量数据时提供高性能和可扩展性。它旨在满足现代应用程序对灵活性、可伸缩性和数据复杂性的要求。原创 2023-08-22 17:24:50 · 624 阅读 · 0 评论 -
Mysql 事务隔离级别详解
事务隔离是指在数据库中,多个并发执行的事务之间相互隔离的程度。事务隔离级别是一个重要的概念,它定义了事务在读取和修改数据时能够接触到其他事务所做的修改的程度。事务隔离的目的是确保并发事务能够正确地执行,同时保持数据库的一致性和可靠性。在一个并发环境中,多个事务可能同时读取和修改数据库中的数据,如果没有适当的隔离机制,会出现一些问题,如脏读、不可重复读和幻读。脏读(Dirty Read):一个事务读取了另一个未提交事务所做的修改的数据。如果这个未提交的事务最终回滚,那么读取到的数据就是无效的。原创 2023-08-16 16:20:57 · 422 阅读 · 0 评论 -
Java 类加载机制详解
Java 类加载机制是 Java 运行时的核心组成部分,负责在程序运行过程中动态加载和连接类文件,并将其转换为可执行代码。实现动态加载:Java 类加载机制允许程序在运行时根据需要动态地加载类文件。这种能力使得开发人员可以根据实际需求来加载所需的类,而不需要一次性加载所有的类。这对于大型应用程序和框架来说特别有用,因为它们可能包含大量的类,但只有在需要时才会加载。解决依赖关系:Java 类加载机制可以解决类之间的依赖关系。原创 2023-08-14 16:43:19 · 488 阅读 · 0 评论 -
Java 锁机制详解,乐观锁,悲观锁,可重入锁 到底是什么,怎么实现
java 锁机制详解,一文搞懂 乐观锁,悲观锁,可重入锁,自旋锁,信号量等锁机制原创 2023-08-10 15:48:56 · 1622 阅读 · 0 评论 -
Java 多线程并发 CAS 技术详解
CAS(Compare and Swap)是一种并发编程中常用的技术,用于解决多线程环境下的并发访问问题。CAS操作是一种原子操作,它可以提供线程安全性,避免了使用传统锁机制所带来的性能开销。原创 2023-08-08 14:10:12 · 3094 阅读 · 0 评论 -
Java 多线程 深入解析,让我们都高并发程序更稳健
线程池是一种管理和复用线程资源的机制,它可以在应用程序中创建一组预先初始化的线程,以执行多个任务。线程池维护着一个线程队列,其中包含一定数量的空闲线程。当有新的任务到达时,线程池中的空闲线程会立即执行任务,而不需要每次都创建和销毁线程,从而提高了应用程序的性能和效率。使用线程池的主要目的是为了避免频繁地创建和销毁线程带来的开销,同时有效地控制并发线程的数量,防止过多的线程造成系统资源的浪费和线程切换的开销。原创 2023-08-07 11:00:26 · 285 阅读 · 0 评论 -
Java 克隆技术详解,深拷贝与浅拷贝的区别及实现
克隆是指创建一个对象的副本,使得新创建的对象在内容上与原始对象相同。在编程中,克隆是常用的技术之一,它具有以下几个重要用途和优势:复制对象:使用克隆可以创建一个与原始对象相同的新对象,包括对象的属性和状态。这样可以在不影响原始对象的情况下,对新对象进行修改、操作、传递等。这在某些场景下非常有用,可以避免重新创建和初始化一个对象。隔离性与保护:通过克隆,可以创建一个独立于原始对象的副本。这样,修改克隆对象时,不会影响到原始对象,从而实现了对象之间的隔离性。原创 2023-08-02 11:02:08 · 1201 阅读 · 3 评论 -
万字详解 TCP协议,TCP开发绝不能错过
TCP(Transmission Control Protocol)是一种在计算机网络中广泛使用的传输层协议。它负责提供可靠的、面向连接的数据传输服务,确保数据能够按照正确的顺序和完整性传递。提供可靠的数据传输:TCP协议通过序号、确认和重传机制来确保数据的可靠传输。发送方将每个数据包进行编号,并在接收方收到数据后进行确认,如果数据包丢失或损坏,发送方将重新传输它们,以确保数据的完整性和准确性。原创 2023-07-19 11:00:44 · 803 阅读 · 0 评论 -
万字详解 Stream 流式编程,写代码也可以很优雅
Stream(流)是 Java 8 引入的一个新的抽象概念,它代表着一种处理数据的序列。简单来说,Stream 是一系列元素的集合,这些元素可以是集合、数组、I/O 资源或者其他数据源。Stream API 提供了丰富的操作方法,可以对 Stream 中的元素进行各种转换、过滤、映射、聚合等操作,从而实现对数据的处理和操作。Stream API 的设计目标是提供一种高效、可扩展和易于使用的方式来处理大量的数据。原创 2023-07-13 11:32:44 · 414 阅读 · 0 评论 -
一文搞懂 Java 集合,再也不用担心集合数据类型的操作了
Java集合是用于存储和操作一组对象的数据结构。它提供了一组接口和类,用于处理不同类型的集合数据,如列表、集、映射等。Java集合的主要作用是:存储对象:Java集合可以存储不同类型的对象,并提供了方便的方法来添加、删除和访问集合中的元素。管理数据:集合提供了多种数据结构,如列表、集、映射等,可以根据不同的需求选择合适的数据结构来管理数据。比如,列表可以按照插入顺序存储数据,集可以保证元素的唯一性,映射可以通过键值对来存储和访问数据等。原创 2023-07-10 16:55:09 · 577 阅读 · 0 评论 -
万字浅谈 DDD 领域驱动设计
领域驱动设计(Domain-Driven Design,DDD)架构时,它是一种软件设计方法,旨在帮助开发人员更好地理解和解决复杂业务领域的挑战。DDD 架构的目标是将软件设计与实际业务需求紧密结合,通过明确的领域模型和业务概念来支持系统的开发和演化。定义:领域驱动设计是一种基于领域模型的软件设计和开发方法,强调将软件设计与业务领域的实际需求相结合。它提供了一组原则、模式和工具,帮助团队更好地理解业务领域、捕捉业务知识,并以清晰的方式将其映射到软件系统中。原创 2023-07-07 11:12:43 · 249 阅读 · 0 评论 -
一文搞懂Java多线程,讲的很详细,收藏起来慢慢看
多线程是指在一个程序中同时执行多个线程,每个线程都有自己独立的执行路径。在多线程中,程序的执行可以同时进行多个任务,从而提高系统的资源利用率和响应性能。在传统的单线程编程模型中,程序按照顺序执行,一次只处理一个任务。这种方式在某些情况下可能会导致效率低下或者无法满足需求。而多线程通过将任务拆分为多个子任务,并且在不同的线程上同时执行,从而实现并发处理。原创 2023-07-05 14:49:19 · 1999 阅读 · 0 评论 -
一文搞懂 ThreadLocal,是时候反问面试官了
ThreadLocaL是Java中的一个线程级别的变量,它提供了一种将数据与每个线程关联起来的机制。每个线程都有自己独立的实例,可以在这个实例中存储和获取数据,而不会与其他线程的数据产生冲突。的作用和用途主要有以下几个方面:可以用于保存每个线程所需的私有数据。例如,在多线程环境下,如果有一个对象需要在线程之间共享,但又希望每个线程都拥有它的私有拷贝,则可以使用来存储这个对象。这样,每个线程都可以独立地读取和修改自己的私有拷贝,而互不干扰。可以避免使用线程同步机制(如锁)来保护共享数据,从而提高程序的并发性能原创 2023-07-04 11:48:17 · 3857 阅读 · 2 评论 -
Java String 对象超详细讲解,以后再也不怕别人问我String 对象问题了
String类是Java中提供的一个核心类,用于表示字符串的不可变序列。它属于Java标准库的一部分,定义在java.lang包中,并且是一个final类,即不可被继承。下面详细介绍String类的定义和特点:定义:String类是一个引用类型(Reference Type),它用于表示由字符组成的字符串。在Java中,字符串被视为一个对象而不是基本数据类型。每个String对象实例都包含一个字符序列,该序列具有固定的长度和内容。原创 2023-06-29 14:26:11 · 1583 阅读 · 0 评论 -
一文搞懂 java 泛型,也有可能搞不懂,毕竟讲得太全面了
在许多编程语言中,如Java和C#,泛型类是一种特殊类型的类,它可以接受不同类型的参数进行实例化。泛型类提供了代码重用和类型安全性的好处,因为它们可以与各种数据类型一起使用,而无需为每种类型编写单独的类。// 类成员和方法定义 }在上面的示例中,是一个泛型类的名称,表示类型参数,T可以替换为任何合法的标识符,用于表示实际类型。要使用泛型类,可以通过指定实际类型来实例化它。例如,假设我们有一个名为MyClass在上面的示例中,我们使用整数类型实例化了泛型类。这样,myInstance。原创 2023-06-29 11:04:06 · 869 阅读 · 1 评论 -
Java 代理模式详解,静态代理与动态代理的区别及优缺点
代理模式(Proxy Pattern)是指通过代理对象控制对目标对象的访问,并在不改变目标对象的情况下添加额外的功能或控制访问。代理对象和目标对象实现相同的接口,使得客户端可以通过代理对象间接地访问目标对象。代理模式属于结构型设计模式,它在系统中引入了一个代理对象,该对象代替了客户端直接访问目标对象,从而可以在目标对象的基础上增加一些额外的功能或控制访问。原创 2023-06-26 14:19:15 · 1150 阅读 · 0 评论 -
AES 加密算法原理详解及实现
随着互联网的发展,越来越多的数据需要在网络中进行传输。为了保证数据的安全性,在进行网络传输时,需要对数据进行加密操作,使得数据在传输过程中不被窃取或篡改。AES(Advanced Encryption Standard)就是一种经典的加密算法。AES 算法源于比利时密码学家 Joan Daemen 和 Vincent Rijmen,它是一种对称加密算法,通过使用相同的密钥对数据进行加密和解密操作。AES 算法中,加密和解密操作是相反的过程,因此需要使用相同的密钥作为加密和解密的关键参数。原创 2023-06-16 14:45:37 · 13731 阅读 · 0 评论 -
不会点爬虫技术写代码真没意思,Java 爬虫利器 Jsoup 详解
Jsoup是一款Java语言开发的HTML解析器,用于解析HTML文档以及对HTML文档进行操作,处理等。它提供了类似于jQuery的DOM操作方法,以及用于HTML元素遍历、迭代、查询以及修改等操作的API,同时还支持CSS选择器和正则表达式的解析。WOW64;其中userAgent()方法可以设置User-Agent,timeout()方法可以设置超时时间,单位是毫秒。原创 2023-06-15 17:44:27 · 1257 阅读 · 0 评论 -
Spring Boot 监控模块 Actuator,让你实时了解项目的运行状态和性能瓶颈
除了使用 Actuator 默认端点之外,我们还可以根据自己的业务需求自定义 Actuator 端点。自定义 Actuator 端点需要实现Endpoint接口,并重写getId()和invoke()方法。例如,以下代码实现了一个名为MyEndpoint} }实现自定义 Endpoints 后,我们需要通过设置来公开它们。在这将允许我们通过访问端点来查看自定义的端点信息。原创 2023-06-14 16:35:02 · 4916 阅读 · 0 评论 -
一文读懂 Java 反射,是时候掌握高效简化代码的方式了
Java反射机制是指在程序运行时能够访问、检查和修改程序的状态或行为的一种机制。通过反射机制,可以在程序运行时动态地获取类的属性、方法、构造函数等信息,并且可以在运行时动态创建对象、调用方法、获取/设置字段值等。原创 2023-06-06 14:44:19 · 186 阅读 · 0 评论 -
简化Mybatis分页操作,让我们来聊聊 PageHelper 及实现原理
PageHelper 是一款开源的 MyBatis 分页插件,可以在实际应用中方便地实现分页功能。PageHelper 能够有效地缩减开发人员的分页处理代码量,提升开发效率。原创 2023-06-02 15:00:35 · 511 阅读 · 0 评论 -
Logback 日志框架详解
Logback 是一个日志框架,旨在成为 log4j 的替代品。它由 Ceki Gülcü 创建并维护,是一款开源的日志框架,是 slf4j(Simple Logging Facade for Java)的实现。相比于 log4j,Logback 具有更高的性能和更好的可扩展性,并提供了众多的特性,如异步日志、动态日志级别、决策器等。在项目中使用 Logback 可以很方便地记录系统运行时的信息、警告和错误等,对于开发人员来说是非常有帮助的。Logback 的基本概念。原创 2023-06-01 15:03:35 · 2652 阅读 · 0 评论 -
JVM 中的垃圾回收算法详解,一文读懂GC回收机制
垃圾回收是一种自动化的内存管理方式,它可以监测并清除内存中不再使用的对象,使得内存空间可以被回收并重新利用。在 JVM 中,垃圾回收器负责管理虚拟机的内存分配和回收。JVM 中常见的垃圾回收算法主要包括:标记-清除算法、复制算法、标记-整理算法和分代算法。原创 2023-05-31 11:13:50 · 1801 阅读 · 1 评论 -
Sentinel 框架详解
Sentinel 是一个高可用、高扩展、高稳定性的开源流量控制和熔断降级框架,可以在分布式系统中实现实时的流量控制,防止系统因流量过大导致系统崩溃和服务降级。流量控制:通过配置不同的规则,对请求流量进行限制。熔断降级:当系统异常情况发生时,可以自动熔断系统,保证系统的可用性。系统负载保护:在系统负载高峰期间,可以限制请求流量,避免系统资源耗尽。实时监控:可以实时监控系统的请求流量、响应时间、错误率等指标。原创 2023-05-31 09:17:03 · 1649 阅读 · 0 评论 -
Redis 中地理位置功能 Geospatial 了解一下?
Geospatial Indexes 是 Redis 提供的一种数据结构,用于存储和查询地理位置信息。它可以将地理位置的经度和纬度编码为二维平面上的点,并支持根据距离或矩形区域查询附近的地理位置点,这使得它在很多场景下被广泛应用,比如 LBS(Location Based Service)、智能推荐、出行规划等。Redis 中 Geospatial Indexes 是通过有序集合实现的,其内部使用 zset 数据类型来存储地理位置点的经纬度和成员信息。原创 2023-05-30 11:04:00 · 1025 阅读 · 0 评论 -
全面解析 Msyql Explain 执行计划,优化SQL查询性能
本文详细讲解了 MySQL 中的EXPLAIN关键字,包括其基本用法、输出结果的各个字段含义、可选参数、更多高级特性以及性能优化等相关内容。使用EXPLAIN关键字可以深入了解查询语句的执行过程,发现其中的瓶颈和改进空间,从而优化查询性能,提升数据库系统的整体运行效率。在实际应用中,我们应当密切关注查询语句的执行情况,不断改进优化,提高系统性能和稳定性。原创 2023-05-29 10:13:19 · 868 阅读 · 0 评论 -
Ehcache 缓存框架详解
Ecache 是一个广泛使用的 Java 缓存框架,能够有效提升应用性能,并减少与后端数据库的交互次数。它采用了一系列高级缓存策略,包括内存缓存、磁盘缓存、分布式缓存等,并提供了丰富的 API 和工具类,可以方便地完成缓存的读写和管理。快速:Ecache 采用了一系列高效的缓存策略,能够实现快速的数据访问和读写,从而提高应用程序的性能。可扩展:Ecache 支持分布式缓存,可以方便地扩展到多台服务器上,从而提高系统的容错性和吞吐量。原创 2023-05-26 16:42:47 · 4604 阅读 · 0 评论 -
JWT 详解
JWT(JSON Web Token)是一种基于JSON格式的轻量级的、用于身份认证的开放标准。它通过在用户和服务器之间传递一个安全的、可靠的、独立的JSON对象来进行身份验证和授权。它如今被广泛应用在RESTful API中,因为RESTful API通常不会维持任何状态信息。原创 2023-05-25 16:47:03 · 2428 阅读 · 0 评论 -
数据库数据量大了怎么办? 当然是分库分表,Sharding-JDBC了解一下?
Sharding-JDBC是一款基于JDBC规范的分布式数据库中间件,可以帮助Java应用轻松实现水平分库分表、读写分离等分布式数据库功能,并提供了方便易用、高可用、高性能的数据访问解决方案。原创 2023-05-25 09:34:58 · 1629 阅读 · 0 评论 -
Spring Validated 校验框架,让你的项目更简洁,提升开发效率
Validated 注解是 Spring Framework 中提供的一个参数校验注解,它可以用来标记需要进行参数校验的方法、类、方法参数和方法返回值等地方。通过使用 @Validated 注解,我们可以非常方便地对入参进行检查,并且可以自定义校验规则和错误提示信息。引入依赖。原创 2023-05-24 17:06:14 · 2970 阅读 · 0 评论 -
Mock 测试技术详解及高级特性,你不得不会的技能!
Mock 测试是一种软件测试技术,它可以模拟外部依赖组件的行为和状态,以便进行独立、稳定和快速的测试。在实际软件开发中,我们常常需要依赖其他组件或服务来完成某些业务逻辑,例如数据库、网络连接、消息队列等等。这些外部依赖可能存在各种问题,例如不稳定、缺乏数据、难以模拟等等,从而影响我们对代码逻辑的测试、调试和优化。Mock 测试可以解决这些问题,它通过构造和配置 Mock 对象来模拟外部依赖的行为和状态,从而使得测试变得独立、稳定和准确。原创 2023-05-24 10:25:15 · 4915 阅读 · 0 评论 -
java 定时器实现原理(时间轮算法)
本文介绍了 Java 时间轮算法的原理、实现步骤以及相应的代码示例。时间轮算法是一种高效的定时器实现方式,通过将时间轮分成多个刻度,每个刻度代表一个时间段,来实现对大量定时任务的管理和触发。Java 时间轮算法具有高效、可扩展等优点,可以广泛应用于 NIO 网络编程、调度任务等场合。原创 2023-05-22 11:14:05 · 2411 阅读 · 0 评论 -
都知道爬虫用python,Java 爬虫你会吗?
在这篇文章中,将详细介绍 Jsoup 的相关知识,包括其功能与特点、基本用法、高级应用、原理分析、相关工具及框架等方面。原创 2023-05-22 10:26:38 · 954 阅读 · 0 评论 -
一问读懂链表结构,及应用场景
Java中的链表结构是指,将一组数据按照指定规则连接起来的数据结构。它由多个节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用。在Java中,这种数据结构被封装成了一个链表类,常见的有单向链表、双向链表和循环链表等。原创 2023-05-19 18:10:19 · 1294 阅读 · 1 评论