synchronized 作为使用得最多的多线程同步方案,可以说适用于绝大多数需要保证线程安全的场景。

但是关于 synchronized 是如何实现线程安全,背后使用了什么锁机制呢?以及使用synchronized 有什么别的注意事项?

阅读更多

交换两个的方式有很多种。最经典的借助一个临时变量,或是通过“异或”来是实现,当然还有 Python 中优雅的 a, b = b, a 。但 Python 的这种不借助临时变量实现交换实际是巧妙的利用了“操作栈”,这属于语言层面上的特性技巧,不再我们的讨论范围。

今天就来说一下,为什么我建议使用临时变量来实现交换,而不是使用“异或”。尽管这看起来并不“高级”。

阅读更多

都知道 Java 是通过垃圾回收来实现自动管理内存。

那么主流的到底有多少款垃圾回收器呢?不同的垃圾回收器使用到了什么垃圾回收算法,以及是如何定位“垃圾”对象的?如何通过 GC 日志来进行 JVM 调优?…

阅读更多

估计没有人能说出来自己是从什么时候开始接触音乐,有句著名言论说过 ”自由就像空气,只有在失去的时候才感到窒息“ ,其实音乐于生活也就大概是空气一样的存在。

在我意识里开始有音乐、歌曲这个概念,好像是在小学放学路上听到的旁边胖子哼的几句流行音乐。

以前的音乐,或者对于一个在广东粤语地区长大的孩子来说,可以直接点说是港乐。

阅读更多

虽然说在进行数据库设计的时候就应该尽可能的考虑以后的业务发展,但是有时候再严密的考虑也赶不上变化,同时设计太多没有意义的预留字段也不是一个好的方案。所以无法避免的,我们偶尔会遇到需要修改线上表结构的情况。

那么对于一个提供 7 * 24 服务的 InnoDB 的 MySQL 而言,以什么方式修改线上表结构才是安全的呢?

阅读更多

分布式系统通常会存在单个的微服务故障问题,而复杂业务中往往涉及层层调用,当其中一层或者几层服务发生故障,最终可能会导致整个系统故障,即产生服务雪崩效应。

Hystrix 的作用是针对微服务故障发生时进行服务降级、服务熔断。

阅读更多

今年早些时候,阿里分享了其官方的 Java 开发手册,宣称是阿里长期以来的经验总结,大概翻看了一遍确实很有参价值。

如果每个团队开发在开发之初订立这样的一份开发准则,先不说 review 和对接时间会大大减少,效率提高。至少看风格统一的项目心情都要好上不少。

阿里对外发布这样一份开发手册,看起来是不满足于规范团队,而是想为了增强社区代码规范性作贡献。

阅读更多

对于微服务系统而言,服务注册、服务发现功能必不可少。

Spring Cloud 作为帮助快速构建分布式系统的框架,内置了 Eureka 作为注册中心组件。

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×