AQS深度剖析

1、引言在JDK1.5之前,一般是靠synchronized关键字来实现线程对共享变量的互斥访问。synchronized是在字节码上加指令,依赖于底层操作系统的Mutex Lock实现。而从JDK1.5以后java界的一位大神—— Doug Lea 开发了AbstractQueuedSynchronizer(AQS)组件,使用原生java代码实现了synchronized语义。换句话说,Doug...
阅读(996) 评论(0)

CountDownLatch、CyclicBarrier & Semaphore

CountDownLatchCountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier、Semaphore、ConcurrentHashMap和BlockingQueue,它们都存在于java.util.concurrent包下。CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。有时候会有这样的需求,多个线程同...
阅读(144) 评论(0)

Fork/Join框架

1.1 核心思想Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架,其实现思想与MapReduce有异曲同工之妙。Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+…+10000,可以分割成10个子任务,每个子任务分别...
阅读(132) 评论(0)

Java 7语法新特性

1、switch 语句支持字符串switch语句是一种高效的多路语句,可以省掉很多繁杂的嵌套if判断,比如:public void printDay(int dayOfWeek) { switch (dayOfWeek) { case 0: System.out.println("星期日"); break; c...
阅读(216) 评论(0)

Linux的前世今生

2.1 操作系统计算机本质上是一堆半导体原件堆成的装置,没有程序控制的计算机约等于一堆废铁。在早期想要让计算机执行程序就得要参考一堆硬件功能函数,并且学习机器语言,其中有些是很多程序都会使用到的基本功能,比如让CPU执行判断逻辑与运算数值、让内存存取程序、让网卡传输数据、让打印机打印文件等,为了方便工程师开发软件,人们就将这些常用的硬件驱动程序汇集到一起,并提供一组标准的接口供工程师调用,这就是操...
阅读(262) 评论(0)

CPU浅谈

1、指令系统1.1 x86架构要讲CPU,就必须先讲一下指令系统。指令系统指的是一个CPU所能够处理的全部指令的集合,是一个CPU的根本属性。我们现在所用的CPU绝大多数都采用x86架构,即采用了x86指令集的CPU。这是因为最早的那颗Intel发展出来的CPU代号称为8086,后来依此架构又开发出80286, 80386..., 因此这种架构的CPU就被称为x86架构了。在2003年以前由Int...
阅读(346) 评论(0)

Nginx之(四)工作原理

众所周知,nginx性能高,而nginx的高性能与其架构是分不开的4.1 进程模型Nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。而基本的网络事件,则是放在worker进...
阅读(424) 评论(1)

Nginx之(三)Nginx配置

一个简单的配置文件如下:#定义Nginx运行的用户及用户组 user userName userGroupName; #工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU worker_processes 1; #错误日志路径与级别,级别选项:debug|info|notice|warn|error|crit|alert|emerg error_log logs/erro...
阅读(565) 评论(0)

Nginx之(二)Nginx安装

首先从官网上http://nginx.org/下载最新的stable version源码,当前最新版本为nginx-1.10.2.tar.gz。2.1 configure解压之后,会发现里面有一个名为“configure”的文件:configure本身是一个Shell脚本,中间会调用/auto/目录下别的脚本执行各种任务。根据不同的用途,auto目录下面的脚本各司其职,有检查编译器版本的,有检查操...
阅读(425) 评论(0)

Nginx之(一)Nginx是什么

Nginx("engine x")是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。Nginx代码完全用C语言写成,其特点是占有内存少,并发能力强。官方测试号称最多能够支撑5万并发连接,在实际生产环境中跑到2~3万的并发连接数没什么压力。说到Web服务器,Apa...
阅读(1184) 评论(0)

ZooKeeper之(六)应用实例

6.1 Java API客户端要连接 Zookeeper服务器可以通过创建 org.apache.zookeeper.ZooKeeper 的一个实例对象,然后调用这个类提供的接口来和服务器交互。ZooKeeper 主要是用来维护和监控一个目录节点树中存储的数据的状态,所有我们能够操作 ZooKeeper 和操作目录节点树大体一样,如创建一个目录节点,给某个目录节点设置数据,获取某个目录节点的所有子...
阅读(4542) 评论(2)

ZooKeeper之(五)集群管理

在一台机器上运营一个ZooKeeper实例,称之为单机(Standalone)模式。单机模式有个致命的缺陷,一旦唯一的实例挂了,依赖ZooKeeper的应用全得完蛋。实际应用当中,一般都是采用集群模式来部署ZooKeeper,集群中的Server为奇数(2N+1)。只要集群中的多数(大于N+1台)Server活着,集群就能对外提供服务。在每台机器上部署一个ZooKeeper实例,多台机器组成集群,...
阅读(796) 评论(0)

ZooKeeper之(四)配置与命令

4.1 配置文件ZooKeeper安装好之后,在安装目录的conf文件夹下可以找到一个名为“zoo_sample.cfg”的文件,是ZooKeeper配置文件的模板。ZooKeeper启动时,会默认加载“conf/zoo.cfg”作为配置文件,所以需要将“zoo_sample.cfg”复制一份,命名为“zoo.cfg”,然后根据需要设定里面的配置项。配置项很简单,说明如下:tickTime=200...
阅读(922) 评论(0)

ZooKeeper之(三)工作原理

3.1 系统架构ZooKeeper集群是由多台机器组成的,每台机器都充当了特定的角色,各种角色在协作过程中履行自己的任务,从而对外提供稳定、可靠的服务。由上图可知,ZooKeeper集群由多台机器组成(这不废话吗),客户端的请求有可能被分配给任何一台机器来处理。考虑下面一个场景:客户端A问机器1,现在几点了,机器1回答下午两点半;与此同时,客户端B问机器2,现在几点了,机器2说,凌晨三点。两个客户...
阅读(778) 评论(1)

ZooKeeper之(二)数据模型

ZooKeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统:树形结构的每个节点都被称作为Znode。Zonde通过路径引用,如同Unix中的文件路径。路径必须是绝对的,因此他们必须由斜杠字符来开头。除此以外,它们必须是唯一的,也就是说每一个路径只有一个表示,因此这些路径不能改变。在ZooKeeper中,路径由Unicode字符串组成,并且有一些限制。字符串"/ZooKee...
阅读(800) 评论(0)

ZooKeeper之(一)ZooKeeper是什么

1.1 产生背景当今是个分布式、集群、云计算等名词满天飞的时代。造成这种局面的一个重要因素就是,单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群。服务集群对外提供服务的过程中,可以分解处理压力,在一定程度上打破性能瓶颈,并提高服务的可用性(不会因为一台机器宕机而造成服务不可用)。上图中有三台机器,每台机器跑同样的一个应用程序。然后我们将这三台机器通过网络将其连接起来,构...
阅读(874) 评论(0)

Redis之(七)主从同步与集群管理

8.1 主从同步原理像MySQL一样,Redis是支持主从同步的,而且也支持一主多从以及多级从结构。主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的SORT就可以由从服务器来承担。Redis的主从同步是异步进行的,这意味着主从同步不会影响主逻辑,也不会降低Redis的处理性能。主从架构中,可以考虑关闭主服务器的数据持久化功能,只让从服务器进行持久化,这样可以提高主服务器的处理...
阅读(2779) 评论(1)

Redis之(六)配置详解

进入Redis的安装包,里面的“Redis.conf”就是默认的配置文件,启动Redis Server的时候,可以指定加载某个路径下的配置文件“Redis-server [path of configuration file]”。默认的配置文件中,首先约定了存储单位:1k => 1000 bytes1kb => 1024 bytes1m => 1000000 bytes1mb => 1024*10...
阅读(1312) 评论(0)

Redis之(五)持久化

Redis提供了两种持久化的方式:(1)RDB(Redis DataBase)模式,就是在不同的时间点,将Redis存储的数据生成快照并存储到磁盘等介质上;(2)AOF(Append Only File)模式,则换了一个角度来实现持久化,那就是将Redis执行过的所有写指令记录下来,在下次Redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。RDB和AOF两种方式可以...
阅读(546) 评论(0)

Redis之(四)事务

5.1开始事务MULTI 命令的执行标记着事务的开始:当客户端处于非事务状态下时, 所有发送给服务器端的命令都会立即被服务器执行。Redis 的事务不可嵌套, 当客户端已经处于事务状态, 而客户端又再向服务器发送 MULTI 时, 服务器只是简单地向客户端发送一个错误, 然后继续等待其他命令的入队。MULTI 命令的发送不会造成整个事务失败, 也不会修改事务队列中已有的数据。5.2命令入队但是, ...
阅读(743) 评论(0)
189条 共10页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:435145次
    • 积分:6840
    • 等级:
    • 排名:第3366名
    • 原创:189篇
    • 转载:0篇
    • 译文:0篇
    • 评论:208条
    博客专栏