- 浏览: 303228 次
- 性别:
- 来自: 深圳
最新评论
-
sunshine217:
请问 var zTool = require("./ ...
模块简单设计——socket.io聊天代码 -
fgjun:
代码中的io.sockets.emit(socket.id,d ...
模块简单设计——socket.io聊天代码
文章列表
expect脚本实现通过跳板机登录多个机器做操作
如下:192.168.10.1是跳板机IP,192.168.10.2和192.168.10.3是我们需要操作的服务器。
(需要在跳板机实现自动登录的脚本autologin)
#!/usr/bin/expect
set ipaddr "192.168.10.1"
set password "test"
set timeout -1
spawn ssh root@$ipaddr -p 22 "autologin 192.168.10.2"
...
Jetty不仅可以拥有方便的服务器组件,也能很方便地发起Http请求。
Jetty的HttpClient组件可以用来向web服务器发起HTTP请求,解析响应内容,它有下面一些特性,比起JRE自带的要强大很多
1,默认是异步,也可以指定为同步
2,默认是非阻塞连接,也可以指定阻塞connectors
3,支持SSL协议
4,支持HTTP代理
5,支持HTTP认证机制
6,可以详细配置超时,连接数,线程池等设置
HttpClient API提供回调接口异步地处理服务器端返回,一个请求响应单元被成为exchange,HttpClient API里面有两个主要的类
...
Java学习——Jetty服务端编程
- 博客分类:
- 关于服务器
下面测试使用Jetty的continuation机制,首先自定义一个服务,分别添加blockservlet和nonblockservlet。开启5个线程的线程池提供server服务。(jetty 8.1.8版本)
package test;
import org.eclipse.jetty.server.*;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.ecli ...
Java学习——接触Jetty服务器
- 博客分类:
- 关于服务器
Jetty不只是个性能优秀的web服务器,还能作为插件供我们开发使用,下面就简单接触一下,我下载的jetty版本是8.1.8版本。最新版9.0.0的api相比8.1.8有不小改动,出于了解学习的目的就随便找个来用。
“从一万里高空看Jetty”就是下面这个架构
Connector
|
|
Server — — ThreadPool
|
|
Handler
Connector负责前端请求的接受,handler负责后台处理,同时维持一个threadpool线程池供服务器调用。
Connector分下面几种
1,SelectCha ...
转自:http://blog.chinaunix.net/uid-26167002-id-2383052.html
#service servicename status是当前状态#chkconfig --list servicename是查看启动状态,也就是是否开机自动启动
首先写好脚本,如 mysql,把它放到 /etc/init.d 下,修改属性:$ sudo chmod x mysql创建 ...
转自:http://blog.chinaunix.net/uid-20731447-id-1883741.html
lsof简介lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接 和硬件 ...
Redmine是用Ruby开发的基于web的项目管理软件(其它还有trac和jira等),感觉redmine安装配置比较简单(fedora 14)。安装手册参照官方流程http://www.redmine.org/projects/redmine/wiki/RedmineInstall
Step 1:
下载redmine源码(2.2.1版本)
Step 2:
(安 ...
模块简单设计——socket.io聊天代码
- 博客分类:
- 模块简单设计
参照网上的各种教程和代码实现一个简易在线聊天器,支持定向发消息
服务器端
app.js(使用express搭建静态服务,socket.io建立服务器端监听)
var app = require('express')()
, express = require('express')
, server = require('http').createServer(app)
, io = require('socket.io').listen(server);
var zTool = require("./zTool");
var onlineUserM ...
为了不将服务端直接暴露给“客户端”,增加可扩展性,我们可以制作个中间层broker(参照官方示例代码)
比如request-reply这种最简单的模型,我们可以通过一个中间组件将后面的服务透明化,增强系统的可扩展性,后台只需要增加service数目就可以增强服务能力
架构模型如下:
1,服务端worker.php
(不用bind端口,只需要"监听"中间件broker的套接口即可)
<?php
/*
* Hello World server
* Connects REP socket to tcp://*:5560
* Expects & ...
模块简单设计——用脚本监控日志
- 博客分类:
- 模块简单设计
python脚本实时监控日志
日志每天都会割接重建,所以脚本需要每天都重启(通过crontab shell脚本实现),因为割接重建后tail -f拿不到添加的日志条目。
先来实现一个最简单的,主要用到popen。
#!/usr/bin/env python
# ./log_watcher.py -f log
import sys
import os
import getopt
import subprocess
import time
def worker(line):
backup = open("backup.txt",&qu ...
官方给的那个pipeline例子很直观,当我们有些一大堆任务(如分析日志)需要用多个worker来工作时,可以不用hadoop这么重量级的产品,使用pipeline完全可以做到。这里做点点修改如下:
pipeline模型图如下:
1,首先需要个任务生成器:taskcreate.php
任务生成器负责PUSH任务内容到套接口,需要指定类型为SOCKET_PUSH。生成一堆随机数模拟每个任务所需时间
如,这里运行的结果为需要花费5s
<?php
$context = new ZMQContext();
//push message mode
$sender ...
关于消息队列——ZeroMQ的安装
- 博客分类:
- 关于消息队列
ZeroMQ
—— The Intelligent Transport Layer (智能的传输层封装)
1,与其说它可嵌入的网络库,不如说是一个并发的socket框架
2,集群上使用比TCP快速
3,消息通过inpro,IPC,TCP以及广播方式传输
4,通过fanout(扇出),pubsub,pipeline,request-reply实现多对多通信
5,异步IO
6,活跃社区支持
7,拥有30多种语言的扩展库
8,支持window,linux,os x等系统
9,LGPL许可
安装过程如下:
下载源码zeromq-3. ...
单例模式是设计模式中使用很频繁的一种模式,单例模式的目的是要控制特定的类只产生一个对象,当然允许在一定情况下灵活改变对象的个数。如何限制对象的产生,一个办法是将构造函数编程私有(至少是受保护的),使得外面的类不能用过引用来产生对象。
第一种方式:
class Singleton{
//静态属性
private static Singleton single = new Singleton();
//私有方法
private Singleton(){}
//静态方法
public static Singleton getInstance(){
return ...
又拍云存储提供四个配置项供用户使用
域名防盗链(图片网站适用)
白名单域名列表
黑名单域名列表
IP黑名单
1,维护一个IP列表
2,IP地址支持通配符
客户端白名单
1,维护一个user-agent列表
2,客户端,手机APP自定义user-agent
token防盗链(下载站,mp3播放站适用)
所有资源均需token签名访问
参数名:_upt
签名格式:MD5(密匙&过期时间&URI){中间8位}+(过期时间)
过期时间格式: UNIX TIME,如:13529456 ...
工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法的压力可以由工厂方法模式中不用的工厂子类来分担。首先看看它的组成
抽象工厂角色(是具体工厂角 ...