??xml version="1.0" encoding="utf-8" standalone="yes"?>快乐12玩法:BlogJava - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/zh-cnTue, 16 Oct 2018 04:20:59 GMTTue, 16 Oct 2018 04:20:59 GMT60jquery mobile content 高度设置 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2013/01/28/394828.htmlThe MatrixThe MatrixMon, 28 Jan 2013 02:59:00 GMT//www.ot7t.com.cn/robbie/archive/2013/01/28/394828.html//www.ot7t.com.cn/robbie/comments/394828.html//www.ot7t.com.cn/robbie/archive/2013/01/28/394828.html#Feedback1//www.ot7t.com.cn/robbie/comments/commentRss/394828.html//www.ot7t.com.cn/robbie/services/trackbacks/394828.htmlvar fixgeometry = function() {
    /* Some orientation changes leave the scroll position at something
     * that isn't 0,0. This is annoying for user experience. */
    scroll(0, 0);
    /* Calculate the geometry that our content area should take */
    var header = $(".header:visible");
    var footer = $(".footer:visible");
    var content = $(".content:visible");
    var viewport_height = $(window).height();
    
    var content_height = viewport_height - header.outerHeight() - footer.outerHeight();
    
    /* Trim margin/border/padding height */
    content_height -= (content.outerHeight() - content.height());
    content.height(content_height);
  }; /* fixgeometry */
  $(document).ready(function() {
    $(window).bind("orientationchange resize pageshow", fixgeometry);
  });


The Matrix 2013-01-28 10:59 发表评论
]]>
关于Hibernate分页、Fetch Join调优的一篇好文章 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2012/05/14/378095.htmlThe MatrixThe MatrixMon, 14 May 2012 06:28:00 GMT//www.ot7t.com.cn/robbie/archive/2012/05/14/378095.html//www.ot7t.com.cn/robbie/comments/378095.html//www.ot7t.com.cn/robbie/archive/2012/05/14/378095.html#Feedback0//www.ot7t.com.cn/robbie/comments/commentRss/378095.html//www.ot7t.com.cn/robbie/services/trackbacks/378095.html//java.dzone.com/articles/hibernate-tuning-queries-using?page=0,0 

The Matrix 2012-05-14 14:28 发表评论
]]>
Centos6.2安装Magento - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2012/04/04/373322.htmlThe MatrixThe MatrixWed, 04 Apr 2012 09:09:00 GMT//www.ot7t.com.cn/robbie/archive/2012/04/04/373322.html//www.ot7t.com.cn/robbie/comments/373322.html//www.ot7t.com.cn/robbie/archive/2012/04/04/373322.html#Feedback1//www.ot7t.com.cn/robbie/comments/commentRss/373322.html//www.ot7t.com.cn/robbie/services/trackbacks/373322.html环境?/strong>
    
    Centos6.2(安装在Vmware7.0?
    Magento1.6.2
    Apache Httpd Server 2.2.15
    MySql 5.1.61
    PHP5.3.3

安装过程?/strong>

    apache http、mysql、php及相关扩展安装:
    其中apache http、Mysql、php都是利用centos的添?删除软件功能进行安装。同时使用该功能安装"php-xml"?php-gd"?php-pdo"?php-mbstring"?php-mysql"扩展?/div>
    使用chkconfig配置httpd和mysql为系统服务。命令如下:
    chkconfig httpd on
    chkconfig -add mysqld
    chkconfig mysqld on
    使用chkconfig --list 可以查看所有的服务配置状?/div>
    使用service httpd start、service mysqld start启动httpd和mysqld服务。可以通过service httpd restart重启相关服务?/div>
    此时访问本机的//localhost可以看到apache的欢迎界面,同时编辑index.php文件,其内容如下?/div>
    <?php
        phpinfo();
    ?>
    并将该文件置?var/www/html目录下,访问//localhost/index.php,此时应该不能看到php版本信息,仅能看到index.php的静态文本内容?/div>
    修改/etc/httpd/conf/httpd.conf文件,修改如下:
    DirectoryIndex index.html index.html.var ->  DirectoryIndex index.html index.htm index.php
    增加?/div>
    AddType application/x-httpd-php .php
    AddDefaultCharset -> AddDefaultCharset off  (解决中文乱码问题)
    增加一段VirtualHost描述,如下(在配置文件的最后)?/div>
    <VirtualHost *:80>
        DocumentRoot /var/www/smallfive
        ServerName smallfive
        ServerAlias smallfive.com *.smallfive.com
    </VirtualHost>
    此时访问//localhost/index.php,应该一切正?br />
    设置数据库:
    使用mysqladmin -u root password 'newpassword'设置mysql数据库的默认密码
    让数据库更安全:
    mysql -u root -p    进入mysql
    mysql> DROP DATABASE test;                删除test数据?/div>
    mysql> DELETE FROM mysql.user WHERE user = '';       删除匿名帐户
    mysql> FLUSH PRIVILEGES;                 重载权限
    创建magento数据?/div>
    mysql> CR   访问magento数据库,确保一切正?/div>

    配置Magento?/strong>
    解压缩magento1.6.2版本?var/www/smallfive/magento目录
    解压命令?/div>
   EATE DATABASE magento;
    mysql> GRANT ALL PRIVILEGES ON magento.* TO 'root'@'localhost' IDENTIFIED BY 'newpassword'; 
  tar zxvf magento1.6.2.tar.gz
    此时访问//localhost/magento,可根据magento的设置进行配?br />
   
    注意如下问题?/strong>
    1、确保当前用户拥有对/var/www/smallfive/magento可读可写权限
    2、还需安装mcrypt库,安装这个库比较繁琐,mcrypt依赖于Libmcrypt库和mhash库,我们需要下载Libmcrypt库和mhash库安装它们,然后再编译Mcrypt?/div>
    在编译之前,先做好如下准备工作:
        a、安装phpize:yum -y install php-devel
        b、安装C++脚本编译模块?/div>
            yum -y install gcc gcc-g++
            yum -y install gcc gcc-c++
    安装mcrypt库过程,如下?/div>
        a、下载libmcrypt和mhash?/div>
            Libmcrypt://sourceforge.net/project/showfiles.php?group_id=87941&package_id=91774&release_id=487459
            mhash://sourceforge.net/project/showfiles.php?group_id=4286&package_id=4300&release_id=645636
        b、将上述两个下载后,分别解压,并执行如下命令编译?/div>
            ./configure
            make && make install
        c、下载php对应的源代码,解压,
            进入php源代码的 /ext/mcrypt目录
            执行phpize命令
            ./configure –with-php-config=/usr/bin/php-config
            make && make install
        d、在php.ini文件中增加如下内容:
            extension=/usr/lib/php/modules/mcrypt.so
            mcrypt.so文件路径在php-config文件中可以找?/div>
        e、service httpd restart
   
    end!
     
    参考文章:
    //www.eexu.com/article.asp?id=1730
    //www.ruiwant.com/centos-6-0%E4%B8%8Bmagento%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E6%80%BB%E7%BB%93.html
    //zixun.www.net.cn/qita/2344.html
    //os.qudong.com/Linux/2010/0210/64441.html


The Matrix 2012-04-04 17:09 发表评论
]]>VmWare虚拟机时间与主机不同步的设置 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2012/03/02/371116.htmlThe MatrixThe MatrixFri, 02 Mar 2012 02:51:00 GMT//www.ot7t.com.cn/robbie/archive/2012/03/02/371116.html//www.ot7t.com.cn/robbie/comments/371116.html//www.ot7t.com.cn/robbie/archive/2012/03/02/371116.html#Feedback0//www.ot7t.com.cn/robbie/comments/commentRss/371116.html//www.ot7t.com.cn/robbie/services/trackbacks/371116.html有时在vmware里面安装的系统或应用有License时间的限制,可以通过修改虚拟机时间的方法来防止过期,此时需?vmx文件中加入下面的内容?/span>
tools.syncTime = "FALSE"
time.synchronize.continue = "FALSE"
time.synchronize.restore = "FALSE"
time.synchronize.resume.disk = "FALSE"
time.synchronize.shrink = "FALSE"
rtc.startTime = 1183431600  #这是用来指定虚拟机启动后的时间。数字是?970??日零时零分零秒以来的秒数,可以通过如下网址将某个时间转换为该数字(Unix时间戳)?/span>//www.onlineconversion.com/unix_time.htm

注意:同时还需在虚拟机操作系统的服务中,停?#8220;VMware Tools Service”的服务?br />在Windows Server 2003中操作系统自身也有时间同步功能,需在时间设定中停用,同时停?#8220;Windows Timer”服务?/span>


The Matrix 2012-03-02 10:51 发表评论
]]>安装Apache HTTP Server + PHP + WordPress - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2011/11/27/364937.htmlThe MatrixThe MatrixSun, 27 Nov 2011 13:28:00 GMT//www.ot7t.com.cn/robbie/archive/2011/11/27/364937.html//www.ot7t.com.cn/robbie/comments/364937.html//www.ot7t.com.cn/robbie/archive/2011/11/27/364937.html#Feedback0//www.ot7t.com.cn/robbie/comments/commentRss/364937.html//www.ot7t.com.cn/robbie/services/trackbacks/364937.html//blog.chenlb.com/2011/03/install-apache-php-wordpress-windows.html

在安装好apache http server后,如果端口不正确,则修?apache安装目录/conf/httpd.conf"文件中的如下信息?br />
Listen 80  -> Listen 8060
#ServerName localhost:80 -> ServerName localhost:8060

Apache HTTP Server版本?.2
PHP版本?.3.8
WordPress版本?.2.1


The Matrix 2011-11-27 21:28 发表评论
]]>
Oracle数据导入指定表空?/title><link>//www.ot7t.com.cn/robbie/archive/2011/05/31/351446.html</link><dc:creator>The Matrix</dc:creator><author>The Matrix</author><pubDate>Tue, 31 May 2011 08:43:00 GMT</pubDate><guid>//www.ot7t.com.cn/robbie/archive/2011/05/31/351446.html</guid><wfw:comment>//www.ot7t.com.cn/robbie/comments/351446.html</wfw:comment><comments>//www.ot7t.com.cn/robbie/archive/2011/05/31/351446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/robbie/comments/commentRss/351446.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/robbie/services/trackbacks/351446.html</trackback:ping><description><![CDATA[<div class="yibqv"><span style="color: #333333; font-family: Arial; line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><p style="line-height: normal; ">1. 打开工具Oracle SQL Plus 以dba身份登录sys用户<br style="line-height: normal; " />sqlplus /nolog<br />conn sys@url as sysdba<br /><br />2. 创建用户并指定表空间<br style="line-height: normal; " /><br />使用客户端工具或者Web管理控制台创建表空间以及用户<br style="line-height: normal; " />给用户赋予connect、resource、dba权限<br style="line-height: normal; " />grant connect,resource,dba to username;<br /></p><div class="yibqv"><div class="yibqv"><br />注意:给oracle用户分配connect、resource角色时,此时connect 角色中有一?UNLIMITED TABLESPACE 权限,也就是username这个用户可以在其他表空间里随意建表?/div><div class="yibqv"></div></div>revoke unlimited tablespce from username;     --撤销username用户在任意表空间建表的权?br />alter user username quota 0 on users;      --alter username quota 0 on Users;  // 还不是很清楚具体含义???br />alter user username quota unlimited on tablespacename;   --赋予username用户在tablespacename表空间任意建表的权限;<p> </p><p style="line-height: normal; "><br style="line-height: normal; " />3. 使用imp工具导入dmp数据文件<br style="line-height: normal; " />imp username<a href="mailto:jandardb/jandardb@orcl" style="line-height: normal; ">/password@</a>url file=c:\db.dmp fromuser=username1 touser=username log=c:\log.txt<br /><br /><br />-------------------------------------------------------------------------------------------------------------<br />其它命令?br />select * from dba_users;    --查询用户<br /></p><div class="yibqv">select * from dba_tables;    --查询?/div>select * from dba_views;    --查询视图<br />select * from dba_tablespaces;    --查询表空?br /><br /><br />oracle 10g,查询表空间使用?br /><div class="yibqv">Select * from sys.DBA_TABLESPACE_USAGE_METRICS;<br /></div></span><span class="Apple-style-span" style="color: #333333; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; line-height: normal; "><font class="Apple-style-span" face="Arial">-------------------------------------------------------------------------------------------------------------</font><br /><br /></span><font class="Apple-style-span" face="Arial, Helvetica, sans-serif"><span class="Apple-style-span" style="font-size: 12px;"></span></font><span class="Apple-style-span" style="color: #333333; font-family: Arial; line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">drop user username cascade;<br /><br />ORA-01940:无法删除当前已连接的用户<br /><br /></span><span style="color: #333333; font-family: Arial; line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">select username, sid, serial# from v$session where username='username';<br /><br /><div class="yibqv">alter system kill session'sid,serial#'</div><p> </p></span></div><img src ="//www.ot7t.com.cn/robbie/aggbug/351446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/robbie/" target="_blank">The Matrix</a> 2011-05-31 16:43 <a href="//www.ot7t.com.cn/robbie/archive/2011/05/31/351446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安装Redmine1.1.3过程(Windows 7 Professional环境?/title><link>//www.ot7t.com.cn/robbie/archive/2011/05/20/350665.html</link><dc:creator>The Matrix</dc:creator><author>The Matrix</author><pubDate>Fri, 20 May 2011 02:25:00 GMT</pubDate><guid>//www.ot7t.com.cn/robbie/archive/2011/05/20/350665.html</guid><wfw:comment>//www.ot7t.com.cn/robbie/comments/350665.html</wfw:comment><comments>//www.ot7t.com.cn/robbie/archive/2011/05/20/350665.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/robbie/comments/commentRss/350665.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/robbie/services/trackbacks/350665.html</trackback:ping><description><![CDATA[<div class="yibqv">环境:Windows7 professional<br /> <br /> 1、下载redmine1.1.3.zip、ruby1.8.7、rubygems-1.3.7.zip、mysql 5.0<br /> <br /> 2、安装MySQL5.0,cmd窗口下使用mysql -u root -p 登录MySQL数据库,执行如下语句创建redmine数据库及用户?br /> create database redmine character set utf8;<br /> create user 'redmine'@'localhost' identified by 'my_password';<br /> grant all privileges on redmine.* to 'redmine'@'localhost';<br /> 注:<br />     使用MySQL5.5在后面进行初始数据时Ruby会提示连接有问题<br />     在安装完MySQL后,先不要进行配置,?#8220;MySQL安装路径\bin”目录下,修改MySQLInstanceConfig.exe?#8220;以管理员成分执行此程?#8221;?#8220;以兼容模式运行该程序”<br />     进行数据库配置时,选择字符集为utf8<br /> <br /> 3、运行ruby1.8.7安装包,解压至d:/ruby187,将d:/ruby187/bin添加至path环境变量?br /> 安装后可执行 ruby -v查看ruby版本以检验安装是否正?br /> <br /> 4、解压rubygems-1.3.7.zip至d:/rubygems-1.3.7<br /> 进入d:/rubygems-1.3.7目录,执行ruby setup.rb<br /> 注:Redmine需要rubygems 1.3.1 - 1.5.x,肯定不能用1.8.2版本<br /> <br /> 5、执行gem install rails -v=2.3.5 远程安装rails2.3.5版本<br /> gem install mysql <br /> gem install -v=0.4.2 i18n<br /> <br /> 6、解压缩redmine1.1.3至d:/redmine1.1.3目录<br /> 进入d:/redmine-1.1.3/config目录,修改database.yml.example文件为database.yml,并修改该文件中的production数据库连接配置为如下?br /> production:<br />   adapter: mysql<br />   database: redmine<br />   host: localhost<br />   username: redmine<br />   password: my_password<br />   encoding: utf8<br /> <br /> 进入d:/redmine1.1.3目录,执?br /> rake config/initializers/session_store.rb<br /> rake db:migrate RAILS_ENV="production" <br /> <br /> 7、加载默认配置数?br /> rake redmine:load_default_data RAILS_ENV="production" <br /> 默认语言选择"zh"<br /> <br /> 8、运?br /> ruby script/server webrick -e production<br /> <br /> 9、访问://localhost:3000<br /> 使用admin/admin进行登入<br /> 进入设置,把默认语言设为“简体中?#8221;,然后设置当前用户的默认语言设为“简体中?#8221;,这样就是中文界面了<br /><br />-----------------------------------------<br /><br />继续,将redmine设置为windows 7的服?br /><br />1、首先需要配置mysql为windows 7的服?br /><br />2、Ruby提供一个安装Ruby程序为服务的包:mongrel_service。安装其实很简单,运行:gem install mongrel_service<br /><br />3、安装redmine为服务,执行mongrel_rails service::install -N RedMine -c C:\redmine-1.1.3 -p 3000 –e production<br />注意:此处打开cmd窗口时,需要输入cmd后,不是直接按Enter,而是?Ctrl+Shift+Enter打开Cmd窗口,此时以管理员身份打开,否则安装为服务时会提示拒绝访问?br /><br />4、安装服务后,需检查服?e后的参数是不是production,如果不是production而是development,则在注册表中把参数手动改为production。修改方法是:打开“注册表编辑器”,展开分支“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services”,选择redmine服务,找到ImagePath项,修改保存后在服务列表中启动服务,并把服务设置自动启动?br /><br />OK?/div><img src ="//www.ot7t.com.cn/robbie/aggbug/350665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/robbie/" target="_blank">The Matrix</a> 2011-05-20 10:25 <a href="//www.ot7t.com.cn/robbie/archive/2011/05/20/350665.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Unity3D中创建一个带背景?D物体 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2011/03/25/347039.htmlThe MatrixThe MatrixFri, 25 Mar 2011 13:33:00 GMT//www.ot7t.com.cn/robbie/archive/2011/03/25/347039.html//www.ot7t.com.cn/robbie/comments/347039.html//www.ot7t.com.cn/robbie/archive/2011/03/25/347039.html#Feedback0//www.ot7t.com.cn/robbie/comments/commentRss/347039.html//www.ot7t.com.cn/robbie/services/trackbacks/347039.html//www.41post.com/3255/programming/unity3d-creating-a-gui-with-both-3d-and-2d-elements


The Matrix 2011-03-25 21:33 发表评论
]]>类似于Google Calendar的好东东 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2010/11/09/337663.htmlThe MatrixThe MatrixTue, 09 Nov 2010 12:37:00 GMT//www.ot7t.com.cn/robbie/archive/2010/11/09/337663.html//www.ot7t.com.cn/robbie/comments/337663.html//www.ot7t.com.cn/robbie/archive/2010/11/09/337663.html#Feedback0//www.ot7t.com.cn/robbie/comments/commentRss/337663.html//www.ot7t.com.cn/robbie/services/trackbacks/337663.html//arshaw.com/fullcalendar/

这个博客中另有几个推荐的类似项目?a >//hi.baidu.com/freezesoul/blog/item/15c5d73fe4a315c17d1e71ec.html

The Matrix 2010-11-09 20:37 发表评论
]]>
《谁在谋杀中国经济》与程序?/title><link>//www.ot7t.com.cn/robbie/archive/2010/04/14/318370.html</link><dc:creator>The Matrix</dc:creator><author>The Matrix</author><pubDate>Wed, 14 Apr 2010 14:05:00 GMT</pubDate><guid>//www.ot7t.com.cn/robbie/archive/2010/04/14/318370.html</guid><wfw:comment>//www.ot7t.com.cn/robbie/comments/318370.html</wfw:comment><comments>//www.ot7t.com.cn/robbie/archive/2010/04/14/318370.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>//www.ot7t.com.cn/robbie/comments/commentRss/318370.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/robbie/services/trackbacks/318370.html</trackback:ping><description><![CDATA[<p>这几天在看郎咸平的《谁在谋杀中国经济》,这本书我基本看过一遍了,认为全书的重点在于中华文化的四大茫然,整本书都是围绕这四大茫然展开论述,中华文化的四大茫然如下?br>茫然之一:就知道赚钱<br>茫然之二:不了解世界<br>茫然之三:不了解别人为什么那么看?br>茫然之四:不了解自己的缺?/p> <p>大家有时间可以看看这本书,我觉得写的不错,至少我自己看完深有感触,我觉得完全可以将这几点套用到我们生活的很多方面,比如对于我们搞IT的技术人员来说,我认为现在很多人也存在四大茫然:</p> <p>茫然之一:只知道完成任务。也许是我年龄大了点,但我觉得现在很多小朋友,尤其是85年以后出生的,工作的时候只是在完成任务,事情做完了,有时也不测试,或者就是匆匆测试,匆匆结束,并没有好好的想为什么这件事老大要让我这样做,这样做有什么好处,会不会有缺点,我是不是有更好的方法。当你不去想的时候,意味着你少了很多提高的机会?/p> <p>茫然之二:不追究为什么。很多人做事情就象第一条说的那样,只是完成任务,并不去想其中的原理是什么。面试过很多人,对于目前工作两三年的大部分人来说(当然我面试的不是好的学校毕业的,基本学校为中等偏下点),一旦涉及到Spring、Hibernate、Struts等框架深入点东西的时候,大都回答不上来,只是对框架能熟练应用而已。这样够么?计算机的很多知识,当你熟悉了其运作原理,框架对于你来说,只是手到擒来,看看学学就会用了。我问过好几个同事,平时晚上回去都干嘛,很多人都回答我晚上回去看看电视,稍微看看书就睡觉了。我有点惊讶,我想如果你想成为一个技术高手,一个能拿高薪的程序员,你又没有天份,又不付出超过常人的努力,凭什么你比别人强呢?</p> <p>茫然之三:不善于总结。很多人(又是很多人)过着做一天和尚撞一天钟的日子,日子一天一天过去,基本不去总结,只是过了好长一段时间会发觉,原来最近我啥也没有进步,啥也没学到,还是老样子。知识在于积累,你只有不断总结,知识才能更好的积累,才能更好的为你服务?/p> <p>茫然之四:没有明确的目标。一个人没有目标就决定了他不会有长足的进步。你都没有想过自己要成为一个架构师,一个项目经理,一个部门经理,一个技术总监,都没有想过要成为这样的人需要具备什么样的条件,你怎么可能知道自己欠缺什么?需要补充什么呢?长远目标要明确,然后根据长远目标进行分析,我要达到这样的目标,还有什么欠缺,据此制定短期目标,短期目标一定要可实现可操作。这样随着你目标的一步一步实现,你各方面的能力也随之提高了?/p> <p>写了几点,也作为对自己的鞭策?/p><img src ="//www.ot7t.com.cn/robbie/aggbug/318370.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/robbie/" target="_blank">The Matrix</a> 2010-04-14 22:05 <a href="//www.ot7t.com.cn/robbie/archive/2010/04/14/318370.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2010年读书计?/title><link>//www.ot7t.com.cn/robbie/archive/2010/02/03/311854.html</link><dc:creator>The Matrix</dc:creator><author>The Matrix</author><pubDate>Wed, 03 Feb 2010 15:27:00 GMT</pubDate><guid>//www.ot7t.com.cn/robbie/archive/2010/02/03/311854.html</guid><wfw:comment>//www.ot7t.com.cn/robbie/comments/311854.html</wfw:comment><comments>//www.ot7t.com.cn/robbie/archive/2010/02/03/311854.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>//www.ot7t.com.cn/robbie/comments/commentRss/311854.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/robbie/services/trackbacks/311854.html</trackback:ping><description><![CDATA[<p>2010年已经过去一个月了,赶在农历春节前列一下今年的读书清单,不能总把精力放在工作中了,也需要补充点新知识了,否则没有新东西能贡献出来了?/p> <p>1、《OSGI原理与最佳实践》,结合这本书并研究SpringDM,做一些实例?/p> <p>2、《SQL语言艺术?/p> <p><font color="#0000ff">3、《Oracle9i&10g编程艺术?/font></p> <p><font color="#0000ff">4、《架构之美?/font></p> <p>5、《UML和模式应用?/p> <p>6、《UML彩色建模?/p> <p><font color="#0000ff">7、《领域驱动设计与模式实战?/font></p> <p><font color="#0000ff">8、《敏捷软件开?原则、模式与实践?/font></p> <p>9、《软件开发的边界?/p> <p>10、《软件随想录?/p> <p>11、《走出软件作坊?/p> <p>就这么多了,9?0?1去年都看过一遍了,但好多地方粗粗过了一下,还要仔细阅读?/p> <p>另外也对自己提个要求,看书要做读书笔记?/p> <p>2010?我的读书年!</p> <img src ="//www.ot7t.com.cn/robbie/aggbug/311854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/robbie/" target="_blank">The Matrix</a> 2010-02-03 23:27 <a href="//www.ot7t.com.cn/robbie/archive/2010/02/03/311854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>寸土必争 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2010/01/05/308350.htmlThe MatrixThe MatrixTue, 05 Jan 2010 13:25:00 GMT//www.ot7t.com.cn/robbie/archive/2010/01/05/308350.html//www.ot7t.com.cn/robbie/comments/308350.html//www.ot7t.com.cn/robbie/archive/2010/01/05/308350.html#Feedback11//www.ot7t.com.cn/robbie/comments/commentRss/308350.html//www.ot7t.com.cn/robbie/services/trackbacks/308350.html摘自《软件随想录?/p>

看了软件随想录中下面一段话,觉得非常棒,作为一名软件从业人员,不一定有机会能实现描述中的优秀软件产品,但这样的理念需要贯穿我们每个人的心田,时刻记在心中?/p>

【创造一个有使用价值的软件?font color="#ff0000">你必须时时刻刻都在奋?/strong>,每一次的修补,每一个功能,每一处小小的改进,你都在奋斗,目的只是为了再多创造一点空间,可以再多吸引一个用户加入。没有捷径可走。你需要一点运气,但是这不取决于你是否幸运。你之所以会有好运气,那是因为你寸土必争?/p>

每天你前进一小步,将一件东西做得比昨天好一点点。这样的改进几乎看不出可以让谁获益,几乎没有变化。但是,你前进了一小步?/p>

有无数个要做的这样微小的改进?/p>

为了发现可以改进的地方?strong>你必须有一个思维定势,始终如一的用批判的眼光看世界。随便找一样东西,如果你看不出它的缺点,那么你的思维转型还没有成功。当你成功的时候,你身边亲密的人会被你逼得发疯。你的家人恨不得杀了你。当你步行上班的时候,看到一个司机漫不经心地开车,你几乎用了所有的意志力才勉强忍不住冲上去告诉那个司机,他这样开车差点儿要了旁边坐在轮椅上的那个可怜小孩的命?/p>

当你改正了一个又一个这样的小细节后,当你磨光、定型、擦亮、修饰你的产品的每一个小边角后,就会有神奇的事情发生。厘米变成分米,分米变成米,米变成了千米。你最后拿出来的是一件真正优秀的产品。它第一眼就让人觉得震撼,出类拔萃,工作起来完全符合直觉。就?00万个用户中有一个用户某天突然要用到一个他100万次使用中才会用到一次的罕见功能,他发现了这个功能不仅能用,而且还很没:在你的软件中,即使是看门人的小屋都铺着大理石的地板,配有实心的橡木门和桃花心木的壁板?/p>

就是在这个时候,你意识到这是一个优秀软件。?/p>

The Matrix 2010-01-05 21:25 发表评论
]]>
flex custom layout && easy flex skinning - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2009/11/25/303597.htmlThe MatrixThe MatrixWed, 25 Nov 2009 04:25:00 GMT//www.ot7t.com.cn/robbie/archive/2009/11/25/303597.html//www.ot7t.com.cn/robbie/comments/303597.html//www.ot7t.com.cn/robbie/archive/2009/11/25/303597.html#Feedback0//www.ot7t.com.cn/robbie/comments/commentRss/303597.html//www.ot7t.com.cn/robbie/services/trackbacks/303597.html//www.insideria.com/2009/05/flex-4-custom-layouts.html


//www.insideria.com/2009/10/easy-flex-skinning-with-firewo.html



The Matrix 2009-11-25 12:25 发表评论
]]>
flex中如何用编程的方式实现State - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2009/11/11/302020.htmlThe MatrixThe MatrixWed, 11 Nov 2009 13:59:00 GMT//www.ot7t.com.cn/robbie/archive/2009/11/11/302020.html//www.ot7t.com.cn/robbie/comments/302020.html//www.ot7t.com.cn/robbie/archive/2009/11/11/302020.html#Feedback0//www.ot7t.com.cn/robbie/comments/commentRss/302020.html//www.ot7t.com.cn/robbie/services/trackbacks/302020.html在Flash Builder 4 Beta 2版本中,使用mxml方式实现state的切换有了很大改进,使用起来更方便,具体可参见下文:

//onflex.org/learn/fx4/index.php?page=States

看完这篇文章后,想到一个问题,如何用编程的方式实现切换呢,找了参考资料,实现了一个例子,代码如下?/p>

开发环境:Flash Builder 4 Beta2

<?xml version="1.0" encoding="utf-8"?>
<s:Application
    
xmlns:fx="//ns.adobe.com/mxml/2009"
    xmlns:s
="library://ns.adobe.com/flex/spark"
    creationComplete
="creationCompleteHandler(event)">
    
<fx:Script>
        
<![CDATA[
            import mx.core.UIComponent;
            import mx.events.FlexEvent;
            import mx.states.SetProperty;
            import mx.states.State;
            
            import spark.components.Label;
            import spark.components.Panel;

            private var stateArray : Array;
            private var state1 : State;
            private var state2 : State;
            
            protected function creationCompleteHandler(event:FlexEvent):void
            {
                state1 = new State();
                state1.name="state1";
                
                state2 = new State();
                state2.name="state2";
                
                var stateArray1:Array = new Array();
                var stateArray2:Array = new Array();
                
                state1.overrides = stateArray1;
                state2.overrides = stateArray2;
                
                stateArray = new Array();
                stateArray.push(state1);
                stateArray.push(state2);
                this.states = stateArray;
                
                var panel:Panel = new Panel();
                group.addElement(panel);
                var label:Label = new Label();
                panel.addElement(label);
                
                buildStates(stateArray1, stateArray2, panel, label);
                this.currentState = "state1";
            }

            private function buildStates(stateArray1:Array, stateArray2:Array,
                compenent1:UIComponent, compenent2:UIComponent) : void{
                
                stateArray1.push(makeSetProp(compenent1, "title", "Panel1"));            
                stateArray1.push(makeSetProp(compenent2, "text", "One"));
                
                stateArray2.push(makeSetProp(compenent1, "title", "Panel2"));
                stateArray2.push(makeSetProp(compenent2, "text", "Two"));
            }
            
            private function makeSetProp(target:UIComponent, name:String, value:*):SetProperty{
                var sp:SetProperty = new SetProperty();
                sp.target = target;
                sp.name = name;
                sp.value = value;
                return sp;
            } 
        
]]>
    
</fx:Script>
        
    
<s:VGroup autoLayout="true" horizontalAlign="center">
        
<s:HGroup horizontalCenter="0">            
            
<s:Button label="One" 
                click
="this.currentState='state1'"/>            
            
<s:Button label="Two" 
                click
="this.currentState='state2'"/>            
        
</s:HGroup>
        
<s:HGroup id="group" horizontalCenter="0">            
        
</s:HGroup>
    
</s:VGroup>
    
</s:Application>


The Matrix 2009-11-11 21:59 发表评论
]]>
计算机知识体?/title><link>//www.ot7t.com.cn/robbie/archive/2009/10/22/299270.html</link><dc:creator>The Matrix</dc:creator><author>The Matrix</author><pubDate>Thu, 22 Oct 2009 00:32:00 GMT</pubDate><guid>//www.ot7t.com.cn/robbie/archive/2009/10/22/299270.html</guid><wfw:comment>//www.ot7t.com.cn/robbie/comments/299270.html</wfw:comment><comments>//www.ot7t.com.cn/robbie/archive/2009/10/22/299270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/robbie/comments/commentRss/299270.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/robbie/services/trackbacks/299270.html</trackback:ping><description><![CDATA[<p>    这是前几天在别人的BLog上看到的一幅图,觉得不错,基本涵盖了IT人员需要掌握的基础知识这块,从这幅图中可以看出语言并不重要,关键是要搞明白整个环节,这样遇到任何问题就能有目的、有方法的学习了?/p> <p><a href="//www.ot7t.com.cn/images/blogjava_net/robbie/WindowsLiveWriter/8d33739cf64a_7807/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9F%A5%E8%AF%86%E4%BD%93%E7%B3%BB_4.gif"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="计算机知识体? border="0" alt="计算机知识体? src="//www.ot7t.com.cn/images/blogjava_net/robbie/WindowsLiveWriter/8d33739cf64a_7807/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9F%A5%E8%AF%86%E4%BD%93%E7%B3%BB_thumb_1.gif" width="640" height="335"></a></p><img src ="//www.ot7t.com.cn/robbie/aggbug/299270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/robbie/" target="_blank">The Matrix</a> 2009-10-22 08:32 <a href="//www.ot7t.com.cn/robbie/archive/2009/10/22/299270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ruby On Rails安装及第一天学?/title><link>//www.ot7t.com.cn/robbie/archive/2009/07/19/287292.html</link><dc:creator>The Matrix</dc:creator><author>The Matrix</author><pubDate>Sat, 18 Jul 2009 16:42:00 GMT</pubDate><guid>//www.ot7t.com.cn/robbie/archive/2009/07/19/287292.html</guid><wfw:comment>//www.ot7t.com.cn/robbie/comments/287292.html</wfw:comment><comments>//www.ot7t.com.cn/robbie/archive/2009/07/19/287292.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/robbie/comments/commentRss/287292.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/robbie/services/trackbacks/287292.html</trackback:ping><description><![CDATA[<p>1、下载Ruby并安装,下载地址?a title="//rubyforge.org/frs/?group_id=167" >//rubyforge.org/frs/?group_id=167</a></p> <p>下载?.8.6-27 Release Candidate 2(ruby186-27_rc2.exe)版?/p> <p>2、在windows的命令行下,输入 ruby –v,检查ruby是否正确安装,应该出现如下信息:</p> <p>ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]</p> <p>3、安装rails,执行gem install rails命令,安装成功后,执行rails -v检查?/p> <p>我安装了Rails2.3.2版本。使用gem install -version rails可以指定安装的rails版本,具体如何使用gem,可以用gem help install查看帮助?br /> </p> <p> </p> <p>参考:Ruby On Rails(ROR)安装(<a title="//enjoylog.cn/?p=8" >//enjoylog.cn/?p=8</a>?/p> <p> </p> <p>装好了便到Ruby On Rails的官方网站(<a title="//rubyonrails.org/" >//rubyonrails.org/</a>),找到?/p> <p>Getting Started with Rails(<a title="//guides.rubyonrails.org/getting_started.html" >//guides.rubyonrails.org/getting_started.html</a>)</p> <p>开始一步一步follow up?/p> <p>RubyOnRails的中文站上的翻译文没有完全跟进,还是看英文的吧?/p> <p> </p> <p>我使用的是MySQL的数据库,操作系统:Vista?/p> <p>到创建POSTS应用的时候遇到了问题,创建数据后数据库中有数据,但是到Listing posts界面无法查看,总是报错?/p> <p>网上Google了一下,果然有人遇到相同的问题,参照了如下解决方案,?/p> <p><a title="//instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/" >//instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/</a> 上下载了libmySQL.dll文件放到RUBY_HOME/bin/目录下,问题解决?/p> <p>参考:升级2.2后mysql驱动的问题(<a title="//www.javaeye.com/topic/283871?page=1" >//www.javaeye.com/topic/283871?page=1</a>?/p> <p> </p> <p>感叹一下,当Listing Posts这个CRUD小应用跑起来后,觉得Ruby On Rails的开发是比Java开发要快一些,看了一下它生成的代码,貌似也不多?/p> <p> </p> <p>今天晚了,明天继续?/p> <img src ="//www.ot7t.com.cn/robbie/aggbug/287292.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/robbie/" target="_blank">The Matrix</a> 2009-07-19 00:42 <a href="//www.ot7t.com.cn/robbie/archive/2009/07/19/287292.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>没有Hibernate时,我们怎么做项?amp;hellip;&hellip; - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2009/07/06/285719.htmlThe MatrixThe MatrixMon, 06 Jul 2009 14:06:00 GMT//www.ot7t.com.cn/robbie/archive/2009/07/06/285719.html    最近在做一个很小的项目的功能改进,小小的项目中原来连接的是MySQL数据库,现在需要新连接一个数据库(Oracle),仅仅从一张表查询数据即可,没有添加、修改、删除等等功能。本来这个小小的项目中用的是Hibernate,现在又要增加一个数据库连接,觉得配置起来有点麻烦,忽然想起来,我干吗还要用Hibernate呢,直接用JDBC不也挺好使么,想了便做,果然写起JDBC来,很是快捷,一会就搞好了?/p>

    做好了以后,忽然觉得有点迷茫,感觉不用Hibernate不也挺好的么,咱为什么现在开口闭口都是Hibernate呢,于是便有了今天的题目?/p>

    很久以前没有Hibernate的时候:

    第一阶段:我们写程序都是直接用JDBC,甚至在JSP页面中直接去createConnection,然后执行查询,输出到页面?/p>

    第二阶段:后来觉得每次都是创建一个连接,好像效率不高,于是看了别人的介绍,要用数据库连接池,好的,那便用数据库连接池吧,每次都从pool中获得一个Connection,然后查询数据?/p>

    第三阶段:用了连接池,还是效率不高,那怎么办呢?用缓存吧,自己实现缓存?可以,也可以用开源的缓存框架?/p>

    第四阶段:到了OO大流行的时代了,一切都要OO,恰逢Hibernate降临人世,于是一切都用Hibernate来实现了,其实同期还是有不少其它ORMAP框架的,比如(TOPLINK、JDO、IBatis等,IBatis国内用的还比较多,另外两个好像用的比较少)?/p>

    第五阶段:忽然EJB大流行,事务的概念被广为传播(并不是原来没有事务的概念,只是实现起来比较麻烦),借助EJB的广为传播,Spring+Hibernate的组合也慢慢占据了大半市场。此时事务用Spring AOP的声明式事务来解决,缓存可以用开源的缓存框架(已经和Hibernate无缝集成了),数据库连接池也是通过配置的方式在SpringContext.xml文件中配置,貌似一切都很完美?/p>

 

    真的到了第五阶段,一切是不是真的完美了呢,如果一个很小的应用,需要从好几个数据库查询数据,但是每个数据库仅需要查询那么一两张表的数据,偶尔添加、删除几条数据,数据量也不大,此时我们是不是还用第一阶段的方式会更好呢,好像有时配置多数据源也不是那么方便的事情。或者使用Spring中的JDBCTemplate,貌似也不错?/p>

    再往后看,难道Spring+Hibernate的组合就天下无敌了么?难道就没有新的框架了么?前段时间,JavaEye上关于充血模型、贫血模型的讨论吸引了多少眼球,以后是不是会有这么一个框架用于实现充血模型呢?

   说了这么多,最终只是想说明白这么一句:用恰当的技术做恰当的事情,这真是一个艰难的选择……,至于未来,更是迷茫,因为我们只是跟随者,而不是领导者?/p>

The Matrix 2009-07-06 22:06 发表评论
]]>
《深入浅出EXT JS》书?/title><link>//www.ot7t.com.cn/robbie/archive/2009/04/19/266409.html</link><dc:creator>The Matrix</dc:creator><author>The Matrix</author><pubDate>Sun, 19 Apr 2009 05:36:00 GMT</pubDate><guid>//www.ot7t.com.cn/robbie/archive/2009/04/19/266409.html</guid><wfw:comment>//www.ot7t.com.cn/robbie/comments/266409.html</wfw:comment><comments>//www.ot7t.com.cn/robbie/archive/2009/04/19/266409.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>//www.ot7t.com.cn/robbie/comments/commentRss/266409.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/robbie/services/trackbacks/266409.html</trackback:ping><description><![CDATA[<p>前两天出差在外,利用空余时间将《深入浅出EXT JS》这本书的前五章翻了一遍,后面的章节粗粗浏览了一下,觉得这本书写的不错,写下自己的一点感悟:</p> <p>1、适合的读?/p> <blockquote> <p>a、是一名Java开发程序员,做过WEB开?/p> <p>b、对Ajax开发的基础知识有所了解</p></blockquote> <p>2、书评:</p> <p>        这本书我觉得应该改成这个名字:《EXT JS CookBook》,可能使得书的内容和名称更贴切,呵呵?/p> <p>        书中对Ext JS的基础类、Grid、Form、Tree、布局管理器、数据获取等各方面都做了详细的描述,基本上开发中需要用到的知识点,在书中都会提到,而且书中的很多例子和实际工作还是非常贴切的,对于工作中需要用到EXT JS或者需要学习EXT JS的程序员来说还是会很有帮助的?/p> <p>        最后提点缺点,这本书中对EXT JS的知识点都做了比较详细的描述,但是缺乏对EXT JS的框架的深入分析?/p><img src ="//www.ot7t.com.cn/robbie/aggbug/266409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/robbie/" target="_blank">The Matrix</a> 2009-04-19 13:36 <a href="//www.ot7t.com.cn/robbie/archive/2009/04/19/266409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex Clear Toolkit3.1 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2009/04/12/265164.htmlThe MatrixThe MatrixSun, 12 Apr 2009 12:57:00 GMT//www.ot7t.com.cn/robbie/archive/2009/04/12/265164.html//www.ot7t.com.cn/robbie/comments/265164.html//www.ot7t.com.cn/robbie/archive/2009/04/12/265164.html#Feedback0//www.ot7t.com.cn/robbie/comments/commentRss/265164.html//www.ot7t.com.cn/robbie/services/trackbacks/265164.html前两天在InfoQ上看到一篇文章:利用Clear Toolkit连接Flex与Java开?/a>,今天下载了说明文粗略了翻了一遍,Clear Toolkit包含五个部分,分别是?/p>
  • Clear Data Builder,这是个Eclipse插件,可以根据SQL语句或Java数据传输对象为BlazeDS或LCDS自动生成CRUD应用?
  • DTO2Fx,该插件会根据Java类型自动生成对应的ActionScript类?
  • Log4Fx是个构建于Flex logging API之上的Eclipse插件,它会自动化日志处理并且更加灵活,也更加友好?
  • Fx2Ant插件会为Flex Builder项目生成优化的Ant构建脚本?
  • clear.swc是个增强的Flex组件库?

暂时用不到这个工具,记录留待备查?/p>

The Matrix 2009-04-12 20:57 发表评论
]]>
Hibernate缓存配置 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/robbie/archive/2009/04/07/264359.htmlThe MatrixThe MatrixTue, 07 Apr 2009 14:54:00 GMT//www.ot7t.com.cn/robbie/archive/2009/04/07/264359.html//www.ot7t.com.cn/robbie/comments/264359.html//www.ot7t.com.cn/robbie/archive/2009/04/07/264359.html#Feedback3//www.ot7t.com.cn/robbie/comments/commentRss/264359.html//www.ot7t.com.cn/robbie/services/trackbacks/264359.html这篇Blog是原来写在别的地方的,今天将其转到BlogJava上来?br /> -------------------------------------------------------------------------------

今天仔仔细细的看了一下Hibernate的缓存,并做了实例实践了一把。google一下,网上的教程、文章很多?br /> 自己小结一下:

Hibernate的缓存分为:

  • 一级缓存:在Session级别的,在Session关闭的时候,一级缓存就失效了?
  • 二级缓存:在SessionFactory级别的,它可以使用不同的缓存实现,如EhCache、JBossCache、OsCache等?

缓存的注释写法如下,加在Entity的java类上?/p>

  • @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)

缓存的方式有四种,分别为?/p>

  • CacheConcurrencyStrategy.NONE
  • CacheConcurrencyStrategy.READ_ONLY,只读模式,在此模式下,如果对数据进行更新操作,会有异常?
  • CacheConcurrencyStrategy.READ_WRITE,读写模式在更新缓存的时候会把缓存里面的数据换成一个锁,其它事务如果去取相应的缓存数据,发现被锁了,直接就去数据库查询?
  • CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,不严格的读写模式则不会的缓存数据加锁;
  • CacheConcurrencyStrategy.TRANSACTIONAL,事务模式指缓存支持事务,当事务回滚时,缓存也能回滚,只支持JTA环境?

另外还有如下注意事项?/p>

1、查询缓存需要在Query的相应方法执行前加上这么一句:

query.setCacheable(true);

在使用Hibernate时,获得的query有setCacheable方法,可以设置使用缓存,但当使用JPA时,javax.persistence.Query并没有setCacheable方法,此时如果JPA的实现是Hibernate时,可以将其进行如下转化,再调用setCacheable方法(如果JPA的实现是其它ORMAP框架,就不知道怎么做了)?/p>

if (query instanceof org.hibernate.ejb.QueryImpl) {
    ((org.hibernate.ejb.QueryImpl) query).getHibernateQuery().setCacheable(
true);
}

2、还有就是查询缓存的查询执行后,会将查询结果放入二级缓存中,但是放入的形式是以ID为Key,实例作为一个Value?/p>

3、hibernate的配置文件中需加入如下信息?br />

<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" />
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />




]]>