博文

JAVA执行Linux脚本问题(2012-05-04 12:43:00)

摘要: 在项目中需要修改Linux主机信息,于是用了Linux支持的命令来完成操作。   该命令为  /bin/sed -i '1,$'d   /var/log/XX.log   调用方法为: public static InputStream excute(String command) {
    InputStream inputStream = null;
    System.out.println(command);
    try{
     Process process = Runtime.getRuntime().exec(command);
      inputStream = process.getInputStream();
      BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
      System.out.println(br.readLine());
    }catch(Exception e){
     e.printStackTrace();
    }
    return inputStream;
   } 发现根本就为清空该log文件。调试了半天不知道什么原因。 我于是在主机上自己新建了一个 shell脚本rmfilecontent  该脚本中写了/bin/sed -i '1,$'d......

阅读全文(2678) | 评论:0 | 复制链接

ExtJs3.3  IE9 Tree点击事件无效(2012-05-02 15:37:00)

摘要: 这两天在用ExtJs做个树形组件,在IE7、8下完好,但放到IE9下就出现tree node移动、点击事件无效。摸索了半天终于解决了。   解决方案是: Ext.tree.TreeEventModel.prototype 中的 添加如下红色背景部分 getNode : function(e){
        var t;
        if(t = e.getTarget('.x-tree-node-el', 10)){
            var id = Ext.fly(t, '_treeEvents').getAttribute('tree-node-id', 'ext') || t.getAttribute('ext:tree-node-id');
            if(id){
                return this.tree.getNodeById(id);
            }
        }
        return null;
    }       ......

阅读全文(4493) | 评论:2 | 复制链接

java中的io系统总结(转)(2012-04-17 18:13:00)

摘要: java中的io中的(input/output)stream无非就是包括基于字符的stream、基于字节的stream和把字节导向的stream转换
字符为导向的stream的stream。(很难理解么?)
以字节为导向的stream------InputStream/OutputStream
InputStream

OutputStream是两个abstact类,对于字节为导向的stream都扩展这两个鸡肋(基类^_^);
--InputStream
ByteArrayInputStream
-- 把内存中的一个缓冲区作为InputStream使用.
construct---ByteArrayInputStream(byte[])创建一个新字节数组输入流,它从指定字节数组中读取数据。
---ByteArrayInputStream(byte[],
int, int) 创建一个新字节数组输入流,它从指定字节数组中读取数据。
---mark::该字节数组未被复制。
StringBufferInputStream -- 把一个String对象作为InputStream .
注释:不推荐使用
StringBufferInputStream 方法。 此类不能将字符正确的转换为字节。
同 JDK 1.1
版中的类似,从一个串创建一个流的最佳方法是采用 StringReader 类。
construct---StringBufferInputStream(String) 据指定串创建一个读取数据的输入流串。
FileInputStream -- 把一个文件作为InputStream,实现对文件的读取操作
construct---FileInputStream(File) 创建一个输入文件流,从指定的 File
对象读取数据。
---FileInputStream(FileDescri......

阅读全文(3354) | 评论:0 | 复制链接

MySQL客户端连接太慢(2012-04-17 08:55:00)

摘要: 使用MySQL时,发现用客户端连接速度非常缓慢。刚开始以为是网速慢导致的,之后在同一台主机安装了postgreSQL数据库,并用客户端连接,发现速度很快。因此可见不是网速问题导致MySQL客户端连接慢。 查了相关资料,发现MySQL配置文件中的my.cnf  [mysql] 下面没有 skip-name-resolve 。这个属性是不做DNS反向解析。 而恰恰我主机配置了DNS。所以导致了速度太慢。 于是我添加了skip-name-resolve属性。重启MySQL服务,再次连接,速度很快了。 ......

阅读全文(1559) | 评论:0 | 复制链接

BI 定义(2012-04-14 22:35:00)

摘要: 一、BI的定义 BI是Business Intelligence的英文缩写,中文解释为商务智能,用来帮助企业更好地利用数据提高决策质量的技术集合,是从大量的数据中钻取信息与知识的过程。简单讲就是业务、数据、数据价值应用的过程。用图解的方式可以理解为下图: 图(1) 这样不难看出,传统的交易系统完成的是Business到Data的过程,而BI要做的事情是在Data的基础上,让Data产生价值,这个产生价值的过程就是Business Intelligence analyse的过程。
如何实现Business Intelligence analyse的过程,从技术角度来说,是一个复杂的技术集合,它包含ETL、DW、OLAP、DM等多环节,基本过程可用下图描述。
图(2) 上 图流程,简单的说就是把交易系统已经发生过的数据,通过ETL工具抽取到主题明确的数据仓库中,OLAP后生成Cube或报表,透过Portal展现给用 户,用户利用这些经过分类(Classification)、聚集(Clustering)、描述和可视化(Description and Visualization)的数据,支持业务决策。 说明:
BI 不能产生决策,而是利用BI过程处理后的数据来支持决策。哪么BI所谓的智能到底是什么呢?(理清这个概念,有助于对BI的应用。)BI最终展现给用户的 信息就是报表或图视,但它不同于传统的静态报表或图视,它颠覆了传统报表或图视的提供与阅读的方式,产生的数据集合就象玩具“魔方”一样,可以任意快速的 旋转组合报表或图视,有力的保障了用户分析数据时操作的简单性、报表或图视直观性及思维的连惯性。 我想这是大家热衷于BI的根本原因。 二、BI的诞生 随 着IT技术的进步,传统的业务交易系统有了长足的发展,已经实现了业务信息化,每一笔业务数据都记录在数据库中,星转斗移,累积了以TB为计量单位的业务 数据记录。也许你会问:这么多数据,占用了很多存储设备,耗费存储成本,却又不经常访问,留着它有什么用处?可以给你肯定的回答,留着......

阅读全文(1268) | 评论:0 | 复制链接

Extjs3.3 IE9  createContextualFragment(2012-04-09 14:45:00)

摘要:if ((typeof Range !== "undefined") && !Range.prototype.createContextualFragment) {Range.prototype.createContextualFragment = function (html) {var frag = document.createDocumentFragment(),div = document.createElement("div");frag.appendChild(div);div.outerHTML = html;return frag;};}......

阅读全文(1546) | 评论:0 | 复制链接

Linux 防火墙规则修改(2012-04-09 12:40:00)

摘要: 如果你发现你的服务开着,对应的端口也有。但还是用客户端访问不了,那么请注意是否是防火墙规则过滤掉了你所要访问的端口。   1、 /etc/sysconfig/iptables 这个是防火墙的规则文件, 内容为; *filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCE......

阅读全文(3058) | 评论:0 | 复制链接

MySQL添加用户基本命令(2012-04-09 11:49:00)

摘要: 1. 新增用户 mysql>insert into mysql.user(Host,User,Password) values("localhost","lionbule",password("hello1234"));
mysql>flush privileges;   2. 修改用户密码 mysql>update mysql.user set password=password('new password') where User="lionbule" and Host="localhost";
mysql>flush privileges;   3. 删除用户 mysql>DELETE FROM user WHERE User="lionbule" and Host="localhost";
mysql>flush privileges;   4. 权限分配    权限:
    常用总结, ALL/ALTER/CREATE/DROP/SELECT/UPDATE/DELETE
数据库:
     *.*                    表示所有库的所有表
     test.*                表示test库的所有表
     test.test_table  表示test库的test_table表  ......

阅读全文(2101) | 评论:0 | 复制链接

java 实现ping(2012-03-06 13:18:00)

摘要:一、纯Java实现ICMP的ping命令
import java.io.*;
import java.net.*;
import java.nio.channels.*;
import java.util.*;
import java.util.regex.*;
public class Ping {
    static int DAYTIME_PORT = 13;
    static int port = DAYTIME_PORT;
    static class Target {
        InetSocketAddress address;
        SocketChannel channel;
        Exception failure;
        long connectStart;
        long connectFinish = 0;
        boolean shown = false;
        Target(String host) {
            try {
        ......

阅读全文(3951) | 评论:2 | 复制链接

JS 数组操作(2012-03-01 13:12:00)

摘要: js数组的操作 用 js有很久了,但都没有深究过js的数组形式。偶尔用用也就是简单的string.split(char)。这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手,一下狠心,我学!呵呵。学了之后才知道,js数组的功能强大很,远比VB,C#强多了,大家慢慢看吧 1、数组的创建   var arrayObj = new Array(); //创建一个数组

var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度

var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); //创建一个数组并赋值
复制代码         要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。 2、数组的元素的访问   var testGetArrValue=arrayObj[1]; //获取数组的元素值

arrayObj[1]= "这是新值"; //给数组元素赋予新的值
复制代码     3、数组元素的添加   代码 arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度

arrayObj.unshift([item1 [item2 [. . . [itemN ......

阅读全文(2429) | 评论:1 | 复制链接