内容简介:阿拉伯数转罗马数、LinkedIn的高效代码审查技巧、MySQL JSON 的操作、优惠券存储问题。Problem:毫无思路,看了一个
阿拉伯数转罗马数、LinkedIn的高效代码审查技巧、MySQL JSON 的操作、优惠券存储问题。
Algorithm
Problem: Integer to Roman
毫无思路,看了一个 简单的思路
public static String intToRoman(int num) { String M[] = {"", "M", "MM", "MMM"}; String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}; String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}; String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; return M[num/1000] + C[(num%1000)/100] + X[(num%100)/10] + I[num%10]; }
Review
理解修改原因
每次代码更改提交都应包含一个设计概述,简要说明更改背后的动机。这样避免了从源码中去推测其更改意图,提高 Code Review 的质量和速度。
给出正面反馈
在进行 Code Review 时不应是仅仅只对代码中的问题进行反馈,如果遇到优雅的代码应该指出原因,提倡大家学习。这样可以激励开发人员,有助于提高团队的编码水平。
言简意赅的 Review 注释
不管是正面还是负面的反馈,审查人的注释都应该是言简意赅的,但前提是开发人员能理解。
对提交者表示感谢
不管结果如何,对努力工作的人表示感谢,这将出培养强大、积极进取的团队。
删除无用的注释
如果你认为这个注释是无效的,请删除它。正视 Code Review,它是帮助开发提高能力的 工具 而不是徒增工作复杂度的琐事。
保证充分的测试
每次代码更改提交都需要强制性的完成其测试。对于一些复杂的情况或者自动测试无法覆盖到的地方,需要进行手动测试,并提供有关测试场景和输出的信息。
Code Review 文化
在进行 Code Review 时有明确的期望、示例注释、充满积极有吸引力的文化是避免冗长、耗费精力的好方法。
总之,拥有良好的 Code Review 流程有助于提高代码质量、团队学习、知识分享。当团队每个成员都意识到,我写的代码会被大家看到,就算现在随便写,在 Code Review 时,还是会被提出来返工的时候。开发人员都会尽力一次性写出更好的代码。当 Code Review 成为日常习惯,团队会每天都会收到正面的反馈,这样团队不可同日而语。
Tip
MySQL 通过 JSON_CONTAINS
判断 JSON 中是否存特定 KEY 的 JSON 对象。
mysql> set @j = '{"c":{"d":4}}'; mysql> SELECT JSON_CONTAINS(@j,'{}','$.c'); +------------------------------+ | JSON_CONTAINS(@j,'{}','$.c') | +------------------------------+ | 1 | +------------------------------+ msyql> SELECT JSON_CONTAINS(@j,'{}','$.d'); +------------------------------+ | JSON_CONTAINS(@j,'{}','$.d') | +------------------------------+ | 0 | +------------------------------+
提取嵌套对象中的值
mysql> SELECT JSON_EXTRACT(@j,'$.c.d'); +--------------------------+ | JSON_EXTRACT(@j,'$.c.d') | +--------------------------+ | 4 | +--------------------------+
Share
最近有个优惠券的需求,要求是给用户发优惠券。如果按照原来用关系表的方法来存用户优惠券信息的的话,那数据量成倍数增长。假如有 10 万用户,发 1 张优惠券就 10 万条数据,发 2 张就 20 万条数据。
我们使用了 MySQL 5.7 新加入的 JSON 类型来解决这个问题。
一个用户所有的券都存在一个 JSON 里面,格式如下:
{ "coupon_01":{ "status":0,//使用状态 "code":"12345"//优惠券券码 }, "coupon_02":{ "status":1, "code":"12345" } }
以优惠券的唯一标识(我们用的优惠券主体的 CODE)作为优惠券信息 JSON 对象的 Key。这样存储的话,每次发送的优惠券只是在 JSON 中追加一个优惠券信息的 JSON 对象即可。
但是这样设计有几个问题:
-
同一张优惠券没有办法给同一人发多次
-
汇总所有优惠券使用情况比较麻烦
所以当没有这些需求的时候,可以考虑这么设计。
如果你有更好的设计或想法请告诉我一下。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
MATLAB数值计算
莫勒 / 喻文健 / 机械工业出版社 / 2006-6 / 35.00元
《MATLAB数值计算》是关于数值方法、MATLAB软件和工程计算的教材,着重介绍数学软件的熟练使用及其内在的高效率算法。主要内容包括:MATLAB介绍、线性方程组、插值、方程求根、最小二乘法、数值积分、常微分方程、傅里叶分析、随机数、特征值与奇异值、偏微分方程。《MATLAB数值计算》配备大量MATLAB例子源代码及习题,其中涉及密码学、Google网页分级、大气科学和图像处理等前沿问题,可以帮......一起来看看 《MATLAB数值计算》 这本书的介绍吧!