
java
文章平均质量分 76
jiaowoshangege
这个作者很懒,什么都没留下…
展开
-
几种时间格式化注解方式
时间格式注解说明原创 2022-06-16 18:13:53 · 9227 阅读 · 0 评论 -
Spring Cloud Stream 配置说明
本文对spring cloud stream 的相关配置,进行逐一注释说明,作为工具在需要的时候查看使用。配置中的输入(input)输出(output)通道可以换成自己的,详情如下spring: cloud: stream: #实例数量,默认1 instance-count: 1 #实例索引,从0到instanceCount-1,用于分区和使用kafka。在Cloud Foundry中自动设置以匹配应用程序的实例索引。 instance-inde...原创 2022-04-22 09:22:31 · 3884 阅读 · 0 评论 -
基于ZooKeeper实现分布式锁
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的架构通过冗余服务实现高可用性。因此,如果第一次无应答,客户端就可以询问另一台ZooKeeper主机。ZooKeeper节点将它们的数据存储于一个分层的命名空间,非常类似于一个文件系统或一个前缀树结构。客户端可以在节点读写,从而以这种方式拥原创 2020-09-04 15:22:02 · 149 阅读 · 0 评论 -
RedisTemplate用SETNX命令实现分布式锁
RedisTemplate用SETNX命令实现分布式锁使用SETNX命令获取分布式锁的步骤:C1和C2线程同时检查时间戳获取锁,执行SETNX命令并都返回0,此时锁仍被C3持有,并且C3已经崩溃C1 DEL锁C1 使用SETNX命令获取锁,并且成功C2 DEL锁C2 使用SETNX命令获取锁,并且成功ERROR : 由于竞态条件,C1和C2都获取到了锁以下面的步骤完全可以避免这种情况发生,看看C4线程如何操作C4使用SETNX命令获取锁C3已经崩溃但是仍然持有锁,所以Redis返回0给C原创 2020-09-04 15:05:44 · 1748 阅读 · 0 评论 -
基于redis的setnx()、get()、getset()方法的分布式锁
使用redis的setnx()、get()、getset()方法,用于分布式锁1. setnx(lockkey, 当前时间+过期超时时间) ,如果返回1,则获取锁成功;如果返回0则没有获取到锁,转向2。 2. get(lockkey)获取值oldExpireTime ,并将这个value值与当前的系统时间进行比较,如果小于当前系统时间,则认为这个锁已经超时,可以允许别的请求重新获取,转向3。 3. 计算newExpireTime=当前时间+过期超时时间,然后getset(lockkey, new原创 2020-09-04 15:02:36 · 208 阅读 · 0 评论 -
Java8 特性(四)—— 方法引用(::双冒号操作符)
Java8特性(四)—— 方法引用(::双冒号操作符)一、什么是方法引用? 简单来说就是一个Lambda表达式,方法引用提供了一种引用而不执行方法的方式,运行时,方法引用会创建一个函数式接口的实例。 @Test public void example1(){ //使用Lambda表达式 Consumer<Strin...原创 2019-07-25 16:30:25 · 252 阅读 · 0 评论 -
Java8 特性(三) —— Stream流式编程
Java8特性(三) —— Stream流式编程一、什么是Stream? Stream API借助Lambda表达式,提供串行和并行两种模式进行汇聚操作,并行模式能够充分利用多核处理器的优势,使用fork/join来拆分任务和加速处理过程。@Test public void example1(){ final List<String>...原创 2019-07-25 16:19:25 · 158 阅读 · 0 评论 -
Java8 特性(二)—— Lambda表达式
Java8特性(二)—— Lambda表达式一、Lambda表达式Lambda是Java8的一个语法糖,它其实是匿名函数,通过约定好怎么传入参数,怎么返回参数,由编译器负责参数类型的猜测并执行结果。二、Lambda表达式的基本语法 /** * Lambda表达式的基本语法 */ public void example(){ ...原创 2019-07-25 11:55:40 · 132 阅读 · 0 评论 -
Java8 特性(一)—— 函数式编程的四个基本接口
Java8特性(一)—— 函数式编程的四个基本接口一、基本函数式接口基本的函数式接口主要有四个:① Supplier<T>生产者:无输入,生产一个T类型的值;② Consumer<T>消费者:输入一个T类型的值,无输出;③ Function<T,R>函数:输入一个T类型的值,返回一个R类型的值;④ Predicate<T&g...原创 2019-07-25 11:44:55 · 256 阅读 · 0 评论 -
在Java中12个常见的语法糖
在Java中12个常见的语法糖本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,了解这些语法糖背后的原理语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法...转载 2019-05-30 11:47:44 · 138 阅读 · 0 评论