自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis

目录一、Redis基础二、Redis的持久化三、Redis缓存问题四、Redis分布式锁五、集群三种方式六、Redis内存

2021-01-08 10:31:59 115

原创 MySQL

目录一、事务二、MySQL存储引擎三、MySQL锁机制四、InnoDB锁机制五、索引六、SQL优化七、数据库连接池八、数据库主从同步九、分库分表十、Sharding-JDBC

2021-01-07 10:11:46 118

原创 Java

目录一、Java基础知识二、JVM原理三、HashMap原理

2021-01-05 11:01:28 149

原创 Spring

一、Spring基础二、IOC容器原理三、AOP原理四、Bean的生命周期五、Spring事务原理六、Sring涉及的设计模式七、过滤器(Filter)、拦截器(Interceptor)、监听器八、Servlet九、Web应用各个容器之间的关系...

2020-12-02 11:01:34 113

原创 十五、函数式编程

Terminal操作的执行,才会真正开始流的遍历,并且会生成一个结果。在对一个Stream进行多次转换操作Intermediate操作,每次都对Stream的每个元素进行转换,转换操作都是lazy的,多个转换操作只会在Terminal操作的时候融合起来,一次循环完成。函数接口的抽象方法可以是从超级接口继承而来,但继承而来的方法应该是覆写等效的,这种情况,在逻辑上,代表一个方法。如果值存在,就对该值执行提供的mapping函数调用,返回一个Optional类型的值,否则就返回一个空的Optional对象。

2023-08-16 17:45:05 129

原创 十四、Java SPI

大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。①、当服务提供者提供了接口的一种具体实现后,在jar包的META-INF/services目录下创建一个以“接口全限定名”为命名的文件,内容为实现类的全限定名。a、SrviceLoader只能通过遍历全部获取,也就是接口的实现类全部加载并实例化一遍,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。③、系统里抽象的各个模块,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。

2023-08-16 17:27:35 140

原创 十三、Java Agent

java.lang.instrument.Instrumentation是instrument包中定义的一个接口,也是这个包的核心部分,集中了其中几乎所有的功能方法,例如类定义的转换和操作等。在程序运行后加载,是不可能在主程序A中编写加载的代码,只能另写程序B,A、B程序之间的通信会用到attach机制,它可以将JVM B连接至JVM A,并发送指令给JVM A执行,JDK自带常用工具如jstack,jps等就是使用该机制来实现的。MANIFEST.MF文件用于描述Jar包的信息,例如指定入口函数等。

2023-08-16 17:21:22 290

原创 2、适配器模式

①、适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。②、适配器继承或依赖已有的对象,实现想要的目标接口。③、角色 a、源角色:原有的接口,也是希望被适配的接口,例:VlcPlayer类或AdvancedMediaPlayer接口。

2022-09-13 17:01:23 423 1

原创 1、代理模式

代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。这样做的好处是:在不改动原有代码的前提下,在已有代码基础上添加新的功能,从而增强原功能。这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。

2022-09-13 17:00:14 214

原创 4、建造者模式

建造者模式 (1)、概述 将一个复杂的对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示。为了灵活构造复杂对象,该对象会有多个成员变量,在外部调用的时候,不需要或者不方便一次性创建出所有的成员变量,在这种情况下,使用多个构造方法去构建对象,很难维护,这时候Builder设计模式解决这个问题,进行buid()方法中创建对象,并且将builder传入,该builder中,维护了传入对象的成员变量。 当一个类的构造函数参数个数超过4

2022-09-13 16:59:25 577

原创 3、抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。(1)、优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。(2)、缺点:产品族扩展非常困难,要增加一个系列的某一产品

2022-09-13 16:55:57 104

原创 2、工厂模式

工厂模式(Factory Pattern)是Java中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

2022-09-13 16:54:19 103

原创 1、单例模式

一、创建型模式 1、单例模式 所谓单例,就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。从而避免频繁的创建销毁对象,可以提高性能;避免对共享资源的多重占用;简化访问,为整个系统提供一个全局访问点。因为所属构造方法是私有,所以不支持继承。 众所周知,单例模式是创建型模式,都会新建一个实例。那么一个重要的问题就是反序列化。当实例被写入到文件到反序列化成实例时,我们需要重写readResolve方法,以让实例唯一。单例模式主要应用比如

2022-09-13 16:52:36 137

原创 一、六大设计原则

一、六大设计原则 1、开闭原则(Open Close Principle) 开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,需要使用接口和抽象类。 2、里氏代换原则(Liskov Substitution Principle) 里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可

2022-09-13 16:43:02 114

原创 6、Selector

6、Selector(1)、特点 Selector(选择器)用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。即用选择器,借助单一线程,就可对数量庞大的活动I/O通道实施监控和维护。①、Netty的IO线程NioEventLoop聚合了Selector(选择器,也叫多路复用器),可以同时并发处理成百上千个客户端连接。②、当线程从某客户端Socket通道进行读写

2022-08-25 10:18:33 466

原创 5、Channel

通道(Channel)用于源节点与目标节点的连接,在Java NIO中负责缓冲区中数据的传输,Channel本身不存储数据,因为需要配合缓冲区进行传输。Channel是双向的,既可以用来进行读操作,又可以用来进行写操作。NIO把缓冲区的数据写入通道,或者把通道里的数据读到缓冲区。③、在JDK1.7中的NIO.2的Files工具类的newByteChannel()②、在JDK1.7中的NIO.2针对各个通道提供了静态方法open()Java针对支持通道的类提供了getChannel()方法。

2022-08-25 10:14:58 660

原创 4、Buffer

①、ByteBuffer:存储字节数据到缓冲区 ②、CharBuffer:存储字符数据到缓冲区 ③、ShortBuffer ④、IntBuffer ⑤、FloatBuffer ⑥、LongBuffer ⑦、DoubleBuffer

2022-08-25 10:09:57 290

原创 1、基本数据类型和引用类型

1、基本数据类型和引用类型

2022-08-25 09:31:43 115

原创 2、final和static关键字

final和static关键字

2022-08-25 09:31:32 122

原创 10、String、StringBuilder、StringBuffer的区别

String、StringBuilder、StringBuffer的区别

2022-08-25 09:31:23 133

原创 11、float、double、BigDecimal的区别

float、double、BigDecimal的区别

2022-08-25 09:31:12 1417

原创 12、关系运算符

Java关系运算符

2022-08-25 09:31:03 121

原创 13、序列化和反序列化

序列化和反序列化

2022-08-25 09:30:45 183

原创 四、Arthas

Arthas

2022-08-24 17:00:34 489

原创 一、限流组件

限流方式

2022-08-24 16:56:46 679

原创 十一、MySQL日志

MySQL日志、redo log、undo log、bin log

2022-08-24 16:45:52 1007

原创 十、缓存与数据库一致性

缓存与数据库一致性,Redis,MySQL

2022-08-24 16:43:32 202

原创 四、Netty模块组件

Netty模块组件

2022-08-24 16:41:08 240

原创 三、线程/进程模型

线程/进程模型

2022-08-24 16:37:52 368

原创 二、I/O模型

I/O模型

2022-08-24 16:36:10 533

原创 一、Netty基础概念

Netty

2022-08-24 16:28:41 204

原创 十四、Java SPI

Java SPI解析

2022-08-24 16:23:18 149

原创 十三、Java Agent

java agent attach机制

2022-08-24 16:20:07 2030 1

原创 Caffeine 使用与原理

Caffeine 使用与原理_Star_2222的博客-CSDN博客_caffeine 原理caffeine、GuavaCache、EhCache 比较Caffeine 基础使用SpringBoot 集成Caffeine配置注解@Cacheable@CachePut@CacheEvict@Caching@Caching其他功能监听器(Removal )统计(Statistics)补充说明Caffeine 策略分析过期策略更新策略填充策略同步加载(Loading)

2022-05-18 21:03:47 1668

原创 Guava Cache:原理详解和源码分析

原文路径:Guava Cache:原理详解和源码分析_夜雨落花的博客-CSDN博客_guava缓存原理一、基础信息1、maven依赖<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.1-jre</version></dependency>...https://blog.csdn.n

2022-05-17 19:28:53 844

原创 Guava Cache:核心参数深度剖析和相关源码分析

来源:Guava Cache:核心参数深度剖析和相关源码分析_夜雨落花的博客-CSDN博客1、核心参数概览2、核心参数分功能分析https://blog.csdn.net/weixin_38569499/article/details/108887341目录1、核心参数概览2、核心参数分功能分析2.1 初始容量initialCapacity2.2 最大容量maximumSize2.3 加权器weigher和最大加权值maximumWeight2.4 写后超时expireAfter

2022-05-17 19:27:22 665

原创 六、Spring Cloud OpenFeign

六、Spring CloudOpenFeign Feign在GitHub已停更,Feign是Spring Cloud组件中的一个轻量级RESTful的HTTP服务客户端。Spring Cloud对Feign进行封装,使Feign支持了Spring MVC注解,能够在类接口上添加注解,成为一个REST API客户端,也就是OpenFeign。是一种声明式、模板化的HTTP客户端,主要目标是将Java Http客户端变得简单。Fegin还整合了Ribbon、Eureka和Hystrix,从而让Fei...

2021-11-18 09:26:11 274

原创 七、Spring Cloud Bus

七、Spring Cloud Bus Spring Cloud Bus是轻量级的通讯组件,其中一个核心思想是通过分布式的启动器对Spring Boot应用进行扩展,也可以用来建立一个或多个应用之间的通信频道。目前唯一实现的方式是用AMQP消息代理作为通道。 1、配置刷新流程(1)、提交配置触发post请求给Config Server端的/bus/refresh接口。(2)、Config Server端接收到请求并发送给SpringCloud B...

2021-11-18 09:26:03 329

原创 八、Spring Cloud Config

八、Spring Cloud Config 提供了在分布式系统的外部配置的客户端支持。通过配置服务(Config Server)来为所有的环境和应用提供外部配置的集中管理。这些概念都通过Spring的Environment和PropertySource来抽象,所以它可以适用于各类Spring应用,同时支持任何语言的任何应用。它也能为你支持对应用开发环境、测试环境、生产环境的配置、切换、迁移。默认的配置实现通过git实现,同时也支持其他的扩展(比如svn等)。 1、组件...

2021-11-18 09:25:54 237

原创 九、Spring Cloud Stream

九、Spring Cloud Stream Spring Cloud Stream在Spring Cloud体系内用于构建高度可扩展的基于事件驱动的微服务,其目的是为了简化消息在Spring Cloud应用程序中的开发。 1、元素(1)、Destination Binders:目标绑定器,目标指的是Kafka还是RabbitMQ,绑定器就是封装了目标中间件的包。如果操作的是Kafka就使用kafka binder,如果操作的是RabbitMQ就使用rabbitmq b...

2021-11-18 09:25:45 347

Nacos源码解析流程图

Nacos源码解析流程图

2023-03-02

空空如也

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

TA关注的人

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