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 阅读(297) | 评论 (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]内,JVM(Java Virtual Machine)就直接使用cache中缓存的Integer对象,否则,JVM会重新创建一个Integer对象。

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

posted @ 2011-01-02 01:32 leekiang 阅读(273) | 评论 (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 shell的bash信息,当登录时以及每次打开新的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 阅读(1654) | 评论 (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 阅读(446) | 评论 (0) | 编辑 收藏

入侵基于java Struts的JSP网站

posted @ 2010-12-29 21:19 leekiang 阅读(295) | 评论 (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 阅读(266) | 评论 (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 阅读(421) | 评论 (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 阅读(396) | 评论 (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 阅读(756) | 评论 (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 阅读(327) | 评论 (0) | 编辑 收藏

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