android 网络请求总结
1 先看下基础部分:
android okhttp网络访问是基于 tcp/ip 的
最上层是应用层的封装,有http,https(加密),ftp
下面是socket套接字的封装,就是将ip和端口的封装
在下面就是tcp/udp 在下面 ip协议层了。
2 下面看下常用的http/https请求方式
Volley:四个网络调度线程和一个缓存调度线程 适用范围:非大文件(缓存过大影响内存),非频繁数据(线程池线程数小)
OKHttp:用起来有点麻烦,使用时需要一定的经验,比如我的总结:
1 OkHttpClient是线程池和连接池的最小单位,能复用就复用,不然会产生多个线程池和连接池
2 可以用OkHttpClient对象newbuilder()来实现定制新的client请求,依然能实现共享线程池和连接池。
3 内部是quene的方式执行,但无法返回过来的也是顺序过来,需要及时cancel掉对应的call
对应的回调是 java.net.SocketException: Socket closed
关闭方案:
//添加tag
Request request = new Request.Builder().
url(url).tag("requestKey").build();
//When you want to cancel:
//关闭等待队列里的
for (Call call : mHttpClient.dispatcher().queuedCalls()) {
if (call.request().tag().equals("requestKey"))
call.cancel();
}
//B)关闭执行线程池里执行的call(running队列也包含)
for (Call call : mHttpClient.dispatcher().runningCalls()) {
if (call.request().tag().equals("requestKey"))
call.cancel();
}
3 改进方案思考
1 okhttp里用到的okio 是不是可以用mmap来替代,而它的缓存机制仍保留
2 网路差的时候是不是可以自动改为udp方式
期待我的改进版本的okhttp不,期待,我就把这两项给弄了
相关文章:
android 网络请求总结
1 先看下基础部分: android okhttp网络访问是基于 tcp/ip 的 最上层是应用层的封装,有http,https(加密),ftp 下面是socket套接字的封装,就是将ip和端口的封装 在下面就是tcp/udp 在下面 ip协议…...
用 Python 自动化处理无聊的事情
“编程最棒的部分就是看到机器做一些有用的事情而获得的胜利。用 Python 将无聊的事情自动化将所有编程视为这些小小的胜利;它让无聊变得有趣。” Hilary Mason,数据科学家兼 Fast Forward Labs 创始人 “我很享受打破东西然后把它们重新组合起来的乐趣…...
稀疏计算、彩票假说、MoE、SparseGPT
稀疏计算可能是未来10年内最有潜力的深度学习方向之一,稀疏计算模拟了对人脑的观察,人脑在处理信息的时候只有少数神经元在活动,多数神经元是不工作的。而稀疏计算的基本思想是:在计算过程中,将一些不重要的参数设置为…...
Git Windows安装教程
Git简介 Git是目前世界上最先进的分布式版本控制系统。它的工作原理 / 流程如下: [ Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 ] Git的下载 去 Git 官网下载对应系统的软件了,下…...
iOS高级理论:Runtime应用
一、遍历类的属性,快速归档 在 iOS 中,可以使用 Runtime 遍历类的属性来实现快速的归档(Archiving)操作。归档是将对象转换为数据流以便存储或传输的过程。下面是一个简单的示例,展示如何使用 Runtime 遍历类的属性进…...
php判断和过滤get或者post的html标签,防止跨站点脚本(XSS),链接注入,框架注入等攻击
大部分网站都包含搜索功能,根据用户搜索的词去执行服务端的业务逻辑。如果一些黑客在搜索参数包含链接(a)、嵌入其他网页(iframe)、前端代码(script)等html字符,再加上服务端php不加…...
PySide6实现课堂点名程序
目录 一:实现思路 二:实现代码 三:完整代码和界面 一:实现思路 为了创建一点名程序,并编写一个基本的 GUI 应用程序。新建一个窗口,展在窗口界面添加开始和停止按钮的QPushButton,和展示正在显示的人名QLabel,点击开始时随机显示人名列表中的一个名字并且展示在QLab…...
瑞_Redis_Redis命令
文章目录 1 Redis命令Redis数据结构Redis 的 key 的层级结构1.0 Redis通用命令1.0.1 KEYS1.0.2 DEL1.0.3 EXISTS1.0.4 EXPIRE1.0.5 TTL 1.1 String类型1.1.0 String类型的常见命令1.1.1 SET 和 GET1.1.2 MSET 和 MGET1.1.3 INCR和INCRBY和DECY1.1.4 SETNX1.1.5 SETEX 1.2 Hash类…...
js 算法题 在数组中找出和为目标值 target 的那 两个 整数,并返回它们的数组下标
题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以…...
基于springboot接口的编写
目录 1、模糊分页查询 2、批量删除 3、新增 4、编辑 此接口非彼接口。此接口是MVC的设计模式中的Controller层,一般我们会叫Controller层里的方法为接口。他们是负责接收前端或者其它服务的传来的请求,并对请求进行相应的处理,最终再将处…...
【HarmonyOS】鸿蒙开发之Video组件——第3.7章
Video组件内VideoOptions属性简介 src:设置视频地址。currentProgressRate:设置视频播放倍速,参数说明如下: number|string:只支持 0.75 , 1.0 , 1.25 , 1.75 , 2.0 。P…...
React引入css的几种方式以及应用
1.直接引入css文件 import "./parent.css" 2.引入css模块,定义文件名[组件名.module.css];该方式可避免类名的重复,每个组件都有独立的作用域,避免了全局污染,保证了类名的唯一性 import styles from &qu…...
[算法沉淀记录] 排序算法 —— 冒泡排序
排序算法 —— 冒泡排序 基本概念 冒泡排序是一种简单的排序算法。它重复地遍历要排序的列表,一次比较两个元素,并交换它们的位置,如果它们不是按照升序排列的。这步遍历是重复进行的,直到没有再需要交换,也就是说该…...
【机器人最短路径规划问题(栅格地图)】基于遗传算法求解
基于遗传算法求解机器人最短路径规划问题(栅格地图)的仿真结果 仿真结果: 路径长度的变化曲线: 遗传算法优化后的机器人避障路径:...
如何做代币分析:以 TRX 币为例
作者:lesleyfootprint.network 编译:cicifootprint.network 数据源:TRX 代币仪表板 (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关的数据…...
关于地址引用与值引用的坑
List<UserInfo> userInfoList new List<UserInfo>(); List<UserInfo> userInfoList_new new List<UserInfo>(userInfoList);userInfoList_new 与userInfoList 指的是相同的内存吗? 答: 在C#中,userInfoList_new …...
初谈软件工程(一)
我就读于兰州交通大学的软件工程专业。虽然在全国众多的985、211高校中,兰州交通大学可能并不显眼,似乎未能跻身这些所谓的“顶尖”行列就意味着不被认可。然而,在甘肃省的教育领域中,它无疑是一座璀璨的明珠,名列前茅…...
自动化开展思路
自动化开展思路 本人在公司一直从事自动化测试推进工作,最近在好友的邀请下去其就职的公司分享如何开展自动化测试! 希望能帮其解决如下几个痛点: 1.上线周期长; 2.测试时间紧张,上线信心不足,测试覆盖…...
安装使用zookeeper
先去官网下载zookeeper:Apache ZooKeeper 直接进入bin目录,使用powerShell打开。 输入: ./zkServer.cmd 命令,启动zookeeper。 zookeeper一般需要配合Dubbo一起使用,作为注册中心使用,可以参考另一篇博客…...
nginx实现http反向代理及负载均衡
目录 一、代理概述 1、代理概念 1.1 正向代理(Forward Proxy) 1.2 反向代理(Reverse Proxy) 1.3 正向代理与反向代理的区别 2、同构代理与异构代理 2.1 同构代理 2.2 异构代理 2.3 同构代理与异构代理的区别 二、四层代…...
漫画翻译革命:如何用BallonsTranslator让外文漫画阅读零门槛?
漫画翻译革命:如何用BallonsTranslator让外文漫画阅读零门槛? 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning …...
2026年安卓反调试安全加固公司怎么选?从防Frida到上架审核全维度对比
当你的安卓应用核心算法、支付协议或通信密钥面临被逆向破解的风险时,找到一家真正靠得住的反调试加固公司就成了决定产品生死的关键选择题。这不是简单的采购,而是一次高风险的技术选型。市面上打着“安全加固”旗号的服务商不少,但真正能防…...
面向星上实时处理的银河飞腾多核DSP与FPGA异构计算平台构建
1. 银河飞腾DSP与FPGA异构计算平台概述 在卫星载荷这种特殊应用场景下,传统的通用处理器往往难以满足实时性、可靠性和低功耗的多重要求。我参与过多个航天项目,深刻体会到国产化异构计算平台的重要性。银河飞腾多核DSP搭配FPGA的方案,正好能…...
绝地求生罗技鼠标宏终极配置指南:5分钟快速实现无后坐力压枪
绝地求生罗技鼠标宏终极配置指南:5分钟快速实现无后坐力压枪 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 想要在《绝地求生》中轻…...
别再只用rand()了!手把手教你用STM32的ADC噪声生成真随机数(附DMA优化方案)
STM32真随机数生成实战:从ADC噪声到安全密钥的完整实现 在嵌入式系统开发中,随机数的质量往往决定了整个系统的安全性。许多开发者习惯性地使用srand(time(NULL))配合rand()函数来生成随机数,却不知道这种伪随机数在安全敏感场景下可能带来灾…...
直播卡顿、首开慢、延时高?别慌!一份超全的排查手册(附FFmpeg/WebRTC实战参数)
直播质量优化全链路实战:从现象定位到参数调优 直播过程中突然出现的卡顿、首开延迟或音画不同步,往往让技术团队如临大敌。不同于点播的事后处理,直播问题的排查需要工程师在分钟级内完成根因定位与修复。本文将构建一套从现象分析到参数调优…...
Unity新手避坑指南:用C#脚本动态切换Sprite,别再手动拖拽图片了
Unity高效开发:用C#脚本实现Sprite动态切换的进阶技巧 刚接触Unity的开发者常常会陷入一个效率陷阱——在Inspector面板中手动拖拽更换图片。这种操作不仅繁琐,还会让项目维护变得异常困难。想象一下,当你的游戏需要根据玩家选择实时切换角色…...
从智能小车到避障机器人:HC-SR04超声波模块在STM32上的三种高级应用
从智能小车到避障机器人:HC-SR04超声波模块在STM32上的三种高级应用 在创客圈子里,HC-SR04超声波模块就像瑞士军刀一样经典——价格亲民、接口简单,但能玩出的花样远超基础测距功能。今天我们不聊怎么用定时器测回波时间这种入门操作…...
5分钟搞定Windows Defender永久禁用:开源工具完全指南
5分钟搞定Windows Defender永久禁用:开源工具完全指南 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-control 你…...
GLM-4.1V-9B-Base部署教程:双GPU自动分层加载与nvidia-smi监控
GLM-4.1V-9B-Base部署教程:双GPU自动分层加载与nvidia-smi监控 1. 模型介绍 GLM-4.1V-9B-Base是智谱开源的一款强大的视觉多模态理解模型,专门设计用于处理图像内容识别、场景描述、目标问答和中文视觉理解任务。这个9B参数规模的模型在视觉理解方面表…...
