草庐IT

单元测试之@Mock与@InjectMocks(一文搞懂)

@Mock与@InjectMocks一般搭配组合使用,是单元测试必不可少的注解@Mock:需要模拟的类,我们需要模拟哪些类,就用它修饰哪些类的变量,常用于第三方服务service@InjectMocks:要测试的类,使用@Mock修饰的对象,就是我们测试哪个类,就用它修饰对应的变量,会整合使用@Mock修饰的对象直接上代码@ServicepublicclassThirdService{publicObjectgetThirdUser(StringuserId){returnnewObject();}}@ServicepublicclassUserService{@Autowiredprivat

一文彻底搞透分布式一致性

分布式系统下的数据一致性可以分为两大类:事务一致性:当多个节点进行操作时,所有节点最终达成的状态都是一致的。这需要通过协调来保证操作的正确性,避免出现数据不一致的情况;副本一致性:数据的多个副本之间保持一致性,这需要保证在对数据进行修改时,所有副本都能够及时更新,避免数据出现不同步的情况;定义都比较抽象,举个例子感受一下:事务一致性:电商平台使用优惠券下单场景:图片下单成功,优惠券必须处于“已锁定”状态;支付成功,优惠券必须处于“已使用”状态;订单取消,优惠券需要恢复为“待使用”状态;优惠券和订单间就属于“事务一致”,两者间存在强关联关系。副本一致性:MySQL主从复制:是指在主数据库上进行数

一文彻底搞懂Maven配置(终结版)

下载安装提示:安装之前需要先确认好自己需要哪个版本的maven,避免浪费时间。官网下载:https://maven.apache.org/download.cgi历史版本下载:https://archive.apache.org/dist/maven/maven-3/maven配置setting.xml该值表示构建系统本地仓库的路径表示maven是否需要和用户交互以获得输入,如果maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true。作用:maven是否需要使用plugin-registry.xml文件来管理插件版本。如果需要让maven使用文件~/.m2/

一文搞懂为什么选择 Java 虚拟线程?

Hellofolks,我是Luga,今天我们来聊一下Java生态的核心技术——JavaVirtualThreads,即“Java虚拟线程”。虚拟线程是Java中的一个重要创新,在ProjectLoom项目中开发的。自从Java19开始作为预览功能引入,到Java21以后成为正式版本(JEP444),虚拟线程已经成为JDK的一部分。一、为什么是JavaVirtualThreads?众所周知,JVM是一个多线程环境,通过java.lang.Thread类型为我们提供了对操作系统线程的抽象。在ProjectLoom之前,JVM中的每个线程都只是对操作系统线程的一种简单封装,我们可以称之为“平台线程”

一文搞懂为什么选择 Java 虚拟线程?

Hellofolks,我是Luga,今天我们来聊一下Java生态的核心技术——JavaVirtualThreads,即“Java虚拟线程”。虚拟线程是Java中的一个重要创新,在ProjectLoom项目中开发的。自从Java19开始作为预览功能引入,到Java21以后成为正式版本(JEP444),虚拟线程已经成为JDK的一部分。一、为什么是JavaVirtualThreads?众所周知,JVM是一个多线程环境,通过java.lang.Thread类型为我们提供了对操作系统线程的抽象。在ProjectLoom之前,JVM中的每个线程都只是对操作系统线程的一种简单封装,我们可以称之为“平台线程”

JetBrains联合谷歌搞事情!首发稳定版Kotlin跨平台开发框架!

整理丨诺亚出品|51CTO技术栈(微信号:blog51cto)近来,传闻中一直在和谷歌“搞事”的JetBrains为跨平台领域带来了一个突破性的消息:发布了KotlinMultiplatform的第一个稳定版本,支持跨iOS、Android、桌面、Web和服务器共享代码。提到跨平台开发,大家比较熟悉的可能是Flutter、ReactNative等知名框架。这个新生代又是何方神圣?其实有熟悉Android开发的朋友可能了解过KotlinMultiplatformMobile(KMM)。它是KotlinMultiplatform(KMP)的组成部分,在2020年就基于Kotlin1.4发布了第一个

一篇文章让你搞懂到底什么是 CDN

当我们打开浏览器访问页面的时候,其实就是一个不断发送HTTP请求的过程,客户端发送HTTP请求,服务端返回响应。这里的客户端可以是浏览器,也可以是我们使用Python编写的代码,而服务端则是使用Web框架编写的应用程序。说到这儿,补充一个知识点,很多搞Python的小伙伴可能分不清WSGI,uwsgi,uWSGI,Nginx之间的区别,我们来总结一下。WSGIWSGI的全称是WebServerGatewayInterface,即Web服务器网关接口,它不是服务器,也不是Python模块、框架、或者任何软件,它只是一种描述Web服务器和Web应用程序(使用 Web框架编写的程序)进行通信的规范、

一文搞懂九种 API 测试方法

今天我们来聊聊测试。测试的本质是检测软件的质量,寻找潜在的bug。测试不应仅仅是测试团队的职责,开发团队也应具有测试思维并自行写测试,对生产环境怀抱敬畏之心。测试团队也不应满足于前端人工测试,而是应该在自动化、覆盖率和深入理解需求上下功夫。下图中展示了9种常用的测试方法。图片烟雾测试在API开发完成后进行。只需验证API是否正常工作,没有任何调用不通的故障。功能测试根据功能需求创建测试计划,并将结果与预期结果进行比较。一般来说,功能测试覆盖一些细粒度的功能模块,可以是一个API调用或几个API调用。集成测试该测试联合多个API调用来执行端到端测试。这种测试包含了服务内通信和数据传输,以及各个模

一文搞懂使用 Buildpack 替代 Dockerfile 进行容器镜像构建

Hellofolks,我是Luga,今天我们来聊一下云原生生态核心技术——镜像构建,即“基于Buildpack进行KubernetesCluster中容器镜像的构建、部署”。通常而言,在现代的云原生交付领域中,3样东西发挥着至关重要的作用:即Efficiency(效率)、Speed(速度)以及Simplicity(简捷性)。而Buildpacks(构建包)已成为一种强大的工具,彻底改变了创建项目的DockerImage的方式。相较于传统的费时费力的Dockerfile创建和维护方法,Buildpacks提供了一种简化且自动化的解决方案。借助Buildpacks,我们可以轻松构建DockerIm