MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Java 推荐读物与源代码阅读
给学习J2EE的朋友一些值得研究的开源项目
http://miaoxiaodong78.blog.163.com/blog/static/1876513620061158824481/
http://miaoxiaodong78.blog.163.com/blog/static/18765136200611141046446/
http://www.javaeye.com/topic/854647
http://www.javaeye.com/topic/264490
http://www.javaeye.com/topic/698774

posted @ 2011-01-02 03:14 leekiang 阅读(252) | 评论 (0)编辑 收藏

JDK1.6 
        Integer v1 = 100;
        Integer v2 
= 100;
        System.out.println(v1 
== v2); // 输出:true
        
        Integer w1 
= 200;
        Integer w2 
= 200;
        System.out.println(w1 
== w2); // 输出:false

        Integer s1 
= new Integer(100);
        Integer s2 
= new Integer(100);
        System.out.println(s1 
== s2); // 输出:false
        
        String str1
="test";
        String str2
="test";
        System.out.println(str1
==str2);// 输出:true
        
        String nstr1
=new String("aa");
        String nstr2
=new String("aa");
        System.out.println(nstr1
==nstr2); // 输出:false

原因:当给Integer变量直接赋整数值时,如果这个数值位于[-128,127]内,JVMJava Virtual Machine)就直接使用cache中缓存的Integer对象,否则,JVM会重新创建一个Integer对象。

参考:
http://www.cnblogs.com/bitfan/archive/2010/10/24/1859687.html

posted @ 2011-01-02 01:32 leekiang 阅读(223) | 评论 (0)编辑 收藏

安装Sun JDK

1. 从Oracle官方网站下载最新的Linux版本JDK二进制包。对于Java 6来说,文件名是 jdk-6u23-linux-i586.bin

2. 复制下载好的文件到你准备安装JDK的文件目录下。这里我将其放在:

    /home/<username>/java/jdk-6u23-linux-i586.bin

3. 打开 Terminal,

    $ cd /home/<username>/java

    $ sudo sh jdk-6u23-linux-i586.bin

应该也可以 $ sudo chmod 755  jdk-6u23-linux-i586.bin,然后$ ./jdk-6u23-linux-i586.bin

4. JDK会被安装在二进制包所在的同一目录内

设置JAVA环境变量

方法1:修改/etc/profile文件
所有用户都会使用这些环境变量
<1>在 shell终端执行命令:gedit /etc/profile
<2>在 profile文件末尾加入:
JAVA_HOME=/home/<username>/java/jdk1.6.0_23
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME,PATH,CLASSPATH
<3>重启系统


/etc/profile这个文件,是系统启动是要自动执行的文件,任何一个用户登录系统都会执行这个文件。
所以尽量不要去修改这个配置文件。
而且如果修改出错,系统可能就起不来了,见"修改了ubuntu的etc/profile文件,系统不能进入了“(http://www.ctochina.net/forum/show/106)
/etc/profile会首先执行/etc/profile.d/目录下的所有*.sh文件
这也就给我们一个可扩展的思路。
如果我们需要配置JDK,那么就在/etc/profile.d/下创建jdk.sh文件
如果需要配置oracle,那么就在/etc/profile.d/下创建oracle.sh文件
来源:http://www.blogjava.net/zhyiwww/archive/2010/01/29/311240.html

方法2:修改.bashrc文件
如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc就可以了,而不像第一种方法给所有用户权限。
<1>在 shell终端执行命令:gedit /home/<username>/.bashrc
<2>在.bashrc文件末尾加入:
export JAVA_HOME=/home/<username>/java/jdk1.6.0_23
export PATH=$JAVA_HOME/bin:
/var/lib/gems/1.8/bin:$PATH
export
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
<3>重新登录

方法3:直接在shell下修改
用于在Shell下临时使用,换个Shell即无效
export JAVA_HOME=/home/<username>/java/jdk1.6.0_23
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar: $JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

注意:
<1>Linux下环境变量使用:(冒号)分隔路径,不同于Windows下的;
<2>Linux使用($+环境变量名)来引用原来变量的值,Windows则是使用%+环境变量名+%.比如$PATH和%PATH%
<3>CLASSPATH中不能存在空格,如Windows下的C:\Documents and Settings\seagar\jdk1.5将是不合法的路径名
<4>CLASSPATH中的当前目录"."不能忽略
<5>export把环境变量导出为全局变量
<6>大小写严格区分


测试安装情况
1.java -version查看版本号
2.使用    编辑器编写一个Java程序
(1)#root > gedit Hello.java
(2)编写程序
public class Hello
{
     public static void main(String[] args)
     {
          System.out.println("Hello");
     }
}
3.编译:javac Hello.java
4.执行:java Hello



与环境变量相关的文件可能还会有/etc/bashrc等,不过这是shell变量,是局部的,对于特定的shell器作用。/etc/profile是全局的,适用于所有的shell。出处

没搞明白,如果JAVAHOME配置在.bashrc里,那么安装的eclipse使用的是哪个jdk

我也没搞明白什么时候用export,什么时候不用


查看当前用户的环境变量的命令:env


Ubuntu中有如下几个文件可以设置环境变量
1
/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
2
/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile,设置环境文件的环境变量。
3
~/.bash_profile:在登录时用到的第三个文件是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该 文件仅仅执行一次!默认情况下,他设置一些环境变游戏量,执行用户的.bashrc文件。/etc/bashrc:为每一个运行bash shell的用户执行此文件.bash shell被打开时,该文件被读取.
4
~/.bashrc:该文件包含专用于你的bash shellbash信息,当登录时以及每次打开新的shell,该该文件被读取。
几个环境变量的优先级1>2>3。此段摘自这里

还有/etc/bash.bashrc呢


参考:

http://blog.csdn.net/jeffygn2006/archive/2010/12/17/6081918.aspx

http://hwhhyh25.javaeye.com/blog/512410

http://flysnow.javaeye.com/blog/810083
http://konglx.javaeye.com/blog/702965




/etc/profile改错了,系统起不来怎么办?
在启动时按F2,
选择recovery mode(一般是第二个选项),然后用root登录
执行sudo vi
/etc/profile
系统提示是修改(E)还是恢复(R)(Recover)等,按R键,系统执行后发现该文档没有变化,暂不管。
重新执行sudo vi /etc/profile然后按E键,
一路确认到文档最后面
按"dd"键删除自己加的那几行,然后按ESC回到命令状态,
输入“:wq!”,按Enter键保存退出。
最后reboot
另外一个办法:又新建了一个虚拟机,把原来破坏了的虚拟机的硬盘挂载到新建的虚拟机上,把数据倒过来了。
用LIVECD启动后也可以改
另外可能SSH进去后SU ROOT 再改动

开机狂按ESC进入grub,grub是什么意思
启动时按住shift键可出现grub的菜单,再进入recovery mode

进恢复模式,进入命令行,用vi/vim把你的改动搞回去。如果你原来的的profile文件有备份就简单的cp就可以了。要sudo提权。
教训:
1、修改配置前先备份;
2、一定要学一点纯终端的vi/vim的简单操作;
gedit前最好先 sudo cp 一下 把原文件加上.bak后缀

gedit好办,会留下~尾巴做备份的。
ls /etc  #显示etc文件所有的文件。如果有profile~的话旧执行
或者是whereis profile~   #这个事查找profile~文件
sudo cp /etc/profile~ /etc/profile #注意空格
exit #退出。

[江湖救急]修改/etc/profile重启后无法进入系统
Vista和Ubuntu双系统引导 – 修改默认启动的操作系统
vi编辑器常用的命令及快捷键
系统修复 修改/etc/profile后无法进入系统 且所有命令都无法使用

posted @ 2010-12-30 02:30 leekiang 阅读(1589) | 评论 (0)编辑 收藏

Static 的意义与实作方式

 

Class(static) field :共用一块记忆体
class(static) method
:共用一块记忆体
instance(
static) field :随着每个 instance 各有一块记忆体
instance (
static) method :共用一块记忆体
    instance method
为什么不是随着每个 instance 占有一块记忆体,反倒是共用一块记忆体?其实,让每个 instance method 如同 instance field 一样,随着每个 instance 占有一块记忆体,这么做当然是可以的,只是 Java 编译器和 JVM 都不这么做,因为太浪费记忆体空间了。一个 field 少则占用一个 byte ,多则占用数百 Byte ,但是 method 少则数个 byte ,多则数百 Kilo Byte Mehtod 耗费的记忆体是 field 的数百倍,甚至数千倍,当然是能共用就尽量共用,比较不会消耗记忆体。既然 JVM 让一个 class 的所有 instance 共用相同的 instance method ,下面两行程式码在 instanceMethod() 内部时,如何区分是 instance1 instance2
instance1.instanceMethod();
instance2.instanceMethod();
因为编译器会帮我们在把 instance1 instance2 个别传入 instanceMethod() 中当作第一个参数。也就是说,任何 instance method 参数的实际个数都会比表面上多一个,这个多出来的参数是由 Java 编译器帮我们加上去的,用来代表对应的 instance 。此参数的变数名称为 this ,也是 Java 的一个关键字( keyword )。
   
当调用某个 instance method 或使用某个 instance field 时,你必须在前面加上该 instance 的名称,如果该 instance method/field 相关的 instance 和当时程式码所在的 instance method instance 指的是同一个 instance 时,该 instance 的名称就是 this ,这种情况下,你也可以选择不在前面加上「 this. 」。
   
然而,在某些状况下,非得在前面加上「 this. 」不可。例如,当 method 中的参数或区域变数和 instance field 名称完全相同时,如果不在前面冠上「 this. 」,那么指的是参数或区域变数;如果在前面冠上「 this. 」,那么指的才是 instance field

转自http://www.blogjava.net/guoyongfei/archive/2009/02/06/253571.html

posted @ 2010-12-30 01:20 leekiang 阅读(384) | 评论 (0)编辑 收藏

入侵基于java Struts的JSP网站

posted @ 2010-12-29 21:19 leekiang 阅读(245) | 评论 (0)编辑 收藏

1,sudo apt-get install build-essential
2,gedit
3,sudo apt-get install devhelp
4,hello.c
5,gcc hello.c -o hello
6,./hello

http://blog.csdn.net/dreamer_gz/archive/2009/03/01/3948137.aspx
http://hi.baidu.com/jancwh/blog/item/7d41e53c2a4912cf9f3d62b3.html

posted @ 2010-12-29 02:12 leekiang 阅读(212) | 评论 (0)编辑 收藏

sudo apt-get install mysql-server
mysql -u root -p

在windows中用HeidiSQL连mysql时报"Can’t connect to MySQL server on..."
解决:sudo apt-get install mysql-client,重启mysql,不管用。查到资料,应该是MySQL Server绑定了本地地址。
打开/etc/mysql/my.cnf,找到bind-address = 127.0.0.1,去除IP地址绑定,把它改为:bind-address = 0.0.0.0 然后重启MySQL。

又报"host is not allowed to connect to this MySQL"
解决:
mysql>use mysql;
mysql>show tables; (确认一下表user是否存在)
mysql>update user set host='%' where host='loalhost' and user='root';
重启mysql
当然,也可通过授权:GRANT ALL PRIVILEGES ON *.* TO......

查看编码
show variables like 'character%';




查看mysql版本的几种办法:
1,在终端下:mysql -V
2,在mysql中:mysql> status;
3,mysql> select version();

posted @ 2010-12-29 01:45 leekiang 阅读(322) | 评论 (0)编辑 收藏

    1.什么是pv

  PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。

  高手对pv的解释是,一个访问者在24小时(0点到24点)内到底看了你网站几个页面。这里需要强调:同一个人浏览你网站同一个页面,不重复计算pv量,点100次也算1次。说白了,pv就是一个访问者打开了你的几个页面。

  PV之于网站,就像收视率之于电视,从某种程度上已成为投资者衡量商业网站表现的最重要尺度。

  pv的计算:当一个访问者访问的时候,记录他所访问的页面和对应的IP,然后确定这个IP今天访问了这个页面没有。如果你的网站到了23点,单纯IP有60万条的话,每个访问者平均访问了3个页面,那么pv表的记录就要有180万条。

  有一个可以随时查看PV流量以及你的网站世界排名的工具alexa工具条,安装吧!网编们一定要安装这个。

  2.什么是uv

  uv(unique visitor),指访问某个站点或点击某条新闻的不同IP地址的人数。

  在同一天内,uv只记录第一次进入网站的具有独立IP的访问者,在同一天内再次访问该网站则不计数。独立IP访问者提供了一定时间内不同观众数量的统计指标,而没有反应出网站的全面活动。

  3.什么是PR值

  PR值,即PageRank,网页的级别技术。取自Google的创始人Larry Page,它是Google排名运算法则(排名公式)的一部分,用来标识网页的等级/重要性。级别从1到10级,10级为满分。PR值越高说明该网页越受欢迎(越重要)。

  例如:一个PR值为1的网站表明这个网站不太具有流行度,而PR值为7到10则表明这个网站非常受欢迎(或者说极其重要)。

转自http://edu.admin5.com/article/20061221/1221314F2006.shtml

posted @ 2010-12-21 23:24 leekiang 阅读(342) | 评论 (0)编辑 收藏

在前面“应用拆分”主题中,我们提到了一个大型互联网应用需要进行良好的拆分,而那里我们仅仅说了”应用级别”的拆分,其实我们的互联网应用除了应 用级别的拆分以外,还有另外一个很重要的层面就是存储如何拆分的。因此这个主题主要涉及到如何对存储系统,通常就是所说的RDBMS进行拆分。

确定了这个小节的主题之后,我们回顾一下,一个互联网应用从小变大的过程中遇到的一些问题,通过遇到的问题来引出我们拆分RDBMS的重要性。

系统刚开始的时候,因为系统刚上线,用户不多,那个时候,所有的数据都放在了同一个数据库中,这个时候因为用户少压力小,一个数据库完全可以应付的 了,但是随着运营那些哥们辛苦的呐喊和拼命的推广以后,突然有一天发现,oh,god,用户数量突然变多了起来,随之而来的就是数据库这哥们受不了,它终 于在某一天大家都和惬意的时候挂掉啦。此时,咱们搞技术的哥们,就去看看究竟是啥原因,我们查了查以后,发现原来是数据库读取压力太大了,此时咱们都清楚 是到了读写分离的时候,这个时候我们会配置一个server为master节点,然后配几个salve节点,这样以来通过读写分离,使得读取数据的压力分 摊到了不同的salve节点上面,系统终于又恢复了正常,开始正常运行了。但是好景还是不长,有一天我们发现master这哥们撑不住了,它负载老高了, 汗流浃背,随时都有翘掉的风险,这个时候就需要咱们垂直分区啦(也就是所谓的分库),比如将商品信息,用户信息,交易信息分别存储到不同的数据库中,同时 还可以针对商品信息的库采用master,salve模式,OK,通过分库以后,各个按照功能拆分的数据库写压力被分担到了不同的server上面,这样 数据库的压力终于有恢复到正常状态。但是是不是这样,我们就可以高枕无忧了呢?NO,这个NO,不是我说的,是前辈们通过经验总结出来的,随着用户量的不 断增加,你会发现系统中的某些表会变的异常庞大,比如好友关系表,店铺的参数配置表等,这个时候无论是写入还是读取这些表的数据,对数据库来说都是一个很 耗费精力的事情,因此此时就需要我们进行“水平分区”了(这就是俗话说的分表,或者说sharding)。

上面说了很多,无非就是告诉大家一个事实“数据库是系统中最不容易scale out的一层”,一个大型的互联网应用必然会经过一个从单一DB server,到Master/salve,再到垂直分区(分库),然后再到水平分区(分表,sharding)的过程,而在这个过程中,Master /salve 以及垂直分区相对比较容易,对应用的影响也不是很大,但是分表会引起一些棘手的问题,比如不能跨越多个分区join查询数据,如何平衡各个shards的 负载等等,这个时候就需要一个通用的DAL框架来屏蔽底层数据存储对应用逻辑的影响,使得底层数据的访问对应用透明化。

出处:大型B2C网站高性能可伸缩架构技术探秘

又拍网架构中的分库设计

posted @ 2010-12-12 00:55 leekiang 阅读(698) | 评论 (0)编辑 收藏

书:
《深入理解MySQL》 即Expert MySQL
《MySQL核心内幕》
《深入理解MySQL核心技术》Understanding MySQL Internals
《MySQL技术内幕:InnoDB存储引擎》
《深入浅出MySQL--数据库开发、优化与管理维护》

ppt:
http://www.slideshare.net/caroljmcdonald/mysqlfordevelopers
http://www.slideshare.net/jackbillow/mysql-best-practices

讲座:
可扩展的MySQL数据库设计http://v.youku.com/v_playlist/f2614454o1p0.html

posted @ 2010-12-10 03:04 leekiang 阅读(255) | 评论 (0)编辑 收藏

仅列出标题
共54页: First 上一页 6 7 8 9 10 11 12 13 14 下一页 Last