自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试再也不怕被问 HashMap 了

具体问题如下:1.HashMap的内部数据结构数组 + 链表/红黑树2.HashMap允许空键空值么HashMap最多只允许一个键为Null(多条会覆盖),但允许多个值为Null3.影响HashMap性能的重要参数初始容量:创建哈希表时桶的数量(数组的大小),默认为 16负载因子:哈希表在其容量扩容之前可以达到一种尺度,默认为 0.754.HashMap的工作原理HashMap是基于hashing的原理,我们使用put(key, value)存储对象到HashMap中,使用get(ke

2020-06-30 09:54:55 373 1

原创 Java 垃圾回收机制与算法

话不多说,首先来引入一张图然后来进行具体的解释:引言:Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。内存泄露:是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,Java 的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时也将其称为“对象游离”。一、什么是垃圾回收垃圾回收(Garbage Coll

2020-06-27 19:50:43 268

原创 【字节面试题】字符串中由字母组成的子串反转,其他字符原样输出

题目:给定一个字符串求:字符串中由字母组成的子串反转,其他字符原样输出样例:Input str = "234_sfss/_3333"public String wordReverse(String inputStr){ String str=new String(inputStr); StringBuffer s=new StringBuffer(); int a=0; for(int i=0;i<str,length();i++){ if((str.charAt(i)<='Z

2020-10-25 11:10:55 687 2

原创 Java 异常类型及处理

话不多说,先引入一张图,然后再做具体讨论:什么是异常?若程序运行时,发生了不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。一. Java 异常分类异常的根接口为: Throwable , 其下有2个子接口,Error 和 Exception 。Error:指的是 JVM 错误,这时的程序并没有执行,无法处理;Exception:指的是程序运行中产生的异常,用户可以使用处理格式进行处理。1.免检异常(红色部分为特别常见的异常)2.必检异常(红色部分为特别常见的异常)

2020-07-25 18:07:10 1344

原创 LoadRunner 组件讲解+实操录制脚本(自带浏览器)

目录一.Loadrunner 定义二. Loadrunner 组件三.Loadrunner 的性能测试过程四.Loadrunner 实操前言操作:录制脚本:一.Loadrunner 定义Loadrunner 是业界公认的权威性能测试工具,被誉为工业级的性能测试工具,支持广泛的协议和平台。LoadRunner 是一种适用于许多软件体系架构的自动负载测试工具,从用户关注的响应时间、吞吐量,并发用户和性能计数器等方面来衡量系统的性能表现,辅助进行系统性能的优化。LoadRunner 通过以模拟上千万用户实

2020-07-25 14:31:12 1084

原创 谈谈你所理解的性能测试

性能测试一.性能测试基础二.概念和术语介绍三.性能测试模型四.性能测试分类1.基准测试2.负载测试(并发测试(针对并发用户数),容量测试(针对数据库的数据量))3.压力测试(强度测试)4.并发测试5.配置测试6.可靠性测试(疲劳测试)7.大数据量测试系统开发完毕了,去做一下性能测试吧!系统要验收了,做一下压力测试吧!当听到以上的要求后,是否一脸茫然?那么我们该怎样进行一次性能测试呢?一.性能测试基础1.为什么进行性能测试?应用程序是否能够很快的响应用户的要求?应用程序是否能处理预期的用

2020-07-25 13:40:04 1273

原创 selenium + python + unittest 单元测试框架

之前讲解了 selenium 的脚本录制和 api 。在进行脚本录制导出的脚本中,我们发现其中多了很多代码,这些代码正是 unittest 测试框架。class chandao(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://127.0.0.1/" self.verificationError

2020-07-19 22:36:36 933

原创 最强 Postman 使用详解

作为 web 应用的开发人员,经常需要用到调试接口的时候,很多接口都是通过 http/https 协议来传输数据的,那么怎么测试数据的正确性呢?怎样测试接口的正确性呢?Postman 就可以很好的解决这个问题。一.什么是PostmanPostman 是一款功能强大的网页调试与发送网页 HTTP 请求的 Chrome 插件,他主要用来做接口测试。做 web 页面开发和测试的人员应该是无人不晓,无人不用!其主要特点特点:创建 + 测试:创建和发送任何的 HTTP 请求,请求可以保存到历史中再次执行。

2020-07-19 18:02:58 510

原创 使用 Selenium IDE 录制脚本

Selenium 也具有录制功能,可以 web 中回放,录制的脚本可以转换为 java、python、ruby、php 等多种脚本语言。seleniumIDE 是 Firefox 的一个插件,依附于 Firefox ,所以需要先安装 Firefox 浏览器。安装成功界面:一.seleniumIDE 的界面1、指的是你当前录制的 URL 。2、这里就是你的测试用例,刚开始录制好之后都是没有命名的。3、脚本命令内容,command:方法关键字;Target:元素定位;Value:参数值。4、新建

2020-07-19 18:02:09 462

原创 史上最全!Selenium 录制脚本+八种元素定位方式+具体代码演示

文章目录一.selenium定义二.使用selenium IDE录制脚本三.元素的定位方式1.id--->find_element_by_id()2.name--->find_element_by_name()3.class name--->find_element_by_class_name()4.link text--->find_element_by_link_text()5.partial link text--->find_element_by_partial_lin

2020-07-19 18:01:16 2445

原创 面试官【谈谈你所理解的 TopK 问题】

在实际工作中,经常会遇到在海量数据中找出前K个最值的问题。对于此类问题,可能我们一般想到的算法是排序算法,首先给数据进行排序,再去获取k个最值轻而易举。但是当问题的规模内存中放不下时,普通的内排序就无法进行。对于海量数据的topk问题,一种常用的做法是借助堆解决。1.原理如果需要获取最大的k个值,可以建小堆。否则,建大堆。我们以获取k个最大值为例,进行原理说明。首先读入前k个数据存入一个最小堆。然后遍历后续的数据,对于每一个遍历的数据,都和堆顶(k个数据中最小的)数据比较,如果比堆顶数据小,则继续

2020-07-19 10:50:18 316

原创 测试管理工具【禅道】使用详解

测试管理工具并没有一个占据份额明显突出的工具。创业公司可能根本没有测试管理工具,而依赖excel来管理,中小企业可能会在开源的基础上进行定制,大厂则会自研工具,而土豪们则会使用商业软件。本篇文章以国产开源工具禅道为例,来进行讲解。讲解的目的不是工具的具体使用,而是测试管理相关的理念。一.什么是测试管理工具测试管理工具是指在软件开发过程中,对测试需求、计划、用例和实施过程进行管理、对软件缺陷进行跟踪处理的工具。通过使用测试管理工具,测试人员或开发人员可以更方便地记录和监控每个测试的活动、每个阶段执行的结

2020-07-19 10:48:58 5629

原创 腾讯经典考题《编写代码求最大连续子序列》

1.什么是最大连续子序列?最大连续子序列问题是一个非常经典的问题,需要求解出一个数组中的最大连续子序列的和。比如数组{6, -3, -2, 7, -15, 1, 2, 2},它的最大连续子序列为{6,-3,-2,7},和为8。2.解题思路(1)暴力搜索最大连续子序列的和只可能从数组0到n-1中某个位置开始,我们可以遍历0到n-1个位置,计算由这个位置开始的所有连续子序列中的和的最大值,最终求出全局最大值即可。更详细的讲,就是计算从位置0开始的最大连续子序列的和,从位置1开始的最大连续子序列的和…。直

2020-07-12 22:16:30 232

原创 Java 中的 hashCode() 方法 和 equals() 方法,你了解么?

1.概述在 Java 中存在两个比较方法,分别是:hashCode() 方法 和 equals() 方法。这两个方法都属于Object类的方法。//源码1public boolean equals(Object obj) { return (this == obj); }//源码2public native int hashCode(); //用 c 或者 c++ 写的代码首先来看 equals 方法的底层实现,观察源码,参数为一个引用,方法内部则是判断当前

2020-07-12 22:15:59 164

原创 Java变量及其对应的包装类型你了解么?

1. Java当中的基本数据类型Java当中的基本数据类型共有8种,他们分别是byte, char,short, int, long, float,double。这8种类型完全可以足够我们去使用,当然除了这些基本数据类型,还有引用类型,如:接口,类,数组,枚举,String等等。2. Java当中的变量在Java当中变量大概分为两种:成员变量和局部变量。2.1 定义成员变量:定义在类内,方法外的变量。局部变量:定义在方法内的变量。2.2 具体细分和内存位置成员变量:实例成员变量(不加

2020-07-12 22:15:15 342

原创 你知道 PreparedStatement 和 Statement 的区别吗?

一、连接数据库的步骤第一种:(1)加载驱动: Class.forName(“com.mysql.jdbc.Driver”);(2)获取连接:Connection connection=DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名称?useSSL=false”,“root”,“数据库密码”);(3)创建处理对象:Statement statement=connection.createStatement();(4

2020-06-27 21:42:12 279

原创 还不会使用 git 你就 out 了!

1.Git的工作流程(暂存区是给我们留有回旋余地的,最终的Git仓库就存储我们代码的最新流程)2.Git的简单配置(配置用户名和用户邮箱,因为以后每次与Git的交互都会使用该信息)git config --global user.name “your_name”git config --global user.email “your_email@email.com”该设置可以在github仓库主页上面看到是谁提交了该文件3.查看设置git config --list4.在文件夹内初

2020-06-27 19:58:52 363

原创 Java中类的执行顺序

引入一段代码,大家猜猜结果会是怎么样的呢?class A { static int initSA() { System.out.println("1"); return 0; } static { System.out.println("2"); } static int sa = initSA(); int a = initA(); int initA() { System.o

2020-05-28 15:01:26 198

原创 Linux 指令篇

文章目录一.查看硬盘空间使用情况二.查看 CPU 内存和系统版本三.查看网络/进程信息一.查看硬盘空间使用情况二.查看 CPU 内存和系统版本1.如何查看Linux CPU使用情况1.1 查看CPU基本硬件信息1.2 查看CPU使用状态信息, top && dstat2.如何查看Linux 内存使用情况2.1 查看内存基本容量信息2.2 查看内存运行空间信息3.如何查看Linux 系统版本三.查看网络/进程信息1.查看网络连接数和端口使用 netstat

2020-05-19 21:11:43 764

原创 将本地数据库中的数据上传到云服务器数据库

前言:这个过程就和把一台电脑上的数据拷贝到另一台电脑上一样,云服务器其实就是一台只要你费用足够就能永远不死机的电脑。一.操作本地数据库(1)打开数据库(2)导出数据库(例如: tangshi 数据库)二.将刚刚导出的 123.sql 文件上传到云服务器(工具:Xshell6+Xftp)将本地的 123.sql 文件通过 Xftp 上传到云服务器中三.操作云服务器上的数据库(1)...

2020-05-19 20:25:32 7377

原创 Java 语言设计一个缓存模型

前提:数据库表 student:create table student( id int, name varchar(15));一.线程不安全版本import java.util.HashMap;import java.util.Map; public class CacheDemo { //map 用来作缓存模型 private static Map&l...

2020-04-26 11:02:25 270

原创 【算法】斐波那契数列

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。分析:斐波那契数列的标准公式为:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)数列如下:0 1 1 2 3 5 8 13 21 34 55 89…方法一(递归):public class Solution { public int ...

2020-04-26 09:51:14 391

原创 唐诗可视化具体测试

按照开发阶段来分:一.单元测试在编码阶段对一个具体的模块进行单元测试。测试模块:数据爬取模块。(分别对单线程版本,多线程版本,线程池版本四个版本进行代码测试)二.集成测试测试模块组装功能的正确性、模块之间的数据传输、模块之间的功能冲突、全局数据结构、单模块缺陷对系统的影响等方面。通过一定的 url 来调取 RankServlet 类,从数据库后端获取相应的数据。通过一定的 url 来...

2020-04-24 18:16:09 542

原创 【排序算法】桶排序

一.算法思想一句话总结为:划分多个范围相同的子区间,每个子区间自排序,最后合并即可。桶排序每个桶内存储一定范围的元素,通过映射函数,将待排序数组中的元素映射到各个元素分别对应的桶中,对每个桶中的元素进行排序,最后将非空桶中的元素逐个放入原序列中即可。桶排序需要尽量保证元素分散均匀,否则当所有数据集中在同一个桶中时,桶排序失效。桶排序 (Bucket sort):工作原理是将待排序序列分到有限...

2020-04-24 15:48:43 365

原创 唐诗可视化项目

一.项目简介本项目分为两个模块,分别是:诗词爬取模块和数据可视化模块。主要是通过对 古诗文网 的唐诗三百首的内容进行爬取,并将爬取到的内容存储到 MySQL 数据库当中,并将相关的数据内容进行统计,最终将其以图表等形式展示出来的一个 JavaWeb 项目。(其中对诗人以及他们分别创作的著作数量使用柱状图来进行展示,对所有诗词的所有分词以及它们的使用频率使用词云来进行展示)核心技术:Serv...

2020-04-23 16:18:16 3526 1

原创 【算法题】把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。import java.util.ArrayList;import java.util.List;import java.util.Collections;import java.util.Comparator;p...

2020-04-17 18:04:24 142

原创 海量数据处理基本方法总结

一. 海量数据处理的困难海量数据处理的困难用一句话概括就是:时空(时间,空间)资源不够。时间受限:无法在有限的时间内,完成针对海量数据的某项特定工作的处理;空间受限:无法将海量数据一次性读入内存;对于时间受限的问题,我们一般的解决办法是高效的算法配合恰当的数据结构,比如哈希表,堆,二叉树等;而对于空间受限的问题,一般的解决办法是“大而化小,分而治之”的策略,既然一次性行不通,那就一部分...

2020-04-17 15:31:38 1344

原创 MySQL的左连接、右连接、内连接

具体演示用两个表(a_table 和 b_table),关联字段 a_table.a_id 和 b_table.b_id 来演示一下 MySQL 的内连接、外连接( 左连接、右连接)。(1)建表语句CREATE TABLE `a_table` ( `a_id` int(11) DEFAULT NULL, `a_name` varchar(10) DEFAULT NULL, `a_...

2020-04-15 21:10:59 395

原创 怎样优化数据库?怎样优化数据库的查询效率?

一.优化数据库的查询效率存储引擎的选择:如果数据表需要支持事务处理,应该考虑 Innodb ,因为它完全符合 ACID 的特性;如果不需要支持事务处理,则使用存储引擎MyISAM对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 以及 order by 字句涉及的列上建立响应的索引尽量避免在 where 子句当中使用 != 或者 > , < 等操作符,否则将导致存储...

2020-04-13 16:36:50 684

原创 浅析 AVL 树,红黑树,B 树,B+ 树

一. AVL 树1.出现的原因二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序,二叉搜索树将有可能退化为单支树,此时查找元素相当于在顺序表中查找元素,效率低下,相当于O(n)。例如:对于同一个关键码集合,如果各关键码插入的次序不同,可能得到不同结构的二叉搜索树:最优情况下,二叉搜索树为完全二叉树。最差情况下,二叉搜索树退化为单支树。2.定义AVL 树是一种二叉平衡搜索树,...

2020-04-05 12:18:05 632

原创 微信发红包、QQ登录、搜索框、水杯、聊天窗口、两台电梯、微信/淘宝支付、笔、 抖音发布短视频等功能测试用例

一.功能测试搜索框输入内容为空,验证功能是否正确搜索框输入内容为空格,验证功能是否正确边界值验证:最大输入的字符串长度,最小输入的字符串长度超长字符串的输入,系统是否会截取一定的长度来检验功能的正确性字符串中间加入空格,逗号,tab键,验证功能是否正确验证每种合法的输入,结果是否正确输入框是否支持内容的复制、粘贴等操作输入框是否支持回车键搜索多次输入相同的内容,查看系统的检索结果...

2020-04-04 22:35:16 9565 2

原创 数据库中drop、truncate、delete三种删除的区别

一. SQL 中的语法drop table 表名称 truncate table 表名称 delete from 表名称 where 列名称 = 值 二. drop,truncate,delete 的区别1.drop (删除表)删除表中的内容和定义的表的数据结构。简单来说就是...

2020-03-29 17:19:33 18566

原创 线程池核心线程数多少最为合适(IO密集型和CPU密集型)?

线程数量是否越多越好呢?一.CPU密集型CPU 使用率较高(也就是一些复杂运算,逻辑处理)非常多的情况下,线程数一般只需要CPU核心数的线程就可以了。 这一类型多出现在开发中的一些业务复杂计算和逻辑处理过程中。二.I/O密集型CPU 使用率较低,程序中会存在大量 I/O 操作占用时间,导致线程空余时间很多,所以通常就需要开CPU核心数两倍的线程。当线程进行 I/O 操作 CPU 空闲时,启...

2020-03-24 17:27:09 10669

原创 什么是死锁?怎样避免死锁的产生?

一.什么是死锁?死锁是指两个或两个以上的进程在执行过程中,因争夺资源或不正确的进程间推进顺序,而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。二.死锁产生的四个必要条件虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备以下四个必要条件。1)互斥条件:指进程对所...

2020-03-24 16:58:15 378

原创 进程间的通信方式以及多线程和多进程之间的区别

一.两者区别(1)多进程1.数据是分开的,共享复杂,同步简单2.占用内存多,切换复杂,CPU利用率低3.创建销毁复杂,切换复杂,速度慢 4.编程简单,调试简单5.进程间不会相互影响 6.适应于多核、多机分布 ;如果一台机器不够,扩展到多台机器比较简单(2)多线程1.多线程共享进程数据,共享简单,同步复杂2.占用内存少,切换简单,CPU利用率高3.创建销毁简单,切换简单,速度...

2020-03-24 16:31:02 852

原创 HTTP(TCP)的长连接和短连接

HTTP的长连接和短连接本质上就是TCP的长连接和短连接。一.HTTP协议和TCP协议HTTP的长连接和短连接本质上就是TCP的长连接和短连接。HTTP协议属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址的问题,TCP协议主要解决如何在IP层之上进行可靠的端对端传递数据包的过程。二.HTTP协议的长连接和短连接在HTTP/1.0中,默认使用的是短...

2020-03-24 15:33:23 534

原创 数据库初学

一.为什么不用文件存储数据,而用数据库?存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:●文件的安全性问题●文件不利于数据查询和管理●文件不利于存储海量数据●文件在程序中控制不方便数据库存储介质:●磁盘和内存数据库, 它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。二.关系型数据库和非关系型数据库数据...

2020-03-21 21:48:22 450 1

原创 Linux常用指令

1.怎么查看当前进程?查看当前进程: ps2.怎么查看当前路径?查看当前路径: pwd3.怎么清屏?清屏: clear清屏: ctrl+l4.查看指定帮助用什么命令?5.查看文件内容有哪些命令可以使用?(1)vi 文件名 #编辑方式查看,可修改文件内容(2)cat 文件名 #显示全部文件内容(3)more 文件名 #分页显示文件内...

2020-03-21 20:24:40 455

原创 TCP/IP四层模型

TCP/IP 协议族是一个四层协议模型,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,且通过若干协议来实现这些功能,上层协议使用下层协议提供的服务图示:数据包在每层有不同的格式,从上到下依次叫段,数据报,数据包,帧;数据从应用层通过协议栈向下传递,每经过一层加上对应层协议的报头,最后封装成帧发送到传输介质上,到达路由器或者目的主机剥掉头部,交付给上层需要者。这一过程...

2020-03-09 23:28:39 1031

原创 Java为什么不支持多继承?

多继承指一个子类能同时继承于多个父类,从而同时拥有多个父类的特征,但缺点是显著的。1.若子类继承的父类中拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量。2.若一个子类继承的多个父类拥有相同方法,同时子类并未重写该方法(若重写,则直接使用子类中重写的方法),那么调用该方法时,将无法确定调用哪个父类的方法。假设A类和B类都有 t 方法,但具体实现细节不一样。C类则继承...

2020-03-09 22:46:21 254

空空如也

空空如也

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

TA关注的人

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