- 博客(20)
- 收藏
- 关注
转载 实现无锁的栈与队列
怎样实现一个无锁队列,网络上有很多的介绍,其中流传最广,影响最大的恐怕就属于以下两篇论文: a) "Implementing lock free queue" by John.D.Valois b) "Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms" by M.
2016-03-31 23:48:48 504
转载 RabbitMQ基础概念详细介绍
你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ简介
2016-03-30 22:33:20 366
转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.Cy
2016-03-30 20:31:40 551
转载 CyclicBarrier介绍
.println("======================================="); System.out.println("开始全国汇总"); } } /** * 子任务:计费任务 */ class BillTask extends Thread { // 计费服
2016-03-30 20:20:17 424
转载 linux多行注释
1.多行注释: 1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式; 2. 在行首使用上下键选择需要注释的多行; 3. 按下键盘(大写)“I”键,进入插入模式; 4. 然后输入注释符(“//”、“#”等); 5. 最后按下“Esc”键。注:在按下esc键后,会稍等一会才会出现注释,不要着急~~时间很短的
2016-03-25 12:55:48 16300
转载 用 IntelliJ IDEA 新建 JAVA 工程
打开 IntelliJ IDEA,在向导中选择“Create New Project”在“New Project”选项卡中,为 Project 命名,这次我们将工程命名为 HelloWorld点“next”进行下一步,然后直接点“finish”完成创建。在右侧的项目管理器中展开我们的“HelloWorld”,在“src”上右键,新建一个“Java Class
2016-03-24 09:38:13 2259
转载 知乎架构
也许很多人还不知道,知乎在规模上是仅次于百度贴吧和豆瓣的中文互联网最大的UGC(用户生成内容)社区。知乎创业三年来,从0开始,到现在已经有了100多台服务器。目前知乎的注册用户超过了1100万,每个月有超过8000万人使用;网站每个月的PV超过2.2亿,差不多每秒钟的动态请求超过2500。在ArchSummit北京2014大会上,知乎联合创始人兼 CTO 李申申带来了知乎创业三年多来的首次
2016-03-22 15:32:22 1905
转载 四层和七层负载均衡的区别
(一) 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求
2016-03-18 10:25:55 505
转载 php安装gearman扩展实现异步分步式任务
一、简介Gearman是一个分发任务的程序框架,它会对作业进行排队自动分配到一系列机器上。gearman跨语言跨平台,很方便的实现异步后台任务。php官方收录:http://php.net/manual/zh/book.gearman.php如上图,一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。Client:请求的
2016-03-17 14:16:32 944
原创 多路IO复用
通过单线程可以监听多个io事件;1)select需要一次内存拷贝到内核,epoll本身构建与内核;2)epoll支持的socket数量更多;3)epoll不是轮询
2016-03-08 23:12:00 621
转载 Java RMI
Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。 Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术。大名鼎鼎的EJB都是建立在rmi基础之上的,现
2016-03-08 20:20:39 382
转载 C++中的RTTI机制详解
RTTI是”Runtime Type Information”的缩写,意思是运行时类型信息,它提供了运行时确定对象类型的方法。RTTI并不是什么新的东西,很早就有了这个技术,但是,在实际应用中使用的比较少而已。而我这里就是对RTTI进行总结,今天我没有用到,并不代表这个东西没用。学无止境,先从typeid函数开始讲起。typeid函数typeid的主要作用就是让用户知道当前的变量是
2016-03-07 11:28:47 564
转载 jstat
jstat的用法用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建
2016-03-03 23:13:00 401
转载 脏页回写
由于页高速缓存的缓存作用,写操作实际上会被延迟。当页高速缓存中的数据比后台存储的数据更新时,那么该数据就被称为脏数据。在内存中积累起来的页最终必须被写回磁盘。在以下两种情况发生时,脏页被写回磁盘:1. 当空闲的内存低于一个特定的阈值时,内核必须将脏页写回磁盘,以便释放内存。2. 当脏页在内存中驻留时间超过一个特定的阈值时,内核必须将超时的脏页写回磁盘,以确保脏页不会无限期地驻留在内
2016-03-01 23:13:15 4530 1
转载 zero-copy
许多web应用都会向用户提供大量的静态内容,这意味着有很多data从硬盘读出之后,会原封不动的通过socket传输给用户。这种操作看起来可能不会怎么消耗CPU,但是实际上它是低效的:kernal把数据从disk读出来,然后把它传输给user级的application,然后application再次把同样的内容再传回给处于kernal级的socket。这种场景下,application实际上只是作为
2016-03-01 22:37:03 395
转载 RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。下面我列出这些MQ之间的对比数据和资料。第一部分:RabbitMQ,ActiveMq,ZeroMq比较1、 TPS比较 一ZeroMq 最好,RabbitMq 次之, ActiveMq 最差。这个结论来自于以下这篇文
2016-03-01 22:20:39 446
转载 mpstat
mpstat 另一个用于获取 CPU 相关统计信息的有用的命令是 mpstat。下面是一个示例输出: # mpstat -P ALL 5 2 Linux 2.6.9-67.ELsmp (oraclerac1) 12/20/2008 10:42:38 PM CPU %user %nice %system %iowait %irq
2016-03-01 21:00:39 383
转载 vmstat
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。一般vmst
2016-03-01 20:54:50 336
转载 c++ 11 lamda表达式
class CTest{public: CTest() : m_nData(20) { NULL; } void TestLambda() { vector vctTemp; vctTemp.push_back(1); vctTemp.push_back(2); // 无函数对象参数,输出:1 2 { for_each(vctTem
2016-03-01 10:35:10 780
转载 BOOST property_tree
###################################################include #include using namespace boost::property_tree;//read_xml() input xml filevoid read_xml(const string &, ptree &pt);void read_x
2016-03-01 09:50:27 724
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人