首页
网站首页
公司简介
资讯中心
推荐内容
返回顶部
Linux系统装机必备应用top10,Retrofit2日志拦截器
发布时间:2020-03-30 20:47
浏览次数:

www.64222.com,Linux系统装机必备应用top10,Retrofit2日志拦截器。呈现样式如下,复制内容的时候利用鼠标中键实行选中打字与印刷内容:code,需要情势,url,央求头,央浼体,再次回到json

原创文章,转发请评释出处,

TucsonxJava的发挥特长

汉兰达xjava这些库和别的周围库不太一致,平日的库比方Glide,ButterKnife都感到了消除实际难点现身的,一定程度上是刚需。Glide库假诺不用他,那么应用自身快要管理图片下载、压缩、内部存款和储蓄器管理、多级缓存等等复杂的逻辑。那类问题千头万绪而布满,而像Glide那类的车轮,Api的布置性都相比和睦,二个大概的api调用就会形成五个原来很复杂的功力,大致不用太爽。

Glide.with .load//图片加载 .crossFade()//动画设置 .placeholder(R.drawable.place_image)//占位图 .error(R.drawable.error_image)//失败占位图 .override(width,height)//图片裁剪 .thumbnail(thumbnailRequest)//配置缩略图 .diskCacheStrategy(DiskCacheStrategy.SOURCE)//缓存策略 .into(imageView);

而奥德赛xjava,你刚开首看起来,都不知情她是怎么的。“异步管理”?不是肖似都应用观望者形式呢?AsyncTask,Handler也得以,要rxjava干嘛?要是你风乐趣研讨过一点rxjava,会发觉网络的科目都会说:"zip map flatmap debounce等操作符把异步回调变得‘简洁’‘高贵’",然后相比一下原先的代码和平运动用rxjava后的代码,最终感叹一下rxjava规划的鬼才和功能的强硬。小编自身在初次接触rxjava时也认为,这么些rxjava的亮点描述相比较空虚,那项本事的意思不仅仅实用。实际情状是那样么?在切实可行开销中,异步调用给大家的最大烦闷是:异步回调的时辰并不可控。当有五个异步回调时,那些调用相互沟通和依附,搞明白每一个回调哪天归来是个基本点的主题材料。在每种入眼时刻节点对‘分散的callback’做准确的事,有过相像编制程序资历的人都精通,是万分难受的事,假使还想代码轻便看懂,几乎是疯了。

www.64222.com 1image

rxjava称得上异步调用的极限实施方案,能不能够缓慢解决上述苦恼?随着学习和采取的彻底,心得会更醒目。以下会用三个稍复杂的例子,实际操作三个复杂异步场景,看看rxjava管理的什么。

Linux系统装机必备应用常用的有哪些,近些年趁着linux系统的使用者越来越多,在linux发行版桌面境况中装置必备的习认为常易用也进一层首要,同时一款好的帮忙linux系统的普通使用软件也能更加的推动linux发行版桌面系统的布满.就当前来看,linux发行版的使用者主要如故本事职员以致在校的学童们.这里互连网收罗收拾了10款linux系统装机必备应用,供周围linux爱好者参谋.

www.64222.com 2image.png

某设计网日常会有不菲地道美丽的相互设计小说,有一天,偶遇那样的意义,动漫通畅,人机联作自然,于是埋头自身解剖当中的成分,做了个开源控件,十来天有了一百来个star,认为非常受款待,几天前极度写那潦草几笔,分享案发经过,希望对同行有所扶持。

卓越复杂异步场景 -- Token的放手校验

平日遇上这种必要,接口的号召注重token消息。三个呼吁需求先伏乞token(token如若存在缓存则选择缓存),依赖那个token手艺开展健康网络请求。这一个token有自然的时效性,在时间效益性内得以选用缓存,过期后要求再行乞求token并再一次发起二回呼吁。那些流程能够归结如下图:

www.64222.com 3token前置央浼.png

光看那个必要,是否以为已经够你喝一壶了,别忙,还某些潜在的逻辑那么些图未有展现出来:1 高并发互连网伏乞时,如若token正在号召,供给对诉求阻塞(token诉求进程中,不再接纳新的token诉求)2 不通的同一时候,要把这几个央求记录下来,token恳求成功后,再‘依次’发送这么些拥塞的乞求。3 token失效意况下,互连网央浼限定重试次数。4 token央求笔者,重试计策需单独布署。

1、网络乞求前,对token是还是不是有缓存剖断,若无先哀告token,并把那个诉求堵塞且缓存2、token乞求进度中,假如有新的token伏乞踏向,参与窒碍队列3、token诉求后,通知拥塞的行列,依次举行围堵的央求4、对两种次数约束,分别做逻辑判别

以上正是理念完结格局,就不贴代码了,那样达成存以下特征:1、要随即拥戴二个堵塞队列 (注意其足够和清空的机遇)2、token需要结束后,有多少个回调机制通知梗塞队列,(那个回调必要注册和反注册)3、两处的次数节制,次数维护的变量,不佳维护(平常动态秘钥为了有助于使用会做成单例,单例内的变量相同static,维护较复杂)4、央浼重试的逻辑不佳完结,

咱俩能够见见这里涉及到很多静态变量的维护,广播等异步回调的管理,这种意况一多,编制程序者会变得很消沉。何况token的异步央求和确实的网络异步哀求杂糅在一块,增大了难点的纷纷。

部分代码网络须要部分与前一篇博客《基于XC60xJava Retrofit的网络框架》相关。

1、搜狗输入法 for linux

搜狗输入法for linux—扶助全拼、简拼、模糊音、云输入、皮肤、中国和英国混输。由Ubuntu Kylin团队与搜狗企业协同开采的搜狗输入法Linux社区版正式宣布,该输入法具备智能拼音、自动相称、二种化皮肤帮忙等作用。该输入法近些日子官方网站仅提供deb包下载安装.

www.64222.com 4搜狗输入法

官方网站地址: 访谈 | 软件介绍 | 下载地址

若果您不希罕搜狗输入法,你也足以选择小公司鹅输入法,它也是一款特不错的linux下汉语输入法.

class LoggerInterceptor : Interceptor { override fun intercept(chain: Interceptor.Chain?): Response { val orgRequest = chain!!.request() val response = chain.proceed(orgRequest) val body = orgRequest.body() val sb = StringBuilder() if (orgRequest.method() == "POST" && body is FormBody) { val body1 = body for (i in 0 until body1.size { sb.append(body1.encodedName + "=" + body1.encodedValue } sb.delete(sb.length - 1, sb.length) //打印post请求的信息 Logger.t(AppConfigs.LOGGER_NET_TAG).d("code=" + response.code() + "|method=" + orgRequest.method() + "|url=" + orgRequest.url() + "n" + "headers:" + orgRequest.headers().toMultimap() + "n" + "post请求体:{" + sb.toString } else { //打印get请求的信息 Logger.t(AppConfigs.LOGGER_NET_TAG).d("code=" + response.code() + "|method=" + orgRequest.method() + "|url=" + orgRequest.url() + "n" + "headers:" + orgRequest.headers().toMultimap } //返回json val responseBody = response.body() val contentLength = responseBody!!.contentLength() val source = responseBody.source() source.request(java.lang.Long.MAX_VALUE) val buffer = source.buffer() var charset = UTF8 val contentType = responseBody.contentType() if (contentType != null) { try { charset = contentType.charset } catch (e: UnsupportedCharsetException) { return response } } if (contentLength != 0L) { //打印返回json //json日志使用鼠标中键进行选中 Logger.t(AppConfigs.LOGGER_NET_TAG).json(buffer.clone().readString } return response }}

效果图

www.64222.com 5preview

先看看完整的央求进度
public static <R> Observable send(final MapiHttpRequest request, final MapiTypeReference<R> t){ return Observable.defer(new Callable<ObservableSource<String>>() { @Override public ObservableSource<String> call() throws Exception { //传入token缓存 return Observable.just(Store.sToken); } }).flatMap(new Function<String, ObservableSource<R>>() { @Override public ObservableSource<R> apply(String key) throws Exception { if(TextUtils.isEmpty && !request.skipCheckKeyValid{ //token没有缓存,需要请求Token return Observable.<R>error(new KeyNotValidThrowable; } else { //Token存在缓存,直接请求 return sendRequestInternal(request,t); } } }) //进入失败重试流程 .retryWhen(new Function<Observable<? extends Throwable>, ObservableSource<String>>() { private int retryCount = 0; @Override public ObservableSource<String> apply(Observable<? extends Throwable> throwableObservable) throws Exception { return throwableObservable.flatMap(new Function<Throwable, ObservableSource<String>>() { @Override public ObservableSource<String> apply(Throwable throwable) throws Exception { if (throwable instanceof KeyNotValidThrowable){ //同一Request,有过一次KeyNotValidThrowable,则不再重试 if (retryCount > 0){ return Observable.error(throwable); } else { //token缓存不在,进入TokenLoader请求token retryCount++; return TokenLoader.getInstance().getNetTokenLocked(); } } else if (throwable instanceof ApiException){ //token过期的情况,重新获取token,并重试 ApiException apiException = (ApiException)throwable; if (apiException.getCode() == MapiResultCode.SECRETKEY_EXPIRED.value{ if (retryCount > 0){ return Observable.error(throwable); } else { //token缓存失效,进入TokenLoader请求token retryCount++; return DynamicKeyLoader.getInstance().getNetTokenLocked(); } } } //其他类型错误,直接抛出,不再重试 return Observable.error(throwable); } }); } });}

兴许你首先次看也挺晕,别怕,你顺着注释捋捋逻辑,是或不是深感代码的完成相通画了二个时序图。除了注释以外,几点表达:1、defer操作符的功用是在retry时,会重新创建新的Observable,不然会利用上次的Observable,不会重复赢得Store.sToken2、retryWhen操作符,与sendRequestInternal内部统一配置的retryWhen并不冲突,也等于二遍retry3、retryWhen中一经抛出error ,则不再重试;4、重试伏乞,通过重返getNetTokenLocked那么些subject实现。

2、金山 WPS for Linux

金山 WPS Office,一款无偿好用的linux下office软件成品.金山 WPS Office 作为美好免费国产软件的人心之作,向来在用户中口碑蛮好!它完全免费,体量小巧,跨平台支撑 Win、Mac、Linux、Android 和 iOS,包容最新的 Office二〇一六的各类文书档案格式。其余 WPS 2019 提供了免费云服务以致大气合乎国情的在线模版、范文、素材库等,也都让其进一层符合国人选用.WPS 完全能够取代 Office,且周全同盟种种 doc、docx、xls、xlsx、ppt、pptx 等微软文书档案格式!

www.64222.com 6WPS Office

官方网址地址: 访谈 | 软件介绍 | 下载地址

一旦您不希罕WPS每趟运转后展开的广告分界面,永中Office for Linux办公软件那些能够满意你的需要.

友情链接: 网站地图
Copyright © 2015-2019 http://www.nflfreepicks.net. 新葡萄京娱乐场网址有限公司 版权所有