![](https://img-blog.csdnimg.cn/84acdd8ab8354eaca8f917cd81959111.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 88
Java
鹤冲天Pro
阿里云专家博主、新星计划导师、Java领域新星创作者、全栈领域优质创作者、CSDN内容合伙人、华为云享专家、腾讯云优秀博主、51CTO博客专家,交流合作私信+。有多年 Java+GO+JS全栈开发工作经验。熟练掌握:Java、K8s、Netty、TCP/IP、SpringCloud、Docker、MySQL、Redis、JS/TS、Vue、React、Go语言等技术。 座右铭:终身学习,持续进步;道阻且长,行则将至。
展开
-
Java面试题总结(二):Java多线程
当一个线程被剥夺cpu使用权时,切换到另外一个线程执行死锁指多个线程在执行过程中,因争夺资源造成的一种相互等待的僵局AQS是一个抽象类,可以用来构造锁和同步类,如ReentrantLock,Semaphore,CountDownLatch,CyclicBarrier。AQS的原理是,AQS内部有三个核心组件,一个是state代表加锁状态初始值为0,一个是获取到锁的线程,还有一个阻塞队列。当有线程想获取锁时,会以CAS的形式将state变为1,CAS成功后便将加锁线程设为自己。原创 2023-10-19 11:20:19 · 431 阅读 · 12 评论 -
Java面试题总结(一):Java基础
JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。原创 2023-10-11 17:15:56 · 404 阅读 · 24 评论 -
常用的设计模式汇总,超详细!
单例模式,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。原创 2023-10-10 08:45:00 · 216 阅读 · 13 评论 -
脚本语言与编译语言的区别
脚本语言和编译语言在语法、执行方式和应用领域等方面存在明显的区别。选择使用哪种语言取决于具体的需求和项目要求。对于初学者来说,脚本语言更易于上手,而编译语言则更适合开发复杂的应用程序。原创 2023-08-17 18:23:02 · 621 阅读 · 33 评论 -
Netty和Tomcat的区别、性能对比
Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基于http协议的web容器,但是Netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和tomcat最大的不同。原创 2023-05-26 10:25:44 · 1910 阅读 · 23 评论 -
新星计划【Java微服务+云原生】赛道开启!
鹤冲天Pro:阿里云专家博主、新星计划导师、Java领域新星创作者、CSDN内容合伙人、华为云享专家、腾讯云优秀博主、51CTO博客专家、全栈技术分享者,有多年Java后端开发工作经验。熟练掌握:Java、K8s、Netty、TCP/IP、SpringCloud、Docker、MySQL、Redis、Vue、React等技术。 座右铭: 终身学习,持续进步,求知若饥,虚心若愚。原创 2023-05-25 10:45:58 · 788 阅读 · 13 评论 -
ZooKeeper(一):基础介绍
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协同服务。ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。这篇文章主要介绍了ZooKeeper 的基本概念、发展历史和应用场景,并详细介绍了ZooKeeper 数据模型,为后面更加深入的学习打好基础。原创 2023-05-23 16:13:22 · 1369 阅读 · 15 评论 -
Spring Boot 可执行 Jar 包运行原理
Spring Boot 有一个很方便的功能就是可以将应用打成可执行的 Jar。那么大家有没想过这个 Jar 是怎么运行起来的呢?本篇博客就来介绍下 Spring Boot 可执行 Jar 包的运行原理。原创 2023-05-21 18:17:05 · 1810 阅读 · 14 评论 -
RestTemplate使用详解
在项目中,当我们需要远程调用一个 HTTP 接口时,我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。RestTemplate 是一个同步的 Rest API 客户端。下面我们就来介绍下 RestTemplate 的常用功能。原创 2023-05-21 15:45:00 · 2929 阅读 · 16 评论 -
API架构的选择,RESTful、GraphQL还是gRPC
RESTful、GraphQL和gRPC是三种常见的API架构设计和实现模式,它们在设计理念、数据传输方式和使用场景上都存在这一定的差异,我们在做API实现方案的选型时,要结合具体的应用需求、开发团队的技术能力和技术栈,以及可扩展性等实际需求,来选择适合的方案。要记住的至关重要的一点是:最新的、最流行的不一定是最好的选择。另外,无论选择哪种架构和协议,重要的是理解其特点、原则和使用方式,并根据具体情况进行合理的设计和优化,以提供高效、可扩展和可靠的API服务。原创 2023-05-21 10:16:38 · 2657 阅读 · 19 评论 -
SpringBoot整合logback日志
Logback 相对于 Log4J 有更多的优点(1)logback不仅性能提升了,初始化内存加载也更小了。(2)内容更丰富的文档(3)更强大的过滤器原创 2023-05-12 14:19:05 · 965 阅读 · 21 评论 -
SpringBoot整合ElasticSearch
ElasticSearch 使用 Java 编写的,它的内部使用的是 Lucene 做索引与搜索,它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之提供了一套简单一致的 RESTful API。接下来介绍基于spring-boot-starter-data-elasticsearch整合。原创 2023-05-12 13:15:00 · 1771 阅读 · 16 评论 -
SpringBoot整合Mybatis增删改查
使用 Java 开发或者学习过程中,最避免不了的是连接和操作数据库,此次,学习如何在Spring Boot中配置和使用Mybatis框架,提高开发效率。原创 2023-05-11 14:22:20 · 774 阅读 · 15 评论 -
【SpringBoot】过滤器,监听器,拦截器介绍
过滤器是在请求进入tomcat容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。原创 2023-05-10 16:39:22 · 2481 阅读 · 15 评论 -
在Java基础上对比学习C#基本语法
对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想。Java和C#都是面向对象的语言,相似度很大,下面用对比的方式来学习C#。原创 2023-05-09 11:25:43 · 908 阅读 · 12 评论 -
【并发多线程】java并发中的Synchronized关键词
如果在多线程的环境中,我们经常会遇到资源竞争的情况,比如多个线程要去同时修改同一个共享变量,这时候,就需要对资源的访问方法进行一定的处理,保证同一时间只有一个线程访问。java提供了synchronized关键字,方便我们实现上述操作。原创 2023-04-02 14:46:29 · 1265 阅读 · 18 评论 -
【并发多线程】java.util.concurrent简介
java.util.concurrent包提供了很多有用的类,方便我们进行并发程序的开发。本文将会做一个总体的简单介绍。原创 2023-03-30 13:43:16 · 868 阅读 · 15 评论 -
详解Spring、SpringBoot、SpringCloud三者的联系与区别
Spring Boot 其实是依赖于Spring 的,并不是一个全新的架构,Spring Boot 就是 Spring 的自动化,而 Spring Cloud 通过依赖 Spring Boot 来置微服务应用。原创 2023-03-19 22:08:17 · 5947 阅读 · 34 评论 -
Java 中SimpleDateFormat 错误用法及改正
开发 Java 项目时经常操作时间、日期与字符串的互相转换,最常见简单的方式是使用 SimpleDateFormat,想必大家对它不陌生。 虽然它简单易用,如果没有正确使用,在一般环境下使用通常不会出错,但在高并发(Highly Concurrent)的环境下就可能会出现异常。原创 2023-03-19 09:09:23 · 1813 阅读 · 16 评论 -
分析 Spring 的依赖注入模式
依赖注入(Dependency Injection)是 Spring 实现控制反转概念的重要手段。 Spring 提供了多种依赖注入方式,其中最方便、最常用的是 field injection,它应该是许多人第一次写 Spring 项目时所使用的模式,虽然这方式简单易用,却有不少缺点。原创 2023-03-18 18:55:17 · 1225 阅读 · 16 评论 -
Spring Boot框架基础介绍
Spring Boot 是一款基于 Spring 框架的开源应用程序开发工具,它旨在简化 Spring 应用程序的配置和开发过程。Spring Boot 提供了一种简单的方式来创建可独立运行的、生产级别的应用程序,并在需要时进行部署。Spring Boot 在微服务架构和云计算环境下得到了广泛应用,本文将介绍 Spring Boot 的特性、优势以及使用方法。原创 2023-02-20 11:18:17 · 18424 阅读 · 9 评论 -
SpringCloud和微服务介绍
SpringCloud是在SpringBoot的基础上构建的,用于简化分布式系统构建的工具集。该工具集为微服务架构中所涉及的配置管理,服务发现,智能路由,断路器,微代理和控制总线等操作提供了一种简单的开发方式。原创 2023-02-12 09:54:21 · 7056 阅读 · 20 评论 -
JVM内存模型
JVM 不仅承担了 Java 字节码的分析和执行,同时也内置了自动内存分配管理机制。这个机制可以大大降低手动分配回收机制可能带来的内存泄露和内存溢出风险,使 Java 开发人员不需要关注每个对象的内存分配以及回收,从而更专注于业务本身。在 Java 中,JVM 内存模型主要分为堆、方法区、程序计数器、虚拟机栈和本地方法栈。原创 2023-02-01 11:16:43 · 12348 阅读 · 6 评论 -
JVM垃圾回收器介绍和对比
不同的垃圾回收器有不同的特性,并没有一个万能或最好的垃圾回收器,只能根据不同的业务场景选择最合适的垃圾回收器,所以这节就来了解下各个垃圾回收器的特性。原创 2023-02-01 11:52:37 · 5977 阅读 · 8 评论 -
JVM垃圾回收机制和算法
Java 程序在虚拟机中运行,是会占用内存资源的,比如创建的对象、加载的类型数据等,而且内存资源都是有限的。当创建的对象不再被引用时,就需要被回收掉,释放内存资源,这个时候就会用到JVM的垃圾回收机制。原创 2023-02-01 11:35:39 · 5873 阅读 · 6 评论 -
低代码/零代码的快速开发框架
目前国内主流的低代码开发平台有:宜搭、简道云、明道云、云程、氚云、伙伴云、道一云、JEPaaS、华炎魔方、搭搭云、JeecgBoot 、RuoYi等。这些平台各有优劣势,定位也不同,用户可以根据自己需求选择。原创 2023-02-16 12:48:32 · 8478 阅读 · 9 评论 -
Netty网络编程(一):初步了解
netty易于开发、性能优秀,同时兼具稳定性和灵活性。如果你希望开发高性能的服务,那么使用netty总是没错的。转载 2023-01-10 20:09:24 · 7119 阅读 · 6 评论 -
Netty网络编程(二):架构概述
Netty为什么这么优秀,它在JDK本身的NIO基础上又做了什么改进呢?它的架构和工作流程如何呢?请走进今天的netty系列文章之:netty架构概述。转载 2023-01-13 16:38:13 · 6007 阅读 · 7 评论 -
Netty网络编程(三):Channel详解
Channel是连接ByteBuf和Event的桥梁,netty中的Channel提供了统一的API,通过这种统一的API,netty可以轻松的对接多种传输类型,如OIO,NIO等。今天本文将会介绍Channel的使用和Channel相关的一些概念。转载 2023-01-13 19:33:57 · 16671 阅读 · 12 评论 -
Netty网络编程(四):Event、Handler和Pipeline
上一节我们讲解了netty中的Channel,知道了channel是事件处理器和外部联通的桥梁。今天本文将会详细讲解netty的剩下几个非常总要的部分Event、Handler和PipeLine。转载 2023-01-16 14:03:22 · 5515 阅读 · 4 评论 -
Netty网络编程(五):使用UDP协议
本文讲解了netty中UDP协议的实现,UDP相较于Socket连接而言更加简单。转载 2023-01-17 19:48:08 · 7038 阅读 · 7 评论 -
Netty网络编程(六):搭建websocket服务器
websocket是一个优秀的协议,它是建立在TCP基础之上的,兼容HTTP的网络协议。通过Websocket我们可以实现客户端和服务器端的即时通讯,免除了客户端多次轮循带来的性能损耗。既然websocket这么优秀,那么怎么在netty中使用websocket呢?转载 2023-01-17 19:56:27 · 8992 阅读 · 16 评论 -
Shiro和Spring Security安全框架对比
Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单。与Spring Security对比,Shiro可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。下面对这两个安全框架进行了对比,可以根据你的项目需要选出适合的安全框架。原创 2023-01-06 10:13:39 · 2556 阅读 · 7 评论 -
mybatis框架详解
mybatis的前身是apache ibatis,2010年由ASF转移到google code,从ibatis3.x改名为mybatis,2013年转移到github。mybatis是由java实现的持久层框架。原创 2023-01-05 16:57:24 · 8558 阅读 · 4 评论 -
maven高级使用教程
maven是Apache软件基金会的一款依赖管理和快速构建的软件原创 2023-01-05 12:22:38 · 6358 阅读 · 10 评论 -
导入自己写的包,运行时出现 java:找不到符号的问题
导入自己写的包,运行时出现 java:找不到符号的问题问题描述解决措施问题描述在做乐优商城的时候,导入自己写的包,导入依赖时没有出现异常,但是在运行leyou-items-service微服务时报错,提示java找不到Brand。解决措施先将Brand实体类所在的leyou-common工程,clean和install。然后将引用Brand的leyou-items-service工程的父工程leyou-items工程clean和install。...原创 2020-12-15 18:16:51 · 1427 阅读 · 0 评论