JAVA ’ 目录归档

《Redis官方文档》Redis调试指南

原文链接      译者:Adeline

Redis开发过程中十分注重其稳定性:我们尽一切努力来保证每一个版本的稳定,不出现突然崩溃等情况。但是即使在我们百分百的努力下,仍然没办法保证百分百的无bug。

Redis出现崩溃时,会生成一个详细的报告来描述当时的情景,但是有时候只看报告还不够,而且Redis的核心开发团队可能也没办法独立重现你出现崩溃时候的场景:在这种情况下,我们需要用户能够重现这个情景来帮助我们。

这个指南讲解了如何使用GDB来获得Redis开发者可能用到的信息。

阅读全文

《Redis官方文档》 redis 虚拟内存

原文链接 译文链接 译者: youxin2012
重点提示:
Redis 的虚拟内存(VM) 目前不被提倡使用,Redis 2.4将是有虚拟内存特性的最新版本(但它同样提示不鼓励使用虚拟内存)。我们发现使用虚拟内存会有一些不足和问题。对于Redis的未来,至少目前在不考虑支持比RAM更大的数据库时,我们希望能提供最好的内存数据库(持久化仍然在磁盘上)。我们随后的成果将关注提供脚本,集群以及更好的持久化方面。

虚拟内存

Redis 虚拟内存这一特性将首次出现在Redis 2.0的一个稳定发布版中。目前Git上Redis 不稳定分支的虚拟内存(从现在起称之为VM)已经可以使用,并且经试验证明足够稳定。

阅读全文

《Redis官方文档》分区

原文链接   译者:Alexandar Mahone

分区:如何把数据存储到多个Redis实例中

分区就是把你的数据分割到多个Redis实例中的一个过程,因此每个实例仅仅包含部分键。这篇文章第一部分介绍分区概念,第二部分将介绍Redis分区的用法。

(译者注:Redis集群是分区事实上标准)

阅读全文

阿里感悟系列文章

作者:方腾飞

最近几年经常有应届生和朋友咨询我各种学习和工作上的问题,每次我都会耐心的解答,渐渐发现很多问题都有相似之处,所以就想把我的回答整理成文,可能可以能帮助更多的同学,由于工作非常忙,很多文章经常写到凌晨2点才写完,所以大部分内容没有打磨和校对,原文中难免还会出现一些错误,欢迎各位读者参与校对和提建议,比如你们希望看什么内容。本文目录的内容会随时调整。

阅读全文

初探设计:Java继承何时用?怎么用?

Writer      :BYSocket(泥沙砖瓦浆木匠)

一、回顾继承

常见的如下:

1、依赖(”uses-a“)

2、聚合(”has-a“)

3、继承(”is-a“)类之间关系

也就是UML类图中常见的三种关系,另外常见的还有实现(接口与实现类的关系),组合等。
阅读全文

《Redis官方教程》Redis集群规范

原文链接(on 20 Jul)  作者:antirez  译者:carlvine

 

Redis集群规范


欢迎来到Redis集群规范。在这里你可以找到有关Redis的算法和设计的基本原理。这篇文章是一项正在进行的工作,因为它是不断地与Redis的实际实现同步。

阅读全文

《Redis官方文档》Redis简介

原文链接  译者:ethfoo

Redis 是一个开源的基于内存的数据结构存储器。通常可作为数据库,缓存和消息中介。它支持的数据结构有:字符串哈希表列表集合、支持范围查询的有序集合位图hyperloglogs和带查询半径的地理空间索引。Redis有内置的复制Lua脚本LRU缓存事务和不同层级的磁盘持久化功能,还通过Redis Sentinel提供了高可用性,通过Redis集群实现了自动化分割。

阅读全文

阿里感悟(十三)降低成本的敏捷设计

作者:方腾飞scrum agile

最近在参与一个比较大的项目,需要耗费上千人日,而细分设计和设计评审就花掉了几百人日,基本上10几个人写了几周的设计文档,并开了几周的设计评审会。整个过程模式比较重,所以耗费的人力比较大。

为什么模式比较重?

  • 参与者众多。设计评审会时,要求与本会相关的人都参与设计评审,一个屋子里可能坐着几十人,哪怕一个小时的会议和你相关的就5分钟,你也要参加。而且这样的公司会议太多,如果每个相关的会议都去参加,那就基本上是白天开会,晚上写代码的节奏,所以现在当有人找我开会时,我会问是否必须要我参加,能否会前或会后找我沟通确认,可能10分钟就能解决的问题。
  • 设计文档内容多。系分设计非常全,需要把所有设计场景都写上去,首先需要花大量时间写系分设计文档,其次需要几个小时的会才能评审完。而这样全面的设计文档,可能需要三个月到半年才能开发完成。
  • 有的设计评审没有经过小范围初审,有些设计遗漏了,导致要反复评审。

阅读全文

《Groovy官方教程》Grape依赖管理器

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

1 快速入门

1.1添加一个依赖

Grape是一个内嵌在Groovy里的Jar包依赖管理器。Grape让你可以快速添加maven仓库依赖到你的classpath里,使脚本运行更加简单。最简单的一种用法是只需要在你的脚本里添加一个注解:

[code lang=”groovy”]
@Grab(group=’org.springframework’, module=’spring-orm’, version=’3.2.5.RELEASE’)
import org.springframework.jdbc.core.JdbcTemplate
[/code]

@Grab也支持简洁版:

[code lang=”groovy”]
@Grab(‘org.springframework:spring-orm:3.2.5.RELEASE’)
import org.springframework.jdbc.core.JdbcTemplate
[/code]

注意,这里我们用到了import,这是推荐的做法。当然你也可以在mvnrepository.com搜索到依赖包然后使用@Grab注解形式加到pom.xml实体里。
阅读全文

《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表示数据在存储器中的存放顺序。百度百科如下叙述之:

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

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

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

return top