`
文章列表
Google File System里面有一小节关于文件追加模式是原子操作,笔者不得其解:   l例如现在有两个独立的进程A和B同时append 数据到一个文件里,添加文件必须收lseek文件的末尾的位置,找准位置后才能添加数据: 首先进程A,seek到位置1500byte的位置是文件的末尾 同时进程B,也seek到1500byte 第三,进程B写入100byte的数据,此时文件末尾变成1600byte 第四,调度到A进程时,write数据,由于第一次Alseek到的位置是1500tye,因此A和B写入数据时,实际上已经产生了互相覆盖的可能     1。O_APPEND的含 ...
对于多线程编程来说,同步问题是我们需要考虑的最多的问题,同步的锁什么时候加,加在哪里都需要考虑,当然在不影响功能的情况下,同步越少越好,锁加的越迟越优是我们都必须认同的。DCL(Double Check Lock)就是为了达到这个目的。 DCL简单来说就是check-lock-check-act,先检查再锁,锁之后再检查一次,最后才执行操作。这样做的目的是尽可能的推迟锁的时间。网上普遍举的一个例子是延迟加载的例子。 Java代码 public   class  LazySingleton {       private   ...
目前正在做基于Red 5 的Meeting系统,我们会在Meeting server上生成一个唯一的StreamKey,用于RTMP协议中,NetStream.publish的StreamID,但是有一个问题,我们调用allocateStream的时候,如果一个会议中的多个成员并发请求这个服务时(Meeting server上生成一个唯一的StreamKey),会造成同一个meeting,使用不同的StreamID。   在单虚拟机的情况下,可以使用Synchronized原生锁来对同一个RoomKey进行加锁,如果reques的是同一个RoomKey,则需要排队处理,直到拿到这个Strea ...
最近有个项目要求服务器上生成唯一的ID号,首先就想到了UUID,它能够保证唯一性。   UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUI ...
有新的项目,关于RTMP的,挺新鲜的东西,这篇文章比较全面介绍了RTMP协议的内容,作为参考资料记录之。   RTMP 协议研究   1 协议研究概述    协议设计和分析一直都是在工作遇到,正好在这里总结一下,说到协议,在 ...
把这个帖子作为日记,记下来,如果title带有为什么,Javaeye会自动把它移到问答频道,重新输入一下,看看高手们的反应:   最近为了查一个问题,分别使用HttpClient3和HttpClient4发一个同样post请求到同一个server上,发现 HttpClient3比HttpClient4性能要好很多,测试结果是H3,平均时间是800ms,而httpClient4要3秒钟,代码如下:   import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; ...
DBCP主要用于数据库连接池中,DBCP本身并没有池的功能,它使用Common Pool对象池,实现了数据库连接池的功能,Common  Pool中有很多参数,一直想做个小小的总结,因为很容易忘记,另外很多文章的参数总结都不是很全   1.maxActive: 最大的活跃连接的数量,默认值为8 注: 活跃连接指的是正在用于程序和数据库之间进行交互的连接 闲置连接指的是,在连接池中,没有被应用程序使用的连接   2.maxIdle: 最大的闲置连接的数量,默认值为8 注: 当大于最大的闲置数量时,会被连接池主动销毁   3.minIdle: 连接池中最小的闲置连 ...
传统的生产消费模型,实际上是通过一个条件来调节生产者和消费者线程的唤醒或者等待,这样做的坏处是,不该被唤醒的线程也会被唤醒,这样对多线程编程来说,会引起线程无谓切换,在Java5中的并发编程包中,有重入锁实现了多条件的锁来实现生产者线程只会唤醒消费者线程,而不会唤醒其它的生产者线程,这样就适当地减少了线程的切换开销。       源代码如下:     1.仓库   package readwritelock; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock ...
1.远程拷贝命令   1) 从本地文件系统拷贝到远程 scp 文件名 --用户名@计算机IP或者计算机名称:远程路径 例如: scp 1.txt root@172.168.0.125:/usr/local/   2)从远程将文件拷回本地 scp --用户名@计算机IP或者计算机名称:文件名 ...
1.Tomcat6&Comet的简要介绍   Comet技术的悄然流行,Jetty在比较早地支持了Comet,提供了Comet 的Servlet,同样从Tomcat6开始,Comet已经在Tomcat的标准Servlet中开始支持了,这是个好事情,毕竟我们有越来越多的选择了。   可喜的是Co ...
1.负载均衡背景   Internet的规模每一百天就会增长一倍,客户希望获得7天24小时的不间断可用性及较快的系统反应时间,而不愿屡次看到某个站点“Server Too Busy”及频繁的系统故障。   网络的各个核心部分随着业务量的 ...
1.需求的提出 我们现在有个系统,由于采用的是HTTP进行文件的播放(直接播放存放在Apache server上的文件),如果采用Apache或者其它web server,会存在单点问题,一台apache的长连接的数量毕竟有限,如何让多个apache同时工作提供服 ...
MemCached使用了有优化的内存管理方式,使得对象的内存分配效率有很大程度上的提高。   1.传统的内存管理方式的缺点 传统的内存分配使用mallocate方法向OS申请内存,内存不再使用时,使用free方法,释放内存给OS。这种方式简单,但是有以下缺点: 1.频繁的跟OS打交道,增加了OS的工作 2.容易产生内存碎片。 当内存不再使用free内存给操作系统,当分配的对象很多时候如1byte,或者几个byte大小的内存块,这些内存块在多数情况下,是不能被使用的,因为大部分对象是大于这个碎片内存大小的,这些不规整的内存块,导致内存分配效率变差,当有新的内存需要分配时,OS必 ...
在MemCached的基础里面,我们讲到MemCached是一个重要特征是它是利用客户端的计算来达到分布式效果的。 1.Cache的分类 根据缓存与应用的耦合程度将其划分为local cache和remote cache(来自于ahuaxuan的分类方式)。   local cache表示 ...
MemCached是采用libevent来进行网络连接的并发处理,能够保持高并发情况下,依然能够保持快速的响应能力。   因此安装要分两部分:   1.安装libevent   Step 1: 下载http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz Step 2:[root@ls-dev01 local]# tar -zxvf libevent-1.4.13-stable.tar.gz Step 3:[root@ls-dev01 local]# cd libevent-1.4.13-stable St ...
Global site tag (gtag.js) - Google Analytics