自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java多线程工具CompletableFuture介绍

CompletableFuture是java.util.concurrent库在java 8中新增的主要工具,同传统的Future相比,其支持流式计算、函数式编程、完成通知、自定义异常处理等很多新的特性。

2023-02-03 15:31:03 1628 1

原创 Spring AOP全面详解

AOP (Aspect Orient Programming),直译过来就是 面向切面编程,AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向切面编程,实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术

2023-01-05 11:40:04 219

原创 Java 异步编程 (5 种异步实现方式详解)

异步编程,它是程序并发运行的一种手段,它允许多个事件同时发生,当程序调用需要长时间运行的方法时,它不会阻塞当前的执行流程,程序可以继续运行。

2023-01-05 11:03:30 428

原创 Java反射详解:入门+使用+原理+应用场景

反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

2023-01-05 10:45:20 203

原创 Dubbo 原理和机制详解

Dubbo是一款Java RPC框架,致力于提供高性能的 RPC 远程服务调用方案。作为主流的微服务框架之一,Dubbo为开发人员带来了非常多的便利。

2023-01-05 10:14:00 310

原创 MyBatis架构原理详解

MyBatis 是 Java 生态中非常著名的一款 ORM 框架,目前在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。Mybatis的功能架构分为三层:API接口层,数据处理层,基础支撑层

2022-11-24 16:10:20 3107 1

原创 Java-NIO详解

NIO (Non-blocking lO,非阻塞IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java lO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。NIO可以理解为非阻塞IO,传统的IO的read和write只能阻塞执行,线程在读写IO期间不能干其他事情

2022-11-23 18:05:44 1341

原创 Socket详解

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。

2022-11-22 15:24:47 4270 1

原创 RabbitMQ详解

RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。

2022-11-11 15:33:40 4036

原创 SpringCloud介绍

SpringCloud 为开发者提供了工具来快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话,集群状态)。分布式系统的协调导致了样板模式,使用 SpringCloud 开发人员可以快速建立实现这些模式的服务和应用程序。程序在任何分布式环境中都能很好地工作,包括开发人员个人的笔记本电脑、裸机数据中心以及 Cloud Foundry 等托管平台。

2022-10-21 17:54:36 559

原创 分布式之Dubbo+Zookeeper

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。

2022-10-18 15:17:53 422

原创 Spring Boot 介绍

是一个JavaWeb的开发框架,和SpringMVC类似,对比其他JavaWeb框架的好处,官方说是简化开发,约定大于配置, you can “just run”,能迅速的开发web应用,几行代码开发一个http接口。

2022-10-17 17:44:53 408

原创 Spring MVC介绍

Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。

2022-09-30 11:23:19 191

原创 Spring介绍

Spring是一个开放源代码的设计层面框架,解决业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

2022-09-21 14:50:21 1918

原创 Cookie和Session

客户端是第二次访问服务器,服务器还是把此次访当做一个新的访问进行处理,因为服务端并不知道客户端之前是否访问过。为了解决这一问题,Web程序中采用会话跟踪技术,会话跟踪技术就是依靠Cookie和Session实现。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

2022-09-09 12:51:55 3030

原创 CountDownLatch原理解析

CountDownLatch是多线程控制的一种同步工具类,它被称为门阀、 计数器或者闭锁。这个工具经常用来用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。

2022-09-07 11:06:18 588

原创 Semaphore原理解析

Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。

2022-09-06 16:21:36 385

原创 Lock与ReentrantLock

Lock位于java.util.concurrent.locks包下,是一种线程同步机制,就像synchronized块一样。但是,Lock比synchronized块更灵活、更复杂。

2022-09-02 16:58:54 1834

原创 解析CAS原理

CAS的全称是Compare and swap, 它是一条CPU并发原语。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。整个过程是原子性的。...

2022-08-27 09:34:02 697

原创 解析AQS实现原理

AQS全称为AbstractQueuedSynchronizer,翻译过来就是抽象队列同步器。AQS是一个用来构建锁和其他同步组件的基础框架,使用AQS可以简单且高效地构造出应用广泛的同步器,例如我们后续会讲到的ReentrantLock、Semaphore、ReentrantReadWriteLock和FutureTask等等。......

2022-08-26 10:18:41 2100

原创 解析volatile实现原理

volatile 三个特性1. 保证共享变量的可见性:保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。2. 防止局部指令重排序:happens-before规则中的volatile变量规则规定了一个线程先去写一个volatile变量,然后一个线程去读这个变量,那么这个写操作的结果一定对读的这个线程可见。3. 不保证原子性。

2022-08-23 16:40:37 225

原创 解析synchronized实现原理

在多线程环境下synchronized可以保证在同一个时刻,只有一个线程可以执行某个方法或者某个代码块(主要是对方法或者代码块中存在共享数据的操作)。synchronized可保证一个线程的变化(主要是共享数据的变化)被其他线程所看到(保证可见性,完全可以替代Volatile功能)。

2022-08-22 17:37:10 131

原创 Redis相关知识点(分布式锁,异步队列,缓存雪崩,缓存击穿,热点数据,集群,持久化原理等)

Redis相关知识点(分布式锁,异步队列,缓存雪崩,缓存击穿,热点数据,集群,持久化原理等)

2022-08-19 16:22:50 396

原创 MySQL事务详解

事务就是一组独立不可分割的工作单元,事务中的操作要么全部执行,要么都不执行。MySQL中,MyISAM引擎没有实现事务,而InnoDB实现了事务,这也是MyISAM 逐渐被InnoDB 所替代的原因之一。

2022-08-18 10:35:10 612

原创 MySQL查询优化分析

SQL执行慢的原因1. 从sql来说没有创建索引索引失效关联查询太多的join2. 从服务器来说服务器磁盘空间不足服务器调优配置参数设置不合理

2022-08-17 16:23:49 570

原创 MySQL索引详解

​索引是存储引擎用于快速找到记录的一种数据结构。

2022-08-17 14:17:20 91

原创 java-线程与线程池

java-线程与线程池

2022-08-08 18:01:29 298

原创 Java-集合总结(面试向)

Java-集合总结(面试向)

2022-08-08 10:37:24 162

原创 Java-异常

Java异常介绍

2022-08-04 17:33:30 748

原创 Java注解原理解析

Java注解原理解析

2022-08-04 16:57:35 1845

翻译 总结spring中12种@Transactional的失效场景

总结spring中12种@Transactional的失效场景

2022-07-27 17:01:42 620

原创 JDK和CGLIB动态代理原理

JDK和CGLIB动态代理原理解析

2022-07-27 16:34:47 1296

原创 Java-同步、异步、阻塞、非阻塞理解(面试向)

1.同步:调用一个函数,函数没有结束前死等结果,死等结果的目的就是为了保证数据的一致性,也体现出数据的同步。2.异步:调用一个函数,不需要等待函数的结果,执行下去,函数有结果后回调通知,此时数据可能就不同步。3.阻塞:指线程被挂起,期间不能处理其他事情,体现在cpu占用上就是此时不占用cpu。我理解与同步的不同也提现于此,同步虽然不能执行下午,但是此时还是占用cpu,线程也是激活状态。4.非阻塞:与阻塞相对,线程不会被挂起,可以执行下去处理其他事情。综上可知,同步和异步,阻塞和非阻塞,有些混

2022-06-17 10:30:07 808 3

原创 Java-final关键字和static关键字总结

finalfinal关键字可以用于成员变量、本地变量、方法及类。 修饰方法:表示方法不能被重写。 修饰类:表示该类不能被继承。 修饰变量:表示常量,必须在声明时赋值,赋值后不能被修改。 接口中声明的所有变量本身是final的。 按照Java规范,final变量就是常量,通常变量名要大写。static用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享。 用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类。 静态块用法:将多个类成员放

2022-06-13 20:13:36 337

原创 Java-抽象类与接口总结

抽象类(abstract class)抽象类主要用于被继承,被继承后子类需要重写父类的所有抽象方法。 抽象类可以有抽象方法和普通成员方法,即抽象类不一定有抽象方法,但有抽象方法的一定是抽象类。 抽象类不能实例化。 抽象类里面可以有普通成员变量和普通成员方法。 抽象类可以有构造方法,创建子类对象使用,由子类构造方法可以初始化父类成员变量。 抽象类的抽象方法没有具体实现,该抽象方法用于被子类重写后通过抽象类这个父类调用子类重写后的方法接口(interface):比抽象类更抽象的纯抽象代码结构。

2022-06-13 19:27:46 152

原创 Java—JVM和JMM详解

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译,实现了平台无关性。......

2022-06-12 12:45:15 1597 1

原创 Java面向对象三大特征理解

1.继承继承是从已有类得到继承信息创建新类的过程。继承提高代码重用性。关于私有属性,官方文档解释:子类不能继承父类的私有属性,但是如果子类中有公共方法操作父类私有属性,则表现出子类可以使用父类的私有属性。注:继承关系不可滥用,例如:java.util包下Properties类直接继承Hashtable,这就是对继承关系的滥用。这里服用代码的方式应该是Has-A而不是Is-A。另一个方面,容器都属于工具类,继承工具类本身就是一个错误做法。试用工具类最好方式是Has-A关联关系或者Use-A依赖关系。

2022-06-10 15:22:34 826

空空如也

空空如也

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

TA关注的人

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