- 博客(58)
- 资源 (1)
- 收藏
- 关注
原创 如何基于OAuth2授权框架实现授权服务器(使用Node.js设计开发)
OAuth是一个安全授权框架,支持在不同程序(或者微服务)间的资源访问,也可以在OAuth体系下实现单点登录的功能。OAuth安全框架中包括四个角色:资源拥有者,授权服务器,资源服务器,客户端程序。OAuth安全框架主要说明了这四个角色间的交互流程,以及授权服务器应该具有的能力。OAuth框架是非常灵活和高度可扩展的,一些组件,如token结构组件或者加密算法都是可插拔,可以根据场景需求进行集成。OAuth框架由众多的RFC协议定义,其核心是授权服务器的能力和token的使用,由于其灵活性,其适用范围比较广
2021-09-20 19:30:41 543
原创 关于Android Q平台的support库的配置
目前Google已经释放了Android Q平台的SDK, 有OEM手机厂商在新机器中已经使用了Android Q的系统, 一些App应用也已经开始适配了Android Q系统.本文档主要说明在Android Studio工程中,如果Target SDK适配的是Android Q系统, support library的配置选择.理论上support library的版本号可以低于target的版...
2019-09-16 21:41:25 1323
原创 如何使用uiautomator测试框架的Python API对Android应用进行测试
uiautomator测试框架可以对Android应用进行黑盒测试, 通过获得当前窗口视图(View)体系结构中的组件,对指定的组件进行操作,可以跨APP进行测试.通常在写测试功能逻辑代码时, 可以利用uiautomatorviewer工具获得待操作组件的属性,比如class name, resource ID或者text等等,uiautomator可以使用这些属性获得对应的组件,以便对其进行操作...
2019-06-20 23:08:30 438
原创 如何生成Android批量包,配置Appsflyer Pre-Install Campaign
在Android应用集成Appsflyer SDK后, 可以跟踪App在不同场景下的使用信息.本文对Pre-Install Campaign配置, 使用自动化程序,批量生成APK包.关于Appsflyer Pre-Install Campaign的配置请参考其官网说明,根据其官网说明, Pre-Install Campaign配置可以有几种不同的方式,可以通过其SDK的API进行设置,也可以在An...
2019-04-27 19:02:35 1025
原创 Java动态代理执行细节
Java SDK中提供了在运行其生成动态代理类的机制. 被代理类通过定义接口规范, 代理类可以执行接口规范中的函数调用.使用动态代理机制时, 涉及到几个不同的角色:被代理类, 代理类,InvocationHandler类以及Proxy类. 他们的功能说明如下:...
2019-04-03 21:24:30 400
原创 ZeroMQ和RabbitMQ的对比
在分布式架构的不同程序间以及程序的不同模块间进行消息传递是通用的业务场景. 消息服务框架为消息处理提供语义清晰的API, 为基于消息的程序架构提供解耦以提高可扩展性,也可能提供某种形式的高可用性.关于消息服务的简单概述请参考https://en.wikipedia.org/wiki/Message_queue,每种消息服务框架有共同之处也有各自的特点.ZeroMQ和RabbitMQ均提供了消息服...
2019-03-30 18:49:55 5735
原创 Thrift的JSON protocol的设计思想
Thrift的分层实现Thrift作为RPC的一种实现机制, 封装了内部处理细节, 执行远程的一个服务调用, 其格式就像本地的函数调用一样简洁.Thrift可以看成一个分层的实现,和TCP/IP分层实现有所区别的是, 在使用thrift的时候,仍然需要为每层进行配置, 也就是说, 选择每个分层具体的实现方式. thrift的分层网络栈如下图所示:Transport是最底层的传输层.是对底层网...
2019-01-21 18:33:44 2574
原创 Ubuntu系统下编译thrift 0.11.0源代码工程
基于Thrift RPC机制开发时, 需要有.thrift文件的编译器(compiler),该compiler将根据我们自定义的.thrift文件生成指定语言的源代码.Apache的thrift官网为Windows平台提供了编译好的compiler可执行文件.在Linux系统下需要根据thrift源代码工程编译compiler执行文件....
2019-01-17 16:37:32 746
翻译 Redis事件处理库
原文链接:https://redis.io/topics/internals-rediseventlibRedis执行自己的事件库,其相关实现在文件ae.c中.理解Redis事件库如何工作的最好办法是理解Redis是如何使用事件库的.事件循环初始化文件redis.c中的函数initServer初始化了redisServer结构变量的很多字段,其中就包括事件循环字段el:aeEventLo...
2018-12-17 16:58:03 155
原创 有关前台服务的startForegroundService接口和startForeground接口
Android从SDK26开始增加了启动服务的startForegroundService接口, 该接口需要在服务启动后调用startForeground接口,服务将成为前台服务,其相对普通服务,有更高的优先级.如果服务启动后在指定的时间内没有调用startForeground, 服务将被终止,并且抛出ANR. 出错信息类似如下:E/AndroidRuntime: FATAL EXCEPTION...
2018-10-19 22:29:46 7175
原创 SQLite的动态数据类型机制
SQLite数据库的数据类型是动态的, 这区别于所有其他SQL数据库. 有些人认为这是SQLite的一个bug, 但是SQLite的设计者认为这是一个特性,而非bug, 这个特性可以更好的适应那些动态类型编程语言(如python)使用数据库接口.SQLite在创建表格时,为列指定的数据类型可以和行插入操作(insert)中的实际数据类型不同, 其实就是对于任何列可以存储任何数据类型.下面通过一个...
2018-10-18 22:40:10 895
转载 十条不错的编程观点
本文转载自http://coolshell.cn/?p=2424在Stack Overflow上有这样的一个贴子《What’s your most controversial programming opinion?》,翻译成中文就是“你认为最有争议的编程观点是什么?”,不过,在400多个主回贴,以及千把个子回贴中,好像并不是很有争议,而是令人相当的茅塞顿开,下面罗列一些,并通过我自己的经历和...
2018-09-16 18:25:18 108
原创 SQLite的回滚日志文件的校验机制
SQLite的回滚日志文件的作用是,当出现不完整的事务提交时(事务提交过程中,发生了断电故障或者操作系统崩溃),系统重新上电以后,SQLite使用回滚日志文件将数据库文件恢复成事务提交之前的状态,即消除不完整事务给数据库文件带来的损坏,使数据库文件对用户进程呈现一致的状态.从用户进程的角度来看,事务中的操作要么全部执行成功,要么没有对数据库文件做任何修改.SQLite如何保证回滚日志文件的内容...
2018-09-13 22:45:08 1215
翻译 SQLite的原子提交--单文件场景
1. 简介原子提交(atomic commit)是类似SQLite这样的事务性数据库的一个重要特性.原子提交意味着, 在单一的事务中,所有的数据改变或者全部生效或者全部不生效.具有原子提交后, 对于数据库文件的不同部分的多个写入操作,就好像是同时并且瞬态发生的.但是在硬件层面, 对大容量存储设备的写入操作, 以及对一个扇区的写操作都是需要一定时间的,因此对一个数据库文件的多个扇区的写入操作是不...
2018-09-12 21:42:12 542
翻译 How To Compile SQLite
概述SQLite是符合ANSI-C规范的源码,在使用的时候必须编译成机器码.本文档是各种编译SQLite的方法指南.本文档不并不包含事无巨细的编译细节,这将是比较困难的,因为各个开发环境是不同的. 本文档描述说明了编译SQLite的原则,并提供了典型的编译命令, 开发人员可以根据这些编译命令, 定制自己的编译流程.也就是说, 本文档提供了编译SQLite的一些思想和见解,但不是一个交钥匙的...
2018-09-04 21:22:57 236
翻译 Quick Start SQLite
在这篇文档里,你不需要任何配置也无需阅读冗长的文档,就可以简单使用SQLite数据库,这是其入门说明文档:下载SQLite 根据你的机器的系统, 可以下载一份编译好的二进制SQLite, 或者下载其源码进行编译.可以访问下载页获得更多信息.创建一个SQLite数据库文件在shell或者DOS的控制终端中, 输入”sqlite3 test.db“,这将创建一个新的数据库文件”test...
2018-09-04 15:37:04 118
转载 choose a license
网站https://choosealicense.com说明并对比了开源软件许可协议,包括了几乎常见的大多数许可协议,这是一个综合列表:https://choosealicense.com/appendix/
2018-08-30 18:19:17 1669
原创 ZeroMQ-0.1.1源码分析
ZeroMQ是一个分布式消息处理架构,是由C++语言实现的,其底层传输协议支持TCP, UDP,多播, POSIX IPC等实现.在后续的开发中,陆续实现了以C, Java, PHP, Python等语言实现的版本,但是非C++的实现版本中,底层传输协议支持的比较有限,但基本上均支持TCP协议.以C++实现的ZeroMQ分布式消息引擎的github源码工程请参考:https://github.co...
2018-08-19 20:20:05 1196
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人