《Redis官方文档》翻译邀请
并发编程网定期组织翻译官方指南,十一月组织翻译Redis官方文档, 官方地址,有兴趣的同学可以通过评论领取,每次领取一节,翻译完后再领取其他章节。如果翻译超过10篇文章,并发网会赠送一本作者签名的《JAVA并发编程的艺术》。
如何交稿?直接在并发网注册账号后点新建文章,参考我要投稿。
并发编程网定期组织翻译官方指南,十一月组织翻译Redis官方文档, 官方地址,有兴趣的同学可以通过评论领取,每次领取一节,翻译完后再领取其他章节。如果翻译超过10篇文章,并发网会赠送一本作者签名的《JAVA并发编程的艺术》。
如何交稿?直接在并发网注册账号后点新建文章,参考我要投稿。
作者:魏鹏 本文是《Java并发编程的艺术》的样章
在Java并发包中常用的锁(如:ReentrantLock),基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升。
除了保证写操作对读操作的可见性以及并发性的提升之外,读写锁能够简化读写交互场景的编程方式。假设在程序中定义一个共享的数据结构用作缓存,它大部分时间提供读服务(例如:查询和搜索),而写操作占有的时间很少,但是写操作完成之后的更新需要对后续的读服务可见。
Groovy的编译时元编程支持编译时生成代码。这些变换(译者注:原文该专有名词是transformations,译者直译为变换,也许不准确。如果有知道准确翻译的读者恳请不吝赐教,待译者修正)叫做程序的抽象语法树(AST),在Groovy里,我们叫做AST变换。AST变换支持在编译过程中植入钩子,修改抽象语法树之后继续编译生成正常的字节码流。和运行时元编程相比,这种转换可以在类文件的修改可见(或者说是字节码流)。如果你想要你的转换成为类协议的一部分(类协议是指实现接口,继承抽象类等等…)甚至你需要你的类可以被Java(或其他JVM语言)调用,在字节码流的修改可见是非常重要的。比如说,一个AST转换可以添加方法到一个类。在运行时元编程里,你需要使你的新方法在Groovy里可见,在编译时元编程要实现同样的功能,这个方法仅仅需要对Java可见即可。最后也同样重要的是,编译时元编程相比运行时元编程能活的更好的性能(因为没有初始化阶段)。
阅读全文
Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作。因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有一个指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到彼此的ThreadLocal变量域。
作者:方腾飞
如果你收到某公司的面试邀请,那就应该开始准备面试,打一场有把握的仗。
需要准备几件事,自我介绍,亮点技术或产品,职业规划,这几件事情并不是临时抱佛脚就能完成的,而是要靠平时在工作中的积累,面试进更好的公司只是一个水到渠成的过程,能力到了自然就能进。
准备多久?当时带着强烈想进入阿里的动力,电面准备了几周,复面准备了一个多月。
随着网站的功能和用户越来越多,单机器服务部署的Web应用已经不能再支持了。这时候就需要优化或调整目前的架构,具体怎么优化,或先优化哪部分,这取决于网站的具体情况, 并非总是一个套路。
如根据使用情况得知,数据库压力大,则就可以先设施读写分离,分库分表,是垂直划分(可以简单的理解为按业务功能划分), 还是水平划分(如用户表数据量很多,就可以按一定的规则分表设计,表结构仍然是相同的)。如Web应用服务器压力大,可以增加一台服务部署应用, 即从单台服务变为集群。变为集群后,用户访问网站,到底是选择哪一台服务器呢?这就需要在应用服务器前增加负载均衡设备来解决。还有点就是会话session 管理的问题,接下来会详细说明这问题。
我在工作中筛选过几百封简历,也推荐过上百封简历。发现很多求职者的简历写得有不如意的地方,有的写得太简单缺少必要信息,有的又写得太多没有突出重点。如果是找我推荐的,每次我都会让他们修改,为了让更多的同学写出高质量的简历,本文介绍下如何写好简历。
简历是突出自我亮点的工作或学习经历和自我介绍。所以写简历要把握两个重点,工作经历要突出重点,自我介绍要写全。