- 浏览: 107433 次
- 性别:
- 来自: 广州
最新评论
-
rex0654335:
我喜欢这个排版
Java Socket之单线程通信 -
free9277:
james_lover 写道呵呵,关于网络通信,你的整个思路都 ...
Java Socket之单线程通信 -
james_lover:
呵呵,关于网络通信,你的整个思路都是错的啊。太误导初学者了。这 ...
Java Socket之单线程通信 -
I白I:
alvin198761 写道我想知道如果两个client 访问 ...
Java Socket之单线程通信 -
free9277:
alvin198761 写道我想知道如果两个client 访问 ...
Java Socket之单线程通信
文章列表
上一篇文章说到怎样写一个最简单的Java Socket通信,但是在上一篇文章中的例子有一个问题就是Server只能接受一个Client请求,当第一个Client连接后就占据了这个位置,后续Client不能再继续连接,所以需要做些改动。
当Server每次接受到一个Client的请求之后,都建立一个线程,然后继续等待下一个Client的连接请求。这样就不会阻塞Server端接收请求了。具体代码如下:
代码流程图如下:
服务端的代码
public class MyServer1 implements Runnable {
private Socket sock ...
1 什么是resteasy
resteasy是JBoss的一个开源项目,提供各种框架帮助你构建RESTful Web Services和RESTful Java应用程序。它是JAX-RS规范的一个完整实现并通过JCP认证。作为一个JBOSS的项目,它当然能和JBOSS应用服务器很好地集成在一起。 但是,它也能在任何运行JDK5或以上版本的Servlet容器中运行。RESTEasy还提供一个RESTEasy JAX-RS客户端调用框架。能够很方便与EJB、Seam、Guice、Spring和Spring MVC集成使用。支持在客户端与服务器端自动实现GZIP解压缩。
2 构建项 ...
Hive部署(包括集成Hbase和Sqoop)
1 安装环境
1.1 系统环境
主要是选择软件版本。
Hadoop 1.0.3
Hbase 0.94.0
Hive 0.8.1
zookeeper-3.3.5
Mysql 5.5.28
JDK 1.6
Sqoop-1.4.2
1.2 环境变量
$HDOOP_HOME:/home/hadoop/hadoop
$HBASE_HOME:/
掌握java枚举类型(enum type)
1 背景
在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量。之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏天,3表示秋天,4表示冬天。
public class Season {
public static final int SPRING = 1;
public static final int SUMMER = 2;
public static final int AUTUMN = 3;
public static final ...
Hbase实战
- 博客分类:
- distribution
- java
1、 背景
网站日趋成熟,用户量趋向稳定。客户想从网站产生的用户行为信息中获取一些有用的信息,以便支持决策。便有了今天《运营分析平台》这个项目,项目的主要内容包括:1、日志入库(数据库使用DB2),2、根据客户提供的规则进行一些简单的统计汇总,然后报表展示结果,这些规则一般很简单。3、对资源和 业务进行阀值实时监控预警。4、日志明细的查询。
如今网站一天产生1000多万条记录,面对暴涨的数据量。原先使用DB2的方案中遇到了一些瓶 颈,其中包括入库流程,统计过程与明细查询。经常收到运维同事的抱怨,今天存储不够了,明天统计速度慢了,数据查了老半天 ...
hadoop添加删除节点
- 博客分类:
- distribution
添加节点
1.修改host 和普通的datanode一样。添加namenode的ip
2.修改namenode的配置文件conf/slaves 添加新增节点的ip或host
3.在新节点的机器上,启动服务
[root@slave-004 hadoop]# ./bin/hadoop-daemon.sh start datanode
[root@slave-004 hadoop]# ./bin/hadoop-daemon.sh start tasktracker
4.均衡block
[root@slave-004 hadoop]# ./bin/star ...
1、 服务器端处理流程
接触一种技术,首先都要熟悉它的生命周期,这样才能从大局上看每个流程的细节。才有居高临下,势如劈竹的架势。加深我们对这种技术的理解。对于socket网络编程,我们现在来看看socket服务器的生命周期。
socket程序,一般情况下,都是服务器与客户端成双成对出现。
服务器端socket的生命周期为:监听服务器端口,接受客户端连接,获取客户端输入、输出流,处理业务逻辑、发送响应信息,关闭客户端连接,关闭服务区监听。详情如下所示:
2、 客户端处理流程
socket程序的客户端的处理流程与服务器的相似,生命周期为 ...
1、 作用
为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
2、 角色
抽象主题接口(Count):声明真实对象和代理对象的共同接口;代理类:代理对象角色内部含对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。真实类:定义了代理角色(proxy)所代表的具体对象。
3、 静态代理
抽象接口,代理类与真实类共同实现的接口。此接口定义了两 ...
1、servlet部分
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
resp ...
servlet+maven示例
- 博客分类:
- java
1、项目名称
restaurant
2、servlet部分
@WebServlet("/user")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOExcept ...
JDBC增删查改示例
- 博客分类:
- java
ModelTable
只是辅助作用
public class Table {
final static int MAX_PEOPLE = 12;
final static int MIN_PEOPLE = 2;
private int table_id;
private int table_status;
private int people;
public String getTable_name() {
return table_name;
}
public void setTable_name(String table_name) {
...
1 远程机器启动jstat
1.1 首先需要准备一个jstatd.all.policy文件,保存到如/home/admin/jstatd.all.policy
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
1.2 启动jstatd
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true
2 ...
ubuntu修改IP地址
- 博客分类:
- ubuntu
直接修改Ubuntu IP系统配置文件
Ubuntu IP的网络配置文件是根目录下:/etc/network/interfaces
注意:修改完interfaces文档中的内容后,需要修改/etc/NetworkManager/NetworkManager.conf文档中的managed参数,使之为true,并重启。否则,会提示说 ...
1、正则表达式
Pattern p = Pattern.compile("\\d{4}+[-]\\d{1,2}+[-]\\d{1,2}+");
Matcher matcher = p.matcher(str);
if (!matcher.matches()) {
logger.info("输入时间格式错误,应该:yyyy-MM-dd");
return false;
}
2、判断是否为数字
private boolean isNumeric(String str) {
if(str.trim().length() ...