目录

Tyler 的个人博客

但行好事 莫问前程🚶

标签: 开发tip (3)

如何区别请求中的零值与零

在go语言中,对于没有赋值的信息,会默认给予一个零值。而int型零值正好等于0,因此在处理一些http请求时,容易产生无法区分读到的字段信息为0是零值还是传参为零。 这里提供两种简单的思路: 1、修改规定接收类型为string型。当前端如果没有传值进来,那么后端将解析得到 "" 。因为string型的零值为 "" ,所以我们只需要判断接收到的string型是否为空即可。若不为空,则将字符串转换为数字,即可得到传参为0或其他数字的情况。 2、仍保持接收类型为int型,修改使用指针去接收这个字段。通常情况下,我们往往直接在controller层将映射结构体解析后直接传递至service层进行业务处理。为了区分零值和0,我们可以在controller层先用指针去解析该字段。若解析后为nil,则表示请求中未传值,那么我们可以给这个字段赋予一个特殊的值,例如-1。如果本身该字段有值,那么将该指针解引用。经过这一层处理后,再将该字段传递至service层进行相关业务处理。

基于Kafka监听DB数据变更并同步副表与ES的办法 有更新!

今天分享一个最近在业务开发中涉及使用到的很巧妙的小tip。 业务背景是有一张记录后台的DB主表,数据量达到百万级别。后台会涉及到一些字段筛选等,所以如果每次查询直接走DB的话会效率较慢。于是该业务采用的是当有用户或者后台运营进行数据变更时通过消息队列及时将DB变化及时同步至ES。此刻有一个新的业务后台开发,数据是从该百万级别数据量的DB中获取,某个字段符合一定条件时同步至该表,且主表信息变更需要同步至副表。 对于这样的需求,最简单暴力的解决方式就是可以通过定时脚本去进行数据同步,但是这样的方法有点太low啦。因为需要脚本启动之后才会进行数据更新,实时性很差。而且数据库数据量较大,每次全量查询影响性能。 那如果在所有涉及主表记录变更业务触发时,进行副表数据同步呢?当然,这也不是最优解。首先,对于这样庞大数据量的表,其字段和涉及业务也是众多的,你需要去穷尽所有对该表有影响的业务,并且去在每个业务中,增加同步新后台,很容易遗漏;其次,如果过了一段时间,又有新的业务后台也需要同步这张主表数据呢?并且随着后续该表相关业务的累加,很难保证后续的业务开发人员,在触及到主表字段修改的相关业务,或者同步....

ChatGPT后端开发tips 有更新!

什么!2024年了,还没开始用GPT??? 哈喽,新年快乐! 好久没有更新了,之前暑期实习结束后呢就一直在忙学校里的事情,最近一个月呢,又回到了暑期实习的公司,继续实习,一月初到现在也快两个月啦。 今天想跟大家分享一些我在日常工作中使用ChatGPT的小tips。 第一个使用场景呢就是把gpt当一个搜索引擎去使用。刚刚进入职场,在开发工作中肯定会遇到一些自己并不熟悉的领域或者意料之外的error。通常遇到这种情况我就会去寻求GPT的帮助,你可以把你想知道的技术问题告诉他,他会以对话的形式去进行回答,并且如果他的回答中你有不理解的地方,还可以继续追问,不断追问的过程其实也是你对整个技术逐步深入了解的过程。我的mentor经常跟我说的一句话就是“拿到一个需求,不要急着去开发写代码,先去了解熟悉”。后来发现确实是这样的,不管是技术还是业务,梳理清楚了再去动手写代码,简直就是行云流水。所以有不熟悉或者有点模糊的问题都可以先去找GPT帮你解答! 第二点呢就是在写业务开发的时候,难免会遇到要自己去写一些通用的函数工具,或者是一些洗数据的脚本。比如要对一些时间日期格式处理成统一格式,涉及到一些字段类....