posts - 28,  comments - 15,  trackbacks - 0
     摘要: 本文介绍了解决Redis数据库响应延迟问题的方法,将有助于你找出Redis 响应延迟的问题所在。  阅读全文
posted @ 2014-07-22 17:11 zhangxl 阅读(1825) | 评论 (0)编辑 收藏
     摘要: 豁达是正确乐观的面对失败的系统。不需要过多的担心,需要一种去说那又怎样的能力。因此架构的设计是如此的重要。许多优秀的系统没有进一步成长的能力,我们应该做的是使用其他的系统去共同分担工作。 Redis是 其中一  阅读全文
posted @ 2014-07-22 15:27 zhangxl 阅读(375) | 评论 (0)编辑 收藏
     摘要: 在redis服务器中的分区主要包含两个目标:
通过利用多台计算机内存的和值,允许我们构造更大的数据库。
通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允许我们扩展网络带宽。
  阅读全文
posted @ 2014-07-14 12:17 zhangxl 阅读(647) | 评论 (1)编辑 收藏
     摘要: 为什么我设置的索引不能生效,设置索引应该注意些什么,关于mysql的索引,有哪些细节。本篇文章能告诉你一些知识点。  阅读全文
posted @ 2014-05-08 19:48 zhangxl 阅读(2016) | 评论 (4)编辑 收藏
     摘要: 二叉树是数据结构世界中具有重要地位的一种数据结构。它同时具备有序数组和链表的优点,同时又弥补了有序数组插入数据、链表查找的缺点。同时也是各种面试中常见的问题。现通过java实现二叉树,加深对二叉树的理解。  阅读全文
posted @ 2014-04-18 18:34 zhangxl 阅读(328) | 评论 (0)编辑 收藏
     摘要:   阅读全文
posted @ 2013-06-09 18:07 zhangxl 阅读(229) | 评论 (0)编辑 收藏
     摘要: 对于MongoDB collection下的文档而言,在文件大于16MB时,我们应该使用GridFS。在一些解决方案中,使用MongoDB的GridFS存储大文件,比使用系统级别的文件系统更便利。当文件系统的目录对文件数量有限制时,你应该使用GridFS来存储需要的尽可能多的文件;
  阅读全文
posted @ 2013-04-09 18:41 zhangxl 阅读(498) | 评论 (0)编辑 收藏
     摘要: 本文在内网linux环境下构建Mongodb主从复制  阅读全文
posted @ 2013-04-02 19:15 zhangxl 阅读(313) | 评论 (0)编辑 收藏

语法
jmap [ option ] pid
jmap [ option ] executable core
jmap [ option ] [server-id@]remote-hostname-or-IP


参数

option 参数是单一的,紧跟在命令后面。
pid 要被映射的进程。必须是java进程。用jps可以获得java进程列表
executable 产生核心转储的可执行java代码
core 要被映射的核心文件
remote-hostname-or-IP 远程调试服务器的域名或者ip地址(看jsadebugd)
server-id 可选唯一id,如果多个服务器运行在同一个远程主机


描述

    是复制共享对象的内存映射、给定进程的堆内存、核心文件、远程调试服务器。如果给定的进程是再64的VM,你需要制定参数,例如:
    jmap -J-d64 -heap pid

    注意:这个工具在未来的JDK里可能不支持或者不出现。在windows系统里没有dbgeng.dll, 需要安装'Debugging Tools for Windows'来运行这些工具。同时PATH环境变量必须包含被目标进程或者崩溃导出文件位置锁使用的jvm.dll路径。例如:
    set PATH=\jre\bin\client;%PATH%


OPTIONS

<no option> 当没有选项,jmap复制共享对象映射。目标虚拟机中的每一个分享对象、开始地址、映射大小、完整路径被复制。这类似于Solaris中的pmap工具。


-dump:[live,]format=b,file=<filename> 把java堆导出成hprof二进制格式文件。live子选项是可选的。如果指定,只有堆中的活对象被导出。浏览堆镜像,你可以使用jhat。


-finalizerinfo 复制正在等待回收的对象信息


-heap 复制一个堆得概要。使用的GC算法堆配置,使用代的大小。


-histo[:live] 复制一个堆得柱状图。每个Java类,对象个数,内存大小(byte),类全路径。VM的内部类用*为前缀。如果live子选项被指定,只有活对象被计数。


-permstat 打印堆中永生代的类加载器的宽泛统计。每个加载器的名字,活性,地址,父加载器,它加载的类的大小。另外,驻留字符串的大小和数量。


-F 强制。使用jmap -dump 或者 jmap -histo 选项时,如果pid没有响应。在这个模式下live子选项不支持。


-h 帮助


-help 帮助


-J<flag> java虚拟机选项

posted @ 2013-03-18 17:32 zhangxl 阅读(1098) | 评论 (0)编辑 收藏
     摘要:     使用java的人都知道,如果覆盖了Object的equals方法,那么必须要覆盖hashCode方法,并且如果两个对象用equals方法比较返回true,那么这两个对象hashCode返回的值也必须是相等的,并且对于同一个对象,equals方法需要比较的属性值没有被修改,那么每次调用hashCode返回的值应该是一致的。  &nb...  阅读全文
posted @ 2012-08-16 18:39 zhangxl 阅读(415) | 评论 (0)编辑 收藏
     摘要: 学习如何在windows下安装mongo  阅读全文
posted @ 2012-05-25 23:58 zhangxl 阅读(367) | 评论 (0)编辑 收藏
     摘要: 京东碰到的一道面试题  阅读全文
posted @ 2012-02-15 15:12 zhangxl 阅读(1313) | 评论 (1)编辑 收藏
     摘要:     HashMap内部有一个Entry数组,可以称之为hash table。HashMap的默认构造值为初始容量为16,负载因子为0.75,阀值(初始容量*负载因子)为12。其默认构造子如下: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeH...  阅读全文
posted @ 2012-02-13 14:42 zhangxl 阅读(411) | 评论 (0)编辑 收藏
     摘要: 12个小球其中有一个是次品,不过不知道轻重,请问用天平能用三次测量的机会找出那个次品吗?  阅读全文
posted @ 2012-02-10 17:04 zhangxl 阅读(1635) | 评论 (0)编辑 收藏
     摘要: java nio 实现 Ping命令行  阅读全文
posted @ 2012-02-07 16:53 zhangxl 阅读(890) | 评论 (0)编辑 收藏
     摘要: AbstractApplicationContext继承于DefaultResourceLoader,因此AbstractApplicationContext也具备了资源加载的功能。同时ApplicationContext扩展了ResourcePatternResolver接口,所以ApplicationContext的实现类对外表现的Loader应该为ResourcePatternResolver。通俗来讲,就是说容器具备资源模式解释的功能,并能对一资源位置进行加载  阅读全文
posted @ 2012-02-07 11:57 zhangxl 阅读(503) | 评论 (0)编辑 收藏
     摘要: Spring框架提供基于依赖注入的IOC容器,完成对象的构造、依赖注入、对象声明周期维护等功能,下面将以FileSystemXmlApplicationContext为例来分析Spring IOC容器的实现。
  阅读全文
posted @ 2012-02-07 11:10 zhangxl 阅读(710) | 评论 (0)编辑 收藏

         JDBC3.0(JDK4.0),引入了一个新特性Savepoint。我们知道,在JDBC2.0中的事务支持让开发者可以控制对数据的并发访问,从而保证数据的一致性。但有时候我们需要对事务多一点的控制,而不是在当前的事务中简单地对每一个改变进行回滚。在 JDBC 3.0 下,我们可以通过 Savepoint 获得这种控制。 Savepoint 接口允许您将事务分割为各个逻辑断点,以控制有多少事务需要回滚。下图将说明如何在事务中运用 Savepoint

JDBC下使用Savepoint

示例代码:

conn.setAutoCommit(false);
// Set a conservative transaction isolation level.
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
Statement stmt 
= conn.createStatement();
int rows = stmt.executeUpdate(    "INSERT INTO authors " + 
                
'(first_name, last_name) VALUES " +
                '('Lewis''Carroll')");
// Set a named savepoint.
Savepoint svpt = conn.setSavepoint("NewAuthor");
// 
rows = stmt.executeUpdate(    "UPDATE authors set type = 'fiction' " +
                
"WHERE last_name = 'Carroll'");
// 
conn.rollback(svpt);
// 
// The author has been added, but not updated.
conn.commit();

    

示例结果就是,insert语句将被执行,update语句未执行,其被回滚了。

Hibernate下使用Savepoint

示例:

Session s = sf.openSession();   
Transaction tx 
= s.beginTransaction();   
  
User u1 
= new User();u1.setId(1);u1.setName("u1");   
s.save(u1);   
  
Savepoint savepoint1 
= s.connection().setSavepoint();   
User u2 
= new User();u2.setId(2);u2.setName("u2");   
s.save(u2);   
 s.flush();

s.connection().rollback(savepoint1);   
//s.connection().releaseSavepoint(savepoint1);   
  
tx.commit();  

 

SpringSavepoint的支持

 

posted @ 2012-01-30 11:36 zhangxl 阅读(2521) | 评论 (0)编辑 收藏
     摘要: 本文主要讲述了在linux下,如何用c通过mysql c api访问mysql数据的问题,同时给出了demo  阅读全文
posted @ 2011-10-31 11:16 zhangxl 阅读(3121) | 评论 (1)编辑 收藏
     摘要:       Apache Benchmark简称为ab,是apache自带的用于HTTP Server测试的工具。它可以接受单一的URL,然后重复地按照指定的多个独立线程的方式加载,并使用不同的命令行参数控制访问的次数、最大的并发访问数等。另外一项不错的功能是可以输出比较详细的报告。   语法 ab [ -A auth-userna...  阅读全文
posted @ 2011-09-15 16:09 zhangxl 阅读(3212) | 评论 (1)编辑 收藏
     摘要: 里面采用java NIO进行通信管理,以前也了解过一些关于这方面的知识但是都不太系统,最近两天抽时间对这块进行一下扫盲。我主要参考以下两篇文章,个人认为这两篇文章还是不错的入门级文章,讲的比较通俗易懂。
  阅读全文
posted @ 2011-06-30 16:24 zhangxl 阅读(2781) | 评论 (1)编辑 收藏


下载安装包:amoeba-mysql-binary-2.1.0-RC5.tar.gz
下载源代码:http://amoeba.googlecode.com/svn/trunk


1.定位Amoeba启动类

打开amoeba.bat,经过分析,amoeba的启动是通过classworlds进行加载的,关于classworlds请参见http://classworlds.codehaus.org/launchusage.html

在amoeba.bat中是通过以下语句来定位classworlds启动应用的配置项的

 

set DEFAULT_OPTS=%DEFAULT_OPTS% "-Dclassworlds.conf=%AMOEBA_HOME%\bin\amoeba.classworlds"


以下是amoeba.classworlds的内容

main is com.meidusa.amoeba.server.AmoebaProxyServer from amoeba

[amoeba]
load $
{amoeba.home}/lib/*.jar
load ${amoeba.home}/lib/classes



意思就是amoeba应用是从com.meidusa.amoeba.server.AmoebaProxyServer开始启动的。


接下来把amoeba下的源文件和amoeba-mysql下的源文件导入到项目中,以及相关jar;

为了能在bebug模式下启动,建议在debug-arguments下增加start arguments;

posted @ 2011-06-24 17:08 zhangxl 阅读(1374) | 评论 (0)编辑 收藏
 

上网找了一些资料,主要就是关于跨平台的一些细节:

1
程序设计的信息编码要注意,一般要采用 ASCII码字符集,并不是所有的操作系统都支持Unicode码。
 
后来研究一下,还是UTF-8

2
程序中不要硬性编码与平台相关的任何常量,比如行分隔符、文件分隔符、路径分隔符等。
unixmac 中是“/”,在windows里是“\”
如要用这些常量,要使用  Java.util.properties 类的getProperty 方法。
如: Java.util.properties.getProperty("file.seParator")
可以获得文件分隔符,getProperty("line.seParator") 返回行分隔符。
                    getProperty("path.seParator")
返回路径分隔符

3
编写跨平台网络程序时,不要使用 Java.net.InetAddress类的getHostName方法得到主机名,
因为不同的平台的主机名格式不同。最好使用 getAddress得到格式相同的IP地址。另外,
程序中的所有的主机都要换成IP地址。

4
如写GUI程序,在使用AWT组件时不能硬性设置组件的大小和为止,而应该使用JAVA的布局管理器(Layout manager)
 
来设置。

5
不同的操作系统,不同的机器,系统支持的颜色和屏幕的大小和分辨率都不同,如何获得这些属性,
使用 Java.awt.systemcolor 类可以获得需要的颜色,如该类的 inactiveCaption 就是窗口边框
活动标题背景色   Menu是菜单背景色,使用Java.awt.Tookit getScreenResolution可以以
像素每英寸为单位显示分辨率。
该类 getScreenSize 可以得到屏幕大小(英寸), LoadSystemcolors 可以列出所有的系统颜色。

6
程序中使用任何一个方法时,要详细查看文档,确保,使用的方法不是文档已经申明为过时的方法,
也不是文档中未标明的隐含方法。

posted @ 2009-08-19 11:02 zhangxl 阅读(321) | 评论 (0)编辑 收藏
 

上网找了一些资料,主要就是关于跨平台的一些细节:

1
程序设计的信息编码要注意,一般要采用 ASCII码字符集,并不是所有的操作系统都支持Unicode码。
 
后来研究一下,还是UTF-8

2
程序中不要硬性编码与平台相关的任何常量,比如行分隔符、文件分隔符、路径分隔符等。
unixmac 中是“/”,在windows里是“\”
如要用这些常量,要使用  Java.util.properties 类的getProperty 方法。
如: Java.util.properties.getProperty("file.seParator")
可以获得文件分隔符,getProperty("line.seParator") 返回行分隔符。
                    getProperty("path.seParator")
返回路径分隔符

3
编写跨平台网络程序时,不要使用 Java.net.InetAddress类的getHostName方法得到主机名,
因为不同的平台的主机名格式不同。最好使用 getAddress得到格式相同的IP地址。另外,
程序中的所有的主机都要换成IP地址。

4
如写GUI程序,在使用AWT组件时不能硬性设置组件的大小和为止,而应该使用JAVA的布局管理器(Layout manager)
 
来设置。

5
不同的操作系统,不同的机器,系统支持的颜色和屏幕的大小和分辨率都不同,如何获得这些属性,
使用 Java.awt.systemcolor 类可以获得需要的颜色,如该类的 inactiveCaption 就是窗口边框
活动标题背景色   Menu是菜单背景色,使用Java.awt.Tookit getScreenResolution可以以
像素每英寸为单位显示分辨率。
该类 getScreenSize 可以得到屏幕大小(英寸), LoadSystemcolors 可以列出所有的系统颜色。

6
程序中使用任何一个方法时,要详细查看文档,确保,使用的方法不是文档已经申明为过时的方法,
也不是文档中未标明的隐含方法。

posted @ 2009-08-19 11:01 zhangxl 阅读(386) | 评论 (0)编辑 收藏
今天在看完xtree.js代码后,发现一个问题。在执行javascript的document.write(obj)方法时,如果obj实现了prototype的toString()方法,document.wirte方法将能自动调用obj的toString()方法。代码如下:
   /*----------   树构造代码 ---------*/
        if (document.getElementById) {
           var tree = new WebFXTree('Root');
           tree.setBehavior('classic');
           var a = new WebFXTreeItem('1');
           tree.add(a);
           var b = new WebFXTreeItem('1.1');
           a.add(b);
          b.add(new WebFXTreeItem('1.1.1'));
          b.add(new WebFXTreeItem('1.1.2'));
          b.add(new WebFXTreeItem('1.1.3'));
          var f = new WebFXTreeItem('1.1.4');
          b.add(f);

         document.write(tree);

/*------------------ xtree.js代码片段 ----------*/

WebFXTree.prototype.toString = function() {
alert("it's here!");
 var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this, event)\">" +
  "<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\">" +
  "<a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\"" +
  (this.target ? " target=\"" + this.target + "\"" : "") +
  ">" + this.text + "</a></div>" +
  "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
 var sb = [];
 for (var i = 0; i < this.childNodes.length; i++) {
  sb[i] = this.childNodes[i].toString(i, this.childNodes.length);
 }
 this.rendered = true;
 return str + sb.join("") + "</div>";
};

经过跟踪,证实在执行document.write(tree)时,调用了WebFXTree.prototype.toString 方法。
posted @ 2009-08-13 16:20 zhangxl 阅读(1003) | 评论 (1)编辑 收藏
lucene 实践
posted @ 2008-05-04 17:46 zhangxl 阅读(320) | 评论 (1)编辑 收藏

待续....

posted @ 2006-04-25 11:30 zhangxl 阅读(455) | 评论 (0)编辑 收藏

       InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs)。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。
            要想正常的使用InnoDB带给我们的好处,首先要建立InnoDB数据库。示例采用的mysql版本是4.0.12,这个版本属于mysql的beta版本。假设你的mysql已经安装完毕,并且采用的是win xp操作系统,接下来我们就要创建InnoDB数据库。
            当创建一个 InnoDB 数据库时最好以命令行方式来运行 MySQL 服务 mysqld ,而不是从 safe_mysqld 或 Windows 服务。当从命令行方式运行服务时可以看到建立过程。
      步骤1:通过 MS-DOS的 NET STOP MySQL 命令停止mysql服务。
      步骤2:修改c:/windows/my.ini文件,主要是设置Innodb的参数。从设置最小的角度考虑,可以
             设置一下几项:
               innodb_data_home_dir                                  /*innodb数据库数据文件目录*/
               innodb_data_file_path                                  /*数据文件名称及大小*/
                       innodb_buffer_pool_size                      /*缓冲池的大小,一般设置为主存的50%-80%*/
               innodb_additional_mem_pool_size            /**/
               innodb_log_file_size                                   /*日志文件的大小,一般设置为主存的25%*/
               innodb_log_buffer_size                               /**/
               innodb_flush_log_at_trx_commit               /*事务*/
            具体设置如下:
            
            [mysqld]
            basedir=C:/mysql
            #bind-address=192.168.1.8
            datadir=C:/mysql/data
            innodb_data_file_path = /ibdata2:100M:autoextend:max:2000M
            set-variable = innodb_buffer_pool_size=200M
            set-variable = innodb_additional_mem_pool_size=15M

            set-variable = innodb_log_file_size=50M
            set-variable = innodb_log_buffer_size=10M
            innodb_flush_log_at_trx_commit=1
            #language=C:/mysql/share/your language directory
            #slow query log#=
            #tmpdir#=
            #port=3306
            #set-variable=key_buffer=16M
            [WinMySQLadmin]
            Server=C:/mysql/bin/mysqld-nt.exe
            user=zhangxl
            password=zhangxl

         解释:ibdata2为自定义的数据文件名称。在默认情况下,系统将自动创建ibdata0和ibdata1,这两个文件是mysql安装后自带的。因此,如果用户想以这两个文件作为设置的数据文件,首先要删除他们以及其他的3个日志文件,否则在使用mysql-max --console时会提示数据库创建失败。提醒一点的是,在删除文件之前一定要先停止mysql服务,在dos下执行net stop mysql即可,然后备份数据文件和日志文件,防止mysql启动失败,以备恢复。
      InnoDB 不会自己建立目录,必须自己使用操作系统命令建立相应的目录。检查你的 MySQL 服务程序在 datadir 目录里 有足够的权限建立文件。
   这里没有设置innodb_data_home_dir参数,在默认情况下,mysql自动会指向/mysql/data目录 ,innodb_data_file_path 可以设置多个数据库文件,在本例中只设置一个,同时还可以通过autoextend属性把数据文件设为可扩展的,通过max属性设置最后一个数据文件的最大值,在windows下一般为2G。
      步骤3:通过命令net start mysql启动mysql,然后执行命令mysql-max --console命令。
      执行完上一步操作后,进入mysql安装目录的/data目录下可以看到生成的数据文件和日志文件。
      参考:
      http://dev.mysql.com/doc/refman/5.0/en/error-creating-innodb.html
      http://man.chinaunix.net/database/mysql/inonodb_zh/
posted @ 2006-04-11 00:13 zhangxl 阅读(2629) | 评论 (0)编辑 收藏
<2006年4月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(1)

随笔分类(17)

随笔档案(28)

文章分类(30)

文章档案(30)

相册

收藏夹(2)

hibernate

java基础

mysql

xml

关注

压力测试

算法

最新随笔

搜索

  •  

积分与排名

  • 积分 - 95542
  • 排名 - 602

最新评论

阅读排行榜

评论排行榜