OkHttp3源码解析(三)——连接池复用
本文基于OkHttp3的3.11.0版本
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
我们已经分析了OkHttp3的拦截器链和缓存策略,今天我们再来看看OkHttp3的连接池复用。
客户端和服务器建立socket连接需要经历TCP的三次握手和四次挥手,是一种比较消耗资源的动作。Http中有一种keepAlive connections的...
SpringBoot发送邮件总结
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
spring.mail.host=sm...
java中访问修饰符关键字的区别
public、protected、private以及默认default(不写)
作用: 用来修饰类(接口、抽象类)、方法、属性、构造方法、常量、主函数
类的成员不写访问修饰符时时默认default,默认情况对于同一个包而言等同于public
子类使用是需要继承
(https://blog.csdn.net/qq_33342248/article/details/54090038)...
算法基础——冒泡排序,选择排序和插入排序
冒泡排序:
从a[index=0]开始比较a[0]和a[1],按照程序给定判断是否交换位置,然后a[1]和a[2]比较,一直到a[max]。此时a[max]一定是要求的最大或者最小,下一次循环不需要再比较,所以length-i。
5,4,3,2,1
第一次: 4,3,2,1,5
第二次: 3,2,1,4,5
第三次: ...
数据结构——数组以及n维数组
一维数组
1.数组的概念
数组其实就是一个可以装任意类型数据的集合,可以看作为一个容器。虽然可以装任意类型的数据,但是数组只要定义之后,数组里面就是只能装同一数据类型的元素。
数组是属于引用数据类型(数组名中存储的是内存首地址)
数组在内存中是一个连续的存储空间。
数组本身只有length属性(length获取数组中能存储的数据个数)
2.数组的好处
...
数据结构——java自定义数组队列
什么是数组队列?
数组队列是利用数组这种数据结构来处理实现多个数据的类,增加了数组的灵活性。(在程序中数组的灵活性不够,因为定义的长度是死的。如果定义长了浪费内存,短了不够用)
数组队列的实现
1.定义接口,定义需要的抽象方法
a.增加元素的方法;在固定的位置 ,添加元素的方法;
b.删除该数组中一个元素的方法(根据元素进行删除)
...
数据结构——java自定义单链表及反转
其实我不想写但是还是要写的的前景知识:
什么是链表
链式存储结构是一种基于指针实现的存储结构。我们把一个数据结构和一个指针称为结点。链式存储结构用指针把相互关联的点连接起来。链式存储结构的线性表就称为链表
什么是单链表
链表的每个结点中只包含一个指针域,叫做单链表(即构成链表的每个结点只有一个指向直接后继结点的指针)。结点结构如下:
关于头节点...
哈夫曼二叉树的简单构建
/*
* 1、统计学生学分
* 学生考试结果 A B C D
* 学分增加 5 4 3 0
* 人数 10 50 30 10
*
* 代码1:
* if A : +5
* else if B : +4
* else if C : +3
* else D :0
* 10 + 50*2 +30*3 +10*3
* 代码2:
* if B :+4
* else if C:+3
* else if A: +5
*
基于Android的handler线程小球运动
首先是主界面的绘制。
我并没有在游戏中写登陆界面,因此只有一个activity。在主界面采取的是单击屏幕启动线程,因此需要给imageView添加OnTouchListener监听器。
需要知道的是,安卓中的UI线程是不安全的。更新UI只有在主线程中更新,因此最好在mainactivity中完成画布的布置。
监听类时用到了声明方法的匿名内部类:当某个类不是经常使用,如...
学习笔记——java集合类:
首先看图对java集合框架有个大致认识
1.JDK提供一系列类,这些类可以存储任意类型的对象,并且长度可变,统称为集合。
2.集合按存储结构可分为单链集合(Collection)和双链集合类(Map)
Collection(根接口)有两个接口List,Set(子接口)
Map接口用于存储具有键(Key)、值(Value)映射关系的元素。主要实现类又...
学习笔记——MySql的入门知识
一.MySql软件的安装
1、官网下载最新版MySQL;
2、配置MySQL环境变量,可参考下面这篇文章:https://jingyan.baidu.com/article/c1a3101e72fc9bde656debf7.html;
3、安装指令:
* mysqld --initialize --console 初始化数据库(注意保存初始密...
Java的动态加载和反射
什么是动态加载?静态呢?
new创建对象的方式称作为静态加载,而使用Class.forName("XXX")称作为动态加载,它们俩本质的区别在于静态加载的类的源程序在编译时期加载(必须存在),而动态加载的类在编译时期可以缺席(源程序不必存在)。
哪些语言是静态的?哪些是动态的?
程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。
从这个观...
Chrome以及插件的无VPN简单安装
1.软件下载
官网下载(https://www.google.cn/chrome/)
2.插件安装
没有插件的Chrome是没有灵魂的。
极力推荐最先安装 谷歌代理 或者 谷歌服务 之类的插件,可以进入google的网页,这样安装好以后就可以进入Chrome应用商店下载google要求的插件啦!(这里是一个谷歌访问助手http://www.ggfwzs.com/)
...
Java算法 —— 蓄水池问题
题目: 给出了指定高度的任意两个板子,每个木板位置间隔相等,由你随机组合,怎么实现装最多的水。
分析:假设水池厚度相同,于是水容量计算公式:
水容量 = 板子距离*板子高度
...
Java处理异常机制以及五个关键字
首先来个总的图,了解一下Java异常类的结构层次图
Throwable:Java中所有的异常都有共同的父类Throwable(可抛出)。它有两个重要的子类Error(错误)和Exception(异常),这两个子类也包含大量的子类。
Error(错误):是程序代码无法处理的错误。大多数是java运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果出现了这样的错误,除...
数据库 —— 浅谈主外键以及多表查询
上一篇数据库的博客里只是把经常用到的SQL语句列了出来,并没有深入学习(当然,大多数也就是看一遍就会了)。自我感觉关于键的问题如果不熟悉的话,好像还是有点复杂,这里再提一下。
—————————————————————————————————————————————————————————
* 什么是主键?
主键是数据表的唯一索引,比如学生表中有学号、姓名之类的,姓名有...
JDBC的简单入门程序
前面了解完MySql之后就可以动手做一个JDBC的入门小程序咯。那什么又是JDBC呢?他是干什么的呢?
JDBC全程 Java DataBase Connectivity,即Java数据库连接
SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC(由一些接口和类组成)。学习JDBC 技术目的,是使用Java技术操作数据库中数据记录。
JDBC的编程步骤如...
今日推荐
周排行