自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 如何基于HTTP设计一个加密解密系统

对方的

2021-11-13 19:04:26 3210 1

原创 使用python程序抓取天眼查,企查查和爱企查上的企业基本信息

的方式

2021-09-20 20:12:45 6474 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

原创 如何在Scala的for comprehension中使用Future

Scala语言中

2019-05-05 09:56:00 398

原创 如何生成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

原创 RabbitMQ的consumer预取(prefetch)行为

RabbitMQ

2019-04-06 21:29:22 7606

原创 如何使用RabbitMQ中的死信交换器(dead letter exchange)

RabbitMQ

2019-04-05 20:17:42 2146

原创 Java动态代理执行细节

Java SDK中提供了在运行其生成动态代理类的机制. 被代理类通过定义接口规范, 代理类可以执行接口规范中的函数调用.使用动态代理机制时, 涉及到几个不同的角色:被代理类, 代理类,InvocationHandler类以及Proxy类. 他们的功能说明如下:...

2019-04-03 21:24:30 400

原创 Hadoop分布式文件系统(HDFS)架构概述及基本概念

Hadoop

2019-04-02 22:25:36 7074

原创 ZeroMQ和RabbitMQ的对比

在分布式架构的不同程序间以及程序的不同模块间进行消息传递是通用的业务场景. 消息服务框架为消息处理提供语义清晰的API, 为基于消息的程序架构提供解耦以提高可扩展性,也可能提供某种形式的高可用性.关于消息服务的简单概述请参考https://en.wikipedia.org/wiki/Message_queue,每种消息服务框架有共同之处也有各自的特点.ZeroMQ和RabbitMQ均提供了消息服...

2019-03-30 18:49:55 5735

原创 如何使用MongoDB Atlas的免费存储服务

Mongo

2019-02-03 20:14:31 5008 1

原创 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

原创 关于java集合类的遍历器Iterator及其ConcurrentModificationException的细节

java

2019-01-11 16:53:48 237

原创 深入理解Redis数据缓存的LRU实现机制

redis

2018-12-26 20:40:34 10500

原创 深入理解Redis的发布/订阅机制(pub/sub)

Redis

2018-12-23 22:11:55 16435 3

原创 深入理解Redis事务

redis

2018-12-22 21:36:37 4633

翻译 Redis事件处理库

原文链接:https://redis.io/topics/internals-rediseventlibRedis执行自己的事件库,其相关实现在文件ae.c中.理解Redis事件库如何工作的最好办法是理解Redis是如何使用事件库的.事件循环初始化文件redis.c中的函数initServer初始化了redisServer结构变量的很多字段,其中就包括事件循环字段el:aeEventLo...

2018-12-17 16:58:03 155

原创 深入理解FragmentManager

FragmentManager

2018-12-01 17:20:12 15531 2

原创 FragmentManager的back stack是如何影响用户交互的

FragmentManager

2018-11-25 22:50:51 705

原创 如何监控Activity和Fragment状态变化

如何监控Activity和Fragment状态

2018-11-21 22:08:26 1306

原创 SQLite数据库在Android系统中的应用--SDK封装

SQLite

2018-11-13 23:17:28 652

翻译 SQLite的原子提交--多文件场景

SQLite

2018-11-04 21:41:46 431

原创 如何验证Android系统中APK证书链的有效性

证书链

2018-11-03 19:21:56 2529 1

原创 关于使用AccountManager的remove删除Android帐号的细节

AccountManager

2018-11-03 00:06:00 4261

原创 SQLite数据库的cursor在Android系统Java层及JNI层的实现机制

SQLite

2018-10-25 00:55:35 3055

原创 正确使用SQLite的reset API

SQLite

2018-10-21 20:22:25 1853

原创 有关前台服务的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

翻译 SQLite的线程模式

SQLite

2018-10-12 18:29:52 2214

转载 十条不错的编程观点

本文转载自http://coolshell.cn/?p=2424在Stack Overflow上有这样的一个贴子《What’s your most controversial programming opinion?》,翻译成中文就是“你认为最有争议的编程观点是什么?”,不过,在400多个主回贴,以及千把个子回贴中,好像并不是很有争议,而是令人相当的茅塞顿开,下面罗列一些,并通过我自己的经历和...

2018-09-16 18:25:18 108

原创 SQLite的锁实现机制

SQLite为了实现事务的原子提交, 构造了几种类型的锁.

2018-09-16 17:59:04 843

原创 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

源码实现——7z

7z源码实现,压缩比高,C语言实现,供参考

2015-08-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除