摘要:1.基于数据库表的实现 首先创建一张锁表 这里将方法名做唯一性约束 当我们想锁住某个方法时,可以根据方法名insert一条语句 这时如果有另外一个线程要调用支付的方法,由于违反了数据库唯一性的约束,会抛出异常,因此可以认定为拿不到锁,当拿到锁的方法执行完业务代码后,最后释放锁的时候 再执行一条del
阅读全文
摘要:1.前沿 上几篇文章分别介绍了数据库里面的锁及java里面的锁,大概了解到锁就是为了数据的一致性,防止出现数据错乱,但是单机环境下用java的syn和lock来实现多线程异步执行的同步性,能 有效解决高并发的问题,但是实际中大公司往往为了实现系统的高可用,会选择分布式集群部署。因此如果单纯的靠syn
阅读全文
摘要:1.阻塞锁 多个线程同时调用同一个方法的时候,所有线程都被排队处理了。让线程进入阻塞状态进行等待,当获得相应的信号(唤醒,时间) 时,才可以进入线程的准备就绪状态,准备就绪状态的所有线程,通过竞争,进入运行状态。 但是由于被调用的方法越耗时,线程越多的时候,等待的线程等待的时间也就越长,甚至于几分钟
阅读全文
摘要:首先引入概念: 可重入锁:广义上的可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提得是同一个对象或者class),这样的锁就叫做可重入锁, java里面最常见的锁,ReentrantLock和synchronized都是可重入锁 不可重入锁:不可重入锁,
阅读全文
摘要:package com.kuailezhuan;import org.apache.http.*;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.config.RequestCon
阅读全文
摘要:乐观锁 乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了。 实现方式1:在表中的数据进行操作时(更新),先给数据表加一个版本(version)字段,每操作一次,将那条记录的版本号
阅读全文
摘要:最近一直扫盲,作为一个编程工作者,其实涉及的东西很广,但也一直没有深入一些网络的概念。 内内网IP局域网,网线都是连接在同一个 交换机上面的,也就是说它们的IP地址是由交换机或者路由器进行分配的。而且每一个IP也是有所不同的,并且这些连接在同一个路由器上的电脑都可以通过internet连接共享的,也
阅读全文
摘要:上文我们已经利用websocket实现微信二维码支付的业务。 上述实现在单机环境中实现是没有什么问题的,无非就是客户端连接服务端,首先将连接的websocketsession存在一个map里面,当异步响应的时候, 根据流水号获取map里面对于的websocketSession,给指定的客户端发送消息
阅读全文
摘要:由于业务需要引入微信扫码支付,故利用websocket来实现消息推送技术。 实现大致流程:首先客户端点击微信支付按钮,触发微信支付接口,同时微信支付响应成功参数后,连接websocket客户端,此刻利用微信支付返回的参数生成一个二维码弹框,此时连接websocket 客户端时会发送一个指定的消息内容
阅读全文
摘要:前言 第三方支付对接最核心的概念首先就要搞清前台通知和后台通知(异步通知) 前台通知:譬如支付宝支付完成后,第三方会主动跳转回商户页面,这个地址由电商平台传递给支付宝方,支付宝方支付完后回主动跳转回这个地址,这属于前台通知,用于增加用户体验,而且支付宝只会执行一次,如果中间过程,用户付款完后立刻关闭
阅读全文