文/Robin
前言
隐私重要吗?当然重要。然而认为隐私重要并且想办法尽力保护的,这个比例却太少了。IM 的意思是「即时通讯」,这是我们日常生活中最常用的软件类别,比如 Telegram、WX 都是属于这个分类。然而这些软件并不安全,Telegram 是为了体验牺牲安全,然而 WX 不能做得很安全,原因在此不多说。
在 IM 领域,有一个独特的开源加密协议存在,这就是 Signal Protocol。本文笔者先给大家介绍 Signal Protocol,然后说说哪些 IM 都用了这个协议。
Signal Protocol
首先我们来看看什么是 Signal Protocol。提到 Signal Protocal,不得不
继续阅读 »
安卓开发过程中一旦开始和硬件打交道,以及涉及到一定的native代码之后,各种闪退就开始浮出水面了,声音录制和播放当然不例外,其中最摸不着头脑的就是A/libc: Fatal signal 11 (SIGSEGV) at了。本文总结了YOLO安卓客户端大半年来的安卓音频实践,整理出一套系统API的封装,命名为RxAndroidAudio。
继续阅读 »
文/Robin
Instant Messaging,简称 IM,也就是「即时通信」,是一种通过网络进行实时通信的系统,允许两人或多人使用网络即时的传递文字消息、文件、语音与视频交流。
相比于邮件,IM 具有更高的通信效率,但是事情的处理效率未必比邮件高。在我的 MacBook 上,安装了如下的 IM:微信、Mixin Messenger、飞书、Signal、QQ、企业微信、Telegram、钉钉、WhatsApp、Wire,而且大部分都要每天都打开使用的。
纯粹的 IM,可能更关注通信本身,比如 Mixin Messenger、Signal、Telegram、WhatsApp、Wire。集大成的 IM,比如微信、飞书、钉钉
继续阅读 »
TBOX封装了一套跨平台的异常捕获实现,来模拟windows的seh异常处理功能,而且是线程安全的。
在linux/mac下的实现
使用signal 捕获异常信号
使用sigsetjmp保存现场寄存器和信号掩码,出现异常后使用 siglongjmp 跳转到异常处理过程,并恢复状态
使用线程局部存储维护 sigjmpbuf 寄存器现场状态堆栈,保证多线程安全,并且可以实现多层嵌套捕获处理。
在windows下的实现
这个就不用多说了,在vs下直接用 try、except 关键字就行了,如果在mingw下编译, 通过 setjmp实现也很方便。
具体使用
注: 由于使用setjmp 进行寄存器现场保护, 如果使用整型局部变量,
继续阅读 »
这里的blocking signal里的blocking并不是传统意义上的针对IO的blocking, 尽管这可能是引起ioloop阻塞的一个原因之一。在这里,blocking指的是ioloop在epoll返回之后开始依次处理各监听文件句柄上的IO事件时,直到下一次进入epoll调用的这段时间的ioloop的状态。我们知道Tornado是单线程的,在处理完某次epoll调用返回的读写就绪事件之前,Tornado无法启动下次epoll监听,所以这段时间理论上是越短越好,这样,ioloop可以充分及时的获取就绪文件句柄,不会影响整体IO性能。然而在实际的使用过程中,难免会出现某次处理时间过长,从而导致ioloop的blocking时间过
继续阅读 »