首页
学习
活动
专区
工具
TVP
发布

java达人

专栏作者
284
文章
425657
阅读量
90
订阅数
分布式系统模式12-Generation Clock
来源: https://martinfowler.com/articles/patterns-of-distributed-systems/
java达人
2021-01-18
5860
武林外传—阿沅,这是依赖传递呀!
武三通最近收养了一个义女,叫阿沅,此女自幼父母双亡,十分孤苦,武三通对他一直疼爱有加,不光教她武术,还教她编程,想着日后等阿沅长大了,也可以当个程序媛什么的,作为谋生的本领。
java达人
2018-12-06
3430
武林外传—武三通的zuul之惑
渔樵耕读四人紧赶慢赶地开始了网关的设计和开发,他们倒也算劳逸结合,中间休息了,或到山涧里徒手抓鱼,或放开喉咙唱着歌,或摇头晃脑地吟几首诗,一日晚间,武三通躺在牛背上,看着天上的云层发呆。
java达人
2018-11-08
7910
Spring声明式事务的一个注意点及原理简析
以前我们说过,Spring通过ThreadLocal机制解除了事务管理模块与数据访问层的紧密耦合,提高了模块的可重用性,也保证了多线程环境下的对connection资源的有效管理,实现了线程安全。而要将事务管理代码从整个业务逻辑中抽离出来,提供系统性的服务,就要使用Spring aop,在使用过程中,我们千万不可忘记了其动态代理的实质,不然在使用过程你会不知不觉掉进陷阱里,请看以下例子:
java达人
2018-10-25
7740
多线程设计模式解读6-single threaded Execution模式(附分布式环境下的操作)
Single Threaded Execution模式主要是用于确保同一时间内只能让一个线程执行处理,说通俗点就是对synchronized的标准化使用方式,这是比较基础的,所以我们前面重点介绍下如何保证同一个Jvm进程内的多线程同步,后面扩展开来,保证多个Jvm进程间多线程同步(分布式环境)。两者有很大的相似性。
java达人
2018-10-25
6790
多线程设计模式解读5—Immutable Object(不可变对象)模式
前面讲了Producer-Consumer模式,它有许多变种,我们以后会讲。我们将接着了解另外一种分支的设计模式,前面所讲的所有的模式,都是要用到锁的,而锁是会带来一些额外的开销和问题的,那么能不能不通过锁,实现多线程环境下的线程安全呢?其中一个思路就是通过Immutable Object(不可变对象)模式。它使用对外可见的不可变对象,天生具有线程安全的“基因”。因为与多线程的原子性、可见性相关的问题(如失效数据、丢失更新操作、对象处于不一致状态等)都与多线程试图同时访问同一个可变状态相关,若对象状态不可变,那这些问题也就不存在了。
java达人
2018-10-08
6770
多线程设计模式解读3—Two-phase Termination(两阶段终止)模式
有时候,我们希望提前结束线程,但安全可靠地停止线程,并不是一件容易的事情,如果立即停止线程,会使共享的数据结构处于不一致的状态,如目前已经废弃使用的Thread类的stop方法(它会使线程在抛出java.lang.ThreadDeath之后终止线程,即使是在执行synchronized方法的时候)。更好的做法是执行完终止处理,再终止线程,即Two-phase Termination,两阶段终止模式。
java达人
2018-10-08
8000
多线程设计模式解读2—Promise(承诺)模式
上次我们讲到多线程设计模式的Guarded Suspension(保护性暂挂模式),Guarded Suspension是条件未满足时线程一直处于等待状态,直到条件满足才继续运行,而在Promise模式中,Promise的getResult方法获取异步任务结果,如果任务未执行完毕,就一直处于等待状态,可以说,Promise模式是Guarded Suspension模式的一个应用实例,它有两个重要角色:Promise,主要用于包装异步任务处理结果;Promisor,用于对外提供返回Promise的异步方法,并启动异步任务。而这里Promise可以直接用JDK 中的Future实现。
java达人
2018-08-20
6270
多线程设计模式解读1—Guarded Suspension(保护性暂挂模式)
大家好,今天我们给大家介绍一个多线程设计模式的一个概念,我们平时业务代码写得比较多,因此,如果刚上手写比较复杂多线程代码,很有可能会埋下一些坑,而这些坑一时之间都是很难发现,需要经过严格测试,甚至上线运行之后才会在生产环境显现出来。大家应该听过面向对象编程的23种设计模式吧,它就是在特定场景下提供针对某一问题的可复用解决方案,而多线程设计模式是在多线程编程领域的设计模式。今天给大家介绍其中一个设计模式:Guarded Suspension(保护性暂挂模式)。
java达人
2018-08-20
8970
一段解决kafka消息处理异常的经典对话
有一天,卡尔维护的购买系统发生了一个奇怪的异常,从日志里看到,购买后的任务处理竟然先于购买任务执行了。“不可能啊,按照代码的顺序,一定是先执行购买流程,再发送消息到kafka,最后消费端接收到消息后执行购买后的一些善后任务。从A到B到C,顺序清清楚楚。” 于是,他请教了马克,马克眯着眼睛细看了一会,道:"问题是不是出在这段@Transaction注解上?"
java达人
2018-07-31
1.3K0
以太坊:比特币+一切可能
来源:https://medium.com/@ConsenSys/ethereum-bitcoin-plus-everything-a506dc780106
java达人
2018-07-31
8650
分分钟了解区块链和挖矿
可能比较难懂,这次发一个简版的图文并茂的视频,方便大家理解。里面有数字签名方面的内容,不了解的可以先看这里:数字签名是什么?
java达人
2018-07-31
6140
Kafka最佳实践
作者:Sriharsha Chintalapani, Jay Kumar SenSharma 译者:java达人 来源:https://community.hortonworks.com/articles/80813/kafka-best-practices-1.html
java达人
2018-07-31
1.3K0
从三个直观的方面了解以太坊
在以太坊之前,存在着比特币,但比特币有一些缺陷,比如它只有很少的指令,并不符合图灵计算的标准(没有循环)。于是一位大神便想再创造一个加密货币系统,以支持未来可以想象到的所有应用,即图灵完备。
java达人
2018-07-31
4470
通过比特币了解以太坊(1)
作者:Mike Goldin 图标:Eva Shon 译者:java达人 来源:https://media.consensys.net/time-sure-does-fly-ed4518792679 (点击阅读原文前往) 区块链 区块链基本上是状态变更的公共记录。任何人都可以审查区块链随时间变化的状态,并通过数学确定性证明这些交易是按照区块链的规则进行的。以比特币为例,这些规则很简单:比特币不能被重复使用,它们的来源必须追溯到一个对有效区块的挖掘(更多关于挖掘的内容请看后续)。为了开始我们的旅程,我建议
java达人
2018-03-26
1K0
关于会SSH框架是低薪的代名词这一说法的评论
上次在iteye(以前叫javaeye,上面的大牛很多,竟然被烂的csdn收购了,想不通)上看了一篇女Java软件工程师写的文章,说的是会SSH框架是低薪的代名词,呵呵,我不太赞成这个观点的。 文章分析现在随便在街上逮个JAVA软件开发者,都说精通SSH三大框架,不管是应届生还是老鸟的个人简历上都写着精通SSH框架,MVC思想。貌似会个框架整合就牛逼哄哄的,且不论这些框架使用和理解怎么样,Java基础怎么样呢,面向对象思想到不到家呢。听说仅仅精通Javascript的在IBM的年薪是25w,这是我们Java
java达人
2018-02-01
5940
grpc部署初体验
grpc是google开源的RPC框架,基于http2协议和ProtoBuf序列化机制,关于它的使用实例在官方文档已经有比较详细的介绍,在此仅对安装部署过程作一番总结。 要使用grpc进行正常的开发运
java达人
2018-02-01
2K0
List的四张面孔(泛型)
编程的时候,能在编译时发现并修改错误最好,等上线运行时报错才解决,则属于生产事故,且找到bug的位置需要花费更多的时间和精力。泛型是java1.5以后出的内容,运用泛型,指定集合中的对象类型,你可以在编译时发现类型不匹配的错误,并且取数据时不需要手动强转类型。 我们最常用的集合类之一便是List,假如我们想让这个List只放Integer类型的元素,可以这样创建集合类: List<Integer> list = new ArrayList<Integer>; List.add(new Integer(88
java达人
2018-01-31
5420
sum(x) over( partition by y ORDER BY z ) 分析
1. 从最简单的开始   sum(...) over( ),对所有行求和   sum(...) over( order by ... ),和 = 第一行 到 与当前行同序号行的最后一行的所有值求和,文字不太好理解,请看下图的算法解析。 with aa as( SELECT 1 a,1 b, 3 c FROM dual unionSELECT 2 a,2 b, 3 c FROM dual unionSELECT 3 a,3 b, 3 c FROM dual unionSELECT 4 a,4 b, 3 c
java达人
2018-01-31
1.1K0
linux(centos) 项目部署阶段相关命令汇总
1、ssh免密码登陆 主要命令 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys-->添加公钥 service sshd restart -->重启ssh服务 参考链接: http://jingyan.baidu.com/article/2fb0ba4043124a00f2ec5f0f.html 2、查看系统相关信息: uname -a 查看OS详细信息 file /bin/ls 显示系统程序信息,就能看出多少位 获得机器字长 getconf LONG
java达人
2018-01-31
6650
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档