自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多个字符串中查询最长公共字串

1. 代码部分如下:public static void main(String[] args) { String[] aa = new String[]{"abc", "abcd", "bcfgh", "abcdd"}; System.out.print(getCommonSubWord(aa));}public static String getCommonSubWord(String inArr[]) { if (inArr.length &

2020-07-28 00:08:38 601 1

原创 MySQL常用优化过程

(1)定位慢查询,我们可以查看慢查询次数,慢查询sql,慢查询时间,慢查询文件,前提是需要开启慢查询日志,set global slow_query_log=ON。(2)EXPLAIN执行计划,根据explain查看执行计划,从而可以知道索引的使用情况,如索引是否命中,使用了哪些索引。(3)Profilling的使用,Profilling可以查看查询过程中的资源消耗情况,如CPU使用情况,IO操作如何。前提是需要开启Profilling功能,set profilling=1(4)索引优化:.

2020-06-07 15:21:05 244

原创 MySQL查询语句的执行过程

(1)客户端发送一条查询给服务器;(2)服务器先会检查是否命中缓存,这是通过哈希查找实现的。如果恰好命中了缓存,MySQL还会检查一次用户权限,如果权限没有问题,就会返回结果给客户端,跳过后面的步骤;(3)服务器端进行SQL解析、预处理、再由优化器生成对应的执行计划。这期间是通过查询解析器、查询重写器、查询优化器、查询执行器来协同运行的。(4)MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;(5)将结果返回给客户端。...

2020-06-07 15:19:18 250

原创 MySQL的ACID

(1)原子性(Atomicity),一个事务要么全部提交成功,要么全部提交失败。如果是InnoDB,可以利用它的undo log来回滚日志,这样可以方便事务的回滚操作。 (2)一致性(Consistency),数据库总是从一个一致性状态到另外一个一致性状态。(3)隔离性(Isolotion),一个事务所做的修改在最终提交以前,对其他事务是不可见的。隔离性包括四种隔离级别,未提交读、已提交读、可重复读、串行化。(4)持久性(Durability),一旦事务提交成功,它对数据库的修改应该是永久..

2020-06-07 15:18:16 278

原创 MySQL 2PC和3PC(二阶段提交和三阶段提交)

(1)背景:我们都知道,数据库本地事务可以通过ACID特性解决原子性、一致性和隔离性问题。然而,现在都是分布式系统,我们又该如何保证分布式资源的一致性问题呢?即一个完整的业务流程涉及到分布在不同资源管理器资源的状态变更,我们需要保证资源状态要不都变,要不都不变。这时我们就需要引入一个第三者-协调者,(2)二阶段提交: 阶段一: 事务询问,协调者向所有参与者询问是否可以执行事务提交操作; 执行事务,各参与者执行事务操作,资源管理器此时会将undo日志和redo日志...

2020-06-07 15:17:15 963

原创 MySQL 常用索引结构分析

(1)哈希索引:只有Memory引擎支持,使用场景相对简单。它是使用哈希算法,将键值换成新的哈希值,检索时不需要B+那样从根节点逐级遍历,只需要哈希算法就能找到相应的位置。 优势:哈希索引适用于等值查询(如=、<、>、in),效率很高,前提是没有大量重复键值,否则会出现哈希冲突。 劣势:哈希索引不支持范围查询;不适用根据索引列进行排序;不支持部分索引列匹配查询。(2)B+树索引:用于InnoDB引擎,B+树是多路搜索树(即m叉树),它有两个重要的特性: ...

2020-06-07 15:14:52 180

原创 简述MySQL的事务隔离级别和MVCC

MySQL事务隔离级别 (1)未提交读(READ UNCOMMITTED):一个事务读到了另外一个未提交事务修改过的数据 (2)已提交读(READ COMMITTED):一个事务只能读取到另外一个已提交事务修改过的数据; (3)可重复读(REPEATED READ):首先一个事务只能读取另外一个事务已经提交修改过的数据,但是当第一次读过某条数据后,及时其他事务修改并提交该值,那么当前事务读取的仍然是第一次读取的值。这里补充一下幻读 (4)串行化(SER...

2020-06-04 17:39:00 144

原创 MySQL InnoDB 和 MyISAM

MyISAM引擎和InnoDB引擎的区别 (1)存储空间:MyISAM可以被压缩,存储空间比较小;InnoDB需要较多内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 (2)文件格式:MyISAM数据和索引是分开存储的,数据是.MYD格式,索引是.MYI格式;InnoDB是集中存储的,格式是.ibd。 (3)记录存储顺序:MyISAM按照记录插入顺序保存;InnoDB按照主键大小有序存储。 (4)外键: MyISAM不支持外键;...

2020-06-04 17:35:13 119

原创 Redis的两种持久化方式对比

RDB: 描述:快照存储,具体是将Redis某一时刻的内存数据保存到硬盘文件中,默认保存文件名是dump.rdb。Redis服务启动时,会重新加载dump。rdb中的和数据到内存中恢复数据。 开启方式: (1)save,save是同步的,服务器会阻塞save命令之后的其他客户端的请求; (2)bgsave,bgsave是异步的,客户端发出bgsave请求时,Redis服务器主进程会forks一个子进程来同步数据,此时forks子进程是同步的,完毕后保存...

2020-05-11 23:43:24 175

原创 Redis一致性

首先需要明确的是,Redis是不能保证强一致性的。原因有以下两点: (1)Redis集群是异步复制,为了保证性能,客户端请求写入master后,master先回复客户端,然后才将写操作复制给slave。同步期间如果master宕机,slave升为主的期间就会丢失部分数据。 (2)Redis集群可能出现网络分区,这种情况下,一个客户端和至少一个主节点A在内的少数示例所在的分区会被孤立。因为客户端可以继续写入A,但是其他分区由于无法与这个分区通信,就会选举slave ...

2020-05-11 17:45:07 872

原创 Redis常见数据丢失情况分析及解决方案

异步复制导致的数据丢失: 描述: 由于master到slave的数据同步是异步的,也就是说master有请求时,master先反馈给客户端,然后才会向slave同步数据。期间可能存在部分数据还没有同步到slave,master就宕机了,然后这部分数据就丢失了。 解决方案: 设置min-slaves-lag的值为n秒,首先至少需要1个slave,一旦slave复制数据和同步的延迟超过n秒,那么就认为master宕机后损失数据过多,然后master拒绝写请...

2020-05-11 17:41:49 2583

原创 Redis 缓存穿透 缓存击穿 缓存雪崩 相关描述及解决方案

缓存穿透 描述: key对应数据在缓存和数据库中都不存在,因此,针对不存在的key,首先从缓存中拿不到,接着会从数据库中获取,然而,数据库中也不存在,这样的key如果比较密集,就会压垮数据库。 解决方案: (1)布隆过滤器,布隆过滤器是一种数据结构,优点是高效、占用空间小,缺点是返回结果是概率而不是确切的。我们一般用它来判断某个数据是否存在。原理上说布隆过滤器是一个bit向量或者bit数组,长度为m,如果我们需要映射一个值到布隆过滤器中,首先需要根据n...

2020-05-10 17:01:23 175

原创 TCP SYN Flood(SYN洪水)

宏观描述: SYN洪水是一种典型的DoS(Denial of Service,拒绝服务)攻击。攻击效果是将服务器的TCP资源耗尽,从而停止响应正常的TCP连接请求。具体过程: 此过程是发生在TCP建立连接的三次握手过程中。假设A是客户端,B是服务器。首先A发送SYN消息给B建立请求,然后B反馈SYN-ACK消息,此刻连接处于半开状态。由于B不确定自己发送的SYN-ACK消息是否已送达或者A再次反馈的ACK消息是否丢在半路,所以会给这个半开连接预设一个超时时间,如果这期间...

2020-05-09 11:07:22 798

原创 TCP 三次握手 四次挥手 相关知识点

三次握手 开始阶段:假设A是客户端,B是服务器。最开始A和B都处于CLOSED(关闭)状态,A主动打开连接,B被动打开连接,B然后进入LISTEN(监听)状态。 第一次握手:A发送标志位SYN=1,初始化序号seq=x给B。A进入SYN-SENT(同步已发送)状态。 第二次握手:B发送标志位SYN=1,ACK=1,确认序号ack=x+1,seq=y给A。B进入SYN-RCVD(同步收到)状态。 第三次握手:A发送标志位ACK=1,确认序号ack=y+1,se...

2020-05-09 11:05:38 162

转载 spring boot整合kafka(springBoot默认自动配置和自定义手动配置)

spring boot自动配置方式整合spring boot具有许多自动化配置,对于kafka的自动化配置当然也包含在内,基于spring boot自动配置方式整合kafka,需要做以下步骤。1. 引入kafka的pom依赖包<!-- https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafk...

2019-10-22 13:16:10 17607 2

原创 软件测试之常用SQL语句(二)

1. 单表查询:表名:user_informationid name address 1 张三 山西临汾 2 李四 山西运城 3 王二 河南郑州 (1)查询id为2的用户信息:(这里的ui是user_information表的别名,*代表所有字段)select ui.* from user_information ui w...

2019-06-25 14:19:44 321

转载 软件测试之常用SQL语句

本文转载自https://blog.csdn.net/qq_15630913/article/details/79308943。作为一个软件测试工程师,我们在测试过程中往往需要对数据库数据进行操作,但是我们的操作大多以查询居多,有时会涉及到新增,修改,删除等操作,所以我们其实并不需要对数据库的操作有特别深入的了解,以下是我在工作过程中整理的比较常用的SQL语句。1、插入表数据:ins...

2019-03-28 23:02:28 1956

转载 软件测试之常用面试题

此文转载自在 https://blog.csdn.net/weixin_30363263/article/details/80110247,其基础上做了一些调整去重。一、你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。1、将问题提交到缺陷管理库里面进行备案。2、要获取判断的依据和标准: 根据需求说明书、产品说明、设计文档等,确认...

2019-03-26 17:54:59 508

原创 PowerMock详解

1. 与Mockito不同的是,PowerMock用于对静态、final、私有方法或类的mock。当然了,在实际开发中,最后是没有被允许用PowerMock,原因是需要mock的类自己调用的私有方法是不需要mock的,要的就是执行真正的逻辑。尽管不用,我觉得还是有必要记录一下这次艰难的心路历程。2. Maven配置如下:&lt;dependency&gt; &lt;groupId...

2019-03-06 17:58:53 1036

原创 软件测试中遇到的印象深刻的问题及反思

软件测试中遇到的比较印象深刻的问题:项目名称是某幼儿园报名网站,首先我介绍一下这个项目,这个项目是用来给某地区的家长抢报幼儿园名额而服务的,毕竟有的幼儿园人气比较火爆,因此会出现人多名额少的情况,从而比较注重测试环节,保证家长报名成功。为了提高性能,对一些常用的前端文件(js,css等文件)进行了cdn加速,从而保证用户能最快地进入报名页面。首先科普一下cdn加速,购买cdn服务后,你...

2019-02-25 21:30:11 10790

原创 java相关总结

1. throw,throws,try-catch的区别的执行顺序。try catch用于捕获异常,捕获异常之后,后面的语句正常执行;throw和throws都是往上层抛出异常,且后面的方法不会执行(当然,finally中的语句还是会执行滴),如果调用者没有try该异常,最后应该会被JVM捕获;另外,throw和throws的区别是throw用于方法体内抛出异常,调用throw的类不需要抛出或...

2019-01-17 11:43:38 132

原创 Mockito详解

1. Mockito:Mockito与JUint不同,并不是单元测试框架。它是用于生成模拟对象或者直接点说,就是“假对象”的工具。使用前需要在方法顶部加注解@RunWith(MockitoJUnitRunner.class),应该如下:@RunWith(MockitoJUnitRunner.class)public class ContractMicroServiceImplTest {...

2018-11-20 17:56:02 1293

原创 Java常见报错信息及解决方式

1.com.alibaba.fastjson.JSONException: syntax error, expect {, actual int, pos 1, json : 0com.alibaba.fastjson.JSONException: syntax error, expect {, actual int, pos 1, json : 0 at com.alibaba.fas...

2018-11-07 17:50:29 13681

原创 Idea相关操作以及相关问题

本文主要解决的问题如下:Idea导入lombok插件 Lombok报错 Git相关操作(创建,删除,合并,push,fetch) Maven相关操作(Build) Maven Build报错 断点不可用 搜狗输入法在idea中只能打出第一个字母 无法创建新的Java文件 Idea导包设置(导入内部类) Idea 统一设置所有项目的公共信息1. Idea导入lombok插件:...

2018-10-24 13:33:19 574

原创 软件测试面试集

1. 请简述软件测试的流程:需求分析(需求评审)--&gt;制订测试计划--&gt;设计和编写测试用例--&gt;开发和测试评审测试用例--&gt;实施测试(包含回归测试)--&gt;提交缺陷报告--&gt;生成测试总结和报告。2.简述软件测试的各个间断:单元测试:集中对用源代码实现的每一个程序单元进行测试,检查每个程序模块是否实现了规定的功能,保证其能正常工作,参与人员注意是开发人员...

2018-09-25 16:54:34 219

原创 Java线程的状态及切换

引言,前段时间面试了一波,这个问题常被问到,自己脑子里面的知识体系比较混乱,回答的不太好,废话不多说,直接来总结:一共有六种状态:分别是初始状态,就绪状态,运行中状态,阻塞状态,等待状态,超时状态,终止状态。初始(new):新创建的线程对象,此时还没有调用start()方法。就绪状态(ready):1. 有资格运行,但是程序还未执行到你。2.调用线程的start()方法;3.当前线程s...

2018-09-13 13:39:15 136

原创 java中transient和序列化

1、transient使用场景众所周知,一个对象如果实现了Serializable接口,那么这个对象就可以被序列化,总之只要这个类实现了Serializable接口,那么这个类的所有属性和方法都会自动序列化。然而在实际开发过程中,类中有的属性不需要序列化,如密码,银行卡号等敏感信息,为了安全起见,不希望在网络传输中被传输,如果在对应的变量前加上transient关键字,这个变量就不会被序列...

2018-08-16 10:56:02 284

原创 Eclipse相关操作及相关问题

1. 如在Eclipse开发过程中看到实体model存在@Slf4j注解的,这时会编译出错,需要在Eclipse中手动安装lombok.jar。我是Window系统,具体导入步骤如下:(1)下载lombok.jar (访问地址:https://projectlombok.org/download.html)(2)双击lombok.jar,然后会弹出一个安装的界面。(3)选择Eclips...

2018-08-10 16:42:54 505

原创 java中int和Integer的区别以及自动装箱和自动拆箱

1.Integer是int的包装类,int则是java的一种基本数据类型。2.Integer变量必须实例化后才能使用,int则不需要。3.Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。4.Integer的默认值为null,int的默认值是0。5.int等基本类型的变量存储在栈中。5.Integer和in...

2018-08-10 16:37:06 1381

原创 Java集合 Map List 相关问题

一、HashMap中如果hash冲突怎么办 hash值冲突是发生在put()时,从源码可以看出,hash值是通过hash(key.hashCode())来获取的,当put的元素越来越多时,难免或出现不同的key产生相同的hash值问题,也即是hash冲突,当拿到一个hash值,通过indexFor(hash,table.length)获取数组下标,先查询是否存在该hash值,若...

2018-08-08 15:56:13 231

转载 Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次

本文引用自https://www.cnblogs.com/twzheng/p/5923642.html&gt; 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现。1. 加号 “+”2. String contact() 方法3. StringUtils.join() 方法4. Stri...

2018-08-01 14:16:41 355

原创 MySQL安装相关问题

1. windows mysql安装完成后通过mysql -u root -p连接不成功,这是可以尝试进入mysql的bin目录,输入命令mysqld -install安装mysql服务。之后进入服务管理器查看mysql服务是否成功开启,如果成功开启就可以本地访问。2. mysql默认安装后是没有密码的,可以尝试修改密码,修改方式是:update mysql.user set passwor...

2018-07-30 11:23:30 110

原创 Linux上面安装和配置mysql服务

安装mysql检查是否安装mysql:rpm -qa |grep mysql删除已经安装的mysql:rpm -e mysql-libs-5.1.71-1.el6.x86_64报错:因为mysql有相关依赖,并不能直接删除rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64成功:使用--nodeps...

2018-07-09 09:04:09 1400

原创 中立云(UCloud)主机配置步骤

1. 登录中立云,点击云主机,点击更多--&gt;点击修改外网防火墙,默认是提供两个外网防火墙,分别是Web服务器推荐和非Web服务器推荐,而且都不能修改,所以如果想访问推荐服务器开放端口之外的其他端口(比如22端口),需要自己再添加新的外网防火墙,添加好之后再关联新的防火墙即可,如下图:2. 接着就可以通过XShell和XFTP连接服务器配置java环境了,因为是linu...

2018-06-29 13:29:56 1326

原创 京东云主机配置步骤

1. 登录京东云,点击控制台,再点击弹性计算-->云主机,如下图:2. 下一步是远程连接(也就是所谓的远程桌面),初次申请会发送一个默认的密码,如果忘记密码,就点击更多-->修改密码,稍后重启云主机即可生效,如下图:3. 点击远程连接,输入密码即可(当然也可以通过自己电脑自带的远程桌面连接操作),登入后才知道云主机系统是windows server2008,然后...

2018-06-29 10:52:46 6649 2

原创 JDK1.7和1.8的新特性

一. JDK 1.7的新特性:1.二级制变量的表示,支持将整数类型(所有整数int、short、long、byte)用二进制来表示,用0b开头,例如:byte a = (byte) 0b00100001;2. Switch语句支持String类型;3.增加Try-with-resource语句:该语句是一种声明了一种或多种资源的try语句。资源是指在程序用完了之...

2018-06-19 09:21:42 249

原创 Servlet和Filter的区别和联系

一.  概念方面:1.servlet是一种运行与服务器端的java应用程序,具有独立于平台和协议的特征,并且可以动态的生成web页面,它工作在客户端请求和服务端相应的中间层。2.filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。filter不像servlet,它能产生一个请求或者响应,他只是修改对某一资源的请求,或者修改从某一资源的响应...

2018-06-15 14:48:16 7588

原创 Hibernate懒加载(lazy加载)

    1.懒加载顾名思义就是延迟加载。即当两个及以上表使用Hibernate来管理级联关系时,一个表被加载到JVM内存中,而其他表会被暂存在数据库的缓存中,当需要使用相关表数据的时候再加载到JVM内存中。因此通过懒加载机制可以减少内存中不必要的开销,以提高程序的性能。    2.问题描述:当使用懒加载时,如果将session关闭,则断开了与数据库的连接,这时如果要访...

2018-06-12 10:00:07 777 1

原创 Hibernate的缓存机制

一. 为什么要用Hibernate缓存:   Hibernate是一个ORM框架,会经常访问物理数据库。因此为了降低应用程序对数据库的访问频次,从而提高了应用程序的运行性能。二. Hibernate缓存原理:    1.Hibernate的一级缓存是Session的缓存,Session内置的缓存是不能被卸载的,Session的缓存是事务范围的缓存,即对应一个数据...

2018-06-12 09:15:52 1475

原创 数据库的事务特征

1. 原子性:指事务执行单元是一个不可分割的单元,这些单元要么都执行,要么都不执行。2. 一致性:指无论执行了什么操作,都应该保证数据的完整性和业务逻辑的一致性。3. 隔离性:在事务执行过程中,多个执行单元间操作的数据都是其他单元没有操作或者操作结束后的数据,保证每一个单元操作的数据都有完整空间。4. 持久性:事务结束后,执行单元操纵的数据被保存在数据库中,这些数据的...

2018-06-11 11:54:49 162

空空如也

空空如也

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

TA关注的人

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