前言延时循环执行事件很简单,且有很多方式,但想要延时相对精确,就需要稍微设计一下了普通的方案线程内阻塞的方案这种方案很简单,示例代码如下while(true){block()//执行逻辑Thread.sleep(1000)//延时1秒}但缺点也是显而易见,其是线程阻塞的,比较浪费资源异步或挂起的方案我们可以使用handler,rxjava,定时线程池或协程等来实现异步方案,这样可以节省线程资源我们以协程来做示例//suspend方法中while(true){block()//执行逻辑delay(1000)//延时1秒}延时准确的方案可能上面普通方案就能解决一般情况下的需求,但如果是要求延时准确
前言延时循环执行事件很简单,且有很多方式,但想要延时相对精确,就需要稍微设计一下了普通的方案线程内阻塞的方案这种方案很简单,示例代码如下while(true){block()//执行逻辑Thread.sleep(1000)//延时1秒}但缺点也是显而易见,其是线程阻塞的,比较浪费资源异步或挂起的方案我们可以使用handler,rxjava,定时线程池或协程等来实现异步方案,这样可以节省线程资源我们以协程来做示例//suspend方法中while(true){block()//执行逻辑delay(1000)//延时1秒}延时准确的方案可能上面普通方案就能解决一般情况下的需求,但如果是要求延时准确
项目地址这个项目是很久以前的,当时go能力有限,写的不尽人意。刚好最近有加密文件的需求,所以就完善了相关逻辑。之前的方案还依赖Seek(offsetint64,whenceint)(int64,error),看了go很多源码,都说Seek不可靠。所以目前改为纯Reader和Writer这两种接口,当然文件的结构也必须改变。因为自带hash校验,因此内容连一个字节都不能被篡改,安全性很高。而且随机的aes密码也是通过rsa进行加密,因此只要妥善保管好rsa的私钥就能保证万无一失。加密后内容结构如下所示:rsa密文长度rsa加密aes密码后的密文aes加密内容数据hash值len(rsa(pass
项目地址这个项目是很久以前的,当时go能力有限,写的不尽人意。刚好最近有加密文件的需求,所以就完善了相关逻辑。之前的方案还依赖Seek(offsetint64,whenceint)(int64,error),看了go很多源码,都说Seek不可靠。所以目前改为纯Reader和Writer这两种接口,当然文件的结构也必须改变。因为自带hash校验,因此内容连一个字节都不能被篡改,安全性很高。而且随机的aes密码也是通过rsa进行加密,因此只要妥善保管好rsa的私钥就能保证万无一失。加密后内容结构如下所示:rsa密文长度rsa加密aes密码后的密文aes加密内容数据hash值len(rsa(pass