自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 Spring Boot WebService 实战解析

是两种主要的技术选择。Spring WS 是专为简化SOAP Web Services的开发而设计的,提供了一种创建文档驱动、基于SOAP的服务的方式,特别适合需要深度集成和复杂配置的企业级应用。相比之下,JAX-WS 是遵循WS-*标准的更为基础和轻量级的Java API,适用于需要标准Java支持且配置较少的场景。Web Services 是特殊的网络服务,它允许位于不同地点的计算机程序通过互联网交流和共享数据。@WebMethod 和 @WebParam 注解用于定义 Web 服务中的方法和参数。

2024-04-18 17:58:10 1535 1

原创 实时通讯技术实现

虽然它也占用服务器资源,但由于其连接是持久的,所以不需要频繁地创建和销毁连接,相对于长轮询,这可以减少资源消耗和延迟。在复杂性方面,MQTT 和 XMPP 要求开发者具备对相应协议的深入了解,相较于 SSE 和 WebSocket 的简单 API 来说,实现起来会相对复杂,但这些协议也提供了更丰富的灵活性。没变化:则阻塞http请求,并且将长轮询请求任务放入队列中,然后开启任务调度,调度任务在长连接维持时间到期后,会将长轮询请求移除队列,并返回对应数据。客户端和服务端建立连接,服务端实时推送数据给客户端。

2024-03-26 09:43:12 1198

原创 JDK多版本集成 Jacoco 配置指南

JDK多版本集成 Jacoco 配置指南JDK多版本集成 Jacoco 配置指南JDK8JDK11JDK17Jacoco 是什么Jacoco 是一个用于Java程序的代码覆盖率报告工具。它通过动态分析(在代码执行时收集数据)来生成代码覆盖率报告文件。Jacoco 支持多种覆盖率标准,包括行覆盖率、分支覆盖率和复杂度覆盖率。

2023-12-11 22:00:00 1203

原创 Spring Cloud Stream如何屏蔽不同MQ带来的差异性?

Binder 抽象使 Spring Cloud Stream 应用程序能够灵活地连接中间件。Spring Cloud Stream 为 Kafka 和 RabbitMQ 提供了 Binder 实现。RocketMQ Binder 已由 Spring Cloud Alibaba 实现。Binder 抽象也是该框架的扩展点之一,我们可以在 Spring Cloud Stream 之上实现自定义 Binder。

2023-11-29 23:15:53 258

原创 Java线程和Go协程

当M执行某一个G时发生了syscall或者阻塞操作,M会阻塞,如果当前有一些G在执行,runtime会把这个线程M从P中摘除,然后再创建一个新的操作系统的线程(如果有空闲的线程可用就复用空闲线程)来服务于这个P。此时有空闲的M,则与P绑定并执行P中其它的G,没有空闲的M则创建新的M绑定P并执行。M会从P的本地队列弹出一个可执行状态的G来执行,如果P的本地队列为空,就会从其它线程的P队列中偷取G执行。当系统调用返回后,阻塞的G会尝试获取一个可用的P,有可用的P则将之前运行G的M与P绑定继续运行G。

2023-09-06 17:08:21 810

原创 客户方数据库服务器CPU负载高优化案例

诊断分析客户方Mysql版本8.0.16。

2023-07-27 23:27:02 365

原创 UML14种图

UML是Unified Modeling Language的缩写,译为统一建模语言。UML是软件行业的建模规范,可以对软件项目建立需求模型、设计模型、实现模型、测试模型。

2023-06-27 21:00:00 7194 1

原创 RocketMQ中单消费者订阅多个Topic,会阻塞消费吗?

5.0之前的客户端架构中,拉取到消息之后会先将消息缓存到 ProcessQueue 中,当需要消费时,会从 ProcessQueue 中取出对应的消息进行消费,当消费成功之后再将消息从 ProcessQueue 中 remove 走。

2023-05-05 21:45:00 4919 1

原创 Mockito单测之道

Mockito.doReturn().when() 和 Mockito.when().thenReturn() 都用于模拟对象方法,在Mock实例下都可使用。但在 Spy实例下使用时, when().thenReturn() 模式会执行原方法,而 doReturn().when()模式不会执行原方法。代码中的例子比较简单,假如要模拟的参数是一个对象,则可用JSONObject来验证,提前创建json字符串在文件中,最终转成字符串比较即可。如果不关心具体的参数内容,可用Mockito.any() 代替。

2023-04-04 17:59:06 766

原创 PHP环境安装教程

composer 在php中是用来管理依赖关系的工具,在项目 composer.json 文件中声明依赖的外部工具库,composer会帮助安装这些依赖库文件。

2023-03-15 23:15:30 14201 6

原创 go基础语法之关键字

在项目中新建api目录,定义a.go文件。

2023-03-15 23:04:56 815

原创 程序员述职报告

PPT内卷绝不是自我内卷,为了和同事竞争千八百的涨幅陷入无意义的内耗中。更多的是自我总结,自我价值的体现,复盘,回顾。

2023-01-05 20:45:00 3110

原创 微服务三个阶段

微服务从2005年概念性的提出,到2014 Martin Flower详细阐述了微服务,定义微服务提到的小而专。紧接着Spring Boot框架发布了1.0,本着约定大于配置的原则,来简化spring应用的初始化搭建及开发过程。

2023-01-05 20:30:00 2706 4

原创 ShardingSphere生产实战

由于业务发展,数据库中某几张核心表未来半年单表数据能达到20亿左右。也因为外部的因素,只能用mysql来存储数据。所以考虑分库分表,最终选型为。考虑拆分后数据不会绝对均匀,按前期每表存400万来算,大约需512张表。8个库,那每库有64张表。团队采用的单分片键,按什么分片可自行约定,比如按地区,按业务标识等。库:sharding_column % 8表:sharding_column / 8 % 64本地用了两个版本测试,线上用的是5.2.0版本。

2022-11-21 21:00:31 2834 2

原创 JDK17 新特性

Java之父 James Gosling 接受InfoQ专访时说:新系统全方位性能更强、速度更快、错误也更少、扩展效率更高。是时候接纳JDK17了。为了后续的版本更新,我们有必要了解下新特性。Java17 14项JEPJEP 306: Restore Always-Strict Floating-Point Semantics(恢复始终严格的浮点语义)JEP 356: Enhanced Pseudo-Random Number Generators(增强的伪随机数生成器)

2022-11-21 20:55:36 4826 1

原创 大数据量解决方案

由于关系型数据库大多采用 B+ 树类型的索引,在数据量超过阈值的情况下,索引深度的增加也将使得磁盘访问的 IO 次数增加,进而导致查询性能的下降。

2022-10-16 23:05:33 5252

原创 DDD防腐层设计

防腐层(Anti-Corruption Layer)思想:通过引入一个间接的层,就可以有效隔离限界上下文之间的耦合。防腐层往往属于下游限界上下文, 用以隔绝上游限界上下文可能发生的变化。

2022-09-21 17:23:09 6618

原创 了解RPC、HTTP、TCP

TCP(Transmission Control Protocol):传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。

2022-09-02 23:10:59 4792

原创 责任链模式之Tomcat Filter应用

请求在这个链上传递,直到链上的某一个对象处理此请求。发出这个请求的客户端并不知道链上哪个对象最终会处理这个请求,这使得系统可以在不影响客户端的情况下动态的重新组织和分配责任。StandardWrapperValve 是 StandardWrapper的基础阀,其作用是加载Servlet,创建Filter过滤器,最终会调用Servlet的service方法。所有的请求由该类分发。具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。...

2022-08-16 22:43:15 2483

原创 软技能之UML图

作为系统在某一个时刻的快照,是类图中的各个类在某一个时刻点上的实例及其关系的静态写照。

2022-07-29 21:30:00 3363

原创 DDD四色建模法

四色建模法来源于Peter Coad的 《Java Modeling In Color With UML》。Peter Coad和Mark Mayfield奠定了4种架构型(一种形式,所有的东西都或多或少地遵守)的早期工作。

2022-07-07 09:44:03 6666

原创 JDK11占比第一?

根据软件服务公司New Relic 发布的《2022 年 Java 生态系统现状》报告中,Java 11已成为新的标准(占比48.44%)。Java11是一个长期支持版本(Long-term supper version)。共包含17个JEP(JDK Enhancement Proposals,JDK增强提案)。开发一个处理内存分配但不实现任何实际内存回收机制的 GC。一旦可用的 Java 堆用完,JVM 就会关闭。以内存占用和内存吞吐量为代价,提供具有有限分配限制和尽可能低的延迟开销的完全被动 GC 实现

2022-07-07 09:40:22 4063

原创 git版本回退操作

搞懂git回退命令,如果不慎提交,可通过git reset、git revert来撤销操作。

2022-06-12 23:19:36 61685

原创 DDD建模方法论之【事件风暴法】

DDD建模方法论之【事件风暴法】前言在领域驱动设计之初的需求分析阶段,对需求分析的基本思路就是统一语言建模,它是我们的指导思想。落实到具体操作层面,可以采用的具体方法是事件风暴法。统一语言建模 -> 指导思想。事件风暴会议 -> 实践方法。事件风暴事件风暴(Event Storming): 一种基于工作坊的DDD实践方法,可以快速发现业务领域中正在发生的事件,指导领域建模及程序开发。事件:即事实,即在业务领域中那些已经发生的事件就是事实。风暴:运用头脑风暴会议进行领.

2022-05-25 23:27:06 8036 1

原创 Spring bean核心生命周期

Spring bean生命周期前言在Spring 框架中,代码定义的对象统一由Spring 容器管理,由Spring容器来创建,初始化。那么一个bean的简版生命周期如下图:图一实例化一个bean对象,完成属性注入,执行初始化方法,此时bean可以被我们所使用,最后销毁。Spring也赋予了一个bean在上述4个阶段中做一些增强的操作,下文详细分析。Spring bean生命周期Spring bean详细生命周期流程图:图二从doCreateBean(.

2022-05-06 20:00:00 2619

原创 记一次Dubbo PR

记一次Dubbo PR背景之前在apache/dubbo Issues中看到这样一个问题, rmi协议不支持分组和版本。刚好利用这个issue演示下如何向开源项目提交一个PR。贡献者指南参考apache dubbo官方文档,先读新手贡献指南。 New Contributor Guide。1. fork Apache/Dubbo 到自己的github仓库2. 克隆fork的Dubbo代码仓库到本地gitclonehttps://github.com/xxx/dubbo...

2022-04-28 22:39:51 2867 2

原创 深度总结:软件设计七大原则

软件设计七大原则软件设计原则是设计模式的基石。目的只有一个,降低对象之间的耦合,增加程序的可复用性、可扩展性、可维护性。开闭原则 OCP定义:软件实体对扩展开放,对修改关闭。 对扩展开发,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。 对修改关闭,意味着类一旦设计完成,就可以独立的工作,而不要对其进行任何的修改。 在面向对象设计中,我们通常通过继承和多态来实现OCP,即封装不变部分。比如需求要实现2种状态的业务。 如果用if else来判.

2022-04-12 23:45:46 10660

原创 TestNG单元测试实战

TestNG单元测试实战单元测试是什么对软件中最小可测试单元进行验证。小到一个方法,大到一个类、一个模块。都可以用单元测试覆盖。单元测试有必要写吗现状: 面对日复一日排满的需求,没有时间去写。 再者业务逻辑变化快,对应的单元测试代码也得调整。不愿写。 用postman,接口api也能满足http测试。 写单测好处:避免低级的bug发到开发环境或测试环境。 在线测试分支覆盖不全的情况。 提高代码正确性。 判断方法的返回值和预期值.

2022-03-27 22:02:59 3692

原创 《企业IT架构转型之道》读书笔记

《企业IT架构转型之道》读书笔记前言最近在拾起一些琐碎的知识点。故准备把以前看的相关书籍笔记整理一番。《企业IT架构转型之道》 是2018/02/12在微信上读完的,距今有三年多了。摘录业务中台的基础-共享服务体系SOA理念最核心的价值: 松耦合的服务带来业务的复用,通过服务的编排助力业务的快速响应和创新。SOA架构的核心价值——服务重用。领域专家形成:随着我们掌握知识点的增多,我们开始有意识地将一些知识点组合在一起,解决一些复杂的问题,关联这些知识点的过程实际上是将这.

2022-03-06 23:09:25 5153 2

原创 Java AQS实现

Java AQS实现本篇理清锁和线程相关知识,主要知识点: AQS; ReentrantLock; Condition; Synchronized; Semaphore,CountDownLatch; AQSAQS:AbstractQueuedSynchronizer,抽象队列同步器。提供实现阻塞锁的框架。像ReentrantLock, Semaphore等都基于AQS来实现并发资源控制逻辑。abstractclassAbstrac...

2022-02-20 22:51:30 3530

原创 应用架构DDD

应用架构区别好的应用架构,都遵循一些共同模式,不管是六边形架构、洋葱圈架构、整洁架构、还是COLA架构,都提倡以业务为核心,解耦外部依赖,分离业务复杂度和技术复杂度。分层架构(Layered Architecture)分层架构就是将业务应用划分为对应的层级模块。每个层职责不同。四层结构定义: 接口层: 统一处理系统对外的服务接口,可以是直接查询,也可以是三方系统对接。 应用层: 调用各个领域完成一个具体的业务流程应用,不需要关心具体的业务实现。 领域层: 实际完.

2022-01-15 22:53:53 6195

原创 策略模式、模板模式实战

设计模式实战第一讲本篇从实战代码角度详解策略模式、模板模式这两种设计模式。简介软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。从某种意义上说:设计模式是前辈总结出来的开发经验,是对面向对象设计中反复出现的问题的解决方案。结构图常用的23种设计模式分三类:除了上面的23种设计模式外,还有一些新的设计模式。如过.

2021-12-18 15:21:19 2500

原创 parallelStream 底层 ForkJoinPool 实现

​ForkJoinPool源码解析前言Java 8中Stream是对集合(Collection)对象功能的增强,其特性之一提供了流的并行处理 ->parallelStream。本篇来分析下项目中经常使用的parallelStream底层实现机制。正文以main函数为切入点分析, 采用parallelStream来处理集合数据。publicstaticvoidmain(String[]args){List<Integer>list=ne...

2021-12-09 22:00:37 2826

原创 八股文之Redis

REDIS 专题。版本:3.2数据结构基础数据结构一. 字符串 string底层实现为简单动态字符串(SDS),是可修改的字符串,采用预分配冗余空间的方式来减少内存的频繁分配。SDS数据结构主要由len、free、buf[]这三个属性组成。 len:buf数组已用的长度。 free:buf数组未用的长度。 buf[]:存储字符串 空间预分配:对SDS字符串修改后,如果需要扩容,那么不仅为SDS分配此次扩展的空间,还会分配额外的空间,待下次使用。惰.

2021-11-11 17:54:16 2558

原创 八股文之IO

Input/Output本文作为一篇学习笔记,旨在了解IO阻塞原理,以及Linux系统相关知识。参考了部分博文。同步、异步、阻塞、非阻塞先说下我理解的同步、异步、阻塞、非阻塞。同步和异步:是否需要函数的返回值。同步需要等待函数的结果,此时线程会休眠或者轮询,这些都是同步。异步是函数直接返回,结果通过回调处理。阻塞和非阻塞:线程挂起是阻塞,线程没有挂起非阻塞。根据此文IO语义环境来看,同步和异步是针对应用程序与内核的交互而言。 同步过程中进程触发IO操作并等待(阻塞)或轮询查看.

2021-10-21 09:26:13 1876

原创 Mysql InnoDB MVCC原理实现

MVCC原理实现最近在整理笔记,发现mysql中有些概念及实现理解不透彻,所以本文旨在搞懂相关概念及实现。此文基于InnoDB存储引擎分析。查询会开启事务InnoDB默认autocommit=ON(开启状态):autocommit=ON时: 没有手动begin或start transaction开启事务,mysql默认也会将用户的操作当做事务即时提交; 手动开启事务 begin, 需手动commit提交事务; autocommit=OFF时: .

2021-09-09 23:42:54 1936

原创 阿里内核数据库文章-目录

内核月报地址:http://mysql.taobao.org/monthly//monthly/2021/08http://mysql.taobao.org/monthly/2021/08/01/ MySQL · 最佳实战 · SQL编码转换浅析http://mysql.taobao.org/monthly/2021/08/02/ MySQL · 源码分析 · 详解 Data Dictionaryhttp://mysql.taobao.org/monthly/2021/08...

2021-09-09 17:56:32 2440

原创 数据结构分析:红黑树、B+树

数据结构分析:红黑树、B+树前言常见的数据结构大概分为以下8种,作为一个开发人员,数据结构是内功之一。 本文参考了网络上相关知识,加之自己的理解。简单说明红黑树、B+树的特性。1. 二叉搜索树(Binary Search Tree,简称BST)介绍红黑树之前先介绍下二叉搜索树的特点: 左子树不为空,则左子树上结点值小于根结点 右子树不为空,则右子树上结点值大于根结点 子树同样也要遵循以上两点 极端情况会退化成链表;时间复杂度就是树的深度O(n)。.

2021-08-16 00:01:46 4091

原创 Spring boot启动流程分析精简版

啊啊啊# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题[链接](http://baidu.com)![图片](file:///C:/Users/HUAWEI/Documents/My%20Knowledge/temp/d8ef11c8-5e13-4e00-8a68-a61b96035ba4/128/index_files/1037150859.png)> # 快引用.

2021-07-16 22:46:23 1974

原创 CompletableFuture 源码分析

JDK源码学习上篇分析了Future的实现类FutureTask, 这篇分析Future接口的另一个实现类 CompletableFuture类继承关系见此篇FutureTask 源码分析UML图CompletableFuture 做什么的,优点,为什么用,举例

2021-06-05 23:30:15 2836 3

spring-context-3.2.5.RELEASE.jar

spring-context-3.2.5.RELEASE.jar 源码,本人亲测,拿来分享。

2015-04-09

空空如也

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

TA关注的人

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