javalre的简单介绍

博主:adminadmin 2022-12-26 22:06:14 63

本篇文章给大家谈谈javalre,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

三级缓存的使用

关于图片的处理,必不可少要用到三级缓存技术。

什么是三级缓存?

三级缓存一般分为内存--本地--网络三级缓存

内存(手机内存):内存相对于磁盘缓存,速度会快很多,但是缺点就是容量较小,不能存储大容量数据,且容易被系统回收。LruCache

磁盘(SD卡):相对于内存来说存储空间很大,能够存储较多的数据。DiskLruCache(DiskLruCache是非Google官方编写,但获得官方认证的硬盘缓存类,该类没有限定在Android内,所以理论上 Java 应用也可以使用DiskLreCache来缓存。)

网络:服务器端,通过HTTP请求获得。

具体流程就是,同一张图片从网络获取一次,然后在本地缓存下来,之后加载同一张图片的时候就从缓存中去加载。

先在内存中查找,找到就进行加载,否则去磁盘查找,找到将图片添加到内存中,加载显示,否则从网络加载,并且缓存到内存和磁盘,并返回。这就是完整的三级缓存过程。

这里需要介绍的是内存缓存一共分为四类:强引用、软引用、弱引用和虚引用(后面我会再专门整理一篇博客的~)

到这里三级缓存应该大概明白了吧,下面是我写的实现demo

Activity和布局文件都比较简单,布局中只有一个imageView,实例化上面个工具类,调用loadBitmap方法即可,这里就不贴出来了。

第一次打开时log信息:

关闭后打开log信息:

以上是三级缓存的使用。

如何打开sgf文件

工具/材料:以win7系统、Microsoft Office Word 2007、sgf文件为例。

1、首先在win7系统桌面上,双击“Microsoft Office Word 2007”快捷方式。

2、然后在“Microsoft Office Word 2007”界面上,点击顶部按钮里“打开”选项。

3、接着在“Microsoft Office Word 2007”界面上,双击“sgf文件”文件图标,将sgf文件打开。

4、最后在“Microsoft Office Word 2007”界面上,显示sgf文件里的内容。

网络请求框架-OkHttp原理解析

okhttp是square公司贡献的一个处理网络请求的开源框架,是目前Android开发使用最广泛的一个网络框架,从Android4.4开始,httpURLconnection的底层实现采用的就是okhttp。内部实现就是利用java基础,对socket进行封装,实现http通信。最重要的两个关键点就是分发器和5个拦截器。

分发器 就是内部维护队列和线程池,完成请求分配,总结就是用于对异步任务加入队列管理,然后判断条件,控制数量,加入线程池执行异步请求任务。

五个默认拦截器 就是利用责任链模式对网络请求进行层层处理,完成整个请求过程,简单总结如下。

1.桥接拦截器对用户发出的请求添加缺少的请求配置字段,比如keep-alive等

2.缓存拦截器就是查询有没有符合判断条件的已缓存的网络请求,执行复用,直接返回response

3.连接拦截器就是创建请求,加入连接器 或者访问连接池,根据条件判断,是否能怼已创建的tcp请求进行复用

4.请求服务器拦截器就是对scoket进行操作,请求网络访问服务器,返回response,

5.重试和重定向拦截器就是对返回的response进行code判断,决定是否要重试或者重定向操作。

1.支持http2.0版本,并且允许对同一主机的所有请求共享一个套接字

2.即使不是http2.0版本,通过连接池,减少请求延迟

3.默认使用Gzip 压缩数据

4.响应缓存,避免重复请求网络

最简单的http请求案例

1.利用建造者模式构建okHttpClient实例对象,构建过程中可以动态配置参数,请求时间,响应时间,缓存信息等。

2.创建Request对象,设置请求方式,链接地址,参数等信息。

3.把request对象,传给client,通过newCall函数,得到RealCall对象。

4.RealCall 分为同步和异步执行

5.同步执行时,分发器只是做个记录,把请求任务加到队列中,然后直接通过拦截器访问服务器,返回response。

6.异步执行

6.1先对异步任务进一步封装,把任务放到AsyncCall对象中

2.分发器 把 封装后的异步任务 添加到等待运行的队列中

7.getResponseWithInterceptorChain 通过拦截器,获取response

okhttp 默认提供5个拦截器 重试重定向拦截器,桥接拦截器,缓存拦截器,连接拦截器,访问服务器拦截器。还可以自定义拦截器。

自定义拦截器分为应用拦截器(通过addInterceptor 添加)和网络拦截器(通过addNetworkInterceptor拦截)

拦截器采用责任链的设计默认,让请求者和处理者解耦,最终请求从前往后,响应从后往前。

首先先判断用户是否取消了请求,如果没有取消,就把请求交个桥接拦截器。

在获得响应结果response的时候根据响应码,判断是否需要重试或者重定向, 重试不限制次数,重定向最多20次 ,如果需要重试或者重定向,那么会再一次重新执行所有拦截器。

有如下几种情况不会重试:IO异常,线路异常,配置client实例时配置不允许重试,协议异常,证书异常等等。

先获取用户发送的请求,判断条件用户是否已经配置过请求头字段,若用户没有配置,则将http协议必备的请求头字段补齐,比如Content-Type,Content-Length等,然后交给下一个拦截器。

在获得响应结果response之后,调用保存cookie的接口(也可以在配置client的时候,设置cookjar进行cookie回调数据),并且解析gzip数据

获取结果之后,对cookie进行保存,对返回的数据进行gzip解压

就是根据缓存策略从缓存中查找是否有合适的缓存response,如果有合适的缓存,直接返回给请求任务,不在继续执行后面的拦截器。

获得响应结果response后,根据条件判断,决定是否要缓存。

维护一个连接池,负责对连接的服务。在把请求交给下一个拦截器之前。会先在连接池中找到一个合适的连接(满足适配条件相同,并且没有正在被使用)或者新建一个连接,并且接入连接池,获得对应的socket流,把请求交给下一个拦截器。获得response结果后不会进行额外的处理。

连接池, 也称之为对象池,主要用来存放request请求连接,内部维护了一个LinkedQueue队列用来存放请求。在添加新的请求对象时,都会执行一个周期性任务,用以对连接池进行清理操作。

1.队列长度超过5,清理最近未被使用连接,LRE算法

2.存储的连接,5分钟未被复用,清理

拿到上一个拦截器返回的请求,真正的与服务器进行通信,向服务器发送数据,解析读取响应的数据,返回给上一个拦截器。

1.创建request =OkHttpClient=RealCall()

2.同步执行 ,分发器添加同步任务,执行拦截器,访问服务器,返回reponse,触发异步分发流程。

3.异步执行 ,封装任务= AsyncCall ,实现runnable接口。添加任务到异步任务等待队列,执行分发任务,判断异步任务是否能加入正在执行的异步任务队列,满足两个条件

同时执行的异步任务数量不得大于64个

对同一个主机的访问任务,最多不得大于5个

4.加入正在执行的异步任务队列,通过线程池执行任务,经过5个默认拦截器访问服务器,返回response,执行异步任务分发。

分发器工作 分为同步任务和异步任务两种

同步任务 就是把任务加入同步任务队列,加个标记,执行结束之后,触发异步任务的分发操作。

异步任务 先封装任务到asyncCall对象,实现了runnable接口。把任务加入等待执行队列,执行分发操作。

先遍历等待任务队列,判断是否符合加入正在运行的异步任务队列,要同时满足两个条件。

同时执行的异步任务数量不得大于64个

对同一个主机的访问任务,最多不得大于5个

当满足条件后,从等待队列中删除任务,把任务加入正在执行的队列中,通过自定义的线程池,执行任务,任务执行结束后,再次执行分发操作。

拦截器采用了责任链设计默认,让请求者和执行者解耦,请求者只需要将请求发给责任链即可,无需关心请求过程和细节。okHttp 默认有5个拦截器,重试重定向拦截器,桥接拦截器,缓存拦截器,连接拦截器,请求服务拦截器。工作细节参考上面拦截器原理分析部分

1.位置的关系,应用拦截器 放在责任链最顶端,网络拦截器放在责任链倒数第二的位置。所以应用拦截器 最先拦截,最后响应,网络拦截器 倒数第二拦截,第二响应。如果打印请求日志的情况,应用拦截器打印的是用户请求信息,经过重试重定向,桥接,缓存,链接 等拦截器的层层包装,网络拦截器打印的是实际请求的信息。

2.应用拦截器一定会被执行,网络拦截器不一定被执行。

利用连接池,缓存所有的有效连接对象。

清理机制:垃圾连接

1.超过5分钟没有用过的链接

2.超过5个闲置链接后,从最久闲置的链接开始执行清理(LRU)

高分十万火急寻求关于认证码或3G码的论文一篇!

基于消息认证码的组播源认证研究

赵安军,郭雷,姚俊

(酉一化下业人学自动化学院,陕酉酉交7l0072

摘要:在组播安全技术中.源认证技术一直是其主要的问题。文中就基J几消急认证码的源认证技

术(TFS1.A)进行了详细的分析和研究.对其存在的问题进行了改进.7{给出了在此认证技术中关

键参数—公开延迟时间间隔—的计算方法最后给出了实验结果。

关键词:组播源认证(TFS1.A).消急认证码.公开延迟.安全

中图分类号:T P 309文献标识码:A文章编号:1000 2758( 2004) 01-0045-05

随着网络技术的飞速发展及商业化的不断普

及.组播通信模式得到了很大的发展和应用。在组播

孟信中.安全问题己经成为多l从传输重要问题。特别

n对」几数据源的认证问题}’}。

现有的l从对l从通信模式中的数据源认证技术己

不能满足组播传输的要求。因为在组播通信中.如果

及送方和所有接收方共享一个密钥.那么.每一个接

受方都可以使用共享密钥去欺骗其它接收者。使用

纹字签名的方案也可以达到对数据源认证的日的.

i1- N.提供数据源的非否认性。然Ifn,数字签名在运算

及网络通信流量方而的巨大开销阻碍了这种方案的

实施i Z.3}。

最近1FT F提出了一种新型的组播源认证技术

l'ES1.A}}。它是基」几消h,认证码的认证技术.主要

思想是:首先发送方和接收方进行时间同步.发送方

使用一个自己知道的密钥k对其所发送的每一个数

居包计算消急认证码(MAC), 7{将MAC值附加在

肖h,上发送给接收方。接收方缓存没有被认证的数

居包.一定的时间间隔后.发送方在其所发送的数据

包中公开其用来加密的密钥k使得接收方能够认证

沂缓存的未经认证数据包。这种方法无论在认证计

蒙量和网络通信流量方而都是数字签名所不能比拟

狗。但是这种方法存在着缺陷与不足:①山J几接收方

不得不缓存没有被认证的收据.所以.接受方必须提

共缓存.这可能引起接收方的存储问题步{为拒绝服

务攻击(DoS)留卜了后门。②在这种方法中.没有给

出其关键参数公开延迟时间间隔 d的计算方法。

木文分析和研究了源认证技术.7{给出了认证

技术中关键参数的计算方法。

1 TESLA工作原理

TFS1.A的安全性保证.如果消急不是被发送

者所发送.那么接收者永远不会接收它。在TFS1.A

模型中.发送方的消急流是山消急簇组成一般情况

卜.发送者在每一个网络层数据包尸,中发送每一个

消h,簇'Vl ;。这就使得接收者能够独立地认证每一个

消急.从Ifn解决了大多数组播分发协议不能够忍受

数据包丢失的问题}5}。为了实现上述功能.发送者首

先将根据网络情况得到整个所需发送时间.J{将它

们分成等间隔。第i个间隔用I,表示.用T ;,表示间

隔的时间长度.To表示发送开始时间。如果间隔I

的开始时间用T,表示.那么T;= To+ i T;,。接着.

发送者必须确定含有那个密钥的密钥链。这个密钥

链是山一个中一向函数产生。发送者随机选取密钥链

最后一个密钥K,.山一个伪随机函数F预先计算出

整个密钥链。密钥链的每一项定义为:K=

FMK十y.则每一个密钥可通过K推导得出:K=

F"-}(K), F'(k) = F'-}(F(k)), F}(k) = k。为了

避免在不同操作中使用同样的密钥.TFS1.A用另外

一个伪随机函数F‘得到用来计算发送消h,认证码

(MAC)的密钥K ;'.因此.

向密钥链之间的关系降} o

}}.}c;;}: ,.}c长+.)

K‘=F

。图1是中

产c;}:汁,

}};r;; }.,;!

刻还不能对其进行认证.它必须缓存当前数据包

P; : {M;} i} Cv}c(K';, M川k}- u}直到当其密钥K

被公开后对其进行认证。

阿蛛

n';V }:

OK;)

IT'}}LS},'.;_杯

x'' O'}},卜厂

杯“ }r: }}-r'F},}c}, .r,=.:_、.防一犷.,}t}:,,,

}二‘一’‘}】’了下曰{’一r‘’‘}‘’“,{

2 TESLA的改进和补充

}; v. , I'}i1},9 '}}; }}!'}'}

图1

刀一}w314}f! ,},F,'dfli}3

T}SLA密钥链

在引导新的接收者进入组播通信组时.发送方

和接收方首先进行时间同步。然后.TFS1.A必须用

一个经过数字签名的数据包对其进行引导。这个签

名的数据包主要包含了以卜关」几时间间隔和密钥链

信h,。

(1)一个特定的时间间隔T,开始时间以及时

间间}福的标记l,。

(2)时间间隔的持续时间T..,. o

( 3)密钥的公开延迟时间间led(一位时间间

1n。

(4)一个密钥链中密钥K的提交(i j一d, j

表示当前的时间间1n索引)。

在时间间1e 1中发送方发送的数据包尸,构成

P;:{M; } i} Cv、。(K ;'. ;'Vl川K卜,}

图1表示了密钥链以及MAC密钥链的生成.图中

的公开延迟时间为两个时间间隔.那么在时间间隔

l十z发送的数据包只十:公开了密钥K.从K能够推

导出K,一1.从Ifn得到K 'r- i和K'.山此可以验证数据

包尸,以及尸了十、的MAC值。

在TFS1.A模型中.它的安全性是依靠少密钥

的公开延迟时间.所以接收者必须确认.每一个用来

计算MAC值得密钥.在其数据包被接收时还没有

公开。在接收方.安全条件定义为:如果接收者能够

确信.发送者还没有公开与其接收的数据包相一致

的密钥.那么.这个数据包则是安全的。

当接收方在当地t时刻接收到在发送方在时间

间1e 1所发送的数据包尸,.根据先前时间同步所得

到的结果计算发送方时钟的一个上限r;。为了评估

是否满足安全条件.接收者计算发送方所能在的最

大的时间间}}P,7 x为

x=l(l,一T o} }T;]

通过验证xl;+d是否成立.接收者能够判定所

接收的数据包是否满足安全条件。当然接收者在此

2. 1立即源认证

如前所述.TFS1.A组播源认证方法山」几要在

接收方开辟缓存来存放还没有被认证的数据包。这

就带来了一些问题。比如.接收方的硬件条件不能提

供更多的存储空间。这样.就很容易引起数据包的丢

失.JI为拒绝服务攻击留卜了后门}6i。作者将对其认

证方式进行改进.提出了一种新的立即源认证方法.

接收者能够在接收到数据包的同时对其进行认证。

立即源认证的基木思想是在发送方开辟缓存.

Ifn非在接收方开辟缓存以实现立即认证.这对」几大

多数的发送方Ifn言.是没有任何问题的。为实现立即

源认证.发送方需要缓存一个公开延迟时间间隔 d

内待发的所有数据包.Ifu N_还必须重新构造发送方

所发送的数据包只.尸,的构造为

F';:{甘了卜}H(甘片,)}Cv、。(K }', D, )}K卜,}(1)

式中.H(M;}u)表示消急'Vl人,的散列值.D,=

H(M;}小发送方当前发送的数据包中包含在一个

公开延迟时间间1e h的缓存数据包只十,:{M}} a}

H(甘片za )卜+1l Cv}ac(K}', D,十,}I K}中消h,甘片,

的散列值.这样.当数据包只十,到达接收方时.山」几

只十,公开了数据包尸,的密钥K;.所以尸,中的

P}M}}a)被认证.同时山P }M}} z)可对甘片,进行

认证.从Ifn达到立即认证的日的。

如果每个数据包仅携带一个数据包的散列值.

非常明显发送速度必须恒定.如果一个数据包丢失.

相应的数据包将不能够被立即认证。为了克服以上

的问题.发送方能够增加多个将来要发送的数据包

的散列值到一个数据包中.这样就为通信流量和计

算带来复杂性.但同时提高系统的灵活性和在立即

认证过程中支持数据包丢失。

2. 2时间同步

时间同步在TFS1.A方案中起着重要的作用.

所有操作都是建立在时间同步之上.当然这种同步

要求不是绝对的。将它们之间时钟的绝对差表示为

占。在时间同步中.仅需要将时间差限制在一定的范

围内。因此.需要一个时间差的上限八。

在直接同步方法中接收方发送一个包含

Nonce的时I'}J I司步清求向发送方(Nonce代表接收

方所在的时刻),J{记录卜发送的当地时刻lre。发送

方接收到时间同步清求后.发送方记录卜它的木地

时间ts, )I目一对t、和Nonce进行签名J{发送回接收

方。如卜所示:R-'S: Nonce, S-'R: { sender time

加.Nonce, } K,- }t ., , o图2出示了一个在接收方与发送

方之间的直接时间同步.接收方接收到相应数据包

后.验证签名的有效性少{计算得到:4= t、一lre.很容

易证明八全cS o

时间为t ,''。因此安全条件为

t }} +八-T一

,I’.n

乙d

(2)

在上式中.To是第一个时间间隔开始的时间.假设

数据包尸在发送方当地时间ti被发送.则l;} T} +

Ti.ll=l,’Ti.ll+T0+T一如果表示从发送方到接

收方的网络延迟时间为}sre.从接收方到发送方的

网络延迟为OKs.则T it'r'i=}sre + }KS o在直接同步

情况卜4=8+ (t3一tx}=占+Do.re8 + 1}K,, t,+占一ti

=DsK.将上而各式代入(2)式得到d的h限:d=

t}}收一,A时伸}

发送盆方日科俐,

[ T lt'f'f / T一」+

}。。}+}。、}

to在间接同步中.八=八、+八。+

=八、。+八。、+〔设DSR=厂一广+

OSG' + L1CR.将其代入(2)式得d的h限:d= }(r},K+

E)/T}},}}+1·

一,F|

3实验结果

图2接时间}司步

在间接时间同步中.发送方和接收方能够通过

一个参考时钟进行同步。即它们都是以参考时钟为

基准进行同步的。用八、+}。日来表示发送方的时

钟与参考时钟之间的差别的上限o E.,。表示最大的误

差;用八。+}。、}来表示接收方的时钟与参考时钟

之间的差别的上限o Ec、表示最大的误差;这样接收

方和发送方就能达到时间同步。

在TFS1.A协议的实现中.时间间隔参数d的选

取对」几整个通信系统来说是至关重要的。短的延迟

时间很容易引起安全条件的不满足.使得数据包容

易丢失;长的延迟时间则增加了对信急的认证过程.

给系统带来沉重的负担。文中提出了一种算法选取

参数d。这种算法能够定量地分析在一个通信系统

中所需要的延迟间隔, 7{能根据实时的网络环境来

进行优化。用T ii-ri来表示从接收方发出清求数据包

到接收方收到发送方的响应数据包所经历的一个来

回时I}}} ( Round T rip T ime)的合理上限。在直接时

间同步情况卜.能够选择d= [T}、二「/T}},}}+1;在间

接时间同步中.d = ( Dsre + E) /T }},} + 1;。表示发送

方和接收方时间同步的误差. }s、是从发送方到接

收方网络延迟的一个合理上限。卜而将对其进行证

明。

考虑一个数据包尸.它在时间间1e 1,中被用来

计算NA C.值的密钥凡‘所构造.K,将延迟d个时间

间隔后被公开。当尸,到达接收方时接收方的木地

对TFS1.A进行了基」几Java的实现。在伪随机

函数和消h,认证码函数中.使用了与HMAC}'}结构

兼容的SHA-1散列函数.它的输出是160位.完全

能够满足组播源认证的安全性。初始的同步数据包

经过一个1 024位的RSA}R数字签名进行发送。所

有的TFS1.A函数被放置在应用层.这样能够避免

减少对内核的改动。在接受方的实现中.接收方接收

到数据后.将其提交给应用。当其被认证或否决之后

通知应用。在传输层.使用了UDP数据包协议来传

输组播数据包。

正如前而提到.密钥链可以提前计算.它的计算

量是非常小的。在实验中.取O.ls作为一个时间间

隔长度.为了支持1h的数据包认证量.预先计算密

钥链仅花费0. 8 s。表1表示SHA一在PentiumIII

500M H7.的1.inux工作站上的运算速度。不同的分

组大小对应不同的运算速度。第一行是SHA-1在普

通散列运算时的运算速度;第一行出示了在做

MAC运算时的运算速度.MAC采用了128比特的

密钥。对」几发送方.每发送一个数据包.仅仅做一次

HMAC运算。通过检测发送方每秒所能产生的发送

数据包来分析TFS1.A的性能。在实验中.每个发送

的数据包用J几认证的数据为44个字节。公开延迟密

钥占用20个字节.MAC值占用20个字节.另外4

个字节被间隔索引,片用。当数据包是256个字节时.

每秒产生的数据包为21 765个;当数据包是1 024

个字节时.每秒产生的数据包为6 974个。为了提高

数据发送的效率可以减少密钥的位数以及减少

HMAC的输出这样则降低了安全性。在接收方

表1 SHA一在两种情况下每秒的运算速度

4结论

分组长)X

l4 25l

1 024

STTA-1

235 412 148 234 65 873 21

SIIA-1

(IIMAC)

60 124 52 310 28 457 14

024

R79

山」几密钥链的计算量是非常小的.因此它的计算量

与发送方比较几乎是相同的。从实验数据可以得出.

不论在接收方还是发送方.计算量是非常小的。在实

际的应用当中.山」几网络环境的不同.可能需要多个

不同的密钥链来适应不同的网络传输延迟。在这种

情况卜.发送方必须根据实际情况创建不同的实例.

每个实例应用不同的密钥链.以适应不同的网络计

算环境。

木文详细研究步{分析了TFS1.A协议的工作原

理.针对其山J几在接收端开辟缓冲区所引发的问题

进行了详细的分析JI提出了改进方法。在时间同步

方而.分析了直接同步和间接同步.步{就对其在协议

实现中所遇到的具体参数—公开延迟间隔 t}给

出了具体的选择算法。

山实验和分析可以看出.该方法无论是在运算

量和网络流量方而.都比其它方法优越。JI目_在抵抗

数据包丢失问题上.它有着更好的解决方案。然Ifn,

山」几网络环境的不同使得在实际的组播源认证中必

须使用更多的密钥链.降低了发送方的性能。如何解

决这个问题还需进一步的研究。

手机格机后java应用打不开,怎么办?

可能是格式化后手机里的jre没了吧,到网上找找。

jre是java程序运行环境

把手机连到电脑上,打开内存卡的kjava选项,将jre程序放到kjava里就行了。开机安装就ok。

jre到百度上找,很简单

回 楼下 的。

lre当然是java运行环境,没有它java程序就无法运行的。

关于javalre和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。