欢迎来到这里!
见证一个闷骚后端的全栈之路
联系我

按条件生成随机编号

By DerekChou  /     2018/03/03 20:11   /    随机号

背景顾客的编号(卡号)是9位的,便于记忆的一组数字,这个编号需要满足一个商家下唯一即可但为了安全性,需要随机,要很难找到规律方案方案一利用随机数生成随机数,然后检查数据库表中商家下的编号是否存在,存在重新计算随机数,不存在则使用此编号效率低,且有碰撞风险方案二每次取表中商家下最大编号:selectmax(numbe......

你想开源,该怎么选开源许可证?

By DerekChou  /     2018/02/28 13:29   /    开源 许可证

世界上的开源许可证有很多,我们常看到的有MIT、GPL、Apache等,他们对不同方面有不同的要求,详细说明如下图,是不是看着很头疼,不过没关系,下面一个图可以让你轻松选择一款适合你的开源许可证:

消息队列和数据库的分布式一致性

By DerekChou  /     2018/02/20 23:08   /    分布式  一致性  消息队列

场景一个操作,需要更改数据库并发送到一个消息队列供其他服务消费。现在要保证数据库和消息队列的原子性,如何做?方案一public voidtodo(){//1 数据库更新//2 发送消息给MQ}或者public voidtodo(){//1 发送消息给MQ//2 数据库更新}这样做不能保证一致性,因为第二步操作都有失败的风险。方案二@Transactionalpublic voidt......

单热点秒杀的优化(基于搜狗游戏抢礼包)

By DerekChou  /     2018/02/19 13:22   /    高并发  秒杀

针对秒杀的文章网上已经很多了,这里简单梳理下思路就是:1.系统独立部署(避免影响正常业务)2.页面独立设计(避免过多访问应用服务器)3.预先购买或租赁带宽(以备突发流量)4.隐藏下单URL(避免秒杀前被下单)秒杀前不能点击下单(避免秒杀前被下单)(引用js,返回内容包含是否到时间、下单地址等)实现js不缓存的方式......

js跨域问题完整总结

By DerekChou  /     2017/06/06 13:09   /    javascript  跨域

什么是跨域问题?前端调用后端的一个接口,如果不是同一个协议、域名和端口号,又是XHR请求,就会产生跨域问题。如果浏览器没做限制,也就没这个问题了:比如给chrome启动时设置参数--disable-web-security解决方案JSONP(JSONwithPadding)方案利用script标签的请求资源可以跨域的特点来伪装成一个非XHR请求类型。前台jsonp......

Linux下性能分析工具汇总

By DerekChou  /     2017/04/12 22:07

一张图梳理linux下基本工具

没覆盖这些,别说自己是全栈工程师

By DerekChou  /     2017/03/30 16:16   /    全栈

现在越来越多的人给自己贴“全栈”的标签,自己觉得很牛叉,大多数情况下别人也不会太反驳,但是这里面有个误区,一般人会觉得自己搭建个网站,就算是全栈了,其实不是。今天看到这个图,跟大家分享一下,以后再有人在你面前炫耀自己是全栈的时候,你就拿这些来考考他,90%的人会露馅。

古人云,云之云云

By DerekChou  /     2017/03/29 18:35

1、古人说:兔子不吃窝边草;可古人又说:近水楼台先得月!2、古人说:宰相肚里能撑船;可古人又说:有仇不报非君子!3、古人说:人不犯我,我不犯人;可古人又说:先下手为强,后下手遭殃!4、古人说:男子汉大丈夫,宁死不屈;可古人又说:男子汉大丈夫,能屈能伸!5、古人说:打狗还得看主人;可古人又说:杀鸡给猴看!6、古......

实现Mysql跨机房高可用集群方案

By DerekChou  /     2017/03/26 01:56   /    mysql  mycat  canal  otter

Mysql的主从互备、读写分离,相信大家都做过,会解决一部分初中级安全问题,但是到了再大一点的业务线的时候就搞不定了,所以进一步开机房高可用集群就诞生了。这里以A、B两个机房为例,以下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但整体思路不变):这里解释几个开源框架名词:Mycat:管理mysql集群的......

使用Druid加密数据库密码

By DerekChou  /     2017/02/07 10:35   /    Druid  JDBC

javaweb项目一般都用到了数据库连接文件,如果一个有服务器读权限的人看到了jdbc.properties或者applicationContext.xml基本上就可以拿到数据库访问密码了,这样很危险!加密数据库密码的方式有很多,有的是继承类使用硬编码的方式转换,有的是加盐值的方式加密,这里介绍一个比较简单的方式:用druid自带的加密工具无侵入......