自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 内存泄露是什么?什么原因造成?如何避免?内存泄露和内存溢出???

内存泄露是什么?内存泄漏就是存在一些不会再被使用确没有被回收的对象,什么原因造成?长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏,尽管短生命周期对象已经不再需要,但是因为长生命周期持有它的引用而导致不能被回收,这就是 Java 中内存泄漏的发生场景。如何避免?尽量避免静态变量;大量字符串使用 StringBuffer 或者 StringBuilder,避免String不要在循环中创建对象不用的对象,可以手动设置为 null。内存泄露和内存溢出???内存溢出:**无法为对

2020-08-18 17:22:41 257

原创 JVM的组成??

类加载器 把.class文件加载进内存中执行引擎 运行本地接口 融合不同的编程语言为 Java 所用运行数据区

2020-08-18 16:07:58 108

原创 volatile关键字原理??? volatile解决指令重排和内存可见性的原理?? synchronized 关键字和 volatile 关键字的区别??

volatile关键字作用???volatile解决指令重排和内存可见性的原理??1、内存可见性,修饰的变量发生改变之后对所有线程立即可见通过插入内存屏障来保证的。2、 禁止指令重排序通过上面Java内存模型的概述,我们会注意到这么一个问题,每个线程在获取锁之后会在自己的工作内存来操作共享变量,操作完成之后将工作内存中的副本回写到主内存,并且在其它线程从主内存将变量同步回自己的工作内存之前,共享变量的改变对其是不可见的。即其他线程的本地内存中的变量已经是过时的,并不是更新后的值。synchron

2020-08-16 20:55:16 154

原创 synchronized作用是什么? synchronized的底层原理????synchronized是怎样保证线程安全的???

synchronized(关键字)的底层原理?synchronized 关键字底层原理属于 JVM 层面。① synchronized 修饰代码块的情况synchronized 同步语句块的实现使⽤的是 monitorenter 和 monitorexit 指令,其中 monitorenter指令指向同步代码块的开始位置,monitorexit 指令则指向同步代码块的结束位置。当执⾏monitorenter 指令时,线程试图获取锁也就是获取monitor的持有权。(monitor对象存在于每个Jav

2020-08-16 17:02:55 413

原创 内连接、外连接、左右外连接、左右连接??

对多张数据表的数据查询,通过连接运算符可以实现多个表查询**内连接NNER JOIN:**两张表都有的才能显示出来左连接(左外连接)LEFT JOIN: 左连接是左边表的所有数据都有显示出来,右边的表数据只显示共同有的那部分,没有对应的部分只能补空null显示.**右连接(右外连接)RIGHT JOIN:**右连接,右边表的所有数据都会显示出来,左边的只会出现共同的那部分,其他的空。...

2020-08-15 11:34:11 103

原创 数据库在什么时候使用索引??应该给哪些列建索引,哪些不建???索引什么时候失效、查询不走索引?

数据库在什么时候使用索引??什么时候【要】创建索引(1)表经常进行 SELECT 操作(2)表很大(记录超多),记录内容分布范围很广(3)**列名经**常在 WHERE 子句或连接条件中出现什么时候【不要】创建索引(1)表经常进行 INSERT/UPDATE/DELETE 操作(2)表很小(记录超少)(3)列名不经常作为连接条件或出现在 WHERE 子句中应该给哪些列建索引,哪些不建???在最频繁使用的、用以缩小查询范围的字段上建立索引;在频繁使用的、需要排序的字段上建立

2020-08-15 11:01:22 867

原创 前缀索引??

前缀索引??优化索引大小的解决方案:当索引是很长的字符序列时,这个索引将会很占内存,而且会很慢,这时候就会用到前缀索引了。就是取索引的前面几个字母作为索引,但是要降低索引的重复率,索引我们还必须要判断前缀索引的重复率。对于前缀长度的选取需要根据索引选择性来确定。索引选择性就是不重复的个数与总个数的比值。索引优化:联合索引前缀索引覆盖索引...

2020-08-15 10:33:13 39

原创 复合索引 /多列索引 /联合索引 /组合索引?????

复合索引 /多列索引 /联合索引 /组合索引,一个意思,不同叫法。含有多个列字段的索引联合索引也是一棵B+树,不同的是联合索引的键值数量不是1,而是大于等于2.例如: 创建数据库表 CREATE TABLE `test` ('aaa' varchar(16) NOT NULL default '', 'bbb' varchar(16) NOT NULL default '', 'ccc' int(11) UNSIGNED NOT NULL default 0, KEY `sindex` (`aaa

2020-08-15 08:57:29 1773

原创 事务的ACDI特性???

原⼦性(Atomicity): 事务是最⼩的执⾏单位,不允许分割。事务的原⼦性确保动作要么全部完成,要么完全不起作⽤;⼀致性(Consistency): 执⾏事务前后,数据保持⼀致,多个事务对同⼀个数据读取的结果是相同的;比如A 向 B 转账,不可能 A 扣了钱,B 却没收到。隔离性(Isolation): 并发访问数据库时,⼀个⽤户的事务不被其他事务所⼲扰,各并发事务之间数据库是独⽴的;比如 A 正在从一张银行卡中取钱,在 A 取钱的过程结束前,B 不能向这张卡转账。持久性(Durability):

2020-08-14 22:51:47 244

原创 InnoDB与Myisam的区别???数据库存储引擎????

1、MyISAM不支持事务,而Innodb支持事务。2、MyISAM 最小的锁粒度是表级锁,InnoDB 最小的锁粒度是行级锁。3、外键支持:mysiam表不支持外键,而InnoDB支持。4、count运算:myisam用一个变量保存了整个表的行数,速度很快,可以直接调取变量;而Innodb没有。执行 select count(*) from table 时需要全表扫描。5、是否⽀持MVCC :仅 InnoDB ⽀持。【【应对⾼并发事务, MVCC⽐单纯的加锁更⾼效;MVCC只在READ COM

2020-08-12 22:52:51 96 1

原创 进程中的死锁???

死锁?由于系统中存在一些不可剥夺资源,而当两个或两个以上进程占有自身资源,并请求对方资源时,会导致每个进程都无法向前推进,这就是死锁。产生死锁的根本原因就是资源有限且进程间推进顺序不当死锁产生的条件?1、互斥: 一个资源一次只能被一个进程所使用2、不剥夺: 一个资源仅能被占有它的进程所释放,而不能被别的进程强制剥夺。3、请求与保持: 已经得到资源的进程可以再次申请新的资源4、循环等待: 存在进程–资源的环形链,每个进程都在等待相邻进程正在占用的资源。如何避免死锁?银行家算法【在动态分配资源

2020-08-12 11:32:38 128

原创 进程调度算法有几种???

为了确定⾸先执⾏哪个进程以及最后执⾏哪个进程以实现最⼤ CPU 利⽤率先来先服务、短进程优先、优先权调度算法、时间片轮转调度算法、多级反馈队列调度算法1、先来先服务(FCFS,First-Come-First-Served)按照进程进入就绪队列的先后次序来选择进程。2、短进程优先(SPF,Shortest Process Next)从就绪队列中选出一个估计运行时间最短的进程,分配资源。3、优先权调度算法(Priority)按照进程的优先权大小来调度。4、时间片轮转调度算法(RR,Round-

2020-08-12 09:45:15 857

原创 进程的通信方式?效率最高的通信方式是什么?????

功能和

2020-08-12 09:19:03 4701 1

原创 进程、线程???区别????关系???

进程:进程是系统进行资源分配和调度的一个独立单位。线程:线程是进程的一个实体,是 CPU 调度和分配的基本单位,它是比进程更小的能独立运行的基本单位。线程自己不拥有任何系统资源,但是它可以访问其隶属进程的全部资源。线程是进程的一个实体,一个进程至少有一个线程区别:1、进程是资源分配最小单位,线程是程序执行的最小单位;2、进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间。而线程没有,线程是进程的一个实体,一个进程至少有一个线程,同一个进程的所有线程,共享所属进程的资源。3、

2020-08-11 22:51:29 85

原创 从一个 URL 到获取页面的过程?在浏览器中输入 URL 地址到显示主页的过程?打开⼀个⽹⻚,整个过程会使⽤哪些协议?

答:总共分6步!!1、根据域名查询域名的IP地址,DNS解析。浏览器查询 DNS,获取域名对应的 IP 地址:具体过程包括浏览器搜索自身的 DNS 缓存、搜索操作系统的 DNS 缓存、读取本地的 Host 文件和向本地 DNS 服务器进行查询等。2、TCP连接浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立连接,发起三次握手;3、发送HTTP请求TCP 连接建立起来后,浏览器向服务器发送 HTTP 请求;4、服务器处理请求并返回HTTP报文服务器接收到这个请求,并根据路径参数映射

2020-08-11 19:37:09 259

原创 HTTP请求有哪些?get和post的差别?

本质区别:GET 只是一次 http 请求,POST 先发请求头再发请求体,实际上是两次请求;1、GET 一般用来从服务器上获取资源,POST 一般用来更新服务器上的资源;2、GET 是幂等的,即读取同一个资源,总是得到相同的数据,而 POST 不是幂等的,因为每次请求对资源的改变并不是相同的;进一步地,GET 不会改变服务器上的资源,而 POST 会对服务器资源进行改变;3、GET 请求的数据会附在 URL 之后,即将请求数据放置在 HTTP报文的请求头中【以 ? 分割 URL 和传输

2020-08-11 16:14:42 153

原创 https 加密的过程?浏览器使用Https的URL访问服务器,建立SSL连接?

浏览器使用 Https 的 URL 访问服务器,建立 SSL 连接接,服务器接收到 SSL 连接后:1、发送非对称加密的公钥A给浏览器2、浏览器(SSL/TLS)解析证书(无效会弹出警告)3、生成随机值(这个相当于传送数据的密钥),作为对称加密的密钥B。4、浏览器使用服务器返回的公钥A,对自己生成的对称加密密钥B进行加密,得到密钥C。5、浏览器将密钥C发送给服务器6、服务器使用自己的非对称加密私钥 D 对接受的密钥 C 进行解密,得到对称加密密钥B。【浏览器和服务器之间使用密钥 B 作为对称加

2020-08-11 15:13:07 661 1

原创 HTTP1.0、1.1、2.0之间的区别??keep-alive???

HTTP1.1与1.0之间的区别:1、HTTP1.1默认开启长连接,在一个TCP连接上可以传送多个HTTP请求和响应。而1.0不支持长连接。客户端和服务器每进行一次HTTP操作,就建立一次连接。2、缓存处理:在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存

2020-08-11 11:16:41 570

原创 TCP 和 UDP 的区别?

TCP、UDP协议的区别TCP提供可靠的、面向连接的运输服务。在传输数据之前必须三次握手建立连接,数据传输结束之后,4次挥手释放连接,而且在数据传递时,又有超时重传、滑动窗口、拥塞控制等机制保证传送数据的可靠性。(传输前、传输中、传输后)TCP经常用于**对网络通信质量有很高要求的地方**,如文件传输,邮件发送,远程登录等场景。SMTP、TELNET、HTTP、FTPUDP在传送数据之前不需要建立连接,目的主机收到UDP报文后,不需要给出确认。UDP不提供可靠交付,**一般用于即时通信等通信速度

2020-08-11 10:22:49 63

原创 TCP协议如何保证可靠传输??

1、拥塞控制2、流量控制3、超时重发:当TCP发出一个段之后,启动一个计时器,等待目标端进行确认收到这个报文,如果超出时间没有及时确认,重发这个报文段4、ARQ协议:⾃动重传请求(Automatic Repeat-reQuest,ARQ)停止等待 ARQ 协议:每发完一个分组就停止发送,等待对方确认(回复 ACK)。直到收到确认后再发下一个分组;[[如果过了一段时间(超时时间后) ,还是没有收到 ACK 确认,说明没有发送成功,需要重新发送,在停止等待协议中,若接收方收到重复分组,就丢弃该分

2020-08-11 10:07:36 86

原创 流量控制和拥塞控制是怎样实现的?

流量控制:拥塞控制:滑动窗口作用:

2020-08-11 09:20:45 868

原创 HTTP与HTTPS的区别?及相关知识

1、HTTPS协议需要到 CA(证书颁发机构) 申请证书,一般免费证书很少,需要交费。2、连接端口不同,HTTP:80,HTTPS:443(因为HTTP和HTTPS使用的是不同的连接方式,用的端口不同)3、资源消耗:HTTP是超文本传输协议,运行在TCP之上,所传输的内容都是明文,HTTPS则是具有安全性的ssl加密传输协议,运行在SSL/TLS(运行TCP之上)之上,内容加密,需要消耗更多的CPU和内存资源。4、安全性:HTTP连接简单,是无状态的;HTTPS协议是由SSL+HTTP协议

2020-08-10 21:52:39 57

原创 TCP四次挥手相关知识

FIN:请求关闭报文MSL:最长报文段寿命举个栗子:男生和女生分手第一次挥手:女 ->男,我要和你分手第二次挥手:男 ->女,知道了,只要男的不放弃,还会有联系第三次挥手:男 -> 女,扛不住了,我也要和你分手第四次挥手:女 -> 男 ,知道了。最终真分手嘞为什么要四次挥手?四次挥手:TCP连接是全双工的,每个方向必须单独关闭;释放连接之前,双方都处于已建立连接状态。第一次挥手:客户端主动关闭方发送请求释放连接报文(FIN=1)(序号seq=u,前面已传.

2020-08-10 20:25:18 56

原创 为什么是三次握手而不是二次握手或者四次握手呢?

只进行两次握手会出现什么问题?如果只进行两次握手就可以建立连接的话,比如,客户端发送的某一个连接报文段并没有丢失,而是长时间滞留在某个网络节点,以导致延误到连接释放以后的某个时间段才到达服务器端。服务器端误以为这是客户端发出的又一次新的连接请求。于是就向客户端发出确认报文,同意建立连接,若只有两次握手,此时新的连接已经建立了。服务器端会一直等待客户端发来数据,服务器的许多资源会被浪费。如果采用了三次握手,由于客户端并没有发送新的连接请求,服务器端接收到的只是一个失效的报文段,所以客户端并不会理踩服务器端

2020-08-10 16:40:54 447

原创 TCP三次握手

TCP三次握手几个概念:TCP建立连接的过程叫做握手TCP:提供面向对象的,可靠的数据传输服务SYN:请求建立连接(SYN=1表示这是个连接请求或连接接受报文,不携带数据。)ACK:确认收到为什么要进行三次握手?三次握手是为了建立可靠的通信信道,双方都确认自己和对方的发送和接受都是正常的。第一次握手:客户端什么都不能确认,服务器端确认对方发送正常,自己接受正常第二次握手:客户端确认自己发送、接受正常,对方发送、接受正常。服务器端确认对方发送正常,自己接受正常第三次握手:客户端确认自己发

2020-08-10 16:04:15 81

空空如也

空空如也

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

TA关注的人

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