自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sam_Deep_Thinking

努力深入思考和总结

  • 博客(12)
  • 资源 (1)
  • 问答 (12)
  • 收藏
  • 关注

原创 使用Netty的ReplayingDecoder解决拆包和粘包问题

概述在自定义解码器处理半包消息 分隔符解码器处理半包问题 以回车换行结尾的消息如何处理半包问题 三篇文章中,笔者介绍了在Netty如何解决拆包和粘包问题,其中自定义解码器处理半包消息 里面介绍的方法是在线上实际用过的,经过了超级大流量的验证,挺靠谱的。下面再介绍另外一种解决半包问题的方法,虽然我没实际在线上用过,但是可以当成是一种知识补充。直接上代码在...

2018-03-30 09:31:34 6200 6

原创 小程序应用,获取微信用户的unionid

概述关于unionid的作用,可以先看我之前写的小程序中的unionid。那么unionid如何获取呢?有两种方式:1、通过wx.getUserInfo(); 2、通过jscode2session接口。使用getUserInfo方法我们可以在小程序端使用如下代码: wx.getUserInfo()获取到用户的信息,用户信息里面会包含encrypted...

2018-03-26 13:28:37 2937

原创 生成无限制的微信小程序码

概述现在除了用二维码之外,微信还可以为我们生成小程序码,大概长这个样子。 如果要生成无限制的小程序码,需要几个步骤 1、小程序某个页面的地址,也即是指定page参数的值; 2、获取access_token; 3、指定scene参数的值; 4、调用getwxacodeunlimit接口,并将返回结果存储到一个图片里。page参数page参数的值都是以pages开...

2018-03-25 20:19:48 16528 5

原创 小程序中的unionid

概述一家公司可以到微信平台上注册为一个开发者主体,一个主体下可以有多个公众号、小程序等。下面以小程序作为例子来说清楚unionid。开发者主体下有多个小程序一些小型的电商公司,会用小程序来开发商城,但是为了拉新用户,通常还会开发出像福袋、抽奖等小程序。现在假设有这样的场景,在同一个开发者主体下,一个微信用户从福袋小程序中获得了一张优惠券,想到小程序商城这个小程序...

2018-03-25 16:05:28 4937

原创 能不用事务就尽量别用

概述以前在公司里,有个牛人对俺说: 事务就是个垃圾,能不用就尽量不用。当时我刚从传统行业切换到互联网行业,对这个牛人说的这句话是嗤之以鼻的,怎么可能不用事务呢?后来随着开发了多个高并发应用后,才知道这个牛人说的是对的。下面说两个亲身经历的案例来说明这个问题。库存扣减接口(写事务)当时我们有个业务,在购物车阶段的时候,就开始占用库存了,这个库存占用接口的流量...

2018-03-25 12:25:04 5671 3

原创 微信用户访问小程序的登录过程

概述 当你开发完了一个小程序并部署上线后,某个微信用户第一次访问这个小程序的时候,会弹出一个授权界面,用户可以选择是否使用微信登录,如果选择是,则直接进入到小程序。当你第二次进入该小程序的时候,你会发现授权界面不会弹出来了,直接就进入小程序了。这个过程看起来非常的简单,但其实实现起来相当的麻烦和繁琐。涉及到会话、安全、验证等各种各样的问题。下面笔者介绍一下实现这个登录过程的思路。...

2018-03-24 22:55:44 18857 5

原创 UUID几个缺点

第一个UUID字符串占用的空间比较大。第二个索引效率很低。第三个生成的ID很随机,不是人能读懂的。第四个做不了递增,如果要排序的话,基本不太可能。...

2018-03-21 10:47:45 10297

原创 IDEA 2017.3版本下Mybatis plugin 3.53安装使用

IDEA版本 2017.3mybatis插件版本 Mybatis plugin 3.53下载地址: http://plugins.jetbrains.com/plugin/7293-mybatis-plugin破解打开IDEA的插件设置界面,选择【Install plugin from disk】后,点击确定按钮。关闭IDE...

2018-03-19 10:13:29 4278 11

原创 业务流水号(交易号)生成方法

概述在大流量下订单号生成方法一文中介绍了如何生成不重复的订单号,主要原理是利用数据库自增ID。但是像业务流水号之类的,其实不利用数据库也是可以的,只是要保证唯一性,做起来不太好做。下文介绍一种方法来生成流水号,如果不是那种特别变态的调用量,产生重复的机会还是很少的。但是如果是那种无论如何都不能重复的,不建议用本文的方法了。流水号生成规则 时间+四位的机器号+10位的...

2018-03-09 12:56:16 28176 3

原创 大流量下订单号生成方法

流量不大的情况下,订单号生成很久之前写过一篇利用DB生成业务主键的文章,介绍了利用DB来生成唯一的ID。当时便是用这种方式来生成订单号的。只不过拿到ID后,根据订单业务,简单加个前缀而已。@Servicepublic class KeyGen{ @Autowired private KeyGenRepository keyGenRepository; publi...

2018-03-08 12:30:02 4672

原创 创建订单实现幂等的一点思考

幂等的概念大部分文章都会说,同一个操作,进行多次操作后,结果是一样的,就可以说这个操作是支持幂等的。感觉不太准确,比如一个http get操作,可能每次的结果都不一样,但是其实是幂等的。看了很多文章,感觉下面的定义比较准确: 一个操作如果多次任意执行所产生的影响(或者叫副作用),都是相同的。创建订单的幂等如果一个用户分两次下单,购买的商品都是一样的。第一次...

2018-03-06 13:55:49 8115

原创 索引表和ES的一点点思考

索引表设计在电商项目中,物理库存系统是个极其重要的系统,订单支付后,就会开始来占用物理库存。一般情况下,库存系统都是要分库的,因为主要的操作是写操作,例如占用/释放/取消等写操作。使用分库可以降低数据库写的压力。尽管写操作为主,但是读操作也是有的。比如说,库存占用的时候,得先查询是否有库存,而这个查询操作并不都会带上分库因子(用于路由到具体的某个数据库),而是一些比较宽松的查询条件,这些查...

2018-03-01 12:22:47 13414 35

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除