- 博客(169)
- 收藏
- 关注
原创 移动端 App 测试入门(4)----Charles使用
Charles(俗称青花瓷)是一款跨平台 HTTP/HTTPS 代理抓包调试工具,支持 Windows、macOS、Linux,是前端、移动端、测试工程师最常用的接口调试工具。本质是本地代理服务器(默认监听 8888 端口),专门监控、拦截、修改电脑 / 手机 / 小程序所有网络请求,可完整解析加密 HTTPS 流量,相比 Fiddler 更适配 Mac、移动端抓包,界面直观易用。
2026-06-29 02:11:04
239
原创 移动端 App 测试入门(3)----ADB命令
adb命令是adb程序自带的一些参数完成不同的功能,adb shell是通过调用Android系统中的命令,这些命令存放于Android系统的/system/bin目录下。注意:上面命令要在adb shell模式下使用,或者在命令前面加上adb shell。Key Code Number Key Name 说明。3 KEYCODE_HOME HOME键(起始键)找到我们启动应用的日志,跟在包名后面的就是启动入口。8 KEYCODE_1 按键1。
2026-06-25 22:24:45
228
原创 移动端 App 测试入门(2)----ADB介绍与环境配置
ADB = Android Debug Bridge,安卓调试桥,是谷歌官方提供的命令行调试工具,存放在 Android SDK 的 platform-tools 文件夹内。ADB 三层架构(客户端 - 服务端 - 守护进程)
2026-06-25 16:11:49
330
原创 移动端 App 测试入门(1)----前置知识
很多刚入门软件测试、想转移动端测试的同学,上手 adb、抓包、App 自动化时经常一头雾水,核心原因是缺少移动端底层基础认知。本文整理移动端测试必备前置知识,包含应用开发模式、Web/H5 / 小程序区分、完整 App 测试流程、全维度测试要点、版本提测规范、内测分发平台六大模块,零基础也能看懂,面试、实操都能用。
2026-06-25 13:02:50
317
原创 Spring AI Alibaba零基础速成(6) ---- 向量化
什么是向量:一个有大小有方向的量。向量化也叫 Embedding,是将文本、图片等非结构化数据,转换成固定维度浮点数字数组的过程。自然语言无法被计算机直接运算比对,转为向量数值后,就能通过数学算法计算文本间相似度。数组里每一个小数,,维度越多,刻画特征越精细。数值区间一般在 [- 1, 1] 之间,数值越趋近,代表对应特征高度吻合;数值偏差越大,特征差异越大。真实业务中是 1024 维向量,全方位覆盖人物、剧情、场景、情绪等海量特征。行业通用计算,把向量看作空间坐标点,通过两点夹角判定相似程度。
2026-05-22 20:35:33
420
原创 Spring AI Alibaba零基础速成(5) ---- Memory(记忆)
关键在于MessageChatMemoryAdvisor这个类,可以看到我们在配置ChatClient时配置了一个该对象,这个就是生效的关键,虽然名字叫。可以看到这个依赖适配了Jedis和RedissonRedis以及springBoot的Lettuce。Spring AI 为 JdbcChatMemoryRepository 提供自动配置,可直接注入。在该类源码中我们可以看到关键的两个方法,before和after。可以看到是按id分别存储的。
2026-05-21 00:16:44
477
原创 Spring AI Alibaba零基础速成(4) ---- Prompt(提示词)
Prompt 是引导 AI 模型生成特定输出的输入格式,Prompt 的设计和措辞会显著影响模型的响应。Prompt 最开始只是简单的字符串,随着时间的推移,prompt 逐渐开始包含特定的占位符,例如 AI 模型可以识别的 “USER:”、“SYSTEM:” 等。阿里云通义模型可通过将多个消息字符串分类为不同的角色,然后再由 AI 模型处理,为 prompt 引入了更多结构。每条消息都分配有特定的角色,这些角色对消息进行分类,明确 AI 模型提示的每个部分的上下文和目的。
2026-05-19 23:42:07
642
原创 Spring AI Alibaba零基础速成(3) ---- ChatClient使用
它不是替代 ChatModel,而是对底层能力进行包装,简化编码、增强语法、扩展能力,让开发者以极简链式语法完成 AI 调用。,它定义了所有大模型统一的调用规范,是最原始、最基础的调用层。
2026-05-18 23:08:41
185
原创 Spring AI Alibaba零基础速成(2) ---- Ollama安装与使用
Ollama类似于docker,Ollama = 本地跑大模型的「Docker」,让你在家电脑上一键跑 Qwen、Llama、DeepSeek 等开源大模型,不上云、隐私可控。
2026-05-18 22:08:03
213
原创 Spring AI Alibaba零基础速成(1) ---- 项目创建与配置
【代码】Spring AI Alibaba零基础速成(1) ---- 项目创建与配置。
2026-05-16 02:46:28
160
原创 SpringCloud快速入门(11)---- Sentinel(异常处理)
return r;return r;return r;@Component@OverrideR error = R.error(500, s + "被Sentinel限制了,原因:" + e.getMessage());
2026-05-15 22:17:13
1036
原创 SpringCloud快速入门(9)---- OpenFeign(进阶配置)
openFeign可以设置请求日志,在每次请求调用时输出详细的请求信息2. 配置 OpenFeign 的完整请求日志输出放在配置类即可。
2026-05-15 01:13:53
405
原创 SpringCloud快速入门(8)---- OpenFeign(远程调用)
EnableFeignClients加在启动类上,开启 OpenFeign 功能,表示这个服务开始远程调用功能。使用时直接注入feign对象调用其中方法即可,openFeign会自动从注册中心获取服务并负载均衡的发送请求。其中value代表的是要调用哪个服务,如果要调用第三方服务,可以使用url属性,指定要发送请求的url。@FeignClient加在调用接口的接口类上,标记这是 Feign 远程调用客户端。沿用的SpringBoot的注解,只不过区别是指定发送请求的类型。
2026-05-14 17:54:28
94
原创 SpringCloud快速入门(6)---- 配置中心
nacos有两个主要的功能一是注册中心还有就是配置中心,nacos可以集中管理服务的配置,同时支持热更新,在不停止服务的情况下更新配置。
2026-05-14 17:33:25
237
原创 SpringCloud快速入门(7)---- 数据隔离
--是yaml提供的语法,可以把多个配置写进一个文件,使用时,通过spring.profiles.active的值来确定使用哪一个。命名空间区分不同环境,分组隔离不同业务,数据集代表配置。在三个命名空间中分别创建了4个配置。nacos提供了以下三个概念。
2026-05-14 16:40:17
67
原创 SpringCloud快速入门(5)---- 均衡负载
要实现均衡负载我们可以使用springcloud提供的一个类:LoadBalancerClient引入依赖:loadBalancerClient提供了一个choose方法会自动获取一个服务实例,其中已经实现了均衡负载算法:我们可以在发送请求的客户端上加上@LoadBalanced注解这样通过这个客户端发送的请求会自动实现均衡负载:注意,@LoadBalanced注解不能直接加在变量上,@LoadBalanced 是Spring 扩展注解只有Spring 容器创建的 Bean 才能被增强
2026-05-14 00:58:56
256
原创 SpringCloud快速入门(4)---- nacos安装与使用
在微服务架构中,会有很多服务(订单服务、用户服务、支付服务),服务之间需要互相调用。Nacos就是注册中心,所有服务启动后,都会主动把自己的IP、端口注册到Nacos中。当A服务需要调用B服务时,直接去Nacos查询B服务的地址即可,无需硬编码写死地址。
2026-05-13 01:44:37
889
原创 SpringCloud快速入门(2)---- SpringCloud简介
SpringCloud是基于SpringBoot的微服务治理框架,它整合了市面上优质的微服务组件,帮我们快速搭建稳定、可靠、高可用的分布式系统。如果把微服务比作一栋写字楼,每个微服务就是一间办公室,而SpringCloud的各类组件就是写字楼的水电、安保、导航、调度系统,保障整栋大楼正常运转。这里给大家做一个直白的串联,快速理清组件协作流程:用户请求先经过Gateway网关,做鉴权、过滤;网关根据路由转发至对应服务;所有服务注册在Nacos,统一管理配置;服务之间通过OpenFeign调用,
2026-05-12 21:32:10
370
原创 SpringCloud快速入门(3)---- 创建微服务项目
这张图是一个,是我们入门微服务时最常用的项目工程骨架。继承关系:service-product → services → cloud-demo业务服务模块继承 services,services 再继承 cloud-demo。
2026-05-12 18:40:42
368
原创 SpringCloud快速入门(1)---- 微服务介绍
单体架构:将项目所有功能(用户、商品、订单、支付、后台管理)全部写在一个工程里,代码耦合在一起,打包成一个war/jar包,部署在一台服务器上运行。通俗理解:一个项目、一个包、一台服务器、包含所有功能。集群架构:把同一个项目,复制多份,部署到多台服务器上,每台服务器运行一模一样的代码,配合负载均衡器分发请求。通俗理解:复制多台一模一样的服务器,干一样的活,分担压力。分布式架构:按照业务功能,将一个大项目拆分成多个独立的子项目(子服务),每个子服务单独部署在服务器上,各司其职,通过网络互相调用。
2026-05-12 17:03:09
459
原创 零基础学Docker(7)--Docker网络
在 Docker 中,自定义网络是一种更灵活、更安全的容器间通信方式,相比早期的 --link 机制,它支持动态 DNS 解析、网络隔离和更灵活的配置,是现代 Docker 网络的最佳实践。为什么需要自定义网络默认的 bridge 网络(Docker 安装时自动创建)功能有限,不支持容器名直接通信(需依赖 --link)。自定义网络可实现容器间通过名称 / 别名通信(内置 DNS 服务),无需依赖 IP 或 --link。可隔离不同业务的容器(如数据库网络、应用网络分开),提高安全性。
2025-10-08 16:23:08
1022
原创 零基础学Docker(6)--DockerFile
Dockerfile 是构建 Docker 镜像的核心文本文件,它通过一系列预定义的指令(Instruction),以代码化、可版本控制的方式描述镜像的构建流程。简单来说,Dockerfile 就是镜像的 “源代码”,确保了镜像构建过程的一致性、可重复性和可追溯性,是 Docker 生态中实现 “一次构建,到处运行” 的关键基础。以上是一个用于构建支持 systemd 的 CentOS 基础镜像的 Dockerfile。
2025-10-05 16:07:50
933
原创 零基础学Docker(5)--容器数据卷
在 Docker 中,容器数据卷(Volume)是一种用于持久化存储容器数据的机制,它可以将容器内部的特定目录或文件与宿主机的文件系统建立关联,实现数据的持久化和共享。
2025-09-27 17:21:57
522
原创 零基础学Docker(3)--图形化管理工具Portainer
Portainer 是一个Docker图形化管理工具,可以提供一个面板供我们操作。设置完成后会进入如下界面,我们选择Local代表管理本地Docker环境。进入之后可以看到我们的docker。安装portainer。
2025-09-25 15:37:29
350
原创 Tomcat的解析与使用
Tomcat 是一个开源的 Java Web 服务器和 Servlet 容器,由 Apache 软件基金会开发和维护。它主要用于运行 Java 编写的 Web 应用程序,是 Java Enterprise Edition (Java EE) 规范中 Servlet 和 JSP(JavaServer Pages)技术的主流实现之一。它的特点是轻量级、开源免费、易于部署和配置,广泛用于开发和生产环境,尤其适合中小型 Java Web 应用。
2025-09-24 17:32:43
1187
原创 零基础学Docker(2)--基本命令
运行上面代码表示运行的镜像:可以看到,首先提示了没有在本地找到 "hell-world:latest"这个镜像,后面又提示尝试从远程仓库拉取这个镜像,拉取成功等等。
2025-09-20 16:43:40
712
原创 零基础学Docker(1)--Docker介绍
当我们发布一个项目需要把项目打包后在服务器上运行,这时需要在服务器上安装我们项目需要的环境,例如MySQL,Redis,Kafka等等,如果后续这个项目要扩展,那么又要在新的服务器上配置环境,如果新的服务器和旧的服务器系统不一样,那么情况就更糟了。即可以理解为,Docker是把我们的项目和环境打包了,这里称为一个Docker容器,多个Docker容器是共用系统内核的,和虚拟机技术的通过软件模拟完整的计算机硬件环境(CPU、内存、磁盘、网络卡等)不同,所以十分轻便。,于是Docker诞生了。
2025-09-15 17:57:57
449
原创 分布式锁介绍与实现
那么这里我们就可以使用商品id作为key,当需要操作某个商品时把商品id作为key存入redis,存入成功的则允许进行下一步操作,注意,这里一定要设置超时时间,如果某个服务器存入key成功后恰巧这个服务器挂了,那么这个key就无法被释放了,所以一定要设置过期时间。但是随着用户量日益增多,我们的系统出现了瓶颈,这时就可以使用负载均衡技术部署多个服务器,由于我们使用的同步锁只对当前服务器生效,多个服务之间的并发依然是不安全的,所以又会导致超卖问题。可以看到防止了超卖问题,
2025-09-13 15:42:12
316
原创 Redis缓存击穿、雪崩、穿透
缓存穿透是指,请求访问了数据库中不存在的数据,数据不存在也就代表缓存中不可能有,就会直接访问数据库,这种情况可能是服务器受到了攻击。,把不存在数据的key记录下来,每次请求时先判断布隆过滤器中有无该key,如果没有则继续在redis或数据库中查询,查询到。上面代码中,如果key失效了,那么大量的并发请求就会直接访问数据库,就像是redis被击穿了,所有形象的称为缓存击穿。当缓存中多个key集中失效时,大量请求直接访问数据库,造成数据库压力暴增,甚至宕机。
2025-09-08 16:33:02
438
原创 Java中Stream流的使用
在 Java 中,Stream 流是 Java 8 引入的一个强大特性,它允许你以声明式的方式处理集合数据。Stream 流提供了一种高效且易于使用的方式来对数据进行过滤、映射、排序、聚合等操作,使代码更加简洁和可读。
2025-07-03 22:44:32
1589
原创 零基础学习RabbitMQ(5)--工作模式(1)
RabbitMQ提供七种消息传递模式:1)简单模式(点对点);2)工作队列(多消费者);3)发布/订阅(广播);4)路由模式(按规则分发);5)通配符模式(灵活匹配);6)RPC通信(异步调用);7)发布确认(可靠投递)。每种模式针对不同场景设计,如集群处理、广播通知、日志分级等,通过交换机和路由机制实现消息的灵活分发。
2025-06-29 16:47:54
1259
原创 零基础学习RabbitMQ(4)--RabbitMQ快速入门
注意:调用basicConsume()方法后,消费者会不断从队列中获取数据,这个操作是由另一个线程执行的,和主线程是异步的,直到连接被释放,这里从调用basicConsume到连接关闭中间消费的数据数量和打印出来的日志不一定是吻合的,有的消息的日志可能还没有打印出来,主线程就关闭了。可以看到队列被创建成功了,并且有一条消息,由于我们在程序末尾释放了连接所有这里是没有Connections和Channels的。这里我们直接使用内置的交换击就无需声明。这里的""代表使用的这个默认的交换机。
2025-06-29 15:06:36
502
原创 零基础学习RabbitMQ(2)--Linux安装RabbitMQ
注意:这里使用的是ubuntu系统RabbitMQ需要Erlang语言的支持,在安装rabbitMQ之前需要安装Erlang安装后输入 rel可查看Erlang版本:输入halt().退出 通过 IP:port访问界面ip为自己的云服务器地址,端口号为15672,注意先开放云服务器该端口的防火墙。默认用户名和密码都是guest rabbitmq从3.3.0开始禁⽌使⽤guest/guest权限通过除localhost外的访问,所以这里我们登录失败了添加管理员用户:设置权限:
2025-06-23 16:47:20
561
原创 零基础学习RabbitMQ(1)--概述
MQ (消息队列)从字面上看,本质上是个队列,先进先出,只不过存储的是消息。MQ多用于分布式系统之间进行通信。直接调用对方的服务,数据从一端发出后立即就可以到达另一端。数据从一端发出后,先进入一个容器进行临时存储,当到达某种条件后,再由这个容器发送给另一端。这里的容器就可以使用MQ。
2025-06-23 15:46:31
435
原创 零基础学习Redis(14) -- Spring中使用Redis
在spring中提供的方法只要大家对于redis命令足够熟悉相信是能够正常的猜测出每个方法的具体作用,不够熟悉的也可以在spring的官方网站上进行查询,关于redis基础使用的学习到这里就基本完结了。
2025-06-22 17:49:37
401
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅