- 博客(54)
- 收藏
- 关注
原创 测试复习篇
图片服务器测试步骤:单元测试系统测试自动化测试(兼容性测试和回归测试可以用自动化测试)性能测试(明确是什么类型的性能测试(并发测试))性能指标:吞吐量,平均响应时间,点击率,吞吐率,系统运行时资源利用率(CPU利用率),内存占用情况,TPS。。。。什么是软件测试:验证软件功能是否满足用户需求软件测试和开发的区别:首先是测试和调试的区别: 目的不同:软件测试是查看软件是否满足用户的功能,调试是开发人员验证代码是否完成了他想让代码实现的功能 角色不同:测试
2021-11-14 09:57:13
150
原创 abstract和final关键字的使用场景
abstract(抽象)修饰符,可以修饰类和方法abstract修饰类,会使这个类成为一个抽象类,这个类不能直接new对象,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。抽象类里面不是必须要有抽象方法abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。abstra
2021-08-15 17:28:37
273
原创 博客项目测试用例(测试点)
1.界面1.1 布局文章的页面的布局是否合理文章的颜色搭配是否美观(是否影响正常阅读,背景图片你影响正常的阅读)文章的页面缩小之后页面的展示是否正常1.2 文字字体的大小是否合理字体的颜色(可以点击的地方字体的颜色是否和不可以点击的地方字体颜色相同)字体的粗细展示的位置文字太多时能否正常展示(文章的标题太长的时候可以全部显示,但是不太美观)2.功能2.1 注册用户名重复是否会提示不输入任何信息直接点击提交是否会注册成功只输入用户名不输入密码是否会有提示只输入用户名和
2021-08-14 11:31:28
525
原创 图片服务器测试用例(测试点)
图片服务器测试用例1. 界面1.1 布局每一页最上面是logo,标题,接下来右边是图片上传按钮,最后一部分展示的是已经上传到服务器上面的图片,图片下面是图片名字和删除的按钮图片比较多的时候,每一行最多5张图片,剩下的折行展示,每张图片的距离相同每张图片的大小一致每张图片都在一个div框里面,大小都是200px*200px ,图片名字和删除按钮也在这个div框里面1.2文字的测试字体的大小字体的粗细字体的颜色字体的格式展示的位置字体是否成功展示有些文字包含在按键里面,按键的时
2021-08-11 23:42:17
1254
原创 Web,Servlet,网络复习,超全,快来看
前端三剑客:htmlcssjs(javascript)一、 htmlform get/post 提交div 块级元素p 段落元素img src 图片inputtext 多行文本a herf 超链接有序列表 ol li无序列表 ul li标题 h1 - h6加粗 b二、 cssmargin-top、left 边距text-algin:centent 居中颜色 color网络初识: Servlet三、jsdom原生的js操作dom do
2021-08-09 18:47:22
1073
1
原创 【项目】——博客项目
项目功能文章列表(所有人的文章列表、个人文章列表)文章详情添加文章修改文章删除文章用户注册用户登录文章阅读量统计设计数据库和数据表用户表id登录用户名(只能输入英文,不能输入中文)密码创建时间修改时间状态(扩展)drop database if exists blog_system;create database blog_system;drop table if exists 文章表文章id文章标题正文UID(是谁发的文章)状态创建时间修改时间阅
2021-08-09 18:08:36
123
原创 【项目】——图片服务器
项目简介:项目技术点https://blog.csdn.net/chenxiyuehh/article/details/97918146
2021-08-04 10:33:32
98
原创 反射的操作
import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;//import java.lang.reflect 和反射相关的包class Student { private String name; //私有属性 public int age; //共有属性 //公共的构造方法 public Student(){
2021-07-28 09:42:16
78
原创 MySQL复习
安装和使用连接命令:mysql -u[用户名] -p[密码] -h[IP] -P[端口号]SQL使用(基础+进阶)基础使用索引(加速MySQL执行)用好事务保证MySQL稳定性一、MySQL基础使用1. 数据库的操作查询数据:show databases创建数据库:create databese db_name character set utf8bb4使用数据库:use db_name删除数据库:drop database db_name2. MySQL数据类型整数:i
2021-06-07 20:24:35
142
1
原创 年会抽奖,错排问题
题目描述:今年公司年会的奖品特别给力,但获奖的规矩却很奇葩: 1. 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中; 2. 待所有字条加入完毕,每人从箱中取一个字条; 3. 如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!” 现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?输入描述:输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。输出描述:对应每一组数据,以“xx.xx%”的格式输出发生无人获奖的概率。示例1:输入:2输出:50.0
2021-06-03 21:04:23
93
原创 JVM组成,JVM类加载,JVM垃圾回收器,JMM相关知识
Java 可以实现一次编写,到处运行 -> JVM (帮我们处理不同硬件之间的差异) Flutter面试题:为什么大对象会直接放到老年代?答:因为大对象的创建和销毁锁需要的时间比较多,所以性能也比较慢,如果存到新生代,那么可能导致频繁的创建和销毁大对象,从而导致整个JVM运行速率的降低,所以旧直接将大对象存到老年代。...
2021-06-02 23:20:27
419
2
原创 各种锁策略,JUC里面的信号量、计数器、循环屏障,HashMap总结
锁策略:1.乐观锁:他认为一般情况下不会出现问题,所以在使用的时候不会加锁,只有在数据修改的时候才会判断有没有锁竞争,如果没有就会直接修改数据,如果有则会返回失败信息给用户自行处理经典使用场景:CAS(Compare And Swap)对比并且替换CAS实现(V[内存中的值], A[预期的旧值], B[新值])V == A 对比?true -> V->B : false -> 不能修改对比失败之后不是直接返回给用户错误信息,而是进行自旋面试题:CAS实现的原理是
2021-06-02 21:15:09
311
1
原创 单例模式(饿汉方式,懒汉方式),阻塞队列
单例模式:全局唯一并且所有程序都可以使用的对象,就是单例模式。单例模式的两种实现方式:1.饿汉方式(线程安全的)2.懒汉方式单例模式之饿汉方式public class ThreadDemo84 { //单例类 static class Singleton{ //单例模式的3个步骤 //1.将构造函数设置为私有的,不让外部可见(单例模式是不可以new的) /** * java 默认的构造函数是public的,所以
2021-06-02 20:17:54
124
原创 ThreadLocal相关知识
ThreadLocal 经典使用场景:1.解决线程不安全的问题2.线程级的数据传递(可以实现一定程度的解耦)ThreadLocal缺陷:1.不可继承性(子线程不能继承主线程的私有变量)2.脏数据(一个程序的任务执行当中,读取了其他任务的数据)3.内存溢出如何避免脏数据:1.避免使用静态变量2.使用完之后,进行remove操作内存溢出:当一个线程使用完资源之后,没有释放资源,或者说释放资源不及时就会造成内存溢出。内存溢出的原因:1.因为线程池是长生命周期的2.Threa
2021-06-02 19:59:28
155
1
原创 有假币(java)
阅读题目,找出两个关键的信息:1.最快的时间2.最多称几次可以找出假币分析:要用最快的时间找出假币,每次分三堆来称重是最快的。假设每次分三堆都可以刚刚分完,那么下一次的称量的个数都是n/3; 如果不能平均分成三堆,则需要注意,每一次都要在最多的一堆里面去继续称,但是又要保证最快的时间,所以三堆的数量尽可能接近最好,例如:总共硬币个数三堆的数量不能分为的数量下次称量个数52 2 11 1 3272 2 31 1 5 或者 3 3 13103 3..
2021-05-27 09:48:59
159
原创 线程池创建的方式(二)
线程池创建方式4:创建单线程执行定时任务的线程池import java.util.Date;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class ThreadPollDemo51 { public static void main(String[] args).
2021-05-25 12:56:41
91
原创 线程池创建的方式
一、线程的缺点:线程的创建会开辟本地方法栈、虚拟机栈、程序计数器等线程私有的内存对象,同时销毁的时候需要销毁以上三个区域,因此频繁的创建和销毁比较消耗系统资源。在任务量远远大于线程可以处理的任务量的时候,并不能友好的拒绝任务。阿里巴巴开发手册规定:线程必须通过线程池提供,不允许在应用中显示的创建线程(因为上面的线程的缺点)二、线程池:使用池化技术来管理线程和使用线程的方式。线程池的优点:1.可以避免频繁的创建和销毁线程(不管线程是否使用,都放在池子里面)2.可以更好的管理线程的个数和资源的
2021-05-25 12:35:36
137
原创 Test.main() 函数执行后的输出是()
https://blog.csdn.net/u013215018/article/details/76647376
2021-05-09 12:09:58
167
原创 线程通讯及线程通讯方式
所谓线程通讯指的是在一个线程中的操作可以影响另一个线程线程通讯的主要方法:wait()休眠线程 (唤醒一个线程notify)(唤醒全部线程notifyall)wait() 使用时不和synchronized配合使用会出现监视器异常,如下:public class Test29 { public static void main(String[] args) { Object lock = new Object(); Thread t1 = new Thre
2021-05-09 08:45:33
190
原创 多线程死锁问题及解决方式
死锁定义:在两个或者两个以上的线程运行中,因为资源抢占而造成的线程一直等待的问题死锁的代码:面试的时候面试官可能会让我们手写死锁的代码public class Test28 { public static void main(String[] args) { Object lockA = new Object(); Object lockB = new Object(); Thread t1 = new Thread(new Runnable
2021-05-08 21:35:51
637
原创 产生线程安全的原因?如何保证线程安全
一、产生线程安全问题的原因:1.CPU抢占式执行(万恶之源)(不可控,不能解决)2.原子性问题3.内存不可见4.指令重排序(编译器优化)5.多个线程同时操作一个变量 (让每个线程操作自己的私有变量,但是实现较为复杂,可能解决,也可能解决不了)二、解决线程安全问题:1.内存不可见和编译器优化问题的解决:volatile以下代码因为内存不可见和编译器优化问题导致预期结果和实际结果不符package thread.thread0506;public class Test23 { p
2021-05-08 21:30:49
1119
4
原创 创建线程的方式
创建线程的三种方式,七种写法:方式一:(继承Thread)写法1:public class Test { static class MyThread extends Thread{ @Override public void run() { //线程实现自己的代码 } } public static void main(String[] args) throws InterruptedException .
2021-05-05 20:17:56
297
原创 连续最大和
两种思路:第一种:遍历数组,将数组中的数字从1个到数组长度个数字相加进行比较。import java.util.*;public class Solution{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int n = sc.nextInt(); int.
2021-05-05 17:44:58
41
原创 参数解析
题目描述:思路: 看代码就可以懂!!!!import java.util.*;public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String str = sc.nextLine(); //输入一行数据 int len =
2021-04-25 21:29:30
48
原创 不要二
题目描述:核心思想:建立一个二维数组,分析可以得到只有距离某个点直线的距离为2的时候才不可以放蛋糕,所以将每一个不能放蛋糕的二位数组的那个位置设置为-1(或者其他值都可以),计算不是-1的二维数组的格子有多少个就可以得出结论。以4×3举例:import java.util.*;public class Solution{ public static void main(String[] args) { Scanner sc = new Scanner(System.i
2021-04-22 21:26:48
66
原创 机器人走方格
题目描述:先来按照题目要求画小方格,并且判断有几种走法:下面这几个例子可以很简单的在纸上画出来走的方法方格规格几种走法1×111×212×112×22(1×2 2×1)2×33(1×3 1×2 2×1)……处于2*2的方格的时候,只能向下走一步或者向右走一步,向下走一步就变成了1×2的方格的走法,向右走一步就变成了2×1的方格的走法,两种走法相加就是2×2方格总共的走法。再来分析一个2×3的方格的走法,向右走一步,变成2
2021-04-22 09:54:54
99
原创 N!末尾0的个数
题目描述:很多人的第一想法应该是接收这个数字,先计算阶乘,然后判断末尾有几个0,但是这种方法不对,因为整形接收不了很大的数字,就会导致最后只能通过很少的测试用例。正确做法思路:10进制结尾的每一个书代表这个数有一个因数10存在,10可以分解成2×5,因此只有2和5这两个质数相乘才能得到末尾是0的数字,并且2和5相乘只能产生一个0。所以,分解后的因式中有多少对2×5则末尾就有多少个0。并且分解结果中2的个数多与5的个数,所以最后计算可以分解为多少个5即可。import java.util.*;pu
2021-04-21 22:45:39
108
原创 TCP 协议中三次握手和四次挥手
首先先来了解以下TCP的特性:有连接可靠面向字节流的因为TCP是有连接的,所以为了保证TCP的连接正常,需要证明:发送方的发送能力发送方的接受能力接收方的发送能力接收方的接受能力要证明上面的四个能力,TCP要经过三次握手来建立连接和并且要经过四次挥手断开连接*三次握手详解客户端给服务器端发送一个SYN(同步报文段),此时服务器端接收到同步报文段并且返回给客户端一个SYN和ACK(确认应答信息),客户端收到以后进入ESTABLISHED状态,同时发送给服务器端一个ACK。下
2021-04-21 21:17:13
102
原创 OSI七层模型 TCP/IP四层模型
一、OSI七层模型1.分层分层名称7应用层(指定特定应用的协议)6表示层(设备固有数据格式和网络标准数据格式的转换)5会话层(负责建立和断开通信连接,管理传输层以下的分层)4传输层(管理两个节点之间的数据传输(目标地址IP、目标地址端口号,源地址IP、源地址端口号,协议))3网络层(地址管理和路由选择)2数据链路层(互联设备之间传送和识别数据帧)1物理层2.七层模型相关描述把网络从逻辑上分了七层,每一层都有相关,相对应的物理
2021-04-21 19:48:57
77
原创 tcp三次握手的过程,accept发生在三次握手哪个阶段?
tcp三次握手的过程,accept发生在三次握手哪个阶段?第一次握手:客户端发送syn包(syn=j)到服务器。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接...
2021-04-19 16:16:12
1405
原创 抽象类和接口的区别
一、结构组成抽象类是由抽象方法和普通方法和各种实例成员变量组成的接口只能由抽象方法和全局变量组成二、权限抽象类可以是各种权限接口是public (public static final)三、子类使用子类继承抽象类使用extends关键字子类使用接口使用implements四、关系一个抽象类可以实现多个接口接口不能继承抽象类,但是接口可以使用extends关键字继承多个接口五、子类限制一个子类只能继承一个抽象类一个子类可以实现多个接口...
2021-04-11 10:06:56
59
原创 HTTP相关题
1.以下关于HTTP协议叙述正确的是(C)A.HTTP协议是建立在 TCP/IP 协议之上的网络层规范,分为三个部分:状态行、请求头、消息主体B.Cookie数据在消息主体(body)中传输C.HTTP协议支持一定时间内的TCP连接保持,这个连接可以用于发送/接收多次请求D.HTTP是有状态的,每个请求都是独立的(A:HTTP协议分为四个部分:首行,Header,空行(标志Header的结束),Body)(B: Cookie数据在Header中传输)(D: HTTP是无状态的)5.HTTP
2021-03-28 00:12:52
2843
1
原创 Web相关知识点(前端三剑客)
1.html基础知识html是静态基础页面组成,不支持逻辑判断1.1特点:可以通过任何编辑器写html不需要编译,直接通过浏览器就可以运行1.2元素(未加说明的都没有换行功能)1.2.1 <p></p>行级标签,有换行功能(换行间隙大)<p>我爱学习</p>1.2.2 <strong></strong>行级标签,对字体进行加粗<strong>我爱学习</strong>1.2.3
2021-03-27 23:46:36
93
原创 汉诺塔问题(递归)
2^n - 1:代表有n个盘子需要移动的次数可以知道当盘子的个数较多的时候,移动的次数会迅速增加1、当只有一个盘子的时候,直接从第一个盘子移动到第三个盘子 public static void move (char pos1, char pos3) { System.out.print(pos1 + " -> " + pos3 + " "); }2、当有n个盘子的时候,将n-1个盘子通过第三个底座全部移到第二个底座上,然后将最后一个盘子移动到第三个底座上
2021-02-08 11:18:52
83
原创 数据类型与运算符
1.变量和类型1.1 整型变量 intint 变量名 = 初始值;注意:1.在Java中,int是四字节,不区分多少位机器 (表示的范围是-2^31 ~2 ^31-1)2.int既可以表示正数,也可以表示负数3.Integer是int的包装类(int的plus版本)4.定义变量且赋初值的时候不可以给超出其范围的数据5.java中定义的变量在使用时若没有赋初值会报错1.2长整型变量longlong 变量名 = 初始值;long类型占8个字节,表示的范围是-2^63 ~ 2 ^63-1
2021-01-02 23:40:01
152
原创 喝汽水问题
# include <stdio.h># include <windows.h>int main(){ int money = 0; printf("请输入你有多少钱:"); scanf_s("%d", &money); int sum = 0; while (money) { sum += money; money /= 2; } printf("可以喝%d瓶汽水\n", sum); system("pause"); return 0;
2020-11-10 10:12:59
154
原创 打印菱形
代码如下:# include <stdio.h># include <windows.h>void Print(int i){ int j = 1; int k = 1; for (j = 1; j <= i; j++) { if (j <= i / 2 + 1) //打印上半部分 { for (k = 1; k <= i; k++) { if (k > i - (j + /*3 i=7的时候*/
2020-11-09 22:49:27
74
原创 水仙花
//打印水仙花数//求出0~100000之间的所有“水仙花数”并输出。//“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如 : 153=1 ^ 3+5 ^ 3+3 ^ 3,则153是一个“水仙花数”。代码如下:# include <stdio.h># include <windows.h># include <math.h>void Flower(int i){ int n = 0; int j = i; while (j
2020-11-08 22:28:54
67
原创 求两个数二进制中不同位的个数
//求两个数二进制中不同位的个数//编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?//输入例子 ://1999 2299//输出例子 : 7思路:先两个数字按位异或得出结果,然后判断结果中的二进制中1的个数(即为不同的比特位的个数)代码如下:结果如下:...
2020-11-05 18:33:27
124
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人