
Java基础、网络基础
文章平均质量分 87
从基础层面讲解java相关理论知识,网络基础知识
阿烦大大@
学而不思则罔,思而不学则殆
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java转型之路 - 数据库篇(一)
mysql数据库安装,sql语句,navicat原创 2022-01-16 21:18:35 · 661 阅读 · 0 评论 -
JAVA并发 - 基础(二)
JAVA并发 - 基础(二) 补充 1. 守护线程 上一篇讲解了创建线程的几种方式,以及线程中常见的几个方法,在进行回顾的时候发现忘记了一个方法setDaemon() 线程一般分为用户线程和守护线程,线程创建默认是用户线程,可以调用thread.setDaemon(true)方法将线程设置为守护线程。 用户线程 - 当jvm运行结束后,线程不会结束,会一直等到程序执行完才会进入死亡状态 守护线程 - 当跟随jvm一起结束,并不一定会等到任务全部执行完毕 下面我们来看一段代码: public class原创 2021-09-20 22:44:52 · 223 阅读 · 1 评论 -
OKHttp拦截器-请求服务器拦截器
**CallServerInterceptor**请求服务拦截器,这是OKHttp最后一个默认的拦截器,当与服务建立好连接之后,就可以进行真正的网络请求了。利用exchange发出请求到服务器并且解析生成Response @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response { val realChain = chain as RealInterceptorChain原创 2020-12-30 15:37:06 · 735 阅读 · 0 评论 -
OKHttp拦截器-连接拦截器
这是OKHttp的第三个拦截器 - ConnectInterceptor,如果缓存判定失败,就会走到这里进行真正的网络连接了。 连接池 连接池是对网络连接的一种优化,当需要与服务进行连接的时候,会线程连接池里面查找有没有闲置的连接,如果有那么就直接使用,否则就重新创建一个连接并放入连接池。 constructor() : this(5, 5, TimeUnit.MINUTES) constructor( maxIdleConnections: Int, keepAliveDuration:原创 2020-12-30 14:22:15 · 698 阅读 · 0 评论 -
OKHttp拦截器-缓存拦截器
CacheInterceptor,OKHttp第三个执行的拦截器就是缓存拦截器了,在发出请求前,判断是否命中缓存。如果命中则可以不请求,直接使用缓存的响应(只会存在Get请求的缓存)。这里内容比较多,大家做好心理准备哦~ 总体流程 老规矩,先来看一下拦截器的CacheInterceptor#intercept()方法: @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response { val原创 2020-12-30 10:06:53 · 1656 阅读 · 2 评论 -
OKHttp拦截器-桥拦截器
BridgeInterceptor, 桥拦截器,连接应用程序和服务器的桥梁,我们发出的请求将会经过它的处理才能发给服务器,比如设置请求内容长度,编码,gzip压缩,cookie等,获取响应后保存Cookie等操作。这个拦截器相对比较简单,它作用是补全请求头。 请求头 在客户端与服务器通信的过程中,需要携带一些其他的报文,有一些是必须的,在浏览器中我们可以查看请求头: 请求头是以key:value的格式发送的,多个请求头之间用换行隔开,这样服务端将会通过固定的格式对头进行解析。其中常见的请求头有 :原创 2020-12-29 13:10:44 · 246 阅读 · 0 评论 -
OKHttp拦截器-重试和重定向拦截器
经过上一篇的解析,我们已经对OKHttp的同步请求和异步请求了然于胸,还有五大拦截器可以说是它的画龙点睛之笔,今天我们就来看看,它们是怎么运作的。 RetryAndFollowUpInterceptor,顾名思义,用来处理请求失败后重连和重定向的,上一篇我们知道了责任链调用的是intercept()方法: @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response { val realCha原创 2020-12-25 13:39:22 · 1564 阅读 · 1 评论 -
网络编程基础之OKHttp源码理解-kotlin版(一)
前几篇文章讲了网络的基础,包括网络分层,三次握手 ,socket,TCP/IP和UDP协议等,我们知道了阻塞式IO(BIO)和非阻塞式(NIO)通信的原理,现在就从底层出发,一起来探究下OKHttp的原理吧。 OKHttp是什么 OkHttp是当下Android使用最频繁的网络请求框架,由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp,同时现在流行的Retrofifit框架底层同样是使用OKHttp的。 优点: 支持H原创 2020-12-24 16:24:20 · 638 阅读 · 2 评论 -
Java并发 - 基础(一)
什么是线程 在面试中,经常会问到:进程和线程的区别。在了解线程之前,首先要了解什么是进程。进程是操作系统进行资源分配和调度的基本单位,当运行一个程序时,就是开启了一个进程。 线程是进程中的一个主体,一个进程至少有一个线程(也就是主线程),进程中的多个线程可以共享进程的资源。当执行一个程序时,CPU的资源会分配给线程,所以线程是CPU进行资源分配和调度的基本单位。 CPU核心数和线程数 最早前的电脑都是单核单线程的,也就是一个核心处理器对应一个线程去工作。后来慢慢出现了多核心技术和超线程技术。 多核心技术已经原创 2020-05-13 16:16:45 · 268 阅读 · 0 评论 -
你真的了解泛型吗?(二)
@TOC 通配符 上一节讲到通配符,已经把大部分的使用场景都梳理了一遍。当然,使用通配符还有一些需要注意的地方。 通配符捕获和帮助方法 在某些特定场景,编译器会自动推断通配符的类型。比如,一个List,在使用它具有泛型类型的方法时,就会从代码中自动推断出特定的类型 。这种情况称为通配符捕获。 以下示例编译时将会报错:(参数不匹配) List<?> foo = new ArrayList...原创 2020-04-28 11:19:54 · 332 阅读 · 1 评论 -
你真的了解泛型吗?(一)
一、java泛型(一) 如果本文满足不了大家对泛型的理解,可以自行参考官方文档 英文文档:https://docs.oracle.com/javase/tutorial/java/generics/index.html 中文文档:https://pingfangx.github.io/java-tutorials/java/generics/rawTypes.htm 什么是泛型 泛...原创 2020-04-23 19:49:34 · 379 阅读 · 0 评论