罐子

  categories:儿童作品  author:

image_thumb[1][1]

朴素的罐子… 阅读全文

MySQL高效分页解决方案集(转)

  categories:mysql资料  tags:  author:
        平时用到的分页方法不多,只从索引、分表、使用子查询精准定位偏移以外,没有使用到其它方法。
后来在看其它博客看到了一些不同的方案,也一直没有整理。今天有时间,整理出来,分享给大家。一,最常见MYSQL最基本的分页方式:

select * from content order by id desc limit 0, 10

在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引。随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:

select * from content order by id desc limit 10000, 10

一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。
此时,我们可以通过2种方式:
一,子查询的分页方式来提高分页效率,飘易用的SQL语句如下:

SELECT * FROM `content` WHERE id> (SELECT id FROM `content` ORDER BY

阅读全文

STS下新建spring MVC 工程

  categories:java资料  author:

File–New–Spring Template Project

选择Spring MVC Project

填写项目名称和基础的包名

Finish之后就完成了。

把项目添加到服务器,然后运行。在浏览器访问,就可以看到项目了。

在浏览器访问,就可以看到项目了。这里乱码是因为默认的不是UTF-8。

访问路径的那个名字应该是可以改的,虽然没试过。

来源:http://blog.csdn.net/wuyt2008/article/details/8594870

阅读全文

Netflix Curator使用

  categories:java资料  tags:  author:

Netflix curator 是Netflix公司开源的一个Zookeeper client library,用于简化zookeeper客户端编程,包含一下几个模块:

  • curator-client – zookeeper client封装,用于取代原生的zookeeper客户端,提供一些非常有用的客户端特性
  • curator-framework – zookeeper api的高层封装,大大简化zookeeper客户端编程,添加了例如zookeeper连接管理、重试机制等
  • curator-recipes – zookeeper recipes 基于curator-framework的实现(除2PC以外)

maven dependency:

  1. <dependency>
  2.     <groupId>com.netflix.curator</groupId>
  3.     <artifactId>curator-recipes</artifactId>
  4.     <version>
阅读全文

Zookeeper开源客户端框架Curator简介

  categories:java资料  tags:  author:

Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理很多事情, 于是在它的基础上包装了一下, 提供了一套更好用的客户端框架. Netflix在用ZooKeeper的过程中遇到的问题, 我们也遇到了, 所以开始研究一下, 首先从他在github上的源码, wiki文档以及Netflix的技术blog入手.看完官方的文档之后, 发现Curator主要解决了三类问题:

  • 封装ZooKeeper client与ZooKeeper server之间的连接处理;
  • 提供了一套Fluent风格的操作API;
  • 提供ZooKeeper各种应用场景(recipe, 比如共享锁服务, 集群领导选举机制)的抽象封装.

Curator列举的ZooKeeper使用过程中的几个问题
初始化连接的问题: 在client与server之间握手建立连接的过程中, 如果握手失败, 执行所有的同步方法(比如create, getData等)将抛出异常
自动恢复(failover)的问题: 当client与一台server的连接丢失,并试图去连接另外一台server时, client将回到初始连接模式
session过期的问题: 在极端情况下, 出现ZooKeeper session过期, 客户端需要自己去监听该状态并重新创建ZooKeeper实例 .
对可恢复异常的处理:当在server端创建一个有序ZNode, 而在将节点名返回给客户端时崩溃, 此时client端抛出可恢复的异常, 用户需要自己捕获这些异常并进行重试
使用场景的问题:Zookeeper提供了一些标准的使用场景支持, 但是ZooKeeper对这些功能的使用说明文档很少, 而且很容易用错.

阅读全文

Zookeeper Client简介

  categories:java资料  tags:  author:

直 接使用zk的api实现业务功能比较繁琐。因为要处理session loss,session expire等异常,在发生这些异常后进行重连。又因为ZK的watcher是一次性的,如果要基于wather实现发布/订阅模式,还要自己包装一下, 将一次性订阅包装成持久订阅。另外如果要使用抽象级别更高的功能,比如分布式锁,leader选举等,还要自己额外做很多事情。这里介绍下ZK的两个第三 方客户端包装小工具,可以分别解决上述小问题。

一、 zkClient
zkClient 主要做了两件事情。一件是在session loss和session expire时自动创建新的ZooKeeper实例进行重连。另一件是将一次性watcher包装为持久watcher。后者的具体做法是简单的在 watcher回调中,重新读取数据的同时再注册相同的watcher实例。

zkClient简单的使用样例如下:

	public static void testzkClient(final String serverList) {
		ZkClient zkClient4subChild = new ZkClient(serverList);
		zkClient4subChild.subscribeChildChanges(PATH, new IZkChildListener() {
			@Override
			public void handleChildChange(String parentPath, List currentChilds) throws Exception {
				
阅读全文

史上最快的消息队列ZeroMQ简介

  categories:mq, 资料  tags:,   author:

—– ZMQ的学习和研究

一、ZeroMQ的背景介绍

引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是 “成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接 字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。”

近几年有关”Message Queue”的项目层出不穷,知名的就有十几种,这主要是因为后摩尔定律时代,分布式处理逐渐成为主流,业界需要一套标准来解决分布式计算环境中节点之间 的消息通信。几年的竞争下来,Apache基金会旗下的符合AMQP/1.0标准的RabbitMQ已经得到了广泛的认可,成为领先的MQ项目。

与RabbitMQ相比,ZMQ并不像是一个传统意义上的消息队列服务器,事实上,它也根本不是一个服务器,它更像是一个底层的网络通讯库,在Socket API之上做了一层封装,将网络通讯、进程通讯和线程通讯抽象为统一的API接口。

二、ZMQ是什么?

阅读了ZMQ的Guide文档后,我的理解 是,这是个类似于Socket的一系列接口,他跟Socket的区别是:普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而ZMQ屏 蔽了这些细节,让你的网络编程更为简单。ZMQ用于node与node间的通信,node可以是主机或者是进程。

三、本文的目的

在集群对外提供服务的过程中,我们有很多的配置,需要根据需要随时更新,那么这个信息如果推动到各个节点?并且保证信息的一致性和可靠性?本文在介 绍ZMQ基本理论的基础上,试图使用ZMQ实现一个配置分发中心。从一个节点,将信息无误的分发到各个服务器节点上,并保证信息正确性和一致性。

四、ZMQ的三个基本模型

ZMQ提供了三个基本的通信模型,分别是“Request-Reply “,”Publisher-Subscriber“,”Parallel Pipeline”,我们从这三种模式一窥ZMQ的究竟

ZMQ的hello world!

由Client发起请求,并等待Server回应请求。请求端发送一个简单的hello,服务端则回应一个world。请求端和服务端都可以是 1:N 的模型。通常把 1 认为是 Server ,N 认为是Client … 阅读全文

zookeeper原理(转)

  categories:java资料  tags:  author:

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在 某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookeeper的目的就在于此。本文简单分析 zookeeper的工作原理,对于如何使用zookeeper不是本文讨论的重点。

1 Zookeeper的基本概念

1.1 角色

Zookeeper中的角色主要有以下三类,如下表所示:

系统模型如图所示:

1.2 设计目的

1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。

2 .可靠性:具有简单、健壮、良好的性能,如果消息m被到一台服务器接受,那么它将被所有的服务器接受。

3 .实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。

4 .等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。

5.原子性:更新只能成功或者失败,没有中间状态。

6 .顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。

2 ZooKeeper的工作原理

Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和 广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以 后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。

为 了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了 zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新 的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。

每个Server在工作过程中有三种状态:

  • LOOKING:当前Server不知道leader是谁,正在搜寻
  • LEADING:当前Server即为选举出来的leader
  • FOLLOWING:leader已经选举出来,当前Server与之同步

2.1 选主流程

阅读全文

zookeeper学习之Curator客户端

  categories:java资料  tags:  author:
博客分类:

Curator框架是最好用,最流行的zookeeper的客户端。

它有以下三个优点

1.提供了一套非常友好的操作API;

2. 提供一些高级特性(包括但不仅限于前篇文章中提到的)的封装

3.易测试

 

maven依赖如下

 

Xml代码
  1. <dependency>
  2.     <groupId>org.apache.curator</groupId>
  3.     <artifactId>curator-recipes</artifactId>
  4.     <version>2.5.0</version>
  5. </dependency>

 

阅读全文

可保护WordPress网页安全的十个插件

  categories:wordpress  tags:,   author:
来源:http://sec.chinabyte.com/103/12090603.shtml

WordPress无疑是最流行的CMS平台,但是正由于它成为越来越多人的选择,黑客也盯上了这个目标。因此如何确保Wordpress网页的安全是一项重要任务。本文将为大家介绍十个用来增强网页安全性的小插件。

Wp安全扫描

Wp-Security会扫描WordPress安装中是否存在安全漏洞,并纠正用户的不当操作,如密码设置,文件许可,数据库安全,隐藏的版本和WordPress管理员保护/安全。

  Secure WordPress

Secure WordPress是一款非常智能的WordPress插件,它可以确保WordPress漏洞的安全:移除登陆页面的错误信息;向插件目录中添加index.html;移除wp(除管理区域外)。

  Login LockDown

这一插件可通过限制用户在一定时间内,从给定IP范围登陆的次数来保护WordPress。如果限定时间内,同一IP的登陆次数超出许可范围,那么登陆功能就会被禁用。这样可以阻止密码恢复。

  Sabre

Sabre是Simple Anti Bot Registration Engine的首字母缩写。它是一套用于博客的反垃圾注册应对措施。如果你的WordPress网页支持新用户订阅时就可以采用这个插件。

  Bad Behavior

Bad Behavior扮演着看门人的角色,是其他反垃圾链接方案的一个补充。它可以阻止垃圾链接的发送者阅读你的网页。这样你的页面在保持干净的同时还可以有效防止DoS情况的发生。

  用于WordPress的反病毒插件

AntiVirus for WP 是一款有效的智能方案,它能保护博客免受垃圾注入和病毒危害。它还提供每日一邮,来报告恶意文件或可疑文件。

  TAC

主题验证检测器(TAC)可以对每个主题的源文件进行搜索,以查找其中是否包含恶意代码。如果找到恶意代码,TAC会将主题文件的路径,代码行和一小段可疑代码显示出来。

  Stealth Login

这个插件可以让用户创建用于登录,登出,管理和注册WordPress博客的自定义URL链接。用户可以创建便于记忆的URL链接,而不是将登 录链接摆放在主页上。例如,你可以将登录链接设置为http://www.myblog.com/login 来登录网页。你也可以启用Stealth模式,在该模式下,用户不允许直接使用wp-login.php登录。

  reCAPTCHA

reCAPTCHA是一个源自卡内基 · 梅隆大学的反垃圾方法,它通过多种方式使用CAPTCHA。reCAPTCHA使用是不同于自动生成字符的另类方法,因为垃圾信息的注入者可能会使用OCR库来读取自动生成的字符。大家不妨一试。

  AskApache密码保护

这个插件不会控制WordPress或弄乱数据库,相反,它利用快速可靠的内置安全性能为博客添加安全多个安全层级。该插件会经常更新,旨在阻止攻击者利用漏洞攻击网页。

阅读全文



快乐成长 每天进步一点点