<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Clever99的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Clever99</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Clever99]]></copyright><item><title><![CDATA[关于编写测试用例的一些思考]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/132262283</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/132262283</guid><author>Clever99</author><pubDate>Sat, 02 Mar 2024 14:42:53 +0800</pubDate><description><![CDATA[测试用例是QA同学的基本功，每个人都有一套编写测试用例的体系，本文是作者结合自身的工作经验以及阅读一些测试相关的书籍后的一些看法，欢迎大家一起讨论学习。]]></description><category></category></item><item><title><![CDATA[后端开发常犯的问题（Java版）]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/129626908</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/129626908</guid><author>Clever99</author><pubDate>Tue, 18 Apr 2023 19:47:27 +0800</pubDate><description><![CDATA[比如新用户可以选择领取礼品的场景，一般分为两个接口实现，1）用户是否为新用户，若为新用户则返回可以领取礼品；2）用户选择礼品后给用户发放礼品。有些开发会只在查询接口中做用户是否是新用户的校验，而在真正的发奖接口中不做校验。这样会有资损的风险，用户可以抓包直接获取到发奖接口给用户领取新用户礼品，所以在与权限相关的场景中，所有的接口都需要做权限的校验。1.依赖client服务的并发限制，使用client加锁保证调用接口串行，服务端并没有加锁，接口超时等异常场景client重试，服务端产生了并发问题。]]></description><category></category></item><item><title><![CDATA[TestNG - dataprovider]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/127560361</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/127560361</guid><author>Clever99</author><pubDate>Thu, 27 Oct 2022 20:42:08 +0800</pubDate><description><![CDATA[TestNG的Test注解提供了一个参数dataProvider，可以满足我们给测试用例提供个性化的数据格式，使用方法。]]></description><category></category></item><item><title><![CDATA[TestNG - 运行失败的test]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/126546141</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/126546141</guid><author>Clever99</author><pubDate>Fri, 26 Aug 2022 16:36:24 +0800</pubDate><description><![CDATA[testNG 重试失败的case有两种方式：
1、所有case全部执行完后，主动触发执行所有失败的case
2、case失败后立即重试]]></description><category></category></item><item><title><![CDATA[Java new一个对象]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/125132775</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/125132775</guid><author>Clever99</author><pubDate>Sun, 05 Jun 2022 15:46:03 +0800</pubDate><description><![CDATA[不同虚拟机的运行时数据区可能略微有所不同，但都会遵从 Java 虚拟机规范， Java 虚拟机规范规定的区域分为以下 5 个部分：程序计数器（Program Counter Register）：当前线程所执行的字节码的行号指示器，字节码解析器的工作是通过改变这个计数器的值，来选取下一条需要执行的字节码指令，分支、循环、跳转、异常处理、线程恢复等基础功能，都需要依赖这个计数器来完成；Java 虚拟机栈（Java Virtual Machine Stacks）：用于存储局部变量表、操作数栈、动态链接、方法出口等]]></description><category></category></item><item><title><![CDATA[org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/124414924</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/124414924</guid><author>Clever99</author><pubDate>Mon, 25 Apr 2022 21:27:55 +0800</pubDate><description><![CDATA[网上很多都是说没有写注解，有些情况是没有写注解，但是有些时候不是因为这个原因，可能是我们的代码中出现了bug导致的，可以看下后面具体出错的地方，有提示具体是哪里有问题

我遇到的情况就是数据库字段的类型写错了，如下图所示，有具体的提示




...]]></description><category></category></item><item><title><![CDATA[Java 对象、变量的存储及初始化]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/115281917</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/115281917</guid><author>Clever99</author><pubDate>Sun, 20 Feb 2022 15:04:52 +0800</pubDate><description><![CDATA[1. 参考

https://www.hollischuang.com/archives/2509

《Java编程思想》

2. Java内存结构



3. 各种数据存储在哪里

3.1基本类型

Java有9种基本类型（boolean，char，byte，short，int，long，float，double，void），存储在堆栈中，不用new来创建变量，而是创建一个并非是引用的“自动”变量

3.2 new出来的对象

存储在”堆“中

3.2.1 String

String对象是不可变的

3]]></description><category></category></item><item><title><![CDATA[MySQL插入数据报Duplicate entry ‘xx‘ for key ‘PRIMARY‘...]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/113919984</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/113919984</guid><author>Clever99</author><pubDate>Sun, 21 Feb 2021 16:57:12 +0800</pubDate><description><![CDATA[1.报错详情



2.出错原因分析

重复的是表的主键，设置的是自增的，而且sql中并没有设置这个字段的值，为什么会重复呢？

1. 查看了下AUTO_INCREMENT的值是2147483647，再插入数据时应该是在此基础上+1呀

2. 该主键字段数据类型是int，2147483647正好是最大值，已经超过最大值了所以就出现了这种情况

3.解决方法

在测试过程中，多次遇到这种情况，不知道是谁，中间隔了一大串的数字，然后插入一条很大的id，库就会很快出现这种假满的情况

1.将这些数据删除

2.修]]></description><category></category></item><item><title><![CDATA[枚举的使用]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/109017559</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/109017559</guid><author>Clever99</author><pubDate>Sun, 11 Oct 2020 22:21:19 +0800</pubDate><description><![CDATA[枚举的使用定义一个枚举类枚举常用方法介绍在其他地方使用枚举
定义一个枚举类
enum Color{
	RED,GREEN,BLUE
}

1.如果想要定义自己的方法，必须在enum实例序列的最后添加一个分号；同时，必须先定义enum实例（在enum实例之前不能定义任何方法或属性）
2.我们有意识地将enum的构造器声明为private的，即使不声明为private，我们只能在enum定义的内部使用其构造enum实例。
public enum Oxwitch{
	WEST("1"),
	NORTH("2"),]]></description><category></category></item><item><title><![CDATA[互联网常用架构学习]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/107245011</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/107245011</guid><author>Clever99</author><pubDate>Fri, 10 Jul 2020 18:43:41 +0800</pubDate><description><![CDATA[随着业务逻辑越来越复杂，很多公司都开始用起了微服务，架构也和上图大同小异，本文主要记录下对此架构学习的笔记
CDN
CDN，全称Content Delivery Network，即内容分发网络。可以加快用户的访问速度，原理就是使用缓存。
CDN是部署在各地的网络运营商的机房，所以是需要付费才能使用的。
参考：https://www.jianshu.com/p/ce98fbff39ac

...]]></description><category></category></item><item><title><![CDATA[h5页面图片未加载出来问题排查]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/107230002</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/107230002</guid><author>Clever99</author><pubDate>Thu, 09 Jul 2020 15:47:40 +0800</pubDate><description><![CDATA[h5图片未加载出来问题排查步骤：
1.排查是否时网络问题，保证网络正常
2.是否设置了节省流量的模式，不加载图片
3.内存/缓存太多，导致图片加载不出来
这些情况都没有问题的话，再进行下面的步骤：
4.抓包，查看接口是否返回了图片
5.查看图片链接配置是否有问题（可能以前的图片都存储在这个地方，后来换了存储图片的服务）
如果看了这些还是有问题，可能就是h5有问题了：
6.是否发生了js阻塞，js有问题，后面代码没有执行，图片没有渲染
排查了以上问题，还是没有发现问题，也可能是版本的问题：
7.我们h5嵌入的]]></description><category></category></item><item><title><![CDATA[Robolectric之Shadows]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/106672707</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/106672707</guid><author>Clever99</author><pubDate>Thu, 11 Jun 2020 12:00:24 +0800</pubDate><description><![CDATA[官网介绍地址：点这里
本文根据自己平时的使用对官网文档的一种理解和翻译
shadows出现的原因
Robolectric虽然创建了一个包含了真实的Android框架代码的运行时环境，但是还是有一些限制：

Native code - Android native code cannot execute on your development machine. （Android本地代码不能在我们的开发计算机上执行）
Out of process calls - There are no Android sys]]></description><category></category></item><item><title><![CDATA[Robolectric常用方法]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/106478530</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/106478530</guid><author>Clever99</author><pubDate>Mon, 01 Jun 2020 18:39:12 +0800</pubDate><description><![CDATA[标题1.Robolectric官网第一个例子
1）页面
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"&gt;

    &lt;Button
  ]]></description><category></category></item><item><title><![CDATA[org.mockito.exceptions.misusing.InvalidUseOfMatchersException:  Invalid use of argument matchers!]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/106381257</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/106381257</guid><author>Clever99</author><pubDate>Wed, 27 May 2020 14:46:44 +0800</pubDate><description><![CDATA[在写Android 单元测试的mock时，一直报这个错误
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
8 matchers expected, 7 recorded:
-&gt; at......

This exception may occur if matchers are combined with raw values:
    //incorre]]></description><category></category></item><item><title><![CDATA[Vue入门笔记（二）——路由]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/106159061</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/106159061</guid><author>Clever99</author><pubDate>Sat, 16 May 2020 17:14:21 +0800</pubDate><description><![CDATA[1.说明
本文写的主要针对0.7.X版本的vue router。
官方介绍：
Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成，让构建单页面应用变得易如反掌。
对比：
传统的页面应用，是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中，则是路径之间的切换，也就是组件的切换。
2.创建一个简单的路由
1）route-config.js
// 需要的路由关系一般都写在route-config.js文件中
//引入组件，Home和About是两个自]]></description><category></category></item><item><title><![CDATA[Module parse failed:Unexpectedtoken (1:0)You may need an appropriate loader to handle this file type]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/106147055</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/106147055</guid><author>Clever99</author><pubDate>Fri, 15 May 2020 18:09:04 +0800</pubDate><description><![CDATA[现实又给我上了一堂残酷的课，之前搞robeletric的时候在环境上就一直出问题，这次开始整vue又在环境上浪费了这么久的时间
我的node直接就下载了最新版本的，所以在运行别人的项目时报错了，然后我竟然没有想到先看看是不是环境的问题，又在网上一通找，然后修改了一堆东西，还是不行
这个时候在网上看到说最新版本的node跟很多东西都不兼容，8.几的是比较稳定的，然后就换了8.几的node，项目起来了
过来几天，我看另一些模块的时候，启动的时候报了如下错误：
ERROR in ./demo03/src/app.]]></description><category></category></item><item><title><![CDATA[测试开发面试总结（一）]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/104370950</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/104370950</guid><author>Clever99</author><pubDate>Wed, 13 May 2020 17:45:15 +0800</pubDate><description><![CDATA[面试题

自我介绍
测试用例设计
微信发红包
页面刷不出来问题排查
算法题
有序数组插入数字
Java基础知识
对多态的理解
==和equals的区别
重载和重写的区别
hashmap和hashtable的区别
接口和抽象类的区别
arraylist与linklist区别
数组和链表的区别
Linux命令
查看日志某个关键字的前后50行
网络基础知识
tcp
http header包含的字段
测试...]]></description><category></category></item><item><title><![CDATA[Vue入门笔记（一）——目录结构]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/106058407</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/106058407</guid><author>Clever99</author><pubDate>Mon, 11 May 2020 18:42:49 +0800</pubDate><description><![CDATA[本文中用到的项目来自：https://github.com/keepfool/vue-tutorials
第一次接触vue，记录下自己学习成果
目录结构

项目的效果

2. 各个目录内容
1）main.js 项目的入口文件，创建了根vue实例，并引入根组件app.vue。每个 Vue 应用都是通过用 Vue 函数创建一个 Vue 实例开始的（一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实例，以及可选的嵌套的、可复用的组件树组成）

main.js 和 index.js 在vue项目中是]]></description><category></category></item><item><title><![CDATA[RuntimeException: Method ___ not mocked]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/105273915</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/105273915</guid><author>Clever99</author><pubDate>Thu, 02 Apr 2020 17:19:41 +0800</pubDate><description><![CDATA[前言： 在用Robolectric做单元测试时，环境的解决就花费了我好长好长一段时间，差点就绝望了，准备放弃了
在最开始报出了如下的错误：
[Robolectric] com.tavultesoft.kmea.packages.PackageProcessorTest.test_load_GFF_KMP_keyboards: sdk=28; resources=BINARY
java.lang.R...]]></description><category></category></item><item><title><![CDATA[移动端测试踩过的坑]]></title><link>https://blog.youkuaiyun.com/Clever99/article/details/105253017</link><guid>https://blog.youkuaiyun.com/Clever99/article/details/105253017</guid><author>Clever99</author><pubDate>Thu, 02 Apr 2020 15:01:40 +0800</pubDate><description><![CDATA[1. 接口调用时上传参数值不正确
这个虽然在功能测试的时候足够细致的话也是可以被发现的，但是稍微不留意就可能漏掉（不知道大家关于app涉及到接口的调用是怎么测试的，欢迎大家一起交流）
1）场景1:  App中有一个填写信息的页面，我们填完后点击提交按钮，通过接口把这些信息上传到服务器
通常我们会认为填写完信息提交后，查看下相应的页面展示或者抓包看下上传的参数值，就可以验证APP调用接口时传参是否有...]]></description><category></category></item></channel></rss>