自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP 特性:确认应答、超时重传、连接管理(三次握手,四次挥手)

一、定位一组元素在页面中获取全部对象,再选择部分对象。# coding=utf-8from selenium import webdriverimport osimport timedriver = webdriver.Firefox()# 获取页面文件file_path='File:///' + os.path.abspath("E://javatest//200808//selenium_html//checkbox.html")driver.get(file_path)driver

2020-08-18 23:26:24 422

原创 接简历+面试咨询

现在北京已有两年多工作经验且刚换公司(之前的工资15*15,现在不方便透露)对校招社招的面试套路有一些心得,大家有是否适合测试岗位、简历内容格式、面试疑问、初入职场的态度的相关问题,可以一起探讨,我也顺便挣点外快~欢迎咨询。通过我以前的文章能证明我确实认真学习了软件测试并为面试认真准备了,在此不多做赘述。

2023-06-14 01:35:35 110

原创 Java 图形设计 -- 布局策略

一、背景在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计。java.awt 中定义了多种布局类,每种布局类对应一种布局策略。常用布局类有五种:流布局管理器 FlowLayout: 依次放置组件。边界布局管理器 BorderLayout: 将组件放置在边界上。箱式布局管理器 BoxLayout: 管理一组水平或垂直排列的组件。卡片布局管理器 CardLayout: 将组件像扑克牌一样叠放,而每次只能显示其中一个组件。网格布局管理器 GridLayout

2020-09-29 09:45:01 918

原创 餐厅自助点餐系统测试

一、餐厅自助点餐系统测试用例二、具体测试过程参考音乐播放器项目测试三、项目源码餐厅自助点餐系统项目源码

2020-09-11 09:05:08 3769 1

原创 音乐播放器项目测试

一、单元测试利用 postman 进行接口测试,每一个功能完成后都在 postman 软件上进行测试,观察结果,判断能否运行(或者main 函数也可判断)。以登录为例:二、功能测试对项目已有功能编写测试用例。ps: 可编写自动化脚本实现测试用例三、性能测试使用 loadRunner 进行并发性测试。以登录为例:...

2020-09-06 18:28:39 3354 1

原创 个人项目(二)-- 自助点餐系统

一、需求分析现在很多餐馆里都使用自助点餐系统节省人力,但是页面大都略显花哨,忽视了系统应有的便捷性。因此,我有了设计一个页面简单,功能齐全的点餐系统的想法。二、程序设计自助点餐系统应该具有以下功能:实现对用户的注册,登录,点餐,查看账单,查看本人订单状态,退出账号;实现对管理员的登录,查看菜品,新增或删除菜品,改变订单状态,删除订单,查看所有订单账单,退出登录的功能。然后通过 Java 实现相应的功能:通过 HTML 实现音乐播放器前端页面的显示;通过 HTTP 实现服务器前后端的交替;通

2020-08-29 20:47:55 5891 1

原创 个人项目(一)-- 音乐播放器

一、需求分析现在很多音乐播放器并不能找到所有的音乐,所以往往需要下载多个播放器才能完善想听的歌单。如果有一个公共的音乐服务器,可以有不同的人分享自己喜欢的音乐,通过渐渐丰富音乐库,就可以让大家只在网页上就听到所有喜欢的歌。带着这个想法,完成了这一个项目——音乐播放器。二、程序设计我所构思的音乐播放器同时包含视频(类似 mv,抖音等视频)的搜集和播放。然后通过 Java 实现相应的功能:通过 HTML 实现音乐播放器前端页面的显示;通过 HTTP 实现服务器前后端的交替;通过 MySQL 实现播

2020-08-29 20:23:12 4221 4

原创 idea 打包 web 项目部署到 linux 上详细图解流程

打开项目,点击 File => Project Structure打开 Project Structure,点击左侧的 Artifacts按下图流程点击:按下图创建目录直接点击 OK解决 problem然后 problem 消失,点击 apply,点击 OK开始部署检查是否部署成功若成功,启动 Tomcat,直接把 war 包拖进 linux 环境下 tomcat 的 webapps 目录ps: 需要安装 rzlinux 可自动解压 war 包(蓝色.

2020-08-24 12:22:00 1145

原创 TCP特性:延迟应答、捎带应答、粘包问题、保活机制、面向字节流

一、TCP 连接可靠性的依据确认应答、超时重传、连接管理二、其他特性滑动窗口、流量控制(六)延迟应答在保证传输可靠性的前提下,可以延迟应答提高效率。如果接收数据的主机立刻返回 ACK 应答, 这时候返回的窗口可能比较小。例:假设接收端缓冲区为 1 M, 一次收到了 500 K 的数据。如果立刻应答, 返回的窗口就是 500 K; 但实际上可能处理端处理的速度还远没有达到自己的极限, 即使窗口再放大一些, 也能及时处理。因此如果接收端稍微等一会再应答,比如等待 200ms 再应答, 那么这

2020-08-19 23:02:28 399

原创 TCP 的特性:滑动窗口、流量控制

一、TCP 连接可靠性的依据确认应答、超时重传、连接管理二、TCP 其他特性

2020-08-19 15:12:49 485

原创 项目实现过程中错误总结及解决办法

一、数据库a. mysql 连接不上b. mysql 不能识别汉字例:根据关键字查询歌单,发现只能识别数字,输入汉字默认为空。解决方法:RuntimeException二、歌曲可以重复上传代码错误用 if 语句判断歌曲是否已经上传三、ps.executeUpdate(); 报错sql 语句拼接错误。四、html 插入图片错误如果 image (存放图片的文件) 在 css 目录下,则可直接调用,否则需使用 background 函数。五、注册登录通过数据库中的 user 表实现

2020-08-11 20:56:56 621

原创 自动化测试 元素定位

对象的定位是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。要定位这个对象,可以通过元素属性。定位要求:元素要求该属性,且该属性内容全局唯一。通过页面源码查看元素具体属性:以百度为例:打开浏览器,单击右键 => 审查元素得到这个页面通过查看具体的元素进行定位:首先,浏览器需要安装驱动,和 selenium IDE 才可以进行自动化脚本。我的驱动在火狐浏览器上,所以以此为例演示:准备:# coding = utf - 8;from selenium import w

2020-08-11 16:59:18 332

原创 解决 ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES);vim 的简单使用

在 linux 上连接数据库可能会发生以下错误:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES);问题解析:解决方法:先排除配置问题不同版本需要修改配置确认 mysql 在运行查看服务状态:systemctl status mariadb显示 Active 状态为 active (running) 则表示正在运行新下载的 mysql 一般默认无密码应该输入

2020-08-10 17:33:40 291

原创 TCP UDP 回显服务器实现

UDP 实现TCP Socket 类方法签名方法说明ServerSocket(int port)创建绑定到指定端口的服务器套接字ServerSocket(int port, int backlog)创建服务器套接字并将其绑定到指定的本地端口号,并指定了积压Socket accept()侦听要连接到此套接字并接受它bind(SocketAddress endpoint)将ServerSocket绑定到特定地址(IP地址和端口号)InetAddress g

2020-08-04 12:50:45 297

原创 IP 端口、UDP、TCP

一、网络原理基本概念客户端:主动向服务器发起请求的一方(Request)服务器:被动接受客户端请求的一方(Response)客户端服务器基本工作流程:IP 地址:用来识别互联网上的一台主机的位置(相当于快递上的收件人地址)形式:本质是一个 32 为整数,使用 3 个“.” 分割,每个部分一个字节(0 - 255)例如:192.168.0.1端口号:用来区分一台主机上的哪个应用程序(相当于快递上的收件人姓名)端口号就是一个占两个字节的整数(0 - 65535)服务器程序必须关联一个固定的

2020-08-04 12:23:28 186

原创 JDBC 数据库编程

一、数据库编程JDBC,即 Java Database Connectivity,java 数据库连接。是一种用于执行 SQL 语句的 Java API,它是 Java 中的数据库连接规范。这个 API 由 java.sql.* ,javax.sql.* 包中的一些类和接口组成,它为 Java 开发人员操作数据库提供了一个标准的 API,可以为多种关系数据库提供统一访问。JDBC 优势:Java 语言访问数据库操作完全面向抽象接口编程 开发数据库应用不用限定在特定数据库厂商的 API 程序的可移植

2020-08-02 14:12:23 1113 2

原创 解决 ModuleNotFoundError: No module named ‘selenium‘

在 PyCharm 内运行程序,发现了这个错误。第二行的代码是这样的from selenium import webdriver然后判断 python 环境安装是否正确找到 python.exe 打开,如果出现以下页面则说明安装成功然后再测试 selenium 是否安装在 python 中输入 from selenium import webdriver ,未报错说明安装正确打开 pycharm,settings 里找到 Project Interpreter找到 System I

2020-08-02 10:29:00 12067 1

原创 IO(二)-- 流(字符流、字节流)

一、流在 Java中所有数据都是使用流读写的。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。流是一组类/一组 API,描述了如何来进行文件的读写操作。例:读操作二、流的分类所有的 IO 流相关的类,一共分成两个大的部分:字节流:读写数据以字节为基本单位字符流:读写数据以字符为基本单位应用场景:处理文本文件/数据时,使用字符流。处理二进制文件/数据时

2020-08-01 00:12:30 112

原创 IO(一)文件操作(罗列出一个目录中的所有文件)、绝对路径、相对路径

一、文件基本操作public static void main(String[] args) throws IOException { // 文件操作 File file = new File("d:/test.txt"); System.out.println("文件是否存在: " + file.exists()); System.out.println("文件是否是普通文件: " + file.isFile()); Sys

2020-07-31 23:25:27 408

原创 mysql -- 事务(脏读、不可重复读、幻读)

一、概念事务就是把一组操作打包在一起,执行的时候使这些操作之间满足一定的特性,避免出现问题。例:如果 A 向 B 发 200 红包,此时 A 的余额减少 500 元,若 B 收了红包之后余额并没有增加 500 元,则说明 发红包、收红包 这一组操作出现了错误。事务就是防止中间出现错误,因此事务应该具备以下特征:原子性(一个事务是一个不可分割的工作单位)一致性(数据在事务执行前后没有错误)持久性(事务执行之后,数据被持续修改)隔离性(多个事务并发执行时,事务之间不能互相干扰)ps : 隔离

2020-07-31 23:13:45 133

原创 线程的重点总结

一、线程不安全的原因线程是抢占式执行的线程实现不是原子的多个线程尝试修改同一个变量内存可见性导致的线程安全问题 (防止编译器过度优化:出现一个线程读,一个线程写的情况)指令重排序 (编译器在编译代码时, 会针对指令进行优化, 调整指令的运行顺序, 提升程序运行效率)二、保证线程安全使用没有共享资源的模型适用共享资源只读不写的模型a. 不需要写共享资源的模型b. 使用不可变对象保证线程安全(会写代码)a. 保证原子性 ( 加锁 synchonized)b. 保证可见性 (保

2020-07-31 21:37:26 80

原创 线程(九)-- 线程池

一、基本介绍线程池:已经包含了一些线程, 以便直接使用.优点:避免了频繁创建 / 销毁线程的开销线程池本身就是生产者 - 消费者模型。生产者 - 消费者模型介绍核心操作:execute: 把一个任务加到线程池中shutdown: 销毁线程池中的所有线程线程池的组成:(需要管理两个部分: 将要执行的任务, 正在执行任务的线程)1. 一个类, 描述具体线程要做的工程(借助 Runnable 表示)2. 需要一个数据结构来组织若干个任务(BlockingQueue)3. 先有一个类, 表示

2020-07-31 21:15:34 126

原创 @WebServlet 的使用

一、作用servlet可以直接通过 @WebServlet 标签配置URL映射,不再需要从 web.xml 里面配置 servlet,使操作更便捷。二、使用方法如果对 @WebServlet 内容没有显式指定,则默认其含义等价于< servlet-name >。例:@WebServlet("/upload")public class UploadServlet extends HttpServlet { ...... }若对其进行具体的属性设置,则需要了解它的具体属性。

2020-07-31 17:26:48 1384

原创 OSI七层模型和TCP/IP五层(或四层)模型

一、OSI七层模型OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机。OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;。它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯; 而缺点则是既复

2020-07-29 23:11:06 803

原创 数据库连接不上问题 和 不能识别汉字问题

一、数据库连接错误在 mavan 中连接数据库时有时会发生连接失败的错误。通过提示,发现错误是以下两行代码:发生这种情况,很大概率是连接数据库的字符串输入错误:username 和 password 一定要填写正确。url 一般要确定是否连接 SSL根据MySQL 5.5.45+、5.6.26+和5.7.6+的要求,如果不设置显式选项,则必须建立默认的SSL连接。需要通过设置useSSL = false来显式禁用SSL,或者设置useSSL = true并为服务器证书验证提供信任存储。

2020-07-29 09:24:35 735

原创 线程(八)定时器实现 -- java

一、定时器的基本内容定时器: 多线程编程中的一个重要且常用的组件。例如:浏览器内部就有定时器,当浏览器发生请求时,定时器就开始定时。当规定时间内并没有响应(页面并未跳转,数据没有提交等情况),就会强制终止请求,返回错误页面。定时器的基本构成, 有三个部分:用一个类来描述 “任务”(Task 类)用一个阻塞优先队列来组织若干个任务. 让队首元素就是时间最早的任务.如果队首元素时间未到, 那么其他元素也肯定不能执行.用一个线程来循环扫描当前的阻塞队列的队首元素, 如果时间到, 就执行

2020-07-27 23:18:34 126

原创 线程(七)阻塞队列 -- java

一、阻塞队列可用来实现生产者消费者模型(典型的并发编程)基于数组实现。生产者消费者模型:两个线程分别模拟 生产者 和 消费者.分别模拟两次情况:第一次, 让给消费者消费的快一些, 生产者生产的慢一些.(在线程一里加入 Thread.sleep(500); )预期情况: 消费者线程会阻塞等待. 每次有新生产的元素的时候, 消费者才能消费.实际情况: 只有生产者生产了新元素, 消费者才能进行消费(生产消费交替实现)第二次, 让消费者消费的慢一些, 生产者生产的快一些.(在线程二里加入 Thre

2020-07-27 23:06:34 68

原创 线程(六)单例模式(饿汉模式、懒汉模式)-- java

一、单例模式单例模式是常见的"设计模式"设计模式: 一些解决方法模板单例模式: 保证指定的类只能有一个实例.二、代码实现(一)饿汉模式 static class Singleton { // "饿汉模式": 只要类被加载, 实例就会立刻创建. // => 线程安全. // a. 创建一个表示单例的类 // b. 把 构造方法 变成私有, 此时在该类外部就无法 new 在这个类的实例了. priva

2020-07-27 22:46:27 91

原创 线程(五)synchonized,volitale,wait 用法 -- java

一、线程不安全的具体分析二、解决方法(一)synchonized 用法:static class Counter { public int count = 0; synchronized public void increase() { // synchronized: 监视器锁 // 进入方法之前会先尝试自动加锁(加锁不成功会自动阻塞,直到成功加锁) // 方法执行完毕之后会自动解锁 //

2020-07-27 22:17:28 100

原创 线程(四)解决线程不安全问题

一、何为线程不安全?线程安全: 多线程并发执行时, 没有产生逻辑错误线程不安全: 多线程并发执行时, 产生逻辑错误体会线程不安全:static class Counter { public int count = 0; public void increase() { count++; // 自增操作步骤: // 1. 把内存中的数据读取到 CPU 中(load) // 2. CPU 中把数据加一(increase)

2020-07-27 22:08:52 260

原创 mysql密码正确出现闪退:ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)

有时候运行 mysql 输入密码会出现闪退情况在 cmd 输入 mysql -uroot -p 会出现错误:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)主要原因是:电脑杀毒软件可能会关闭 mysql。查看方法:在搜索中输入 service(服务)并打开检查 mysql 是否启动(也可右键点击查看),并启动。若找不到 mysql 命令,则需手动安装。cmd 以管理员身份打开,输入 mysql

2020-07-27 15:33:57 418

原创 Selenium IDE 出现 Exceeded waiting time for new window to appear 2000ms

如果运行Selenium IDE 出现如下问题:可能原因有两个:浏览器自动拦截页面跳转,如下图(火狐浏览器):解决方法:若还是出现跳转超时的情况,则是第二种情况。网速慢若页面跳转过快,则当页面还未加载成功即跳转就会报错。解决方法:减慢运行速度完成上述操作,页面即可跳转成功。ps: 打开的多个页面要一个个关...

2020-07-27 14:08:51 2124 1

原创 线程(三)线程等待、线程状态 -- java

一、线程等待public void join(): 等待线程结束 // 线程等待(线程之间是并发执行的关系) // join 方法会阻塞所在的线程, 让其他线程先执行, 以此控制线程结束的先后顺序. public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread() { @Override public

2020-07-23 23:03:20 1800

原创 线程(二) 线程中断、thread.start() 与 thread.run() 的区别与联系 -- java

一、thread.start() 与 thread.run() 的区别与联系run 方法和 start 方法是不同的,启动线程必须要调用 start 方法static class MyThread extends Thread { @Override public void run() { System.out.println("线程"); } } public static void main1(String[]

2020-07-23 20:50:12 172

原创 进程和线程(一)

一、操作系统(OS)的基本概念概念:任何计算机系统都包含一个基本的程序集合,称为操作系统。笼统的理解,操作系统包括:a. 内核(进程管理,内存管理,文件管理,驱动管理)b. 其他程序(例如函数库,shell程序等等)设计目的a. 与硬件交互,管理所有的软硬件资源(对内且对下)b. 为用户程序(应用程序)提供一个良好的执行环境(对外且对上)二、进程对于操作系统来说,一个任务就是一个进程(Process)。进程是担当分配系统资源(CPU时间,内存)的实体,是具有动态特性的。

2020-07-20 17:57:53 178 1

原创 冯诺依曼体系结构

一、冯·诺依曼体系结构  冯·诺依曼体系结构冯·诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。 人们把冯·诺依曼的这个理论称为冯·诺依曼体系结构。  根据冯·诺依曼体系结构构成的计算机,必须具有如下功能:把需要的程序和数据送至计算机中。必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。能够按照要求将处理结果输出给用户。  为了完成上述

2020-07-20 15:57:38 1371

原创 哈希表及哈希冲突避免

一、哈希表概念顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。搜索的效率取决于搜索过 程中元素的比较次数。如果构造一种存储结构,通过某种函 数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快 找到该元素。当向该结构插入、搜索元素,此方法即为哈希(散列)方法。哈希方法中使用的转换函数称为哈希 (散列) 函数,构造出来的结构称为哈希表(Hash Table)(或者称散列表) 。

2020-07-20 14:29:05 2601 1

原创 二叉搜索树的插入、删除和创建 -- java

一、二叉搜索树二叉搜索树满足条件:若左子树不为空,则左子树上所有节点的值都小于根节点的值若右子树不为空,则右子树上所有节点的值都大于根节点的值其中序遍历是一串有序数列查找:二叉搜索树的创建、插入和删除public class BinarySearchTree { class Node { int key; int val; Node left; Node right; public Node

2020-07-19 23:59:24 145

原创 Map 和 Set -- java

一、基本概念Map 和 Set 常用于搜索。一般把已知的数据称为关键字(Key),和关键字对应的称为值(Value)。对于搜索模型:纯 key 模型,即 Set 的应用环境,只需要判断关键字在不在集合中即可,没有关联的 value;Key-Value 模型:即 Map 的应用环境,需要根据指定 Key 找到关联的 Value。二、基本用法Mapimport java.util.HashMap;import java.util.Iterator;import java.util.M

2020-07-19 23:50:30 66

原创 排序(二)冒泡排序、快速排序、归并排序 -- java

一、交换排序冒泡排序在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序。import java.util.Arrays;public class BubbleSort { public static void bubbleSort(int[] array) { //冒泡排序:在无序区间,通过相邻数的比较, //将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序 //时间复杂度:O(N

2020-07-18 23:53:20 125

空空如也

空空如也

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

TA关注的人

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