2

微游技术部一周分享 20220619期

 1 year ago
source link: https://xmanyou.com/minigame-dev-team-weekly-20220619/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
minigame.vip

大家好,以下是微游互娱技术部本周的分享:

1. [Android开发] Google支付接入

https://juejin.cn/post/7110434269155033118

上架Google Play的应用,如果提供支付功能,需要接入谷歌的支付Billing API。
特别注意的是,Billing库最近升级了5.0.0,但是,这个版本似乎并不支持低版本的Google Play,导致无法正常获取商品信息。
所以,本文特别介绍了4.x和5.x版本支付Billing Api的接入方法,以及接入完毕后,如何进行测试。

2. [Go开发] Singleflight介绍

https://overstarry.vip/posts/singleflight介绍/

在编写对外服务时,经常会使用缓存,来减少对底层数据库的压力。但是,引入了缓存,在减少了压力的同时,也引入了新的问题,例如缓存击穿。

关于缓存击穿,引用另一篇博客的说法(Leo_wlCnBlogs):

缓存击穿是这样一种情况:由于缓存系统中的热点数据都有过期时间,如果没有过期时间就造成了主存和缓存的数据不一致,因此过期时间一般都不会太长,设想某时刻一批热点数据同时在缓存系统中过期失效,那么这部分数据就都将请求磁盘数据库系统。
来源:https://www.cnblogs.com/Leo_wl/p/12294093.html

这种情况在并发环境中并不少见。本文介绍了处理这种情况使用的一种方法(也go-redis库中使用的方法):Singleflight,它可以将相同的请求合并为一个请求,从而大大减少了缓存击穿带来的负面影响。

3. [TypeScript] 用模版字面量类型,来减少Typescript项目中的重复代码

https://gitee.com/dony1122/note/blob/master/用模版字面量类型,来减少Typescript项目中的重复代码.md

TypeScript 4.1中引入了一个功能:Template Literal Types,直译是模板字面量类型。它有点像C语言里的宏,可以在一个字面类型定义里,使用另一个字面类型定义。
举个例子:

type Direction = "left" | "right" | "top" | "bottom";

type CssPadding = `padding-${Direction}`;
type MarginPadding = `margin-${Direction}`;
type CssPadding =
  | "padding-left"
  | "padding-right"
  | "padding-top"
  | "padding-bottom";
  
type MarginPadding =
  | "margin-left"
  | "margin-right"
  | "margin-top"
  | "margin-bottom";

本文对Template Literal Types的使用方法和原理进行了介绍。

4. [Web开发] 手动实现pc端横向滚动

https://juejin.cn/post/7110836209852612638

在Web页面中,容器隐藏了横向滚动条后,移动端横向滚动效果不受影响,但是pc端是无法通过鼠标进行横向滚动,因此需要自己手动实现效果。

本文介绍了如何在pc上实现一个横向滚动的功能。

5. [Go开发] 性能测试平台(locust+boomer)之一

https://luckytking.github.io/2022/06/性能测试平台locust-boomer之一/

最近公司打算对后端服务进行压力测试,本文介绍如何使用locust + boomer搭建性能测试平台。

关于locust

Locust 是一种易于使用、可编写脚本且可扩展的性能测试工具。开发者可以使用普通的Python来编写用户行为,从而实现了无限的可能性。
https://github.com/locustio/locust

关于boomer

boomer是用golang实现的locust压测客户端,让go开发人员可以使用go来编写压测用例,并将结果上传给locust。
它完整地实现了 locust 的通讯协议,运行在 slave 模式下,用goroutine 来执行用户提供的测试函数,然后将测试结果上报给运行在 master 模式下的 locust。
https://github.com/myzhan/boomer

与 locust 原生的实现相比,解决了两个问题:一是单台施压机上,能充分利用多个 CPU 核心来施压, 二是再也不用提防阻塞 IO 操作导致 gevent 阻塞。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK