自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 三种遍历方式【开发实践】

以ListIterator为例,同时支持向前和向后的遍历(判断前/后有无元素,返回前/后的那个元素)。接口的集合提供了迭代器的支持,允许开发者以统一的方式遍历集合中的元素,而无需直接访问集合内部结构。迭代器中返回的是指向当前元素的一个局部变量,将该变量指向其他对象,并不会影响原数组中指向的元素值。迭代器本身不提供修改元素的方法,对于遍历的元素,如果元素是不可修改的,那么修改操作不会生效。若元素是不可修改的,修改元素操作会失效。数组的迭代器仅提供了删除元素的方法,但没提供新增元素的方法。

2024-07-12 16:32:37 810

原创 线程池【开发实践】

AbortPolicy:拒绝策略。是默认策略,会将新任务拒绝,并且抛出异常。DiscardPolicy:抛弃策略。会将新任务丢掉,但不会跑出异常。DiscardOldestPolicy:抛弃最老任务策略。不是丢弃新任务,而是先丢弃最先进入队列的任务,然后将新任务入队。CallerRunsPolicy:调用者执行策略。让提交任务的线程去执行新任务,而不是使用线程池中的线程去执行。

2024-07-09 20:43:01 624

原创 代理模式和Java中的动态代理【开发实践】

JDK动态代理是Java开发中一种利用Java反射机制在运行时动态创建代理对象的技术,它是Java原生支持的,主要依赖于类和接口。JDK 动态代理基于接口,只有实现了接口的类,才能通过 JDK 动态代理来增强接口方法。Object proxy:代理对象的引用。尽管在invoke方法内部可能不需要直接使用它,但它代表了代理实例本身,有时候可用于获取代理类的信息或其他特殊处理。Method method:表示被调用的方法的一个Method对象。

2024-07-05 14:46:15 676

原创 注解【开发实践】

注解(Annotation)是编程语言中的一种元数据形式,它提供了一种机制,可以在不直接影响程序代码执行逻辑的情况下,向源代码中添加信息。注解不会直接改变程序的行为,而是作为一种标记或指令,供编译器、开发工具或运行时环境解析和使用,以实现特定的功能或处理。简单来说,使用注解标注相当于在代码的某个位置打上标签,标签上有一些元数据,仅此而已。注解本身不改变程序行为,需要通过自定义的注解处理器来扫描注解,并在扫描到注解后进行预设的处理。定义注解就像定义接口,但有所区别。关键字换成了@interface。

2024-07-04 20:51:43 767

原创 Spring AOP【开发实践】

OOP 是 Object-Oriented Programming 的缩写,指面向对象编程。OOP 用于定义从上到下的关系,其核心是封装、继承和多态。

2024-07-02 20:19:19 717

原创 接口设计【开发实践】

将任意长度的数据映射为一个紧凑的、长度固定的字符串,该字符串即摘要,也被称为散列值或哈希值。摘要具有唯一性和不可逆性。唯一性指数据稍微变化,计算出的摘要就会不同,该特性常用于数据的完整性校验。不可逆性指无法从摘要还原出原始的数据,该特性可用于密码存储,数据库中存储密码的摘要,泄露摘要也不会导致密码泄露,此外摘要紧凑且长度固定的特点也便于存储。需要注意的是,摘要能保证数据的完整性,但是不能防止数据被篡改,只要知道使用的是哪个摘要算法,任何人都能计算摘要。

2024-06-28 10:36:49 907 1

原创 lombok关于构造器的注解的坑【开发避坑】

创建对象,然后基于反射,根据属性名完成赋值。由于没有无参构造器,导致创建对象失败,结果就是。当我们提供了任意有参构造器后,将不再自动创建无参构造器。平时,我们不定义构造器时,会自动创建一个无参的构造器。为了方便创建对象并同时赋值,使用了全参构造器的注解。使用集合对象属性批量复制。分析原因,是因为内部使用。时,发现复制结果为空。

2024-06-27 18:11:57 338

原创 【实用工具】Skyworking

仪表盘:是Skywalking的首页,提供了多维度下常用指标的可视化展示。拓扑图:追踪:查看接口的调用链,每个链路耗时、状态,如果为失败,还会展示错误信息,如果是数据库也会展示查询语句,如果是Redis还会展示操作指令,另外可以根据trace id进行筛选查询性能剖析日志告警事件调试每分钟请求次数:Xxx Load,指最近一段时间范围内的平均每分钟请求次数。响应时间:Xxx Response Latency,指最近一段时间范围内的平均响应时间。

2024-06-17 20:40:44 1077

原创 响应结果统一封装类中的小坑【开发避坑】

这里随便找了一个统一封装类作为示范,相关代码部分如下所示,这里主要关注于两个属性。若有需要返回的结果,且返回类型不为。若有需要返回的结果,且返回类型为。赋值为操作成功的状态码,并将。赋值为操作成功的状态码,并将。若没有需要返回的结果,使用。但当服务层返回结果是。

2024-06-07 10:06:47 165

原创 分布式系统常用的三注解:@DS,@DistributeLock,@GlobalTransactional【开发实践】

读写分离是一种基于主从复制的数据库读写策略,在应用程序层面(如在代码中或使用中间件)区分读写操作,主节点负责所有的写操作(增、删、改)和实时性较高的读操作(查),从节点负责实时性较低的读操作。分库:单个服务器的磁盘存储容量和CPU处理能力是有极限的,随着存储数据量的增大或请求并发数的增多,单个服务器将无法满足需求。之前使用(非必须)。分布式事务是指跨越多个分布式系统或服务的事务操作,需要保证这些操作作为一个整体,要么全部成功,要么全部失败,以此来维护数据的一致性和完整性。方法的数据源失效,使用的是外层的。

2024-06-04 15:11:57 1806

原创 01_初识微服务

微服务架构是一种软件架构风格。它将一个大型的、复杂的应用程序拆分成一组小型、独立的服务,每个服务都围绕着具体业务功能进行构建,并独立地开发、测试、部署和运维,服务之间通过一些轻量级的通信机制进行通信。

2024-06-03 14:07:38 1125

原创 03_初识Spring Cloud Gateway

前端需要维护大量微服务的地址。随着项目的迭代,后端可能需要重新划分微服务,此时前端需要进行相应的调整。每个微服务都需要进行一些重复的工作,如认证、鉴权、处理跨域问题。为了解决上述问题,微服务引入了网关的概念。网关作为客户端的统一入口,负责将请求路由到具体的微服务。网关还可以实现一些业务无关的公用逻辑,如认证、鉴权、处理跨域、路由转发、安全策略(SQL注入,Web攻击,黑白名单)、流量控制、日志监控,证书/加密解密等处理等。使用了网关后,所有客户端的请求都会先达到网关,再由网关将请求转发到特定的微服务。

2024-05-31 16:03:26 1398

原创 02_初识Nginx

在最简单的场景下,客户端与目标服务器直接交互,客户端向目标服务器发送请求并接收响应,目标服务器从客户端接收请求并返回响应。在某些场景下,会在客户端和目标服务器之间加一个中间服务器,此时客户端和服务器之间的交互需要经过这个中间服务器来完成,这个中间服务器就是代理服务器。当中间服务器代客户端发送请求和接收响应时被称为正向代理,当中间服务器代目标服务器接收请求并返回响应时被称为反向代理。正向代理中的代理服务器是客户端方设置的,对目标服务器是透明的,目标服务器不知道真正的访问者。隐藏客户端真实ip。

2024-05-31 09:53:17 922

原创 04_初识ELK

ELK是一个用于数据收集、分析和展示的开源技术栈。日志分析、应用程序监控、运营智能、安全审计等多种场景,其中日志分析最具有代表性。

2024-05-30 17:07:19 1206 1

原创 消息队列【开发实践】

消息队列

2024-05-06 19:15:14 1218

原创 定时任务【开发实践】

XXL-JOB

2024-04-30 09:32:38 835 2

原创 文件导入导出【开发实践】

EasyExcel

2024-04-28 17:21:55 1553 1

原创 单元测试框架Spock【开发实践】

Spock单元测试框架

2024-04-17 20:19:18 1768

原创 程序流程图【面向实用】

程序流程图,又称程序框图,是一种专门用于描述程序或算法运行步骤的图形化工具。它使用一组标准化的符号和图形元素,配合相应的文字说明,清晰、直观地展示出计算机程序从开始到结束的执行流程,包括数据的输入、处理、判断、循环以及最终输出等各个环节。

2024-04-12 18:08:11 903

原创 基于Git的版本控制【开发实践】

git

2024-04-09 15:55:57 1240 2

原创 微服务中分布式事务的解决方案:seata【开发实践】

事务是一系列数据库操作的原子性集合,具备ACID四大特性。其中事务有分为本地事务和分布式事务。本地事务只能保证单个设备上的ACID特性,无法实现分布式系统中的事务管理,所以提出了分布式服务。一致性:用户访问分布式系统中的任意节点,得到的数据是一致的可用性:用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝分区容错:因为网络故障或其它原因会导致分布式系统中的部分节点与其它节点失去连接,形成独立的分区。集群中出现独立分区时仍能对外提供服务的能力就是分区容错能力。

2024-04-08 20:25:36 796

原创 状态机的理解与使用【开发实践】

状态机

2024-04-07 19:10:33 1546

原创 浅谈架构设计:MVC架构与DDD架构【开发实践】

(个人理解,可能不对:将view层和controller层合并为新的controller层,作为表现层暴露接口,将model层拆分为service层和dao层)强化理解:application中的方法需要的参数类型为DTO,domain中的方法需要的参数类型为DO,而dao中的方法需要的参数类型为PO。依赖倒置的体现:应用层直接依赖于领域层的接口(如repo和gateway),通过这些接口间接依赖于下层中具体的实现类(基础设施层中的repoImpl和远程服务层中的gatewayImpl)

2024-04-07 14:19:34 2551

原创 MyBatis Plus快速上手【开发实践】

内存数据是易失的(断电就没了),而磁盘数据是持久的(断电后不丢失),将内存中的数据保存到磁盘中的过程就是数据持久化,项目中实现数据持久化的代码层就是持久层。(图取自MyBatis-Plus:条件构造器Wrapper。

2024-04-02 19:20:33 1727 1

原创 Spring Boot集成Apollo配置中心【开发实践】

数据库的连接参数、应用的启动参数、一些系统的账号密码等信息,一般不会在代码中硬编码,而是存储于代码外部的文件中。这些信息被称为配置信息,存储配置信息的文件就是配置文件。程序需要读取配置文件来获取所需的配置信息。Spring Boot项目启动时,如果使用了Apollo配置中心,则会在启动前先去配置中心中读取配置信息。使用Spring Boot集成Apollo配置中心,需要先配置Apollo(需要配置的信息见后),告诉Apollo客户端从哪个Apollo服务器读取哪个配置。

2024-04-01 15:21:44 2589

原创 基于Spring MVC的接口开发【开发实践】

MVC是一种设计模式、软件架构思想,将软件划分为三层:模型(Model),视图(View),控制器(Controller)。Spring MVC对这套MVC流程进行封装,帮助开发者屏蔽底层细节,并且开放出相关接口供开发者调用,让MVC开发更简单方便。

2024-03-29 18:01:04 1357 2

空空如也

空空如也

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

TA关注的人

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