自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer-10 斐波那契数列

文章目录一、问题描述二、解题方法动态规划一、问题描述请写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。二、解题方法动态规划.

2021-02-25 11:00:00 133

原创 剑指offer-10青蛙跳台阶问题

文章目录一、问题描述二、解题方法动态规划一、问题描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。二、解题方法动态规划复杂度分析时间复杂度O(N)空间复杂度O(1)class Solution { public int numWays(int n) { int a=1,b=1,sum; fo.

2021-02-25 10:38:30 115

原创 剑指offer-旋转数组的最小数字

文章目录一、问题描述二、解题方法二分法一、问题描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例:输入:[3,4,5,1,2]输出:1二、解题方法二分法复杂度分析时间复杂度O(log2N) :在特例情况下(例如 [1, 1, 1, 1]),会退化到 O(N)。空间复杂度O(1)class Solutio.

2021-02-25 10:35:22 112

原创 剑指offer-05替换空格

文章目录一、问题描述二、解题方法创建StringBuilder对象一、问题描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例:输入:s = “We are happy.”输出:“We%20are%20happy.”二、解题方法创建StringBuilder对象复杂度分析时间复杂度O(N)空间复杂度O(N):Java 新建的 StringBuilder 都使用了线性大小的额外空间。class Solution { public String replac.

2021-02-23 11:07:40 69

原创 剑指offer—二维数组中的查找

文章目录一、问题描述二、解题方法1.暴力2.线性查找一、问题描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 2.

2021-02-23 11:03:33 68

原创 剑指offer—数组中重复的数字

文章目录一、问题描述二、解题方法1.哈希表/set2.原地交换一、问题描述在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3二、解题方法1.哈希表/set复杂度分析时间复杂度O(N)空间复杂度O(N):哈希表占用O(N)大小的额外空间class Solution { .

2021-02-23 10:56:54 73

转载 面试—计网—HTTP 1.0和HTTP 1.1的主要区别是什么?

主要区别主要体现在:长连接 : 在HTTP/1.0中,默认使用的是短连接,也就是说每次请求都要重新建立一次连接。HTTP 是基于TCP/IP协议的,每一次建立或者断开连接都需要三次握手四次挥手的开销,如果每次请求都要这样的话,开销会比较大。因此最好能维持一个长连接,可以用个长连接来发多个请求。HTTP 1.1起,默认使用长连接,默认开启Connection: keep-alive。 HTTP/1.1的持续连接有非流水线方式和流水线方式 。流水线方式是客户在收到HTTP的响应报文之前就能接着发送新的请求报

2020-12-15 15:32:52 423

转载 面试—计网—Cookie和Session

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。Cookie 一般用来保存用户信息 比如①我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);

2020-12-15 15:27:37 280 1

转载 面试—计网—HTTP长连接、短连接

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive在使用长连接的情况下,当一个网页打开完

2020-12-15 15:21:59 138

转载 面试—计网—在浏览器中输入URL地址

总体来说分为以下几个过程:输入一个url地址浏览器查找域名的IP地址(DNS解析)确认好了IP和端口号,建立TCP连接浏览器向web服务器发送一个HTTP请求服务器处理请求并返回HTTP报文浏览器解析渲染界面连接结束详情:https://snailclimb.gitee.io/javaguide-interview/#/./docs/c-1%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C?id=_317-%E5%9C%A8%E6%B5%8F%E.

2020-12-15 15:17:19 282

原创 面试—计网—拥塞控制

拥塞控制一、定义二、拥塞控制三、四种算法一、定义在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。二、拥塞控制作用:拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。方法:为了进行拥塞控制,TCP 发送方要维持一个 拥塞窗口(cwnd) 的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。三、四种算法TCP的拥塞控制采用

2020-12-15 15:08:14 189

原创 面试—计网—TCP和UDP协议的区别

TCP和UDP协议的区别图片来自于:https://snailclimb.gitee.io/javaguide-interview/#/./docs/c-1%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C

2020-12-15 14:58:10 155 1

原创 面试—计网—TCP三次握手和四次挥手

TCP三次握手和四次挥手一、三次握手1.为什么不能用两次握手进行连接?2.为什么要三次握手?3.为什么要传回SYN4.传了SYN,为什么要传ACK?二、四次挥手1.为什么连接的时候是三次握手,关闭的时候却是四次握手?一、三次握手第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发

2020-12-15 14:53:34 138

原创 面试—计网—OSI七层模型、五层协议体系结构

一、体系结构二、各层协议应用层:各种应用程序协议,如:HTTP、FTP、SMTP、POP3、DNS等。表示层:文本:ASCII;图形:GIF、JPEG等;声音:MIDI等会话层:Socker、SQL、ASP等传输层:TCP、UDP等网络层:IP、ICMP等数据链路层:STP、帧中继、PPP等物理层:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45...

2020-12-15 14:39:13 460

转载 面试——java——深拷贝和浅拷贝

一、浅拷贝被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象里面的对象。”里面的对象“会在原来的对象和它的副本之间共享。== 浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。==比如说,两个引用student1和student2指向不同的两个对象,但是两个引用student1和student2中的两个teacher引用指向的是同一个对象,所以说明是浅拷贝。二、深拷贝深拷贝是一个整个独立的对象拷

2020-12-15 11:19:05 331

原创 面经—java——static的作用

文章目录一、static关键字1.修饰成员方法2.修饰成员变量3.修饰代码块一、static关键字1.修饰成员方法static修饰的方法一般称作静态方法,由于静态方法不依赖任何对象就可以进行访问,因此对于静态方法来说是没有this的。在静态方法中不能访问类的非静态成员变量和费静态成员方法。但是在非静态成员方法是可以访问静态成员方法/变量的。2.修饰成员变量static修饰的变量也成为静态变量,静态变量和非静态变量的区别是:静态变量被所有对象共享,在内存中只有一个副本,它当且仅当在类初次加载时会被.

2020-12-15 11:01:22 86

原创 面试+算法部分—快速排序

文章目录一、算法描述二、举例说明三、代码四、时间复杂度一、算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。二.

2020-12-14 22:12:08 71

原创 面试+算法部分—插入排序

文章目录一、算法描述二、举例说明三、代码四、时间复杂度一、算法描述一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后;重复步骤2~5。二、举例说明三、代码public class InsertionSort { publi.

2020-12-14 22:01:11 90

原创 面试+算法部分—选择排序

文章目录一、算法描述二、举例说明三、代码提示:以下是本篇文章正文内容,下面案例可供参考一、算法描述选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:初始状态:无序区为R[1…n],有序区为空;第i趟排序.

2020-12-14 21:24:56 71

原创 面试+算法部分—冒泡排序

文章目录一、算法描述二、举例说明要排序数组:int[] arr={6,3,8,2,9,1};1.第一趟排序2.第二趟排序3.第三趟排序4.第四趟排序5.第五趟排序6.最终结果三、代码一、算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。二、举例说明要排序数组:int[] arr={6,3,8,2,9,1};1

2020-12-14 20:50:59 193

原创 测试—多协议接口性能测试

文章目录一、目标及范围二、常见接口协议1.HTTP协议(超文本传输协议)2.HTTPS协议(安全超文本传输协议)3、FTP协议(文件传输协议)4.TCP/IP协议5.UDP协议三、实战JMeter如何进行ftp协议进行接口测试1.部署FTP服务2.Jmeter进行FTP测试四、性能测试用例设计及测试报告一、目标及范围目标:1、发现应用程序的性能瓶颈2、发现数据库的性能瓶颈范围:1、应用程序各项性能指标2、数据库各项性能指标二、常见接口协议1.HTTP协议(超文本传输协议)2.H.

2020-12-01 21:14:05 412

原创 测试—数据库性能测试

文章目录一、数据库性能测试的目的及范围二、数据库的常用架构1.一主多从2.双击热备三、数据库分库分表设计方法1.拆分原因2.分库分表设计方案四、MySql数据库监控指标1.QPS2.TPS3.线程连接数4.最大连接数5.Query Cache6. Query Cache命中率7.锁定状态8.主从延时五、MySql慢查询工作原理及操作1.定义2.慢查询开启3.慢查询日志分析六、SQL的分析与调优方法七、MySQL索引概念八、MySQL的存储引擎一、数据库性能测试的目的及范围目的:发现数据库相关的性能瓶颈

2020-12-01 18:39:21 4536

原创 测试—数据驱动性能测试

文章目录前言一、什么是数据驱动二、数据驱动的使用场景1.复杂的业务流程2.根据业务场景分流3.符合条件的并发场景三、Jmeter中的数据驱动控制方式四、Jmeter数据驱动实战1.场景2.mysql中建立user表3.Jmeter使用2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、什么是数据驱动定义:从数据文件中

2020-11-30 10:33:03 458

原创 测试—测试方法

文章目录一、是否关注被测对象的逻辑结构(一)黑盒测试/手工1. 黑盒测试的主要设计方法:2. 黑盒测试优缺点3. 黑盒测试类型(二)白盒测试/单元测试1. 白盒测试的分析方法:2. 白盒测试优缺点(三)灰盒测试二、是否需要借助工具(一)手工测试(二)自动化测试一、是否关注被测对象的逻辑结构(一)黑盒测试/手工定义:把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确

2020-10-06 21:50:10 869

原创 测试—软件质量部分

文章目录一、软件质量定义(了解)二、软件质量管理体系(了解)1. ISO2. CMM(软件能力成熟度模型):特定针对软件行业的质量管理体系3. 6Sigma:不具体针对软件的质量管理体系三、软件质量模型(重点)1. 外部和内部质量1. 功能性2. 可靠性3. 易用性4. 效率5. 可维护性6. 可移植性2. 过程质量-内部质量-外部质量-使用质量一、软件质量定义(了解)与所确定的功能和性能需求的一致性。与所成文的开发标准的一致性。与所有专业开发的软件所期望的隐含特性的一致性。二、软件质量管理体

2020-10-06 21:23:22 203

原创 MySQL学习第7天—JDBC

文章目录一、JDBC二、第一个JDBC程序1. 创建测试数据库2. 导入数据库驱动3. JDBC程序4. 步骤总结1、加载驱动2、连接数据库 DriverManager3、获得执行SQL的对象 Statement4、获得返回的结果集5、释放连接5. 总结三、statement对象四、statement对象—将配置类放到文件中1. 创建db.properties文件2. 提取工具类3. 进行操作五、SQL注入六、JDBC操作事务推荐去看狂神的视频,比文章更详细:https://www.bilibili.co

2020-10-06 20:59:56 239

原创 MySQL学习第六天—索引

文章目录前言一、索引的作用二、优缺点1. 优点2. 缺点三、索引类型1. 主键索引 (Primary Key)2. 唯一索引 (Unique)3. 常规索引 (Index)4. 全文索引 (FullText)5. 添加多列索引6. 建立索引的时机四、测试索引1. 建表app_user:2. 批量插入数据:100w3. 索引效率测试五、索引准则六、索引的数据结构前言附上狂神链接:https://blog.csdn.net/qq_33369905/article/details/10591

2020-09-28 11:03:33 711

原创 MySQL学习第五天 事务

文章目录前言一、事务简介二、事务的ACID原则1. 原子性2. 一致性3. 隔离性4. 持久性三、事务的基本语法前言附上狂神链接:https://blog.csdn.net/qq_33369905/article/details/105911814一、事务简介如果要支持事务的话,则考虑InnoDB或BDB存储引擎(日常中一般都是选InnoDB较多)。)事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。事务用来管理 insert,update,delete

2020-09-28 10:13:29 54

原创 MySQL 学习第四天—函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

2020-09-28 09:09:33 168

原创 MySQL学习第三天—DML、DQL语言,重点SELECT

文章目录一、主键、外键1. 主键2. 外键二、DML语言1. INSERT 添加数据2. UPDATE 更新数据3. DELETE 删除数据4. 实例三、DQL语言1. 检索数据—SELECT2. 过滤数据—WHERE3. 连接查询—JOIN4. 排序和分页5. 子查询本人还是看的狂神的视频,附上链接:https://www.bilibili.com/video/BV1NJ411J79W?p=24一、主键、外键1. 主键主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多

2020-09-25 12:01:30 242

原创 MySQL学习第二天—操作数据库\数据表命令

文章目录一、登录数据库二、基本数据库操作命令1. 操作数据库1.1 创建数据库1.2 删除数据库1.3 查看数据库1.4 使用数据库1.5 其他操作2.操作数据表2.1 创建数据表2.2 数据类型2.3 数据类型的属性解释2.4 数据表的类型一、登录数据库mysql -h 127.0.0.1 -u 用户名 -pmysql -D 所选择的数据库名 -h 主机名 -u 用户名 -pmysql> exit # 退出 使用 “quit;” 或 “\q;” 一样的效果mysql> status;

2020-09-24 22:30:17 119

原创 MySQL学习第一天—安装MySQL

文章目录安装前言一、MySQL简介二、安装步骤安装前言 本人是根据狂神的视频来安装的,附上狂神的链接:https://blog.csdn.net/qq_33369905/article/details/105828923狂神视频里的步骤应该是没有错的,但本人大白菜一顿骚操作出现了一些问题,现在总结出来给和我一样的白菜看。提示:以下是本篇文章正文内容,下面案例可供参考一、MySQL简介MySQL是一个开源的关系型数据库管理系统(Relational Database Management.

2020-09-23 11:48:49 403 1

空空如也

空空如也

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

TA关注的人

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