归档之于 ‘ 2015 年十月

《Redis官方文档》翻译邀请

并发编程网定期组织翻译官方指南,十一月组织翻译Redis官方文档, 官方地址,有兴趣的同学可以通过评论领取,每次领取一节,翻译完后再领取其他章节。如果翻译超过10篇文章,并发网会赠送一本作者签名的《JAVA并发编程的艺术》。

如何交稿?直接在并发网注册账号后点新建文章,参考我要投稿

阅读全文

《Java并发编程的艺术》-Java并发包中的读写锁及其实现分析

作者:魏鹏  本文是《Java并发编程的艺术》的样章封面立体图

1. 前言

在Java并发包中常用的锁(如:ReentrantLock),基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升。

除了保证写操作对读操作的可见性以及并发性的提升之外,读写锁能够简化读写交互场景的编程方式。假设在程序中定义一个共享的数据结构用作缓存,它大部分时间提供读服务(例如:查询和搜索),而写操作占有的时间很少,但是写操作完成之后的更新需要对后续的读服务可见。

阅读全文

运行时和编译时元编程—编译时元编程

原文链接    译文链接     译者:JackWang

运行时和编译时元编程 第二部分

2 编译时元编程

Groovy的编译时元编程支持编译时生成代码。这些变换(译者注:原文该专有名词是transformations,译者直译为变换,也许不准确。如果有知道准确翻译的读者恳请不吝赐教,待译者修正)叫做程序的抽象语法树(AST),在Groovy里,我们叫做AST变换。AST变换支持在编译过程中植入钩子,修改抽象语法树之后继续编译生成正常的字节码流。和运行时元编程相比,这种转换可以在类文件的修改可见(或者说是字节码流)。如果你想要你的转换成为类协议的一部分(类协议是指实现接口,继承抽象类等等…)甚至你需要你的类可以被Java(或其他JVM语言)调用,在字节码流的修改可见是非常重要的。比如说,一个AST转换可以添加方法到一个类。在运行时元编程里,你需要使你的新方法在Groovy里可见,在编译时元编程要实现同样的功能,这个方法仅仅需要对Java可见即可。最后也同样重要的是,编译时元编程相比运行时元编程能活的更好的性能(因为没有初始化阶段)。
阅读全文

《Java并发性和多线程介绍》-Java TheadLocal

原文链接 作者:Jakob Jenkov   查看全部文章

Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作。因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有一个指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到彼此的ThreadLocal变量域。

1、创建一个ThreadLocal对象

2、访问ThreadLocal对象

3、ThreadLocal泛型

4、初始化ThreadLocal

5、Full ThreadLocal Example

6、InheritableThreadLocal

阅读全文

泛型中? super T和? extends T的区别

原文链接          李璟(jlee381344197@gmail.com)

经常发现有List<? super T>、Set<? extends T>的声明,是什么意思呢?<? super T>表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。

阅读全文

深入浅出: Java回调机制(异步)

Writer      :李强强

什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道“就一个回调…”。此时千万个草泥马飞奔而过(逃

哈哈,看着源码,享受着这种回调在代码上的作用,真是美哉。不妨总结总结。

一、什么是回调

回调,回调。要先有调用,才有调用者和被调用者之间的回调。所以在百度百科中是这样的:

软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用

回调是一种特殊的调用,至于三种方式也有点不同。

1、同步回调,即阻塞,单向

2、回调,即双向(类似自行车的两个齿轮)。

3、异步调用,即通过异步消息进行通知。

阅读全文

深入浅出: 大小端模式

Writer      :李强强

一、什么是大小端?

大小端在计算机业界,Endian表示数据在存储器中的存放顺序。百度百科如下叙述之:

大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;

小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

这两种模式,泥瓦匠记忆宫殿:“小端低低”。这样就知道小端的模式,反之大端的模式。 阅读全文

运行时和编译时元编程—运行时元编程

原文链接   译文链接   译者:JackWang

运行时和编译时元编程 第一部分

Groovy语言支持两种风格的元编程:运行时元编程和编译时元编程。第一种元编程支持在程序运行时修改类模型和程序行为,而第二种发生在编译时。两种元编程有各自的优缺点,在这一章节我们将详细讨论。
阅读全文

Java IO 之 FileInputStream & FileOutputStream源码分析

Writer      :李强强

一、引子

文件,作为常见的数据源。关于操作文件的字节流就是 — FileInputStream & FileOutputStream。它们是Basic IO字节流中重要的实现类。

阅读全文

阿里感悟(十一)如何准备面试

作者:方腾飞

如果你收到某公司的面试邀请,那就应该开始准备面试,打一场有把握的仗。Young woman in job interview

需要准备几件事,自我介绍,亮点技术或产品,职业规划,这几件事情并不是临时抱佛脚就能完成的,而是要靠平时在工作中的积累,面试进更好的公司只是一个水到渠成的过程,能力到了自然就能进。

准备多久?当时带着强烈想进入阿里的动力,电面准备了几周,复面准备了一个多月。

阅读全文

大型网站之分布式会话管理

随着网站的功能和用户越来越多,单机器服务部署的Web应用已经不能再支持了。这时候就需要优化或调整目前的架构,具体怎么优化,或先优化哪部分,这取决于网站的具体情况, 并非总是一个套路。

如根据使用情况得知,数据库压力大,则就可以先设施读写分离,分库分表,是垂直划分(可以简单的理解为按业务功能划分), 还是水平划分(如用户表数据量很多,就可以按一定的规则分表设计,表结构仍然是相同的)。如Web应用服务器压力大,可以增加一台服务部署应用, 即从单台服务变为集群。变为集群后,用户访问网站,到底是选择哪一台服务器呢?这就需要在应用服务器前增加负载均衡设备来解决。还有点就是会话session 管理的问题,接下来会详细说明这问题。

阅读全文

阿里感悟(十)如何写好简历

Simple cv with business card我在工作中筛选过几百封简历,也推荐过上百封简历。发现很多求职者的简历写得有不如意的地方,有的写得太简单缺少必要信息,有的又写得太多没有突出重点。如果是找我推荐的,每次我都会让他们修改,为了让更多的同学写出高质量的简历,本文介绍下如何写好简历。

 

一 什么是简历

简历是突出自我亮点的工作或学习经历和自我介绍。所以写简历要把握两个重点,工作经历要突出重点,自我介绍要写全。

阅读全文

《Apache Zookeeper 官方文档》翻译邀请

并发编程网定期组织翻译官方指南,本月组织翻译《Apache Zookeeper 官方文档》,有兴趣的同学可以参与下,每一节的内容不是很多,可能花半小时就能翻译完。通过评论领取翻译,翻译完之后直接在并发网发布。

《Groovy官方文档》Groovy开发套件-使用集合

原文链接   译文链接   译者:JackWang

Groovy开发套件 第二部分

2 使用集合

Groovy提供了各种类型的原生态集合支持,包括list,  maps  和 ranges 。它们大多数都是基于Java集合类型,同时在Java集合类型中一些废弃的方法在Groovy开发套件中也可以找到。

阅读全文

《Apache Zookeeper官方文档》2-综述

原文地址

Zookeeper: 一个分布式应用的分布式协调服务

zookeeper 是一个分布式的,开源的协调服务框架,服务于分布式应用程序。

它暴露了一系列的基础的操作服务,因此分布式应用能够基于这些服务,构建出更高级别的服务,比如同步,配置管理,分组和命名服务。

zookeeper设计上易于编码,数据模型构建在我们熟悉的树形结构目录风格的文件系统中。

zookeeper运行在java中,同时支持java和C 语言。正确的实现协调服务是公认的难干的差事。 他们及其容易出错,比如资源竞争和死锁.

zookeeper 的使命和力量来源于,将分布式应用从处理协调服务的泥潭中走出来。

阅读全文

return top