- 博客(28)
- 资源 (46)
- 收藏
- 关注
原创 JVM内存模型
JVM内存模型 JVM内存模型分为两大块:线程私有的、线程共享的 线程私有的:程序计数器、虚拟机栈、本地方法栈 线程共享的:方法区、堆(主要调优调的就是这个) 线程私有的 程序计数器 每条线程都有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,保证每个线程切换后能恢复到正确的执行位置,存储当前线程正在执行的Java方法的JVM指令地址,即字节码的行号。如果正在执行Native方法,则这个计数器为空。该内存区域是唯一一个在Java虚拟机规范中没有规定任何OOM情况的内存区域 java虚拟机栈 是
2020-05-19 10:43:59 176
原创 可达性分析算法
可达性分析算法 原理 通过一系列“GC Roots”对象作为起点进行搜索,如果在“GC Roots”和一个对象之间没有可达路径,则称该对象是不可达的。不可达对象不一定会成为可回收对象。 不可达对象变为可回收对象至少要经过两次标记过程。两次标记后仍然是可回收对象,则将面临回收 两次标记: 第一次标记为GC Roots的标记过程 标记完后,会判断该对象有没有必要执行finalize()方法(重写了该方法),如果执行,该对象会被放置在F-Queue队列中 第二次标记是对F-Queue队列中的对象进行小规模的标记,
2020-05-19 10:37:27 1043
原创 HTTP报文
1. HTTP请求报文 HTTP请求报文由四部分组成:请求行、请求头部、空行、请求数据 请求行 由请求方法、URL、协议版本三部分组成,之间用空格隔开 例如:Get 103.40.29.80/ HTTP1.1 请求头部 客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说 Content-Length必须出现 常见的请求头部: Content-Type:post提交时使用,表示提交的内容类型 Content-Length:提
2020-05-14 21:41:40 197
原创 HTTP各个版本
http1.0版本 任何格式的内容都可以发送,包括图像、视频、二进制文件等 除了GET命令,还添加了PUT命令和Head命令 是短连接的,一次请求结束,连接会关闭,使用Connection : Keep-Alive 开启长连接 http1.1版本 目前主流的http版本 引入了长连接,一次请求结束,连接不会关闭,可以被多个请求复用,默认开始,如果想关闭,使用Connection: close 长连接的原理是TCP保存连接,不关闭 引入了管道机制:在同一个TCP连接里,客户端可以同时发生多..
2020-05-14 21:40:38 648
原创 HTTP请求全过程
例如再浏览器输入www.baidu.com,然后按下回车键 对www.baidu.com进行DNS域名解析,得到对应的IP地址 根据这个IP找到对应的服务器,发起TCP三次握手建立连接 建立TCP连接后发起HTTP请求 服务器响应HTTP请求,浏览器得到html代码 浏览器解析html代码,并请求html代码中的资源,如:CSS、图片等 浏览器对页面进行渲染呈现给用户 是否关闭TCP连接要看浏览器的请求首部字段中有没有加入Connection:keep-alive(http1.1版本是默认开启的),如果
2020-05-14 21:39:37 138
原创 HTTP与HTTPS区别
HTTP在请求过程中,客户端和服务端之间没有身份确认的过程,数据全部都是明文传输,因此很容易被黑客攻击 窃听风险:黑客可以获取通信的内容 纂改风险:黑客可以修改通信的内容 冒充风险:黑客可以冒充他人身份参与通信 基于HTTP的不安全的缺陷,HTTPS应运而生 HTTPS总结来说是HTTP+SSL,多了一层数据加密阶段 加密算法 对称加密:加密和解密使用同一个秘钥 非对称加密:加密采用公钥,公钥是公开的,而解密需要私钥,私钥是保密的,该算法安全性超强,但是加密性能低,加密的长度也有限 如图所示,客户
2020-05-14 21:38:56 229
原创 TCP滑动窗口
滑动窗口分为发送窗口和接收窗口 TCP的滑动窗口主要有两个作用:一是提供TCP的可靠性,二是提供TCP的流控特性 发送窗口 发送端的状态分为四种:已发送已收到ACK,已发送未收到ACK,待发送,未发送 其中处于滑动窗口的是中间两个状态 正常情况下 4号包收到了ACK,滑动窗口向右滑动一格,将11号包读进了缓存,将8/9号包发送出去。以此类推 丢包的情况 但是有时候会出现丢包的情况,我们的包发出去,对方的ACK丢了,或者我们的包发丢了,总之,发送方没有收到ACK。那么此时就会发送端就会一直等待ACK,
2020-05-09 15:09:00 258
原创 TCP与UDP区别
TCP有连接,需要三次握手建立连接,UDP面向无连接,想发数据直接发送 TCP是点对点的连接(一对一),UDP支持一对多,多对一,一对一,多对多传输方式 TCP可靠,UDP不可靠,UDP在网络不好的时候会丢包,但是速度快,实时性高 TCP头部需要20个字节,UDP只需要8个字节,因此UDP在传输时高效 TCP面向字节流传输,UDP面向报文传输 TCP适用于要求可靠的传输应用,如文件传输。UDP适用于实时应用,如直播、视频会议等 ...
2020-05-09 15:07:54 100
原创 TCP报文头
源端口号:16位,连同源主机IP地址标识主机的一个应用进程 目的端口号:16位,连同目的地址标识目的主机的一个应用进程 序列号:32位,seq,例如TCP三次握手的第一次握手,客户端会发送seq=x 确认号:32位,ack,例如TCP三次握手的第二次握手,服务端会发送ack=x+1 ACK:1位,1表示确认号有效,表示报文中不包含确认信息 SYN:1位,同步序列号,1表示连接请求 FIN:1位,用于释放连接,1表示发送方已经没有数据发送了,即关闭本方数据流 窗口大小:16位,数据字节数,表示从确认号开始..
2020-05-09 15:06:39 152
原创 TCP四次挥手
第一次挥手:客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u,此时,客户端进入FIN-WAIT-1(终止等待1)状态 第二次挥手:服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一...
2020-05-09 15:04:05 290
原创 TCP三次握手
第一次握手:客户端发送连接请求报文,SYN=1,选择一个初始序列号seq=x,此时客户端处于SYN_SEND状态 第二次握手:服务端收到客户端的请求,如果同意建立连接,会向客户端发送确认报文,SYN=1,ACK=1,确认号为x+1,同时也会发送一个初始序列号seq=y,此时服务端处于SYN_RECV状态 第三次握手:客户端收到服务端的连接同意报文后,还要再发送一个确认包给服务端,ACK=1,序列号为x+1,确认号为y+1,服务端收到客户端的确认信息后,建立连接,客户端和服务端都处于ESTABLISHE...
2020-05-09 15:02:00 239
原创 网络模型
网络模型 OSI七层网络模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 五层协议:物理层、数据链路层、网络层、传输层、应用层 TCP/IP:网络接口层、网络层、传输层、应用层 应用层协议:HTTP、HTTPS、DNS(域名解析)、FTP(文件传输) 传输层协议:TCP、UDP 网络层协议:IP、ARP(地址解析协议) 路由器 数据链路层协议:传输单位是帧,媒体访问控制子层(MAC)交换机 物理层协议:传输单位是比特,主要介质:网线、光缆 ...
2020-05-09 15:00:47 92
原创 JVM-内存分配与回收策略
3. 内存分配与回收策略 1. Minor GC(新生代) 触发条件:Eden区满了的时候,会触发Minor GC(复制算法) 频率:Minor GC会频繁进行,执行速度一半会很快 步骤: Eden区和ServivorFrom区存活的对象复制到ServivorTo区,如果放不下,直接放入老年代。同时将ServivorFrom区的对象年龄+1(年龄到达15(默认)后,会转到老年代) 清除Eden...
2020-04-09 09:42:19 386
原创 JVM-垃圾回收器
2. 垃圾收集器 HotSpot的七个垃圾收集器 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ty1o29eB-1586396296714)(D:\学习资料\面试知识总结\pic\垃圾收集器.png)] 1. Serial 用于新生代 串行,单线程的执行垃圾回收,会出现STW 使用复制算法 优点: 在单个CPU下,单线程,没有线程切换的开销,因此效率高 ...
2020-04-09 09:39:29 119 1
原创 JVM-垃圾回收算法
1. 垃圾回收算法 一共有三种 1. 标记清除算法(Mark-Sweep) 标记阶段:程序检查每个对象是否为活动对象,如果是活动对象,则程序在对象头部打上标记 清除阶段:对对象进行回收,清除标志位 不足: 产生大量不连续的内存碎片,可能会导致大对象没法分配内存 2. 复制算法(copying) 为了解决标记清除算法会产生大量碎片的缺陷而提出的算法。把内存分为大小相等的两块,每次只使用其中的一...
2020-04-09 09:34:39 110
转载 java中的hashmap(转载用于自己学习使用)
https://www.cnblogs.com/yuanblog/p/4441017.html
2020-02-25 11:40:52 142 1
原创 java并发编程实战读书笔记--第七章
7:取消和关闭 java没有提供任何机制来安全的终止线程(stophe suspend不安全,不要使用) 但提供了中断机制,使得一个线程终止另一个线程。 7.1:任务取消 1、任务取消的原因:用户请求取消、有时间限制的操作、应用程序事件、错误、关闭等。java中没有一种安全的抢占式方法来停止线程。 2、可取消的任务必须有取消策略 How:其他代码如何(How)请求取消任务 任务在何时(When)...
2019-09-25 14:36:58 192
原创 java并发编程实战读书笔记--第六章
任务执行 6.1:在线程中执行任务 1、串行执行任务:一般采用while循环执行,如果执行过程中遇到了I/O等操作阻塞,会造成服务器看似失去了相应,用户体验贼差,不推荐。 2、显示的创建线程:例如HTTP请求任务,每有一个连接请求就创建一个线程,用于处理连接请求。这种办法在一定范围内能提高服务器的响应性和吞吐率,但一旦超出了这个范围,再创建更多的线程只会降低程序的执行速度。 3、创建大量线程的弊端...
2019-09-23 20:54:30 127
原创 java并发编程实战读书笔记--第五章
java高并发读书笔记——第五章 5.2:并发容器 5.2.1:ConcurrentHashMap 1、每个操作都是线程安全的 get、contains等 包含大量工作,但加锁了所以安全2、基于散列的Map 3、粒度更细的加锁机制:分段锁---->高并发时吞吐量更高,单线程时性能损失小 4、弱一致性:size和isEmpty等操作可以返回结果已经过期,实际只是一个估计值 5、没有对Map加锁...
2019-09-23 16:59:43 191
原创 java各种容器的使用场景(含高并发)
** 一:对于Map/Set ** 不需要并发时: HashMap:一般就用这个 TreeMap:需要排序时,使用这个 LinkedhashMap:有序的Map 上述三个Map都不是线程安全的,因此在高并发的时候不推荐使用。Set同理,只需要将Map换为Set即可。 并发不是很大时: Hashtable:早期的线程安全Map。速度较慢,高并发下不推荐使用。 Collections.sychroni...
2019-09-23 11:04:42 1166
原创 android studio从网上导入jar包
File->Project Structure->Dependencies在app下点击+,搜索并导入jar包,最后apply即可
2019-08-20 10:55:21 117
原创 android studio取消button按压时的阴影
问题:在按压button时,会出现灰色的阴影 解决办法:在xml的button设计阶段加上style="?android:attr/borderlessButtonStyle"这段代码即可
2019-08-05 14:38:27 721
原创 android studio报错:can not resolve symbol XXX
android studio报错:can not resolve symbol XXX 解决办法:点击图片所示位置即可
2019-08-05 10:43:54 228
转载 Qterror:cannot find -lGL
Qt error:cannot find -lGL sudo apt-get install libgl1-mesa-dev即可
2019-04-30 22:07:28 294
volley.zip
2019-08-20
彩色验证码识别
2019-05-15
Linux tensorflow安装步骤.txt
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目20源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目19源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目18源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目17源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目15源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目14源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目12源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目11源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目10源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目9源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目8源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目7源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目6源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目3源码
2019-05-15
《21个项目玩转深度学习-基于tensorflow的实战详解》项目2源码
2019-05-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人