云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

最近在开发中遇到一个问题,就是如何判断远端服务器是否已经断开连接,如果断开那么需要重新连接。 

首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。 

然后想到是否可以通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接,类似ping,但是这样会影响到正常的输出数据,远端无法把正常数据和测试数据分开。 

最后又回到socket类,发现有一个方法sendUrgentData,查看文档后得知它会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节,而SO_OOBINLINE属性默认情况下就是关闭的,太好了,正是我需要的! 

于是,下面一段代码就可以判断远端是否断开了连接: 

Java代码  收藏代码
  1. try{  
  2.       socket.sendUrgentData(0xFF);  
  3. }catch(Exception ex){  
  4.       reconnect();  
  5. }  

posted @ 2013-08-15 20:09 云自无心水自闲 阅读(2639) | 评论 (0)编辑 收藏

有一个WEB应用,使用了AJAX框架,所有页面的展示都是从AJAX的函数中进行的。
在这种情况,有一个很简单的方法来下载一个文件:
window.location="download.action?para1=value1...."

posted @ 2013-08-14 08:13 云自无心水自闲 阅读(366) | 评论 (0)编辑 收藏

run in the mysql command line client next sequence of queries:

USE mysq;
SHOW TABLE STATUS;
SHOW INDEX FROM `columns_priv`;
DESCRIBE `columns_priv`;
SHOW INDEX FROM `db`;
DESCRIBE `db`;

describe `column_priv`; ERROR `(HY000): Can't create/write to file 'c:\windows\Temp\#sql_7a4_0.MYD (Errcode: 2)

Delete the file #sql_7a4_0.MYD if exists

posted @ 2013-03-06 08:52 云自无心水自闲 阅读(893) | 评论 (2)编辑 收藏

在apache dbutil中,给数据列起别名有时候不起作用。这时候,需要在连接字符串中添加一个参数:

useOldAliasMetadataBehavior=true";

posted @ 2012-11-18 20:23 云自无心水自闲 阅读(432) | 评论 (0)编辑 收藏

Mysql replication error 1201
On a fine happy morning I am greeted with an alert that slave is not running. Running start slave yields this:
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log
Enabling the log yielded nothing. Googling yielded This Page that helped me a lot, but I didn't have to do quite as much work all over again. Here is what I did.
First, I saved my "SHOW SLAVE STATUS\G" output:
************************** 1. row **************************
             Slave_IO_State:
                Master_Host: 127.0.0.1
                Master_User: replication
                Master_Port: 3307
              Connect_Retry: 60
            Master_Log_File: mysqld-bin.000401
        Read_Master_Log_Pos: 98
             Relay_Log_File: mysqld-relay-bin.006135
              Relay_Log_Pos: 242
      Relay_Master_Log_File: mysqld-bin.000401
           Slave_IO_Running: No
          Slave_SQL_Running: No
            Replicate_Do_DB:
        Replicate_Ignore_DB:
         Replicate_Do_Table:
     Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
                 Last_Errno: 0
                 Last_Error:
               Skip_Counter: 0
        Exec_Master_Log_Pos: 98
            Relay_Log_Space: 0
            Until_Condition: None
             Until_Log_File:
              Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File:
         Master_SSL_CA_Path:
            Master_SSL_Cert:
          Master_SSL_Cipher:
             Master_SSL_Key:
      Seconds_Behind_Master: NULL
1 row in set (0.00 sec)
STOP SLAVE; RESET SLAVE;
mysql> CHANGE MASTER TO MASTER_LOG_POS=98 , MASTER_LOG_FILE = 'mysqld-bin.000401';
Query OK, 0 rows affected (0.04 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
    
The position comes from the output I saved before
It's working fine again. Still don't know what caused this - possibly random remote server power cycling...

posted @ 2012-11-18 20:23 云自无心水自闲 阅读(599) | 评论 (0)编辑 收藏

picky挑剔的;
quick-tempered容易发脾气的;
rude粗鲁无礼的;
scatter-brained 记性不好的;
slapdash粗心大意的;
sly狡猾的;
spiteful怀恨在心的;
thoughtless草率的;
fussy挑剔的;
manic狂躁的;
manipulative喜欢指使别人的;
moody情绪化的

posted @ 2012-10-20 20:51 云自无心水自闲 阅读(334) | 评论 (0)编辑 收藏



 package org.springside.examples.miniweb.dao.account;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Component;
import org.springside.examples.miniweb.entity.account.Group;
import org.springside.examples.miniweb.entity.account.User;
/**
 * GroupDao的扩展行为实现类.
 */
@Component
public class GroupDaoImpl implements GroupDaoCustom {
private static final String QUERY_USER_BY_GROUPID = "select u from User u left join u.groupList g where g.id=?";
@PersistenceContext
private EntityManager em;
@Override
public void deleteWithReference(Long id) {
//因為Group中沒有与User的关联,只能用笨办法,查询出拥有该权限组的用户, 并删除该用户的权限组.
Group group = em.find(Group.class, id);
List<User> users = em.createQuery(QUERY_USER_BY_GROUPID).setParameter(1, id).getResultList();
for (User u : users) {
u.getGroupList().remove(group);
}
em.remove(group);
}
}

posted @ 2012-09-13 20:25 云自无心水自闲 阅读(491) | 评论 (0)编辑 收藏

造成这个错误的原因主要是一些系统文件夹system权限丢失。
所以只要把权限加回去就行了。

我主要查看了
c:\windows\installer
C:\Documents and Settings\<user name>\Local Settings\Temp
右键点击目录,点安全选项页,在“组和用户名称”列表中把system用户添加进去,并在下面的权限列表中勾选“完全控制” 即可

posted @ 2012-09-06 20:18 云自无心水自闲 阅读(1728) | 评论 (0)编辑 收藏

Spring Security中指定session超时后跳转的页面

在xml配置文件中加入:<session-management invalid-session-url="/session-timeout.htm" />

posted @ 2011-08-31 07:25 云自无心水自闲 阅读(3177) | 评论 (0)编辑 收藏


在applicationContext.xml中定义了一个DataSource:<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" />
但是在代码中,使用anotation进行注入的时候,却总是找不到这个dataSource.

    @Autowired
    public void setDataSource(DataSource dataSource) {
        jdbcTemplate = new JdbcTemplate(dataSource);
        jdbcInsert = new SimpleJdbcInsert(dataSource);
    }

最后终于想明白了,原因大概是这样的,使用autowired的时候,默认是根据类型来匹配的,在xml中定义的类型是:BasicDataSource,而不是接口DataSource,所以默认情况下这样是无法自动装配的。解决办法是指令使用名字来进行bean的匹配,也就是用Qualifier指定bean的id.

    @Autowired
    public void setDataSource(@Qualifier("dataSource") DataSource dataSource) {
        jdbcTemplate = new JdbcTemplate(dataSource);
        jdbcInsert = new SimpleJdbcInsert(dataSource);
    }


另外一点,在网上搜索的过程中发现有不少人都有类似的问题,但是他们的原因是没有正确使用spring的注入,而是自己在代码中new了一个Dao的实例,这样的话,spring是无法将dataSource注入到dao的实例中的

posted @ 2011-08-26 08:57 云自无心水自闲 阅读(3812) | 评论 (0)编辑 收藏

仅列出标题
共29页: First 上一页 3 4 5 6 7 8 9 10 11 下一页 Last