![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开源精华
猴哥_IT小菜鸟
三分天注定七分靠打拼 爱拼才会赢
展开
-
LevelDb 深入介绍
LevelDb日知录之一:LevelDb 101 说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Ghemawat。这两位是Google公司重量级的工程师,为数甚少的Google Fellow之二。 Jeff Dean其人:http://research.google.com/peo转载 2017-02-15 16:38:27 · 288 阅读 · 0 评论 -
Disruptor框架入门
Disruptor是LMAX出品的一个高效的无锁并发框架,它高效核心在于其无锁队列RingBuffer的独特设计。1.Disruptor是什么? Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。 Disruptor 比传统的基于锁的消息框架的优势在于:它是无锁的、CPU友好;它不会清除缓存中的数转载 2017-02-15 16:51:11 · 321 阅读 · 0 评论 -
Apache commons (Java常用工具包)简介
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问http://jakarta.apache.org/commons/index.htmlBeanUtilsCommons-BeanUtils 提供对 Java 反射和自省API的包装 BetwixtBetwixt提供将 JavaBean 映射至 XML 文档,以及相反映射的服务. Cha转载 2017-02-15 16:54:05 · 227 阅读 · 0 评论 -
Java Cache系列之Guava Cache
Guava作为Google开源出来的工具库,Google自己对Guava的描述:The Guava project contains several of Google’s core libraries that we rely on in our Java-based projects: collections, caching, primitives support, concurrency l转载 2017-02-15 16:54:52 · 252 阅读 · 0 评论 -
使用Google Guava来编写优雅的代码一Guava简介
以往我们在使用工具包的时候首先想到是著名的Apache的Commons系列,今天我要介绍的是同样出色,并且目前发展比Apache Commons系列更为迅速的Google Guava库。Google Guava库是一个非常优秀的包含很多Java工具类集的库,广泛使用在Google公司内部,因此它可以被使用到几乎所有的Java项目中。Google Guava库最初发布在2007年,经过几年的更新发转载 2017-02-15 16:55:17 · 299 阅读 · 0 评论 -
Google Guava 类库简介
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。下面我们转载 2017-02-15 16:55:40 · 238 阅读 · 0 评论 -
利用Digester把XML转换为Java对象
XML已经成为应用程序开发过程中不可或缺的技术,在Java EE开发中,一种常见的应用就是把全局JavaBean对象的属性和JavaBean对象之间的关联关系用XML文档来配置,例如,很多开源项目(例如,Strtus、Hibernate、Spring等框架)都是用XML文档作为配置文件来提供系统中的一些全局JavaBean对象的初始化信息。只需要修改XML文档中的相应信息,不需要修改Java源程序和转载 2017-02-15 16:56:04 · 214 阅读 · 0 评论 -
开源点评:ZeroMQ简介
先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。如果你已经万事具备,那么我们先从一段代码开始。程序员们习惯的上手第一步,自然是”Hello world”,不过Netty官网的例子却偏偏抛弃了”Hello world”。那我们转载 2017-02-15 16:58:55 · 281 阅读 · 0 评论 -
Hibernate VS MyBatis 区别
关于O/R Mapping的理论,网上也有很多。其实完整的O/R mapping理论是想让程序员从数据的CRUD中解放出来,专注于使用OO的思想来实现业务逻辑,使用OO的思想当然就很大程度上需要遵守SOLDI原则,而不是一会要用OO的眼光建立业务领域模型,一会要用Relation的数学观点来操作数据。还有一点,在O/R Mapping也提到了,就是要让那些不熟悉SQL的人也能开发需要数据存储的工程,转载 2017-02-15 16:59:45 · 342 阅读 · 0 评论 -
Apache MINA 快速入门
Apache MINA 是一个网络应用框架,有助于用户非常方便地开发高性能、高伸缩性的网络应用。它通过Java NIO提供了一个抽象的、事件驱动的、异步的位于各种传输协议(如TCP/IP和UDP/IP)之上的API,Apache MINA 是一个网络应用程序框架,它对Java中的socket和NIO进行了有效和清晰的封装,方便开发人员开发TCP/UDP程序,从而抛开在使用原始的 socket时需要转载 2017-02-15 17:00:26 · 334 阅读 · 0 评论 -
C++开源库,欢迎补充。
C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成 Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如Android必定要推出原生的SDK)转载 2017-02-15 17:00:59 · 278 阅读 · 0 评论 -
Tomcat基于Coyote的HTTP 1.1协议连接器
1. 模块架构org.apache.coyote.http11包支持http1.1协议,内部分为三类:ARP、NIO、普通http,这里只对最基本的普通http(使用java的IO流,而非NIO流)作简单研究。这个包主要有以下几个类:Http11Protocol,实现了ProtocolHandler接口Http11Processor,实现了ActionHook接口InternalInputBuf转载 2017-02-15 16:50:45 · 558 阅读 · 0 评论 -
Tomcat基于Coyote的连接器源码分析
不论Tomcat的容器设计得如何精妙,本质上Tomcat就是个HTTP服务器,需要从socket中获得HTTP数据流;另一方面,容器只能处理封装好的org.apache.coyote.Request,从socket到Request之间需要有个转换过程。因此,连接socket和容器之间的重任就交给了CoyoteCoyote简介Coyote是Tomcat的Connector框架的名字,简单说就是Co转载 2017-02-15 16:49:53 · 291 阅读 · 0 评论 -
全面分析 Spring 的编程式事务管理及声明式事务管理
开始之前关于本教程本教程将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务。通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之。先决条件本教程假定您已经掌握了 Java 基础知识,并对 Spring 有一定了解。您还需要具备基本的事务管理的知识,比如:事务的定义,隔离级别的概念,等等。本文将直接使用这些概念而不做详细解释。另外,您最好掌握转载 2017-02-15 16:39:08 · 138 阅读 · 0 评论 -
几款消息中间的调研
消息系统简介本次主要调研业界使用广泛的两款消息队列——RabbitMQ, Kafka, 以及阿里云的提供的两个服务, MNS和ONS.RabbitMQRabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。转载 2017-02-15 16:39:39 · 257 阅读 · 0 评论 -
RocketMQ与kafka对比
淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用MySQL作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间件,淘宝中间件团队在对Kafka做过充分Review之后,Kafka无限消息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息系统主要定位于日志传输,对于使用在淘宝交易、订单、转载 2017-02-15 16:40:08 · 334 阅读 · 0 评论 -
Tomcat 7服务器线程模型
Tomcat 7服务器网络处理主要由NioEndpoint,其处理客户端连接的主要流程如图所示图中Acceptor及Worker分别是以线程池形式存在,Poller是一个单线程。注意,与BIO的实现一样,缺省状态下,在server.xml中没有配置<Executor>,则以Worker线程池运行,如果配置了<Executor>,则以基于java concurrent 系列的java.util.con转载 2017-02-15 16:46:22 · 208 阅读 · 0 评论 -
ZooKeeper的事务日志可视化
在zookeeper server的配置文件zoo.cfg中可以通过dataLogDir来配置zookeeper的事务日志的输出目录,这个事务日志类似于下面这样的文件:这个文件是一个二进制文件, 一般不能够直接识别, 那么是否有方法可以把这些事务日志转换成正常日志文件呢, 答案是肯定的~ Zookeeper自带一个工具类:org.apache.zookeeper.server.LogFormat转载 2017-02-15 16:46:53 · 407 阅读 · 0 评论 -
消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ
RabbitMQ、ActiveMQ和ZeroMQ都是极好的消息中间件,但是我们在项目中该选择哪个更适合呢?很多开发者面临这个烦恼。下面我会对这三个消息中间件做一个比较,看了后你们就心中有数了。RabbitMQ 是AMQP协议领先的一个实现,它实现了代理(Broker)架构,意味着消息在发送到客户端之前可以在中央节点上排队。此特性使得RabbitMQ易于 使用和部署,适宜于很多场景如路由、负载均衡或消转载 2017-02-15 16:47:33 · 1254 阅读 · 2 评论 -
Redis与Memcached的区别
传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。 2.Memcached与MySQL数转载 2017-02-15 16:48:02 · 207 阅读 · 0 评论 -
主要开源协议一览
主要的开源协议有GPL、LGPL、CPL、Mozilla、Apache、BSD、MIT等,总的来说 后三种较为自由宽松,使用起来不用过多顾虑;前面几种使用有注意的地方,特别是GPL如果产品是要做商业用途的需要谨慎使用。 各协议的一句话总结: GPL: 只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源转载 2017-02-15 16:48:28 · 289 阅读 · 0 评论 -
12个最好的免费和开源的NoSQL数据库
NoSQL数据库一天天变得越来越流行。以下是最好的,免费,开源NoSQL数据库的一个列表。其中MongoDB是这些开源NoSQL数据库中最好的。这个列表包括:MongoDB, Cassandra, CouchDB, Hypertable, Redis, Riak, Neo4j, HBASE, Couchbase, MemcacheDB, RevenDB and Voldemort。这些免费和开源N转载 2017-02-15 16:49:00 · 6729 阅读 · 2 评论 -
Google Protocol Buffer 的使用和原理
简介什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol Buffers转载 2017-02-15 16:49:26 · 792 阅读 · 0 评论 -
开源爬虫Labin,Nutch,Neritrix介绍和对比
从网上找了一些开源spider的相关资料,整理在下面: ———————————————————————————–Larbin开发语言:C++http://larbin.sourceforge.net/index-eng.htmllarbin是个基于C++的web爬虫工具,拥有易于操作的界面,不过只能跑在LINUX下,在一台普通PC下larbin每天可以爬5百万个页面(当然啦,需要拥有良好转载 2017-02-15 17:02:51 · 908 阅读 · 0 评论