自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 序列化方式五——ProtoStuff

Protostuff是一个基于Java的高效序列化库,它使用Protocol Buffers(简称protobuf)协议,为Java对象提供高效、灵活且易用的序列化和反序列化方法。Protostuff的主要优势在于其高性能和简单的使用方式,相对于其他序列化库,如JSON或XML,它在处理大量数据时能够显著降低内存使用并提高传输速度。

2024-09-30 18:12:32 760

原创 序列化方式四——Hessian

return;Class

2024-09-30 18:08:27 1174

原创 序列化方式三——XML

JAXB通过利用Jackson对JAXB注解的支持(即jackson-module-jaxb-annotations模块),不仅简化了XML的生成过程,同时也便于生成JSON。这种集成方式极大地增强了JavaBean与XML及JSON之间的互操作性,使得数据转换变得更加灵活高效。JAXB(Java Architecture for XML Binding)作为业界标准,它提供了一种机制,可以根据XML Schema自动生成对应的Java类。

2024-09-30 18:05:31 985

原创 序列化方式二——JSON之Jackson

Jackson库,作为一款高性能的Java JSON处理工具,以其灵活的解析与生成能力,在Java开发中占据了重要地位。它简化了Java对象与JSON数据之间的转换过程,不仅操作简便,而且性能卓越。Jackson库的核心构建块包括和。作为该库的核心类,承担着Java对象与JSON格式数据相互转换的重任,其实例设计为线程安全,便于在多线程环境下共享使用,从而提高了资源利用率和程序效率。则是一个抽象基类,用于表示JSON文档中的任何节点。通过其丰富的子类体系,如(对应JSON对象)、(对应JSON数组)以及(代

2024-09-22 18:07:24 4

原创 序列化方式二——JSON之Gson

JsonSerializer和JsonDeserializer:Gson 1.x版本中提供的自定义序列化器和反序列化器接口,基于树型结构进行解析。TypeAdapter:Gson 2.0版本中新增的自定义序列化器和反序列化器接口,基于流式结构进行解析,相比树型结构更节省内存。通过实现JsonSerializer和JsonDeserializer接口来自定义序列化和反序列化过程。这在你需要处理复杂对象或特殊格式时非常有用。Builder;Data;Date;

2024-09-22 18:02:07 1213

原创 序列化方式二——JSON之Fastjson

允许用户自定义序列化器,用于控制特定类型的序列化过程。用户需要实现接口,并重写write方法。@Data// 构造方法、getter和setter省略@Override// 自定义序列化逻辑// 输出自定义序列化后的结果专门用于处理将 JSON 数据反序列化为 Java 对象的过程。不过,需要注意的是,对于大多数开发者而言,直接使用进行自定义反序列化可能不是最常见的做法,因为 Fastjson 提供了更高级别的抽象(如@JSONField注解、Feature。

2024-09-20 17:27:13 1349

原创 序列化方式一——JDK自带的序列化

若未显式指定,编译器将自动生成此ID。简洁性:JDK的序列化机制极其简便,仅需目标类实现Serializable接口即可,该接口作为标记接口,不强制要求实现任何方法,仅用于指示该类支持序列化。安全风险:序列化数据中包含了类的详细信息,若未妥善处理,易受到反序列化攻击,攻击者可能构造恶意数据以实例化非预期对象,造成系统安全漏洞。性能开销:由于序列化过程中包含了大量的元数据,导致生成的二进制流体积较大,增加了网络传输或文件存储的负担,降低了性能。易用性:实现序列化仅需一行代码(实现接口),极大降低了开发门槛。

2024-09-19 23:18:35 444

原创 一文解决序列化&反序列化体系

序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,这通常意味着将一个对象(通常是一个实现了接口的类的实例)转换成一系列字节,这些字节可以被保存到文件中或通过网络发送到另一个位置。这样做的目的主要是实现两个目标:持久化存储:通过序列化,对象可以被永久地保存到存储介质(如硬盘)上,即使程序结束运行,对象的状态也可以被保存下来,并在需要时重新加载。网络传输:序列化后的字节流可以通过网络发送给其他计算机,实现对象在不同计算机之间的共享。总结:将数据结构或对象转换成二进制字节流的过程。

2024-09-19 23:17:01 1083

原创 史上最强异步编程~CompletableFuture精读

是一个强大的类,它同时实现了Future和两个关键接口,集成了异步计算结果的表示与异步计算流程编排的双重功能。Future接口:该接口定义了异步操作的结果,提供了检查任务是否完成、获取计算结果以及尝试取消任务的能力。它是对未来可能完成的计算结果的一个抽象表示。CompletionStage接口:作为异步计算流程的核心,代表了异步操作中的一个阶段,允许将多个异步操作串联起来,形成复杂的异步执行流程。通过它,开发者可以灵活地编排和组合多个异步任务,实现高效且易于管理的异步编程模型。方法描述是否有返回值。

2024-09-18 17:01:25 2128

原创 2、深入了解注解机制

注解的属性和默认值Java注解可以包含属性和默认值,属性可以是任意基本数据类型、String、枚举类型、Class对象、注解类型和它们的一维数组类型。例如:其中,属性通过名称和值的方式进行赋值,如:@TestAnnotation(name=“test”, value=100)。Java注解的元素类型包括普通类型(例如:int、String、boolean等)、Class类型、String数组类型、枚举类型和注解类型。元素类型用于限制注解可以存储的值的类型。例如:注解的使用方式Java注解可以用于类、

2023-08-02 15:44:35 752 9

原创 Java基础——深入了解泛型机制

首先我们写一个测试类,} }然后我们可以用javap -c Test.class编译或者java的plugins:jclasslib-bytecode-viewer,得出以下L1ICONST_1ICONST_2) V L2RETURNL3从编译结果来看,它内部字节码编译的时候增加了以下几个字节码ICONST_1ICONST_2这就是所谓的桥方法。

2023-06-01 14:19:08 856 3

原创 Java基础——面向对象

在同一个类中,只要方法的方法名相同,那么这几个方法就构成重载。重载方法的参数类型和参数个数可以不同,返回值的类型也可以不同,无法根据返回值类型来判断一个方法是不是重载方法。重载方法的权限可以是是任意权限,这是没有要求的。重载的作用是:减少代码长度,它是更高效利用方法的一种方式,它的特征就是在引用方法的时候添加不同的参数,让程序走向不同的方向,它作用于单个类中。

2023-04-27 15:06:58 532

原创 Spring——最全Spring目录

领域:对支付(FMS,FUND,PAY),订单(OMS),出行行业等有相关的开发领域。,有兴趣的可以私聊博主一起编写,或者给颗star。公众号:小白的Java进阶之路。

2023-01-05 14:51:02 1775 7

原创 【Spring【AOP】】——21、@EnableAspectJAutoProxy注解详解?

我们会进入refresh()方法里面的,并且会执行到下面这一行重要代码,//注册Bean处理器,然后拦截bean创建。然后我们进入registerBeanPostProcessors方法中,看一下其核心实现,她就是调用了 PostProcessorRegistrationDelegate的registerBeanPostProcessors(beanFactory, this)静态方法。

2023-01-05 14:40:08 3479 5

原创 【Spring【IOC】】——19、使用@Profile注解实现开发、测试和生产环境的配置和切换?

公众号:小白的Java进阶之路,有兴趣的可以私聊博主一起编写,或者给颗star领域:对支付(FMS,FUND,PAY),订单(OMS),出行行业等有相关的开发领域。

2022-12-28 01:26:11 2275

原创 【Spring【AOP】】——20、搭建一个AOP测试环境?

AOP的全称是Aspect Oriented Programming,即面向切面编程。是实现功能统一维护的一种技术,它将业务逻辑的各个部分进行隔离,使开发人员在编写业务逻辑时可以专心于核心业务,从而提高了开发效率。

2022-12-27 03:13:16 926

原创 【Spring【IOC】】——18、自定义组件中如何注入Spring底层的组件?

其实说白了就是哪个接口需要获取配置,那么那个接口就需要进行实现该接口 EnvironmentAware并实现里面的 setEnvironment方法/**其实说白了就是哪个接口需要获取配置,那么那个接口就需要进行实现该接口并实现里面的set方法}哪个类需要获取配置信息那么该类就需要进行该接口 environmentAware 的实现实现 environmentAware 这个接口所提供的方法 setEnvironment()通过 environment 进行配置信息获取。

2022-12-27 01:26:32 948

原创 【Spring【IOC】】——17、@Resource注解和@Inject注解?

Resource注解和@Autowired注解的功能是一样的,都能实现自动装配,只不过@Resource注解默认是按照组件名称(即属性的名称)进行装配的。虽然@Resource注解具备自动装配这一功能,但是它是不支持@Primary注解优先注入的功能的,而且也不能像@Autowired注解一样能添加required=false属性。

2022-12-14 21:48:29 1379

原创 【Spring【IOC】】——16、使用@Autowired、@Qualifier、@Primary这三大注解自动装配组件?

如果方法只有一个IOC容器中的对象作为参数,当@Autowired注解标注在这个方法的参数上时,我们可以将@Autowired注解省略掉。也就说@Bean注解标注的方法在创建对象的时候,方法参数的值是从IOC容器中获取的,此外,标注在这个方法的参数上的@Autowired注解可以省略。

2022-12-14 21:42:06 811

原创 【Spring【IOC】】——15、使用@PropertySource加载配置文件

通过@PropertySource注解可以将properties配置文件中的key/value存储到Spring的Environment中,Environment接口提供了方法去读取配置文件中的值,参数是properties配置文件中定义的key值。

2022-12-14 21:35:39 1339

原创 【Spring【IOC】】——14、如何使用@Value注解为bean的属性赋值呢?

{···}:用于执行SpEl表达式,并将内容赋值给属性${···}:主要用于加载外部属性文件中的值KaTeX parse error: Expected 'EOF', got '#' at position 7: {···}和#̲{···}可以混合使用,但是必…{}在里面。

2022-12-14 21:24:37 1168

原创 【Spring【IOC】】——13、BeanPostProcessor在Spring底层是如何使用的?

1、ApplicationContextAwareProcessor2、BeanValidationPostProcessor3、InitDestroyAnnotationBeanPostProcessor4、AutowiredAnnotationBeanPostProcessor

2022-12-14 21:19:36 619

原创 【Spring【IOC】】——12、BeanPostProcessor的执行流程?(源码分析)

在最后的2.11中InitializeBean方法中,调用了invokeInitMethods(beanName, wrappedBean, mbd);方法,他的主要作用是执行初始化相关方法,我们可以看一下其源码可以发现他是先执行所有的的子类之后然后再去调用在XML配置文件的标签中使用init-method属性指定的初始化方法;在@Bean注解中使用initMehod属性指定的方法;

2022-12-14 21:11:42 1054

原创 【Spring【IOC】】——11、了解BeanPostProcessor后置处理器

BeanPostProcessor在Spring中是一个很强大的后置处理器接口,常用于注解处理,比如我们常用的@Value本质就是用这个后置处理器处理,那么BeanPostProcessor长的是什么样子的呢?代码如下。

2022-11-28 00:14:24 919

原创 【Spring【IOC】】——10、@PostConstruct注解和@PreDestroy注解

公众号:小白的Java进阶之路,有兴趣的可以私聊博主一起编写,或者给颗star领域:对支付(FMS,FUND,PAY),订单(OMS),出行行业等有相关的开发领域。

2022-11-28 00:11:51 909 1

原创 【Spring【IOC】】——9、如何指定初始化和销毁的方法?

我们这次主要是针对SpringBean的最后两步讲解,就是Bean的初始化,和销毁。具体怎么操作,我们只需要对通过@Bean注解指定初始化和销毁方法。使用InitializingBean和DisposableBean我们可以发现,Spring的Bean在单例的时候,他会按顺序执行初始化构造初始化完成Bean销毁(容器关闭的时候)

2022-11-22 23:32:55 1465 5

原创 【Spring【IOC】】——8、如何使用FactoryBean向Spring容器中注册bean?

一般情况下,Spring是通过反射机制利用bean的class属性指定实现类来实例化bean的。在某些情况下,实例化bean过程比较复杂,如果按照传统的方式,那么则需要在标签中提供大量的配置信息,配置方式的灵活性是受限的,这时采用编码的方式可以得到一个更加简单的方案。Spring为此提供了一个org.springframework.bean.factory.FactoryBean的工厂类接口,用户可以通过实现该接口定制实例化bean的逻辑。

2022-11-21 02:58:36 1616 9

原创 【Spring【IOC】】——7、@Import注解给容器中快速导入一个组件

Spring3.0之前我们可以通过XML方式去指定扫描特定的包将类注入到Spring容器中,Spring3.0之后通过JavaConfig的方式将Bean的元信息以代码的方式进行描述,我们可以通过@Configuration与@Bean配合使用将原来配置在XML方文件里面的Bean通过Java代码描述。

2022-11-17 01:00:24 2319 15

原创 【Spring【IOC】】——6、按照条件向Spring容器中注册bean

Conditional注解可以按照一定的条件进行判断,满足条件向容器中注册bean,不满足条件就不向容器中注册bean。

2022-11-17 00:54:44 797 2

原创 【Spring【IOC】】——5、@Lazy懒加载

懒加载就是Spring容器启动的时候,先不创建对象,在第一次使用(获取)bean的时候再来创建对象,并进行一些初始化懒加载,也称延时加载,仅针对单实例bean生效。单实例bean是在Spring容器启动的时候加载的,添加@Lazy注解后就会延迟加载,在Spring容器启动的时候并不会加载,而是在第一次使用此bean的时候才会加载,但当你多次获取bean的时候并不会重复加载,只是在第一次获取的时候才会加载,这不是延迟加载的特性,而是单实例bean的特性。

2022-11-17 00:52:44 1211

原创 【Spring【IOC】】——4、使用@Scope注解设置组件的作用域

Scope注解能够设置组件的作用域,我们先来看看@Scope注解类的源码,如下所示。

2022-11-17 00:50:31 688

原创 【Spring【IOC】】——3、自定义TypeFilter指定@ComponentScan注解的过滤规则

如果实现自定义规则进行过滤时,自定义规则的类必须是org.springframework.core.type.filter.TypeFilter接口的实现类按照自定义规则进行过滤,首先我们得创建org.springframework.core.type.filter.TypeFilter接口的一个实现类,例如MyTypeFilter/*** @description: 自定义规则/*** 参数:* metadataReader:读取到的当前正在扫描的类的信息。

2022-11-17 00:45:06 1487

原创 【Spring【IOC】】——2、使用@ComponentScan自动扫描组件并指定扫描规则

我们可以使用@ComponentScan注解来指定Spring扫描哪些包,可以使用excludeFilters()方法来指定扫描时排除哪些组件,也可以使用includeFilters()方法来指定扫描时只包含哪些组件。当使用includeFilters()方法指定只包含哪些组件时,需要禁用掉默认的过滤规则。

2022-11-17 00:43:22 1158 4

原创 【Spring【IOC】】——1、使用@Configuration和@Bean给容器中注册组件

我们在使用注解方式向Spring的IOC容器中注入JavaBean时,如果没有在**@Bean注解中明确指定bean的名称**,那么就会使用当前方法的名称来作为bean的名称;如果在**@Bean注解中明确指定了bean的名称**,那么就会使用**@Bean注解中指定的名称来作为bean的名称**。

2022-11-17 00:34:36 1344 11

原创 SpringCloud Alibaba——精读Nacos+CMDB+核心源码阅读(7w字长篇)

1、服务发现与健康监测2、动态配置服务3、动态DNS服务4、服务及其元数据管理动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Na

2022-11-13 03:57:40 5433 27

原创 从0到一开发微信小程序(6)—小程序常用API

可以理解为就是Java的模板设计模式。抽象出公有的页面功能定义为组件,重复使用,减少重复代码。

2022-09-28 01:10:54 4029

原创 从0到一开发微信小程序(7)—小程序组件库(提高开发效率)

Vant 是一个轻量、可靠的移动端组件库,于 2017 年开源。目前 Vant 官方提供了Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护React 版本和支付宝小程序版本。

2022-09-22 10:51:16 3439 1

原创 从0到一开发微信小程序(5)—小程序WXML

因为 wx:if 之中的模板也可能包含数据绑定,所以当 wx:if 的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。同时 wx:if 也是惰性的,如果在初始渲染条件为 false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。相比之下,hidden 就简单的多,组件始终会被渲染,只是简单的基于CSS控制显示与隐藏。一般来说,wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。

2022-09-22 10:47:19 1755 2

原创 从0到一开发微信小程序(4)—小程序组件

小程序中常用的基础视图,有三种,分别是view,text,imageview:视图容器text:文本image:图片。支持 JPG、PNG、SVG、WEBP、GIF 等格式,2.3.0 起支持云文件ID。view的显示效果跟div是一样的,我们可以理解为它就是一个html中的div,它属于块级元素注意:如果需要滚动视图,请使用scroll-view测试代码:新建一个views页面,在views.wxml中添加:展示效果:文本,承载页面文本信息,类似span的功能text 是行内元素温馨提示

2022-09-22 10:38:36 2767 1

原创 从0到一开发微信小程序(3)—小程序框架配置

意义:开发目录:配置如下:1.1.1.2、生成页面方式第一种方式第二种方式:保存之后总结:我们可以发现第二种方式更好,因为少了很多步骤,可以偷偷懒!。支持 static / manual / auto |修改app.json文件中的window属性配置展示效果:如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。其中 list 接受一个数组,只能配置最少 2 个、最多 5

2022-09-15 14:38:15 29420 5

空空如也

空空如也

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

TA关注的人

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