Monday, June 14, 2021

V2EX - 技术

V2EX - 技术


后端接口如何做版本控制?

Posted: 14 Jun 2021 04:51 AM PDT

假设有下面一个场景: 1.0 版本客户端的用户注册功能,手机号是可选填的,即使用户不输入手机号也能注册,对应的后端接口 URL 是 v1/reg

但到了 1.1 版本,手机号改为了必填,这时候有两种做法:

1 )做一个新的 v2/reg 后端接口给客户端使用,缺点是,需要同时维护 v1 、v2 两个版本的接口,而且会造成两个接口的代码大量冗余,除了"手机号是否必填"不一样以外,其它功能的代码都一样

2 )让客户端把版本号传过来,后端接口根据客户端版本号来判断手机号是否必填,缺点是,接口里会充斥着很多对客户端版本号进行判断的代码,例如:

if (appVersion == "1.0") {     // do something } else if (appVersion == "1.1") {     // do something } else {     // do something } 

上面哪种做法更好呢?或者各位大神有没有更好的版本控制方案?

mongodump/restore 丢数据?

Posted: 14 Jun 2021 04:46 AM PDT

  • 想从一台电脑上把一个数据库挪出来腾点地方,用的 mongodump+restore 。
  • 结果大部分 collection 正常,但有几个新库 collection 比源库少了几十万条数据,还有一个新库比源库多了几百条数据。
  • 数据量比较大,排查比较麻烦。以前用 dump 也没遇到过这种情况。想请问看看大家有遇到过这种情况嘛?
     src |      new |  same |    diff -------- | -------- | ----- | -------  1386863 |  1387090 | False |     227 33635751 | 33004251 | False | -631500 ... 

彦祖们,写 CRUD 的时候会使用设计模式吗?

Posted: 14 Jun 2021 04:30 AM PDT

本人写了挺多年的 Java 了,各种设计模式的书也看得不少,但是在运用到项目当中的时候,总感觉不太对劲,好像大部分都是多此一举,不仅不直观、增加理解难度,还会增加工作量,请问彦祖们写 CRUD 的时候会使用设计模式吗?具体是怎么使用的呢?

网站被攻击几天时间收到谷歌云 3 万美金的流量账单,怎么办?

Posted: 14 Jun 2021 03:52 AM PDT

一个小站,被人联系要挂他们的广告,不从。然后从月初开始被攻击,普通服务器一直被打挂,就想着放到谷歌的 cdn 上,还用上了谷歌的 cloud armor 来防御,很有效,就算是过滤后的攻击次数每秒也上万次,那被拒绝的攻击更是高了,但他怎么打都打不死了,好爽啊。
打了大概 5 天打不动了,我突然想起要看看账单,一看 3 万美金!揉揉眼睛,个十百千万的慢慢数,确定没数错。
马上跟支持联系,答复是这是 cdn 的流量账单,数据没错,说会提交相关部门来调查分析。
懵了,要不免单的话,我打算逃单了,反正信用卡也没这么多钱给他扣,就 2000 美金的额度

真不知道这么上图。
本月总费用(截止今日)
US$30,012.66

请教 std::vector<std::unique_ptr<B>>的类成员应该怎么写在构造函数

Posted: 14 Jun 2021 03:14 AM PDT

class A{ public:     std::vector<int> a;     std::vector<std::unique_ptr<B>> b;     A(std::vector<int> a,std::vector<std::unique_ptr<B>> b); }; A::A(std::vector<int> a, std::vector<std::unique_ptr<B>> b):a(std::move(a)),b(std::move(b)) {} 

这样写报错了

分享一下我们用代码来管理多个 AWS 账号的实践

Posted: 14 Jun 2021 12:27 AM PDT

这个解决方案是我们这一年来鼓捣出来的东西, 主要思路是不使用跨账号的 IAM Role, 使用 Eventbridge 来传递消息. 把所有的 AWS 账号全部定义到一个配置文件里, 通过 cicd 流程来控制新账号的生成和初始化, 同时也有一些额外的好处.

https://blog.xiaket.org/2021/aws-account-management-using-eventbridge-cn.html

如果有兴趣, 可以对照英文来看:

https://blog.xiaket.org/2021/aws-account-management-using-eventbridge.html

使用 Protector4J 2.x 加密和保护 Java 程序

Posted: 13 Jun 2021 10:27 PM PDT

https://www.bilibili.com/video/BV1EK4y137oC?t=2

使用 Protector4J 2.x 加密和保护 Java 应用程序,比混淆更好的解决方案,提供最好的兼容性和保护。

详情: https://protector4j.com

ubuntu 21.04 export socks5 proxy 终端不生效

Posted: 13 Jun 2021 01:44 PM PDT

搞了 socks5proxy 的梯子。system 里设置 socksproxy 以后,chrome 都成功了。但是在 terminal 里,按往常一样加了 export,但是没有生效。8.8.8.8 和 google.com 都无法 ping 。求助。或者提供一些 troubleshoot 思路也行。感谢。

export http_proxy="socks5://127.0.0.1:1080" export https_proxy="socks5://127.0.0.1:1080" export ALL_PROXY=socks5://127.0.0.1:1080

GitHub action 中如何获取输入参数值?

Posted: 13 Jun 2021 09:42 AM PDT

name: 'Repo Star Count' description: 'Get count of Github repository stars' inputs:   repoPath:     description: 'Repository Path'     required: false     default: ${{github.repository}} outputs:   stars:     description: "Repo Stars"     value: ${{ steps.repo-stars.outputs.stars }} runs:   using: composite   steps:     - id: repo-stars       run: |         STARS=`curl -s 'https://api.github.com/repos/${{env.INPUT_REPOPATH}}?page=$i&per_page=100' | jq .stargazers_count`         echo "::set-output name=stars::$STARS"       shell: bash branding:   icon: 'award'   color: 'green'  

代码如上,获取的 INPUT_REPOPATH 为空,按照官网所说为环境变量-INPUT_参数名字进行获取,但是却没拿到,姿势不对?

为什么 Redis 从服务器不主动惰性删除过期键?

Posted: 13 Jun 2021 08:06 AM PDT

最近在看书入门 Redis,关于复制功能对过期键的处理,了解到从服务器在收到来自主服务器发来的 DEL 命令之前,即使客户端访问了过期键,也不会删除它,为什么这么设计呢?

web 因公司需求需要学 flutter 的开发,有什么好的建议

Posted: 11 Jun 2021 10:53 PM PDT

最近在网上查了查 说有原生基础比较好上手 前端的话还需要学习学习 原生的一些代码

No comments:

Post a Comment