浅析JDK1.7新增的同步工具Phaser

JDK提供的同步功能经历了几个时代,JDK1.4之前的实现基本还处于石器时代,其提供的线程方法suspend, resume, stop等可能会产生死锁,到了JDK1.4已经不再提倡使用这些方法,所以,并发程序的开发人员只能使用Object类提供的wait/notify, 以及语言级别的synchronized关键字,以及可以保证内存可见性的volatile,这个时代基……

Mysql复制机制

本文部分文字来自互联网,对互联网上的一些资料进行总结并重新整理,使之成为一篇独立的文章,帮助读者理解Mysql复制模式的实现机制,从互联网拷贝的一些文字已经不记得出处,望读者和原作者见谅。 引言 Mysql复制根据数据一致性可以分为同步,异步,和半同步,顾名思义,同步就是主从数据库在一个事务中完成更新操作,……

为Java 8中并行流式计算指定定制化的线程池

本文为译文,原文连接:How to specify thread-pool for Java 8 parallel streams 对流式计算的支持是Java 8的一个新特性,并行流式计算更是倍受好评的一大功能。这些功能使大规模流式计算的实现变得简单。 例如:如果我想找到1亿以内的所有质数,在Java 8中我可以这样写: range(1, 1_000_000).parallel().filter(Primes……

浅析JDK1.7提供的并行计算框架ForkJoin

本文部分段落和图片来自互联网。 引言 在当今的计算领域,摩尔定律由于无法突破成本和能耗方面的限制而退出了历史舞台,单核心CPU的主频已经在达到了上线,当今计算领域开始大力发展多核CPU,无论是PC市场还是X86服务器市场,多核心CPU已经被应用到各行各业的计算上。 由于多核心CPU的发展打破了并行计算不再是利用大型机……

【转载】【经典】Java中不同的并发实现的性能比较

本文转载自:Java中不同的并发实现的性能比较 英文原文来源于:Fork/Join Framework vs. Parallel Streams vs. ExecutorService: The Ultimate Fork/Join Benchmark 关于IO和计算任务对并行性的影响和分析,请参考我的博客文章:无状态和并行性是可伸缩性的两大基石   Fork/Join框架在不同配置下的表现如何? 正如……

【转载】【经典】OSI七层模型和TCP/IP四层模型

本文转载自:http://blog.csdn.net/yaopeng_2005/article/details/7064869 OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。 完成中继功能的节点通常称为中继系统。在OSI七层模型中,处于不同层的中继系统具有不同的名称。 一……

调试时为什么看不到ThreadLocal的内部变量

昨天一个同事调试一个使用ThreadLocal的应用,应用往ThreadLocal里放进一个变量,然后在程序的其他地方取出来的时候发现变量为空,根据经验,他让程序把一个变量放进ThreadLocal变量后,通过调试器想看一下ThreadLocal的内部结构,确认一下是否变量已经存入了ThreadLocal变量的内部结构,不幸的是在调试器里他看不到任何……

【讨论】RPC框架应该透传Error还是封装Error

RPC框架产生的坑 – NoClassDefFoundError 1. 线上RPC提供者灰度发布新功能,灰度发布打包出现问题,漏掉一个类,导致灰度服务器抛出NoClassDefFoundError,NoClassDefFoundError被透传给服务消费者。 2. 服务消费者,也就是业务方,在线程的最上层catch Exception,但是没有catch Throwable, 因此,调用到灰度机器……

多核CPU是多个运算器还是多个控制器

最近一个同事和我讨论多线程为什么会提高效率,我说多线程何以运行在多核CPU的不同的核心上或者多个独立CPU上,如果不考虑并行性限制的问题,多个任务完全可以并行执行,那么,性能将根据CPU或者CPU核心的数量成倍的增加,如果某些任务有IO等待,那么这个CPU或者CPU核心还可以服务其他的任务,这位同事当时反驳说, 多……

你不得不知道的软件架构和构建理论

传统行业做架构推荐温昱的《一线架构师实践指南》 和 IBM RUP 互联网企业做技术方案评审推荐阅读《ATAM: Method for Architecture Evaluation》 最牛业务架构和技术架构请参考开放组体系结构框架(TOGAF) 还有Thoughtworks推广的Agile/Scrum也是很有嘘头的。 谁能回答我: 用什么工具来设计业务架构?

【转载】【经典】为什么你做不好系统设计

本文转载自Eric Liang的博客:http://ericliang.info/why-you-can-not-do-system-design-well/ 这里主要想说一些技术评审里的所见所得。作为部门技术评审的负责人,平均每月要组织两到三次的评审,很多感想不适合在评审后说,所以一年下来肚子里憋满了话。不过还是要声明一下,现在讲的虽然针对任何人,但不针对任何个人……

高并发ID生成器的演示实现

传统的UUID过于冗长,时间上无序,没有时间戳信息,除了它在并发系统里任何一个节点上都能保证是唯一的,并没有什么特别的优势,因此,在高并发系统里并没有得到任何的青睐。另一方面,数据库或者应用层次的自增ID没法保证在高并发集群系统里面的唯一性,如果通过同步来串行化自增ID的产生过程,那么将大大降低高并发系统……

【转载】【经典】业务系统需要什么样的ID生成器

本文转载自Eric Liang的博客:http://ericliang.info/what-kind-of-id-generator-we-need-in-business-systems/ ID 生成器在微博我们一直叫发号器,微博就是用这样的号来存储,而我微博里讨论的时候也都是以发号器为标签。它的主要目的确如平常大家理解的“为一个分布式系统的数据object产生一个唯一的标识”,但其实在一个……

互联网之非功能质量

互联网项目唯快而不破,第一开发效率要快,第二运行效率更要快,听了这个你会问了,那架构呢,不好意思,架构只能当小媳妇了,哈哈 事实上,互联网行业所使用的技术来自于传统行业,例如,任何互联网行业使用的java技术,其实离不开J2SE, J2EE等规范所规定的技术栈,但是各自侧重点不同,传统行业侧重于使用J2EE规范的技……

一次退出多个目录的工具

有的时候在命令行进入了比较深的目录,一级一级的退出是个麻烦事情,为此我开发这些脚本,一次可以退出多个目录。 使用方法: . 5 请注意,必须加前面的英文句号,否则此脚本不起作用。 退出2级目录源码: cd ../../ 退出3级目录源码: cd ../../../ 退出4级目录源码: cd ../../../../ 退出5级目录源码……

在Jar包中的包名和类名中查找某一关键字的工具

本工具有两个实现,一个是我的原创,一个是来自Abx的同事。 实现1 这是我的原创,可以对找到的jar包进行着色。 使用方法: find-in-jar Logger 源码: #!/bin/bash find . -name "*.jar" > /tmp/find_in_jar_temp while read line do if unzip -l $line | grep $1 &> /tmp/find_in_jar_temp_second t……