自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 进程与线程的区别

线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线

2020-10-09 23:54:59 251

原创 类加载机制

类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)。加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后

2020-10-08 19:13:17 158

原创 死锁概念以及产生的原因

一、概念所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。二、死锁产生的四个必要条件1.互斥性:线程对资源的占有是排他性的,一个资源只能被一个线程占有,直到释放。2.请求和保持条件:一个线程对请求被占有资源发生阻塞时,对已经获得的资源不释放。3.不剥夺:一个线程在释放资源之前,其他的线程无法剥夺占用。4.循环等待:发生死锁时,线程进入死循环,永久阻塞。三、避免死锁的方法1.破坏“请求和保持”条件    资源一次性分配:一次性分配所有资源,这

2020-10-08 19:10:00 794

原创 DNS解析过程

在网络层(也就是IP协议层)有一个需要我们注意的点——DNS,有些初学者在学有小成后会想要搭建一个自己的网站,但是我们会发现,在租购服务器后,我们仅仅能够看到服务器在网络中的ip地址,我们需要购买相应的域名,将域名与ip地址绑定,也就是将域名和IP地址相互映射,这就是DNS的工作范畴。让我们看一下我们访问网址时,电脑都做了什么:1.浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来设置。2.如果浏览器缓存中没有,浏览器会检查操作系统

2020-10-08 18:58:27 148

原创 栈和队列有什么区别、以及他们的共同点

栈(Stack)和队列(Queue)是两种操作受限的线性表。栈与队列的相同点:1.都是线性结构。2.插入操作都是限定在表尾进行。3.都可以通过顺序结构和链式结构实现。、4.插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。5.多链栈和多链队列的管理模式可以相同。栈与队列的不同点:1.删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。2.应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列

2020-10-04 13:31:53 11525

原创 谈谈mysql和redis的区别

mysql和redis都是数据库,这两者有什么区别呢?1.类型上从类型上来说,mysql是关系型数据库,redis是缓存数据库。2.作用上mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢。redis用于存储使用较为频繁的数据到缓存中,读取速度快,能够大大的提高运行效率,但是保存时间有限。3.需求上mysql和redis因为需求的不同,一般都是配合使用。描述的具体一点:mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复频繁

2020-09-24 23:52:26 810

原创 sleep、yield、wait、join

sleepsleep 方法是属于 Thread 类中的,sleep 过程中线程不会释放锁,只会阻塞线程,让出cpu给其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态,可中断,sleep 给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会.yield和 sleep 一样都是 Thread 类的方法,都是暂停当前正在执行的线程对象,不会释放资源锁,和 sleep 不同的是 yield方法并不会让线程进入阻塞状态,而是让线程重回就绪状态,它只需要等待重新获取

2020-07-27 23:09:16 128

原创 堆和栈的区别

1.栈内存存储的是局部变量而堆内存存储的是实体;2.栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;3.栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。...

2020-07-19 16:19:51 127

原创 重写、重载、和多态的概念和区别

2020-07-19 10:39:31 822

原创 http中的状态码

2XX: 成功2XX系列响应代码表明操作成功了。200(“OK”)一般来说,这是客户端希望看到的响应代码。它表示服务器成功执行了客户端所请求的动作,并且在2XX系列里没有其他更适合的响应代码了。实体主体:对于GET请求,服务器应返回客户端所请求资源的一个表示。对于其他请求,服务器应返回当前所选资源的一个表示,或者刚刚执行的动作的一个描述。201(“Created”)当服务器依照客户端的请求创建了一个新资源时,发送此响应代码。响应报头:Location报头应包含指向新创建资源的规范URI

2020-07-02 21:13:20 154

原创 TCP中的拥塞控制和流量控制

TCP为了做到发送的成功率,需要进行发送量的控制,发送量由接受能力和网络能力共同控制。流量控制:发送端根据接收端端的接受能力做发送量控制。1.如何知道接收端的接受能力:TCP Header中的窗口字段携带接收端的接受能力。是实时更新的2.如何对进行发送量的控制:通过滑动窗口的调整,滑动窗口是用左右两个下标在发送缓冲区标注的一块区域。拥塞控制发送端根据路途的通畅情况做控制。TCP连接内部有一个拥塞窗口属性。表示根据网络情况,可发送的数据量的大小。1.如何评估网络的拥堵情况根据超

2020-06-22 11:26:01 213

原创 数据库左连接、右连接

左连接:以左边表的数据为基准,左边表的记录都会被检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来。若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。右连接:右连接是只要右边表中有记录,数据就能检索出来。是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。...

2020-06-22 09:41:17 2130 1

原创 OSI七层模型和TCP/IP五层模型

1.OSI七层模型的划分OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI的服务定义详细说明了各层所提供的服务。某一层的服务就是该层及其下各层的一种能力,它通过接口提供给更高一层。各层所提供的服务与这些服务是怎么实现的无关。2.各层功能及含义<1> 应用层OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。

2020-06-21 17:35:47 494

原创 Comparable和Comparator

前言Java当中如何比较自定义类型的大小呢?在Java中自定义类型之间不可以通过大于、小于等进行比较。一般有3种对象的比较方式:Comparable , Comparator , 和equals().以下有前两种方法的使用。Comparable接口class Person implements Comparable<Person>{ String name; int id; int age; public Person(String name, int

2020-06-14 15:39:24 207

原创 数据库中的事务

为什么使用事务drop table if exists accout;create table accout(id int primary key auto_increment,name varchar(20) comment '账户名称',money decimal(11,2) comment '金额');insert into accout(name, money) values('阿里巴巴', 5000),('四十大盗', 1000);比如说,四十大盗把从阿里巴巴的账户上偷盗了2

2020-06-12 16:48:04 162

原创 数据库中的索引、用于提高查询速度

作用:数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。索引所起的作用类似书籍目录,可用于快速定位、检索数据。对于提高数据库的性能有很大的帮助。使用场景:要考虑对数据库表的某列或某几列创建索引,需要考虑以下几点:1.数据量较大,且经常对这些列进行条件查询。2.该数据库表的插入操作,及对这些列的修改操作频率较低。3.索引会占用额外的磁盘空间。满足以上条件时,考虑对表中的这些字段创建索引,以提高查询效率。反之,如果非条件查询列,或经常做插入、修改操作,或磁盘空间不足

2020-06-12 16:38:32 667

原创 Object类的原生方法有哪些

1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法。2.getClass方法final方法,获得运行时类型。3.toString方法该方法用得比较多,一般子类都有覆盖。4.finalize方法该方法用于释放资源。因为无法确定该方法什么

2020-06-08 23:43:06 577

原创 TCP与UDP的应用场景

区别面向连接VS无连接TCP建立一个连接需要3次握手IP数据包,断开连接需要4次握手。另外断开连接时发起方可能进入TIME_WAIT状态长达数分钟(视系统设置,windows一般为120秒),在此状态下连接(端口)无法被释放。UDP不需要建立连接,可以直接发起。可靠VS不可靠TCP利用握手、ACK和重传机制,udp没有。1,校验和(校验数据是否损坏);2,定时器(分组丢失则重传);3,序列号(用于检测丢失的分组和重复的分组);4,确认应答ACK(接收方告知发送方正确接收分组以及期望的下一个

2020-06-05 16:22:19 1471

原创 如何理解继承、封装、多态?

三大特性是:封装,继承,多态所谓封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。所谓继承:是指可以让某个类型的对象获得另一个类型的对象的属

2020-06-04 17:28:12 908

原创 Java异常机制都用到了哪些关键字

前言:在Java程序中,所有异常对象的根基类是Throwable,Throwable从Object直接继承而来(这是Java系统所强制要求的)。Throwable有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。Error(错误)是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。应用程序不应该捕捉它。Exception(异常)

2020-06-04 15:08:29 292

原创 软件测试的流程

这是个常见面试题软件测试流程:1.需求分析2.制定测试计划、方案3.设计测试用例4.系统测试(执行用例)5.缺陷管理6.回归测试7.测试评估8.测试报告9.验收测试

2020-05-26 09:35:37 120

原创 HashMap是线程安全的吗?

HashMap是线程安全的吗?答,不是。哈希碰撞或扩容导致。如果有两个线程A和B,都进行插入数据,刚好这两条不同的数据经过哈希计算后得到的哈希码是一样的(哈希码一样意味着插入的位置是一样的),且该位置还没有其他的数据。假设一种情况,线程A通过if判断,该位置没有哈希冲突,进入了if语句,还没有进行数据插入,这时候CPU就把资源让给了线程B,线程A停在了if语句里面,线程B判断该位置没有哈希冲突(线程A的数据还没插入),也进入了if语句,线程B执行完后,轮到线程A执行,现在线程A直接在该位置插入而不用再判

2020-05-25 11:58:57 700

原创 HashSet和HashMap的区别

HashSet:HashSet实现了Set接口,它不允许集合中出现重复元素。当我们提到HashSet时,第一件事就是在将对象存储在HashSet之前,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等,确保集合中没有储存相同的对象。如果不重写上述两个方法,那么将使用下面方法默认实现:public boolean add(Object obj)此用在Set添加元素时,如果元素值重复时返回 “false”,如果添加成功则返回"true"HashMap:HashM

2020-05-25 11:56:19 163

原创 异常处理流程

异常处理流程程序先执行 try 中的代码如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.如果找到匹配的异常类型, 就会执行 catch 中的代码如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者.无论是否找到匹配的异常类型, fifinally 中的代码都会被执行到(在该方法结束之前执行).如果上层调用者也没有处理的了异常, 就继续向上传递.一直到 main 方法也没有合适的代码处理异常, 就会交给 JVM 来进行处理, 此时

2020-05-25 11:52:39 329

原创 运行时绑定,动多态

.运行时绑定 -》动多态概念:编译时父类方法 运行时却是子类方法(重写的)条件:1.先要向上转型 即父类的引用引用子类的对象2.父类和子类都有同名的覆盖方法,即重写,就会发生运行时绑定3.构造方法也可发生动态绑定编译时产生方法表 运行时方法表中子类的方法将父类的覆盖 即改变了地址,所以访问时访问的是子类方法。...

2020-05-25 11:47:31 203

原创 重载与重写的区别

重写/覆盖/覆写Override(在继承当中,子类重写父类已有的方法)函数名相同参数列表相同返回值相同特点:1.静态的方法和private不能被重写2.子类的访问修饰限定符一定要大于等于父类的访问修饰限定符3. 父类的方法不能为私有重载:(在同一类当中)方法名相同参数不同(类型和个数)返回值不做要求...

2020-05-25 11:44:48 123

原创 MYSQL中的三大范式及JDBC

1. 数据库设计的三大范式(减少数据存储的冗余度的)1.表中的每个字段都是原子的(一个字段不能即保存姓名又保存地址)2.有主键,每个字段应该是和完整的主键有关系(点赞关系表中,不应该保存文章标题)3.有主键,每个字段应该是和主键呈现直接关系,而不是间接关系2.JDBC 的套路注册 Driver(程序中只需要进行一次)Class.forName(“com.mysql.jdbc.Driver”);获取 ConnectionConnection con = DriverManager

2020-05-23 15:50:05 255

原创 求出数组中出现次数超过一半的数字

在刷题时经常刷到这道题,虽然比较简单,但是心思也要很巧妙才能写出最优解。考察思维敏捷能力。题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2思路:从第一个数开始记录,遇到和自己相同的数字,则次数加一,遇到不相同的数字则count-1,当count 减到0时,则num换成下一个数字,循环最后,num里存的必然是出现次数超过一半的数字。

2020-05-22 15:08:10 288

原创 servlet与tomcat的关系

前言在web项目访问中,多数需要http协议,也就是基于请求和响应,比如你在百度输入一行内容搜索,那么百度服务器如何处理这个请求呢,他需要创建servlet来处理,servlet其实就是java程序,只是在服务器端的java程序,servlet通过配置文件拦截你的请求,并进行相应处理,然后展示给你相应界面,那么servlet如何创建? 这时候tomcat用到了,它就是帮助你创建servlet的东西,所以也称web容器,没有它,没法运行web项目。相对应的web容器有很多,比如Tomcat、Jboss

2020-05-19 10:20:42 796

原创 HTTP和HTTPS的区别

HTTP和HTTPS的区别1、https协议需要到CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(原来网易官网是http,而网易邮箱是https。)2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。4、http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身

2020-05-19 09:26:51 386

原创 Get和Post的区别

在浏览器中非Ajax的HTTP请求,一般我们在浏览器输入一个网址访问网站都是GET请求,浏览器用GET请求来获取一个html页面/图片/css/js等资源。在FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。用POST来提交一个表单,并得到一个结果的网页。HTTP定义了与服务器交互的不同方法,最常用的方法有四种Put,Delete、post,get,即增删改查。1.Get,它用于获取信息,它只是获取、查询数据,也就是说它不会修改服务器上的数据,从这

2020-05-18 14:59:48 261

原创 浏览器中输入URL之后发生了什么

假如在浏览器中访问百度,即输入URL为“www.baidu.com”,会发生什么?1.比较笼统的来说:1.浏览器解析我们输入的URL信息,得到各部分信息,默认的请求方法是GET方法2.根据得到的信息与百度服务器进行TCP连接3.浏览器进行 Request 的拼接过程String request = "GET / HTTP/1.1\r\n Host: www.baidu.com\r\n Content-Length: 0\r\n \r\n"4.浏览器通过TCP

2020-05-16 11:31:15 291

原创 cookie和session的区别

前言:HTTP是一种无状态的协议,为了分辨链接是谁发起的,就需要我们自己去解决这个问题。不然有些情况下即使是同一个网站我们每打开一个页面也都要登录一下。而Session和Cookie就是为解决这个问题而提出来的两个机制。CookieCookie的主要内容包括:名字,值,过期时间,路径和域。通俗讲,Cookie是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤。另外一个更准确的说法是:Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客

2020-05-13 12:56:34 159

原创 TCP的三次握手及四次挥手

TCP三次握手:大家都知道,TCP与UDP不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接,建立TCP连接的标准过程是这样的:首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgment

2020-05-12 11:22:47 170

原创 ArrayList和LinkedList区别

ArrayList和LinkedList区别是什么?这是一个非常常见的面试题。区别如下:数据结构实现:ArrayList 底层是动态数组的数据结构实现,而 LinkedList 是双向链表的数据结构实现。随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高。ArrayList为数组实现,数组在存储数据时是按顺序存储的,存储数据的内存也是连续的,所以寻址读取数据比较容易,直接通过下标访问数据,时间复杂度为O(1)。LinkedList 是线性的数据存储方式,存

2020-05-11 12:33:44 157

原创 synflood攻击 SYN洪水攻击(攻击TCP,不会攻击UDP,因为UDP无连接)

为什么synflood攻击不会攻击UDP连接,而攻击TCP连接呢?问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般...

2020-05-08 10:03:08 494

原创 TCP的可靠性体现在哪些方面

TCP是面向连接,可靠,面向字节流的传输协议,那它是怎么来保证可靠性的呢?1.确认应答机制:发送报文Segment中包括:SN:发送数据的第一个字节的序列ASN:是希望对方发送的下一个字节的序列。这样就能知道对方哪些数据收到了,哪些没收到。2.超时重传机制:如果超时没有收到对方的ACK,则会触发重传。如果接收方重复接受,根据SN辨识出后,直接丢弃。3.校验和:保证不会收...

2020-04-29 13:11:22 1019

原创 JAVA中的设计模式单例模式,你了解哪些设计模式

怎么是单例模式呢?一个类就只能创建一个单一的实例,不允许构建出多个对象出来。某个类在整个进程运行的过程中,只允许有一个对象。实现单例模式的第一种方式:饿汉模式一开始就初始化public class 单例模式之饿汉 { // 一开始初始化,饿的不行了 private static 单例模式之饿汉 instance = new 单例模式之饿汉(); private ...

2020-04-25 21:08:38 121

原创 关于线程安全的三个知识点,原子性,内存可见性,代码重排序

什么是线程安全:就是写的代码百分百返回正确的结果。在引发线程不安全的场景中,主要就是三个因素的破坏导致的:1.原子性2.内存可见性3.代码重排序一:原子性原子性怎么解决:加锁二:内存可见性内存可见性解决:三:代码重排序问题单线程情况下,重排序不影响结果多线程情况下,有概率会影响结果代码重排序解决:...

2020-04-21 11:25:58 142

原创 hashCode和equals方法有什么区别,使用时要注意什么

hashCode是什么:1:Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。2:String类的hashCode.根据String类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串所在的堆空间相同,返回的哈希码也相同。3:Integer类,返回的哈希码就是Integer对象里所包含的那个整数的数值,例如Int...

2020-03-29 19:08:47 193

空空如也

空空如也

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

TA关注的人

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