
Java
文章平均质量分 86
软件质量保障
通信硕士,拥有3项国家发明专利。前字节跳动测试工程师,现就职于蚂蚁集团,工作重点为微服务测试、接口测试平台研发等
展开
-
Guava精讲(三)-Caches,同步DB数据到缓存
在开发中,我们经常需要从数据库中读取数据并进行频繁的读取操作。缓存在各种场景中都有运用,例如,当一个值的计算或检索成本很高,而且在某个输入中需要多次使用该值时,就应该考虑使用缓存,因此将数据缓存在内存中可以显著提高应用程序的性能。问题描述假设我们正在开发一个电子商务网站,需要频繁地显示商品信息。商品信息存储在数据库中,并且我们希望将其缓存在内存中,以提高网站的响应速度和性能。缓存与 ConcurrentMap 相似,但又不完全相同。原创 2023-09-17 16:07:15 · 619 阅读 · 0 评论 -
Google Guava精讲(一)-Guava是什么?能做什么?
作为Java栈的测试工程师,在写代码时候会频繁遇到字符串处理、缓存、反射等问题,我们最常规的做法就是,为了使原生的JDK方法好用,通常是做了一层又一层封装,然后提供整个测试团队使用,而渐渐的就形成了自己的Java工具箱。当然Guava的缘起也是如此。Guava 是由Google开发的基于Java的开源库,包含许多Google核心库,它有助于最佳编码实践,并有助于减少编码错误。原创 2023-09-17 10:35:11 · 2519 阅读 · 0 评论 -
Elasticsearch系列-基础知识
集群中的数据被分片和副本存储在不同的节点上,从而实现数据的分布式存储和处理。每个分片可以有多个副本,副本可以被分配到不同的节点上,从而实现数据的冗余存储。1. 分布式架构:Elasticsearch 是一个分布式系统,可以在多个节点上运行,每个节点都可以处理数据的读取和写入请求。每个节点都可以存储数据的一部分,数据在节点之间自动分配和复制,以提高可靠性和性能。4. 主节点:Elasticsearch 集群中的一个节点被选为主节点,它负责管理集群的元数据,例如索引和分片的分配和复制。原创 2023-06-03 17:10:33 · 2598 阅读 · 1 评论 -
Java开发者如何使用Lamda简化代码
例如,假设我们有一个数字列表,并且我们想要计算所有奇数的总和。例如,如果我们有一个非常大的数字列表,并且我们想要计算所有奇数的总和,我们可以使用并行流来利用多核CPU。例如,假设我们有一个字符串列表,并且我们想要打印每个字符串的长度。例如,假设我们有一个字符串列表,并且我们想按长度对其进行排序。例如,假设我们有一个数字列表,并且我们只想保留所有小于10的数字。这段代码使用了Java 8中的Stream API和Lambda表达式来更加简洁地表示相同的操作。下面是一些使用Lambda表达式的Java案例。原创 2023-05-20 08:12:16 · 398 阅读 · 0 评论 -
如何动态的测试Thrift服务
RPC协议与Thrift框架RPC(Remote Procedure Call,远程过程调用)是一种通信协议,用于不同的进程或计算机之间进行通信和交互。它允许应用程序在本地或远程计算机上调用另一个应用程序中的函数或方法,就像调用本地函数一样。RPC协议通过网络传输协议来实现不同计算机之间的通信,常见的网络传输协议有TCP、UDP等。当一个客户端需要调用远程服务器上的某个方法时,客户端会向服务器发送一个请求(包括请求参数),服务器接收到请求后执行相应的方法,并返回结果(包括返回值)。原创 2023-05-13 13:24:28 · 769 阅读 · 1 评论 -
阿里精准测试开源贡献奖 Jvm-Sandbox
阿里的Jvm-Sandbox是一款Java应用沙箱,。在这个环境中,程序只能访问被授权的资源和功能,而不能访问其他系统资源。沙箱技术的目的是为了保护系统安全和稳定性,同时也可以提供更好的应用程序开发和测试环境。通过将程序隔离在一个独立的环境中,可以避免它访问到不该访问的资源和数据,从而降低了安全风险。在软件开发领域,沙箱技术经常被用于应用程序的测试和调试,以及恶意软件的研究和分析等工作中。通过使用沙箱技术,开发者可以在一个安全的环境中测试应用程序,检查其运行是否正常,并找出可能存在的问题和漏洞。原创 2023-04-30 09:18:49 · 1295 阅读 · 2 评论 -
浅谈软件质量与度量
本文从研发角度探讨下高质量软件应具备哪些特点,以及如何度量软件质量。原创 2023-04-29 00:45:41 · 1998 阅读 · 0 评论 -
全网最全的微服务链路追踪实践-SkyWalking(看这一篇就够了)
对于一个大型的几十个、几百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如:1. 如何串联整个调用链路,快速定位问题?2. 如何缕清各个微服务之间的依赖关系?3. 如何进行各个微服务接口的性能分折?4. 如何跟踪整个业务流程的调用处理顺序?Apache Skywalking是一款开源的应用程序性能监控工具,旨在帮助开发人员和 DevOps 团队监控分布式应用程序的性能。它可以帮助用户了解应用程序的运行情况,并通过可视化图形和数据报告,提供实时的指标和分析。原创 2023-02-12 21:56:00 · 1778 阅读 · 11 评论 -
MybatisX:简单却不失强大
MybatisX:简单易用却不失强大原创 2023-02-12 14:58:19 · 3137 阅读 · 1 评论 -
聊聊并发与锁
线程安全是指程序的并发执行状态下,多个线程对共享数据进行操作时,不会因为线程交替执行和切换执行顺序,导致数据不一致、不合法或出现其他不确定状态。在代码的主程序中,创建了一个 OptimisticLockExample 对象,并尝试两次对该对象进行更新,打印出交易是否成功。为了实现线程安全,通常采用互斥机制,例如锁、信号量等,保证同一时刻只有一个线程访问共享数据,避免产生数据不一致的问题。总的来说,乐观锁适用于并发性较高的环境,而悲观锁适用于并发性较低的环境,因为它更容易控制冲突。原创 2023-02-11 21:33:55 · 607 阅读 · 2 评论 -
猿创征文|大厂说的 代码门禁如何实现?
代码门禁是一种在代码合并之前就验证代码质量以保护主干分支代码的持续集成策略。通过这种策略,可以保护主分支代码避免因合码引入缺陷导致构建中断,以确保 主分支代码始终是可部署成功的,并且不会因微小的缺陷而影响到你正在并行开发的同事提交代码到主分支。之前写过一篇文章介绍微软的代码门禁实践,本文则基于SonarCloud实现如何基于扫描结果控制代码合并到主分支。工具:Sonarcloud代码:Github仓库。原创 2022-09-04 19:53:50 · 1189 阅读 · 1 评论 -
关于对Java泛型的解释和思考
一句话,即可以理解为泛型就是 参数化 参数类型原创 2022-07-02 12:34:40 · 1008 阅读 · 3 评论 -
接口自动化框架脚手架-利用反射机制实现接口统一发起端
在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为反射机制。特别是在设计或运行中添加新类时,能够快速地应用开发工具动态地查询新添加类的能力。反射机制可以用来:在运行时分析类的能力。.........原创 2022-06-27 21:05:37 · 535 阅读 · 3 评论 -
Google开源依赖注入框架-Guice指南
之前发过一篇文章《浅谈依赖注入的实现》,介绍了依赖注入的实现原理。文中提到高效实现依赖注入的工具Guice,本文就介绍一下这款Google开源的依赖注入框架Guice及其使用方法。Google Guice 是一个轻量级的依赖注入框架,它支持Java 5或者更高版本的JDK,得利于Java 5中提供的泛型 (Generics) 和注解 (Annotations) ,它可以使得代码类型安全 (type-safe) 。.........原创 2022-06-26 08:15:38 · 1201 阅读 · 0 评论 -
接口自动化框架脚手架-参数化工具的实现
今天分享一个接口自动化框架开发中用到的脚手架工具。众所周知,接口自动化用例最重要的是测试数据,而测试用例本质上依赖各种数据的组合。做过接口自动化的朋友可以想一下,我们在使用postman或JMeter编写用例脚本的时候,比较费时间的就是接口间参数的传递了。而通过现有工具实现接口间参数传递,只需要在下游接口中的“变量”设置{{}}或者${}即可,而如何替换的我们似乎并未考虑过。在我们设计自己的框架时就不得不面对这个问题了。.........原创 2022-06-25 12:12:40 · 1396 阅读 · 0 评论 -
浅谈依赖注入的实现
依赖注入能够消除程序开发中的硬编码式的对象间依赖关系,使应用程序松散耦合、可扩展和可维护,将依赖性问题的解决从编译时转移到运行时。原创 2022-06-18 18:48:53 · 448 阅读 · 1 评论 -
阿里巴巴测试开发岗P6面试题
阿里巴巴测试开发岗面试题原创 2022-06-02 08:58:08 · 573 阅读 · 0 评论 -
原来Java反射这么简单
反射,是框架设计的灵魂。反射机制在框架设计中举足轻重,现在市面上绝大部分框架基本上都有使用Java的反射机制。例如加载数据库驱动的,用到的也是反射。原创 2022-06-02 08:55:40 · 240 阅读 · 0 评论 -
全链路测试不是银弹
我们要正确看待全链路测试,不能迷信于全链路测试,觉得全链路测试通过就没啥问题了。要知道,全链路测试更多从业务角度出发,不能覆盖所有潜在异常场景,二者可以相辅相成,但对于日常自动化回归,我认为做好域内测试自动化才是底盘,全链路自动化没什么必要原创 2022-02-26 10:51:19 · 525 阅读 · 0 评论 -
Google的工程实践指南(上):代码审核指南
在代码审核的长期实践中,我们总结出了最佳实践,并在此基础上整理出了这些建议。整篇文档各部分的衔接性并不大,在阅读时,你可以选取自己感兴趣的部分,而不必按顺序阅读全文。当然,我们仍旧建议你按顺序通读全篇,你会发现这份文档对你非常有用。一. 代码审核的标准标准代码审核的目的是为了保证代码库中的代码质量持续改进,代码审核的工具和流程都是为了实现这个目的而设计。为了达到目标,我们需要权衡得失。首先,开发人员必须能在任务上 取得进展 。如果从没向代码库提交代码,那么代码库就不会改善。同时,如果原创 2022-02-19 11:43:43 · 529 阅读 · 0 评论 -
推荐几款常用的IDEA插件
2022,新的一年,祝各位小伙伴开工大吉,年终奖拿到手软。回首2021,我觉得自己很大的一个收获就是养成了Code Review的良好习惯,CR过程也发现了不少逻辑问题,这也是测试左移的一种实践。 尽管业务代码居多,通过CR不仅能将一些比较明显的缺陷拒提测门外,还能学习开发同学比较好的编程实践,也是对自己编程能力的一种提升。作为搬砖工,阿里以Java栈为主,平常使用最多的搬砖工具还是IDEA(虽然VS Code确实很“轻”)。而如何更高效的搬砖,自然离不开code review效率的提升,这里就原创 2022-02-09 17:08:39 · 3887 阅读 · 0 评论 -
浅谈Mock平台设计思路
一、Mock概述友情提示:本节为小白科普章节,大神可绕路直奔下一章节。1.1 何为mock?mock即模拟,可以理解为模拟数据。就接口mock而言,就是mock接口返回结果。根据不同层次的需求,也是存在不同的mock层级,可以参考下面的金字塔模型,越往上mock的级别越“高”,对于用户(测试)越“可见”。方法、类级别一般是开发会用到,例如单测开发。而接口和服务级别是测试进行服务联调测试甚至系统测试过程会用到的。1.2 为什么需要mock?这就有必要介绍一下微服务了,微服务架构下,原创 2021-12-26 11:06:18 · 1140 阅读 · 0 评论 -
设计模式|单例模式
定义单例模式(Singleton Pattern)定义:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)案例众所周知,当今大多数年轻人谈房色变,因为当下购房压力确实够大,一是房价够高,二是贷款利率太高。房价太高有部分投资客炒房的原因,所以多地政府出台了限购政策,例如每个人只能购买一套房。那如何通过程序实..原创 2021-12-08 22:05:11 · 221 阅读 · 0 评论 -
设计模式|开闭原则
一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。原创 2021-11-22 09:12:28 · 508 阅读 · 0 评论 -
设计模式|LSP(里氏替换)原则
软件质量保障专注测试圈,自动化测试、测试平台开发、测试新技术、大厂测试岗面经分享, 可以帮忙内推BATJ等大厂!欢迎加VX沟通交流: ISTE1024在面向对象的语言中,继承是非常优秀的语言机制,它有如下优点:▪ 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;▪ 提高代码的重用性;▪ 子类可以形似父类,但又异于父类。继承也是有缺点的:▪ 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法;▪ 降低代码的灵活性。子类必须拥有父类的属性和方法,...原创 2021-11-18 21:46:45 · 1200 阅读 · 0 评论 -
设计模式|理解单一职责原则
软件质量保障专注测试圈,自动化测试、测试平台开发、测试新技术、大厂测试岗面经分享, 可以帮忙内推BATJ等大厂!欢迎加VX沟通交流: ISTE1024很早想总结一些关于设计模式的文章了,回头看一下几年前写的代码,简直不忍直视。也能理解,毕竟当初校招选择测试岗位也是为了逃避“写代码”嘛,但是谁能想到,当下测试行业大环境,不会编程的测试简直无法生存。亏我的思想觉悟比较高,认识到编程的重要性后就狂补了一些开发“基础”,例如Java、spring mvc这些知识,不能说专业吧,最起码也是运用自如,能实现.原创 2021-11-16 23:47:49 · 532 阅读 · 0 评论 -
测试技术|白盒测试以及代码覆盖率实践
你也许测试工作中了解过白盒测试,但是一直没有机会做白盒测试,希望这篇文章能够帮到你,指引你迈入白盒测试实践之路。1.什么是白盒测试?白盒测试也称逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件程序验证,属于基于代码的测试技术。与之相对应的黑盒测试是从用户角度对软件进行测试。1.1 白盒测试测什么?白盒测试涉及以下测试内容: 内部安全漏洞 编码规范 预期输出 条件循环的功能 分别测试每个语.原创 2021-11-01 22:31:45 · 2954 阅读 · 0 评论 -
职场四年,关于我的测试旅程...
介绍下自己的测试历程吧,邮电高校通信小硕,毕业4年,去年成功转型测试开发,周末会总结测试心得。原创 2021-10-30 16:14:45 · 608 阅读 · 0 评论 -
探讨if...else的替代方案
软件质量保障专注测试圈,自动化测试、测试平台开发、测试新技术、大厂测试岗面经分享, 可以帮忙内推BATJ等大厂!欢迎加VX沟通交流: ISTE1024大家在开发过程中,经常会用到if..else..语句,对于分支较少的业务场景来说还好,如果业务分支较多,那if..else..语句就显得非常臃肿,就会大大的影响代码可读性和可维护性。针对这个问题,笔者就介绍几种if..else的替代方案。业务需求假设我们要做一个计算器,实现加减乘除的需求。使用if...else...语句实现.原创 2021-10-23 15:31:22 · 1914 阅读 · 0 评论