最近准备实现一个基于JVM的新语言"Jer",一开始想先实现一个Hello world,然后逐步再朝上面添加新的功能;后来觉得还是需要先把这个语言的语法层面大致设计好再动手才行。本身是出于好玩的一个目的,但是也的确希望这个语言有一些特点,而不是单纯换一个语法而已。在这个期间思考了很多,但一直没有想到自己满意的方法,姑且先按照现在的想法设计一版出来吧。
Read More...Scheme语言的hello world
最近准备创建一个简单的基于JVM的新语言,但在语法设计上犹豫不决,研究了一些资料后,觉得可能Lisp正是我所追求的清晰、简单、优雅的语法参考,因此决定深入了解一下Scheme。
Read More...Microservice中的安全策略
最近在思考微服务中的安全问题,在读Chris Richardson的文章的时候,发现自己对微服务有了一些新的认识和理解:p。
如图所示是一个典型的微服务架构:

这个架构下有如下的需求场景:
- 不同的APP会消费微服务,通常需求会有差别
- 有些微服务还会希望暴露给第三方的系统进行消费
- 具体的服务通常在设计API的时候会尽量考虑通用,但是实际消费服务的时候并不能完全满足需求,还需要二次加工,或者将多个服务的调用进行组合。
OAuth 2.0的一些问题
OAuth2或者OIDC是一个比较复杂的问题,但是很多人用的时候都是一知半解,所以出现一些不正确或者不建议的做法。 Read More...
使用OpenID Connect进行用户认证
OAuth2作为一个广泛使用的授权标准,已经基本上普及了,但是其协议本身是比较复杂的,如果不仔细研究还是会一知半解。一个常见的错误用法就是用OAuth2来进行认证(Authentication)。OAuth2不是为解决认证的问题的协议,也没有定义认证的流程;但是,在OAuth2的基础上,加以扩展得到的OpenID Connect确是为解决这个问题而生的。 Read More...
flutter中使用ffi调用SqlCipher
目前在flutter中调用sqlite有成熟的插件例如sqflite,而我需要sqlcipher,并同时加载fts5扩展,现有的插件并不能直接支持。因此需要创建一个插件来做这个事情。在以前平台集成相当麻烦,而现在有了ffi之后,可以直接调用原生代码,虽然还在试验阶段但终究是大势所趋。
Read More...SQLite3 文件格式分析
最近一直在思考如何使用btree文件结构做一个单文件的加密存储格式,因此研究了一下sqlite3的文件格式以为参考。
Read More...OAuth2授权流程
最近有一个问题一直比较困惑,起因是我们有一个React的应用使用OAuth进行权限验证,而我之前的实践通常是基于Token的权限验证(即通过用户名和密码获取JWT Token),那么OAuth是否适合这样的场景呢? Read More...
TCP(2):TCP报文实例
TCP每个报文都有一个序列号,这个序列号在初始的时候是随机生成的(而不是直接使用0或者1),那么这样做的原因究竟是为什么?
Read More...