ios12中关闭app内购
之前版本的IOS
中,是通过访问限制
菜单,限制应用程序内购的。这个功能在设置
->通用
下可以找到。然后在IOS12
中,我们已经找不到了。很显然,它被挪到了另一个地方。当然还是能找到的
之前版本的IOS
中,是通过访问限制
菜单,限制应用程序内购的。这个功能在设置
->通用
下可以找到。然后在IOS12
中,我们已经找不到了。很显然,它被挪到了另一个地方。当然还是能找到的
使用reactive-pg-client
中的数据库事务有两种写法,一种是通过PgConnection
的begin
方法,开启一段数据库事务;另一种是通过PgPool
的begin
方法。
先来看第一种:
昨天聊过,依托reactive-pg-client
可以做很多传统JDBC
无法实现的事情,比如PostgreSQL
的消息推送(notify
和listen
)。有了这种功能,我们就可以轻易实现从数据库层主向业务逻辑代码推送消息的功能。可以说,又一次为我们打开了新世界的大门。
不知道有没有人关注过TechEmpower的Web Framework Benchmarks
(https://www.techempower.com/benchmarks/ ),一种把各种Web
后端开发技术都罗列起来,在同样的机器下跑最简单的业务逻辑,来对比各技术性能的竞赛。参与跑分的技术代码,都是开源的,甚至很多代码就是由Web
技术本身的作者维护的。
虽说,跑分不能代表性能,性能更不能代表技术的优劣。但是有着么一个性能维度的粗浅比较,还是能带给我们不一样的收获。
比如,在2018-06-06
的最新一场比拼中,Vert.x
搭配PostgreSQL
的组合,在部分比试时表现十分抢眼,性能一骑绝尘且大幅领先第二名。被它踩在脚下摩擦的对手,不乏我们熟知的技术方案,比如go
、nodejs
、spring
、php
,还有mysql
、mongodb
等数据库。(这里我无意引战,有兴趣的朋友可以查看具体跑分结果及相关代码)
查看具体跑分代码可知,Vert.x
之所以能位居榜首,与其使用的数据库客户端是密不可分的。作为一套基于Java
的技术解决方案,Vert.x
没有使用Java
程序员所熟知的JDBC
,而是使用了一种叫reactive-pg-client的技术。reactive-pg-client
与JDBC
最大的区别就是前者是针对PostgreSQL
数据库单独开发的,利用了PostgreSQL
异步特性,最大限度了挖掘了数据库的访问性能。
现在我们就来简单尝试下reactive-pg-client
,首先添加依赖
异步的程序先天不好单元测试,尤其是按照传统的JUnit
思路来弄,肯定是不行的。好在Vert.x
想到了这一点,所以提供了vertx-unit
包,专门考虑了对异步代码的测试。
使用起来也很简单,首先
testCompile "io.vertx:vertx-unit:3.5.3" |
今天是还之前欠的一个账,当时在Vert.x异步方法转同步这篇文章里,我提到其关键点是CompletableFuture
类,今天我们就沿着当时的代码继续掰扯一下这个强大的类。
先来回顾下当时的代码
groovy
从不会让人失望,如果有,那就是接下来我要说的这种情况:
def list = [1, 2, 3, 4, 5, 6, 7] |
首先交代一个概念,在PostgreSQL
中,函数、存储过程都是一回事,创建语法都是create function
。之所以本文标题使用存储过程
的叫法,是为了方便其他数据库的使用者容易理解。
先来看看PostgreSQL
默认支持的创建数据库函数的写法,如:
今天想介绍的东西很简单了,但却异常强大,就是Google Trends
。使用方法非常简单,访问trends.google.com即可。
那么来看看我自己通过Google Trends
发掘的一些有意思的事情吧。