自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 App UI自动化--Appium学习--第二篇

Android:使用方法可以直接打开通知栏,并通过标准的元素定位方法与通知进行交互。iOS:由于系统限制,无法直接通过 Appium 操作通知栏,但可以通过模拟手势来尝试打开通知中心。

2025-02-12 18:19:17 1096

原创 Appium入门遇到问题(Mac环境变量配置及相关SDK下载)

没有进行以下配置遇到的错误:Encountered internal error running command: Error: Neither ANDROID_HOME nor ANDROID_SDK_ROOT environment variable was exported. Read https://developer.android.com/studio/command-line/variables for more details下载adb(下载adb)注意⚠️:下载Homebrew失败可以

2025-02-07 16:16:04 155

原创 测试开发必看--从入门到超神--第三篇

在工作中,有些公司一个接口就是一个用例。有些公司一个接口,有几十个用例,就需要用到数据驱动。CSV文件⚠️:断言不能写死,因为所有的用例都需要通过,因此断言也应该从CSV当中的列名中取出。⚠️:断言,如果有共同字段,请使用json断言,如果没有则使用响应断言。

2025-01-24 17:26:50 195

原创 App UI自动化--Appium学习--第一篇

原生应用是专门为特定操作系统(如iOS或Android)开发的应用程序,使用官方编程语言(如Swift、Java)。它们直接访问底层硬件资源,提供最佳性能和用户体验,并能充分利用设备特性,如推送通知和离线模式。然而,开发成本较高,需为每个平台单独编写代码。1. 设备管理:列出所有已连接设备。adb connect <IP>:<端口>:连接远程设备。adb reboot:重启设备。2. 文件传输adb push <本地> <远程>:上传文件到设备。adb pull <远程> [本地]:从设备下载文件。

2025-01-22 17:24:32 1129

原创 测试开发必看--从入门到超神--第二篇

对称式加密和是两种常用的对称加密算法。它们使用相同的密钥进行加密和解密操作。Base64:虽然严格意义上不是一种加密算法,但它常用于编码二进制数据为文本格式,便于传输。需要注意的是,Base64编码是可以轻易解码的,因此不适合单独用于保护敏感数据。非对称加密:基于公钥基础设施(PKI),利用一对数学相关的密钥——公钥和私钥。公钥用于加密数据或生成数字签名,而私钥则用于解密数据或验证签名。这种机制确保了即使密钥泄露,也无法轻易破解已加密的信息。不可解密的哈希函数MD5和。

2025-01-22 13:55:37 984

原创 测试开发必看--从入门到超神--第一篇

测试片段是指一个包含特定功能或模块测试逻辑的独立部分,它本身不是完整的测试计划,而是整个项目测试计划的一个子集。测试片段不能单独运行,必须与控制器(如模块控制器)结合使用,类似于远程调用的方式。这种设计使得团队成员可以专注于自己负责的部分,同时确保所有模块能够无缝集成到整体测试流程中。

2025-01-21 18:00:57 1349

原创 Redis的Hash与Java当中HashMap以及ConcurrentHashMap在扩容机制上面的区别

的扩容机制结合了细粒度锁、无锁算法和渐进式迁移等多种技术,旨在提供高性能的同时保证线程安全性。与传统的HashMap不同,的扩容更加灵活和平滑,能够在高并发场景下有效地管理大量数据,避免了因扩容而导致的服务中断或性能下降。这种设计使得成为了 Java 并发编程中不可或缺的一部分。

2024-12-15 14:06:51 1838

原创 域名解析到返回中间流程

网络传输层:DNS解析、TCP/TLS连接。服务器层:应用服务器(如Tomcat)接收并转发请求。SpringMVC核心流程负责分发请求,匹配路径,解析参数,Controller执行业务逻辑。返回结果:视图解析或数据序列化后返回给浏览器。通过上述流程,可以完整描述从浏览器输入域名到SpringMVC处理请求并返回响应的过程。

2024-12-14 10:54:26 430

原创 非静态内部类和静态内部类

非静态内部类非静态内部类依赖于外部类的实例,即每个非静态内部类的实例都隐式地与一个外部类的实例相关联。创建非静态内部类的实例时,必须先有一个外部类的实例。// 使用示例// 输出: Outer Field静态内部类静态内部类不依赖于外部类的实例,它可以独立于外部类的任何实例而存在。创建静态内部类的实例时,不需要外部类的实例。// 使用示例// 输出: Static Field非静态内部类。

2024-12-13 17:53:14 666

原创 java类加载过程

加载:通过类加载器将类的字节码载入 JVM 并生成类对象。链接验证:确保类的字节码安全且符合规范。准备:为类的静态变量分配内存并设置默认初始值。解析:将符号引用转换为直接引用。初始化:执行静态变量的赋值操作和静态代码块。类加载过程是懒加载的,只有在需要使用类时才会加载。JVM 采用双亲委派机制保证类加载的安全性和稳定性。

2024-12-12 14:07:45 598

原创 Redisson实现的分布式锁是可重入的吗?

Redisson 提供的分布式锁是可重入的,即同一个线程可以多次加锁,并且每次加锁都会递增计数器,释放锁时则递减计数器,直到计数器为 0 时才真正释放锁。这避免了死锁的发生,并且使得同一个线程可以安全地在多个方法或代码块中使用锁。Redisson 的分布式锁底层会在 Redis 中的锁键上标注当前线程的唯一标识符(UUID),从而实现锁的可重入性。这是通过存储一个与线程相关的标识符(通常是 UUID)来标识锁的持有者,并通过这个标识符来判断是否是同一个线程再次请求锁。

2024-12-10 15:27:50 899

原创 HashMap和ConcurrentHashMap

特性HashMap线程安全性非线程安全,必须手动同步线程安全,内建并发控制机制锁机制无锁机制,需要外部同步使用分段锁或其他细粒度锁Null 键和值允许一个null键,多个null值不允许null键或null值迭代器Fail-fast弱一致性迭代器,可以并发修改性能在单线程中较快,线程不安全在高并发环境下性能更好并发操作需要外部同步机制支持高并发操作,线程间并发无锁竞争适用场景单线程,手动同步的多线程高并发的多线程环境适合在多线程环境下使用,而HashMap。

2024-12-10 14:06:52 1033

原创 线程相关知识疑难杂症

AQS 是 Java 并发包中的一个框架类,用于构建锁和其他同步器的基础构件。它通过一个 FIFO 等待队列来管理线程之间的同步状态,并提供了丰富的机制来实现各种同步语义。开发者可以通过继承 AQS 类并实现其抽象方法来自定义同步组件。线程0来了以后,去尝试修改state属性,如果发现state属性是0,就修改state状态为1,表示线程0抢锁成功线程1和线程2也会先尝试修改state属性,发现state的值已经是1了,有其他线程持有锁,它们都会到FIFO队列中进行等待,

2024-12-09 21:11:50 545

原创 幂等性解决方案

在一个幂等的操作中,重复执行该操作不会对最终状态产生额外的影响。HTTP 方法:根据 HTTP/1.1 规范,GET、HEAD、PUT 和 DELETE 方法应该是幂等的。这意味着你可以安全地重试这些请求而不必担心它们会对服务器上的资源造成不同的影响。:获取资源信息,无论执行多少次,资源内容不变。:更新整个资源,即使多次发送相同的更新内容,资源最终状态相同。:删除资源,资源一旦被删除,再次删除不会有任何效果。银行转账:假设有一个转账操作,它从账户 A 转 100 元到账户 B。

2024-12-09 15:13:13 1696

原创 K8S学习

Kubernetes,通常缩写为 K8s,是一个开源的容器编排平台,旨在自动化部署、扩展和管理容器化应用程序。它最初由 Google 开发,现在由 Cloud Native Computing Foundation (CNCF) 维护和支持。Kubernetes 的设计灵感来源于 Google 内部使用的 Borg 系统,提供了强大的调度、自我修复、水平扩展等功能,帮助开发者和运维团队更高效地管理和运行大规模分布式应用。功能:负责集群的整体管理。

2024-12-08 21:05:43 2238

空空如也

空空如也

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

TA关注的人

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