
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
无论在微服务还是单体程序中,防止接口二次提交都是必须要解决方法,现在已经有成熟的解决方案,比如采用点击一次后让按钮置灰,等请求结束后再可以点击。当然后端也要解决这个问题。采用AOP的方式防止接口二次提交思路以唯一标识为key,任意值为value,存入redis(本地缓存也可以),并设置一个合理的过期时间。将注解用在新增、修改等接口上。每次调用时根据key判断,缓存是否存在,存在则抛出...
Example查询翻译过来叫“按例查询(QBE)”。是一种用户界面友好的查询技术。 它允许动态创建查询,并且不需要编写包含字段名称的查询。 而且按示例查询不需要使用特定的数据库的查询语言来编写查询语句。官方文档有一个优劣势的说明:优势:可以使用动态或者静态的限制去查询在重构你的实体的时候,不用担心影响到已有的查询可以独立地工作在数据查询API之外劣势:不支持组合查询,比如:fi...
JVM(Java Virtual Machine,Java虚拟机)JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语..
分布式锁的特性互斥性:和我们本地锁一样互斥性是最基本,但是分布式锁需要保证在不同节点的不同线程的互斥。可重入性:同一个节点上的同一个线程如果获取了锁之后那么也可以再次获取这个锁。锁超时:和本地锁一样支持锁超时,防止死锁。常见的分布式锁MySQLzookeeperRedis基于MySQL实现分布式锁基于zookeeper实现分布式锁基于Redis实现分布式锁...
什么是微服务注册中心?在上一篇文章《Spring Cloud介绍》中,提到有一句话:微服务框架可以为这些微小的服务提供统一的管理和必要的工具,使它们更易于开发和维护。“统一的管理和必要的工具”正是微服务框架与单纯地“分布式应用”的区别所在。我们在后续的文章也主要是介绍这样一些Spring Cloud提供的管理微服务的组件和工具。微服务注册中心最主要的功能正是用来“管理”微服务的。它相当于一个...
背景在微服务开发中,经常涉及到多线程需要共享变量的时候,传统的解决方案就是就是使用互斥锁,使得在每个时刻只能有一个线程访问该变量,好处就是便于编码(直接使用 synchronized 关键字进行同步访问),但是缺点也明显,这种方法增加了线程间的竞争,降低了效率。本文将以另一种思路去解决这个问题,也就是使用ThreadLocal。ThreadLocal介绍ThreadLocal作为JD...
ZooKeeper 提供了分布式数据的发布/订阅功能。一个典型的发布/阅模型系统定义了一种一对多的订阅关系,能够让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使它们能够做出相应的处理。在 ZooKeeper 中,引入了 Watcher 机制来实现这种分布式的通知功能。 ZooKeeper 允许客户端向服务端注册一个 Watcher 监听,当服务端的一些指定事件
项目中使用了Lombok,这次升级之后,出现了如下问题:Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance ofXXXXXXX(no Creators, like default construct, exist): can not deserialize fro...
用JAVA8也好久了,在这里记录几个比较常见也是自己常用的新特性,与大家进行分享。Lambda表达式Stream APIDate APIOptional API接口的默认方法和静态方法Lambda表达式它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理。最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成。Lambda
黄勇( 博客),从事近十年的 JavaEE 应用开发工作,现任阿里巴巴公司系统架构师。对分布式服务架构与大数据技术有深入研究,具有丰富的 B/S 架构开发经验与项目实战经验,擅长敏捷开发模式。国内开源软件...