2 航海到IT的转变,梦想一直在路上

尚未进行身份认证

我本身是一海员,每天大海为伴,过着与互联网不搭边的生活,创业者,创业梦,一直尝试新鲜事物的我,冒然走向了互联网事业,摇身变为IT的一员,追梦人,追梦路,一直在路上.....

等级
TA的排名 1w+

分布式架构:并发重复请求和幂等场景技术实现总结

概念重复请求是指一个请求因为某些原因被多次提交,场景简述如下:用户快速多次点击按钮 Nginx失败重试机制 服务框架失败重试机制 MQ消息重复消费 第三方支付支付成功后,因为异常原因导致的多次异步回调;幂等性是指同样的请求参数,多次请求返回的结果相同。一般是因为重复请求导致的重复操作等,但重复请求不只包含并发时的重复请求还包括并并发情况下的业务重试。基本原理实现幂等需要两...

2019-10-14 09:34:28

项目问题:Synchronized锁在Spring事务下的线程不安全问题:

开启10000个线程,每个线程给员工表的money字段【初始值是0】加1,没有使用悲观锁和乐观锁,但是在业务层方法上加了synchronized关键字,问题是代码执行完毕后数据库中的money字段不是10000,而是小于10000问题出在哪里?Service层代码:SQL代码(没有加悲观/乐观锁):用1000个线程跑代码:简单来说:多线程跑一个...

2019-10-14 09:26:46

springboot单机项目的部署流程

项目部署:1.打包:跳过单元测试:mvncleanpackage-Dmaven.test.skip=true2.拷贝到服务器的目录:scptarget/sell.jar(本地目录)root@192.168.30.113:/opt/javaapps3.启动并且指定修改端口和修改环境java-jar-Dserver.port=8090sell.jar--修改端口...

2019-09-20 13:19:08

限流的两种算法以及相关的实现方法

令牌桶算法限流限流限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。常用的限流算法有令牌桶和和漏桶,而Google开源项目Guava中的RateLimiter使用的就是令牌桶控制算法。在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流缓存:缓存的目的是提升系统访问速度和增大系统处理容量 降级:降级是当服务器压力剧增...

2019-09-17 21:22:22

redis分布式锁

importorg.apache.commons.lang3.StringUtils;importorg.springframework.data.redis.core.StringRedisTemplate;/***@描述:Redis做分布式锁,利用redis的setnx(SETifNoteXists)命令和getset命令,即下面代码中的方法setIfAbse...

2019-09-16 21:35:03

synchronized关键字的底层实现

1.从两个方方面去考虑:1.编译以后,由.java文件变为.class文件.因为本身是一个对象锁,所以编译以后是字节码monitorentor和monitorexit,中间是执行业务逻辑的,然后获取的锁就是创建对象的时候,默认的会有一个monitor锁的权限,从用户态到内核态的转换jvm:HotSport...

2019-09-09 15:52:02

关于枚举用法的总结

最简单的枚举使用方式:/***季节枚举类*CreatedbySYJon2017/5/1.*/publicenumSeasonEnum{SPRING,SUMMER,AUTUMN,WINTER}用法举例:/***CreatedbySYJon2017/4/30.*/publicclassAppTe...

2019-08-23 18:04:22

git 如何把分支代码合并到master主分支上

1.首先切换到分支;gitcheckouthellomonkey2.使用gitpull把分支代码pull下来;gitpull3.切换到主分支;gitcheckoutmaster4.把分支的代码merge到主分支;gitmergehellomonkey5.gitpush推上去ok完成,现在你自己分支的代码就合并到主分支上了。gitpush总结:同...

2019-08-23 17:50:44

java如何消除太多的if else判断?

if..elsepublicintcalculate(inta,intb,Stringoperator){intresult=Integer.MIN_VALUE;if("add".equals(operator)){result=a+b;}elseif("mu...

2019-08-23 14:08:44

Git 从master拉取代码创建新分支

从master拉取新分支并push到远端开发过程中经常用到从master分支copy一个开发分支:1.切换到被copy的分支(master),并且从远端拉取最新版本$gitcheckoutmaster$gitpull2.从当前分支拉copy开发分支$gitcheckout-bdevSwitchedtoanewbranch'dev'3.把新建的分...

2019-08-23 09:59:24

java实现两个有序单链表合并

遍历方法递归非递归节点类/***@auther:lawt*@date:2018/11/408*@Description:结点信息*/publicclassNode{/***为了方便,这两个变量都使用public,而不用private就不需要编写get、set方法了。*存放数据的变量,简单点,直接为int型...

2019-08-14 18:12:24

采用redis token,分布式锁的接口幂等性实现

每一次进行幂等校验之前先获取token,因为token的时效性只有1次,我们每次获得的token在幂等操作后就无效了,所以一个token不需要长期保存在redis中。@RestControllerpublicclassTokenController{@AutowiredprivateRedisServiceredisService;@GetMapping("/users-a...

2019-08-12 16:00:54

RocketMQ解决数据一致性的问题

整个系统架构的演变过程:串行---->并行------>MQ解耦执行

2019-08-12 10:32:35

用jetty的方法启动一个SpringMvc的项目

/***http服务一般都是在java容器中进行调用的,比如tomcat,war包*jetty的启动*/publicclassUserRestServer{publicstaticvoidmain(String[]args)throwsException{Serverserver=newServer(8080);...

2019-08-08 10:52:25

RocketMQ原理的探索

2019-08-07 11:31:37

前后端分离-统一返回给前端的json数据格式(RestApi)

packagecom.zhoujianpeng.project.response;publicclassRestResponse<T>{privateintcode;privateStringmsg;privateTdata;/***分别提供返回成功和失败的不同的方法*也就是说返回的数据...

2019-08-02 10:14:52

从java程序的角度理解jvm(欢迎指点)

publicclassMath{publicstaticfinalIntegerCONSTANT=666;publicintmath(){inta=1;intb=2;intc=(a+b)*10;returnc;}publicsta...

2019-07-30 14:44:03

LinkedList源码探索(-)

1.首先很简单,明确链表的特征:链表本身是由一系列的节点组成,而这个节点,就是链表中的元素.每个节点包含前后指针;也就是说本身是由三部分组成的,具体的看下面的代码:两个构造函数:/***Constructsanemptylist.*/publicLinkedList(){}/***Constructsalistcontaining...

2019-07-29 13:41:05

Hashmap源码探索,如何确定数组的下标(二)

源代码publicVput(Kkey,Vvalue){returnputVal(hash(key),key,value,false,true);}staticfinalinthash(Objectkey){inth;位扰动--->充分利用数组的空间,避免产生hash碰撞,所谓的hash碰撞就是同一index出现了...

2019-07-26 14:52:13

HashMap源码探索(-)

我们经常说:Hashmap的底层是通过数组+链表的形式的构成的,那么是怎么样的数组和什么样的链表构成的,并且这个数组有什么样的特征,满足什么样的条件,这个链表又有什么样的特征呢?我们经常说key的唯一性,那么为什么会有key的唯一性,这样的问题还有好多看源码:1.是怎么样的一个数组:Node相关的一个数组,这个数组具有什么样的特点:1.默认大小:/***...

2019-07-26 14:05:55

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。