Java之Semaphore
评论(0) 浏览量(354)
 一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,否则就等待。通过acquire()和release()获取和释放 ......
int i = 16;   System.out.println(i>>2);   // 结果是4。 int i = 16;   System.out.println(i>>32);   // 结果是16。 ......
为何要使用同步?     java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),     将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,     从而保证了该变量的唯一性和准确性。&nbs ......
先来个例子理解一下概念,以银行取款为例:同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API)。阻塞 : ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才 ......
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍,本文将结合作者身边的项目例子,系统地对ZK的应用场景进行一个分门归类的介绍。值得注意的是,ZK并非天生就是为这些应用场景设计的,都是后来众多开发者根据其框架的特性,利用其 ......
用Redis构建分布式锁在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段。 有很多三方库和文章描述如何用Redis实现一个分布式锁管理器,但是这些库实现的方式差别很大,而且很多简单的实现其实只需采用稍微增加一点复杂的设计就可以获得更好的可靠性。 这篇文章的目的就是尝试提出一种官方权威的用Redis实现分布式锁管理器的算法,我们把这个算法称为RedLock,我们相信这个 ......
一、session共享客户端cookie方式、利用redis、利用数据库、使用软负载nginx和硬负载F5做会话保持;二、session共享原理创建一个顶级filter,重新包装request和response,重新实现getSession或接管HttpSession;三、spring session原理首先集成一个SessionRepositoryFilter是一个优先级最高的javax.ser ......
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么我们能不能综合两者的特性 ......
现在网上有很多基于Redis实现分布式锁的文章,但是这里坑也很多,后面我会逐一介绍。首页我先贴上代码,之后再进行逐一说明。/**  * 应该以: lock(); try { doSomething(); } finally { unlock(); } 的方式调用   ......
tomcat启动优化
评论(0) 浏览量(585)
1、优化linux openfile。在catalina.sh中加入如下命令:ulimit -s 128 ulimit -n 819202、系统编码设置。在catalina.sh中加入如下命令:export.UTF-8 export LC_ALL=zh_CN.UTF-83、jdk设置,如果系统中有多个jdk,可以在catalina.sh中明确指 ......
网上有两个文章差不多都说的很详细:http://my.oschina.net/looly/blog/270767?fromerr=uLpCCZmyhttp://developer.51cto.com/art/201405/440958.htmsonatype地址:https://issues.sonatype.orgnexus地址:https://oss.sonatype.org安装gpg命令yu ......
Codis部署
评论(0) 浏览量(739)
GITHUB地址:https://github.com/CodisLabs/codiscodis部署文档:https://github.com/CodisLabs/codis/blob/master/doc/tutorial_zh.mdcodis部署流程:1、安装go,配置环境变量2、执行go get -u -d github.com/CodisLabs/codis下载codis代码3、切换到$G ......
tomcat启动参数,将JVM GC信息写入tomcat_gc.logCATALINA_OPTS='-Xms512m -Xmx4096m -XX:PermSize=64M -XX:MaxNewSize=128m -XX:MaxPermSize=64m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -Xloggc:/var/log/searc ......
Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解。Jquery的扩展方法原型是:   extend(dest,src1,src2,src3...);它的含义是将src1,src2,src3...合并到dest中,返回值为合并后的dest,由此可以看出该方法合并后,是修改了dest的结构的。如果想要得到合并的结果却又不想修改dest的 ......
sort()对数组排序,不开辟新的内存,对原有数组元素进行调换简单数组简单排序var arrSimple=new Array(1,8,7,6); arrSimple.sort(); document.writeln(arrSimple.join());简单数组自定义排序var arrSimple2=new Array(1,8,7,6); arrSimp ......
Markdown——让你专注写作前些日子,写作的时候总会因为排版而耽误时间,甚至因为排版而把写作的专注力转移到了貌似相关的排版上。诚然,一个好的排版,会让读者有良好的体验,可是对于写作的人来说,这却会降低写作效率。为了解决这个问题,我想到曾经我写过Wiki,那有没有一种似的标记语言用于平时的写作。度娘之,谷歌之,果真有神奇——MarkDown,一种轻量级的标记语言。且在社区内十分流行。一、为什么在 ......
各种oauth接入
评论(0) 浏览量(393)
QQ互联:http://connect.qq.com/百度互联:http://developer.baidu.com/ms/oauth
由于我的博客主要是代码分享,很多贴的代码,都很长。很多时候我都是手动给他换行。但是今天实在是受不了。从网上找个办法解决一下。1、css修改:在文件夹:\ueditor\third-party\SyntaxHighlighter在文件shCoreDefault.pack.css添加css:.syntaxhighlighter { width: 100% !impor ......
官网下载nginx:http://nginx.org/en/download.html设置安装路径#./configure --prefix=/usr/local/nginx编译安装#make && make install安装Nginx报错:一、./configure: error: the HTTP rewrite module requires the PCRE librar ......
转自:http://blog.csdn.net/lxf9601/article/details/5925810刚开始用spring mvc 做web开发时,经常会不知道如何合适绑定页面数据.用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便(本人最开始也是这么认为),经过一段时间的应用和测试,总结出以下几种情况,希望对刚接触spring mvc 的朋友有所帮助.示例 ......