Rising Sun

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  148 随笔 :: 0 文章 :: 22 评论 :: 0 Trackbacks

#

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;  
posted @ 2009-04-22 12:51 brock 阅读(172) | 评论 (0)编辑 收藏

http://blog.chinaunix.net/u/29134/showart_355336.html



MYSQL在默认的情况下查询是不区分大小写的,例如:

mysql> create table t1(
    -> name varchar(10));
Query OK, 0 rows affected (0.09 sec)

mysql> insert into t1 values('you'),('You'),('YOU');
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0
对这个表,缺省情况下,下面两个查询的结果是一样的:


mysql> select * from t1 where name = 'you';
+------+
| name |
+------+
| you  |
| You  |
| YOU  |
+------+
3 rows in set (0.00 sec)

mysql> select * from t1 where name = 'YOU';
+------+
| name |
+------+
| you  |
| You  |
| YOU  |
+------+
3 rows in set (0.00 sec)

如果想让MYSQL知道你输入的字母是大写还是小写的,修改表:

mysql> alter table t1 change name name varchar(10) binary;
Query OK, 3 rows affected (0.20 sec)
Records: 3  Duplicates: 0  Warnings: 0


mysql> select * from t1 where name = 'you';
+------+
| name |
+------+
| you  |
+------+
1 row in set (0.00 sec)

mysql> select * from t1 where name = 'YOU';
+------+
| name |
+------+
| YOU  |
+------+
1 row in set (0.00 sec)

如果你只是想在SQL语句中实现的话:

mysql> select * from t1 where name = binary 'YOU';
+------+
| name |
+------+
| YOU  |
+------+
1 row in set (0.02 sec)

mysql> select * from t1 where name = binary 'you';
+------+
| name |
+------+
| you  |
+------+
1 row in set (0.00 sec)

如果不想这么麻烦而想服务一开启就让大小写一致的话:
可以修改my.ini或者my.cnf
[mysqld]
 lower_case_table_names=1
(0:区分;1:不区分)
然后重启MYSQL服务。

mysql> show variables like '%case_table%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 1     |
+------------------------+-------+
1 row in set (0.00 sec)

注:WINDOWS系统不用修改,系统默认就是1
LINUX 系统默认是0。因为LINUX下的脚本都是区分大小写的。
posted @ 2009-04-17 15:30 brock 阅读(7336) | 评论 (1)编辑 收藏

在使用MySQL-Front连接mysql的时候发生的这个错误

ERROR 1130: Host 192.168.88.160 is not allowed to connect to this MySQL server

更改 mysql 数据库里的 user表里的 host项
localhost改称%

mysql -u root -p

mysql>use mysql;

mysql>update user set host = '%'  where user ='root';

mysql>flush privileges;

mysql>select 'host','user' from user where user='root';

现在就可以连接了! 

权限

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' with grant option;

posted @ 2009-04-13 16:52 brock 阅读(4418) | 评论 (1)编辑 收藏

简介     在jsp页面上经常遇到得到集合长度、字符长度、字符切取等应用需,在2.0以前这种需是许多程序员对JSTL及为不满意的地方之一。为此在2.0 中添加了functions标签,其提供对以上需求的支持。     使用方法     引用<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>函数说明:   函数 描述
fn:contains(string, substring) 如果参数string中包含参数substring,返回true
fn:containsIgnoreCase(string, substring) 如果参数string中包含参数substring(忽略大小写),返回true
fn:endsWith(string, suffix) 如果参数 string 以参数suffix结尾,返回true
fn:escapeXml(string) 将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回
fn:indexOf(string, substring) 返回参数substring在参数string中第一次出现的位置
fn:join(array, separator) 将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。
fn:length(item) 返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。
fn:replace(string, before, after) 返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果
fn:split(string, separator) 返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素
fn:startsWith(string, prefix) 如果参数string以参数prefix开头,返回true
fn:substring(string, begin, end) 返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符
fn:substringAfter(string, substring) 返回参数substring在参数string中后面的那一部分字符串
fn:substringBefore(string, substring) 返回参数substring在参数string中前面的那一部分字符串
fn:toLowerCase(string) 将参数string所有的字符变为小写,并将其返回
fn:toUpperCase(string) 将参数string所有的字符变为大写,并将其返回
fn:trim(string) 去除参数string 首尾的空格,并将其返回
示例
${fn.substring(string,begin,end)}

来一个我自己测试用的代码

 

<%@ page contentType="text/html;charset=gbk"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<html>
<head>
<title>这个是 JSTL的    测试</title>
</head>
<body>
<c:set var="str" value="stringStRiNg"/>
<c:set var="t" value="tr"/>
<c:out value="${str} = ${fn:length(str)}"/>
<c:out value="${fn:toLowerCase(str)}"/>
<c:out value="${fn:toUpperCase('   ')}"/>
<c:out value="${fn:toUpperCase('AbCdEfg')}"/><br>
<c:out value="${fn:substring('asdfefg',0,3)}"/><br>
<c:out value="${fn:substringAfter('asdf','s')}"/><Br>
<c:out value="${fn:substringBefore(str,'g')}"/><Br>
<c:out value="${fn:trim(' sd dew e ')}"/><Br>

 

<c:out value=" d sd dew e "/><Br>
<c:out value="${fn:replace(str,'ing','IN')}"/><Br>
</body>
</html>

posted @ 2008-11-20 10:08 brock 阅读(362) | 评论 (0)编辑 收藏


function delRepeat(arr){
 var len = arr.length;
 for(var i=len-1;i>=1;i--)
 {       
 if(arr[i-1] == arr[i])    
    {         
   arr.splice(i,1);//splice()方法的应用   
     } 
   }
 //return arr;
}

Array.prototype.delRepeat=function()
{
var tmpArr=[],rs=[],i,val;
for(i=this.length;i>0;i--)
{
val = this[i-1];
if(!tmpArr[val])
{
tmpArr[val]=1;
}else
{
rs.push(val);
this.splice(i-1,1);
}
}
tmpArr = null;
return rs;
}

两个优点:
1、预先将this[i-1]保存在变量val中,减少访问次数。
2、使用array.push方法,替换用变量保存数组长度的办法。



JavaScript splice() 方法
返回 JavaScript Array 对象参考手册
定义和用法
splice() 方法用于插入、删除或替换数组的元素。

语法
arrayObject.splice(index,howmany,element1,..,elementX)参数 描述 
index 必需。规定从何处添加
/删除元素。

该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
 
howmany 必需。规定应该删除多少元素。必须是数字,但可以是 
"0"

如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
 
element1 可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入。 
elementX 可选。可向数组添加若干元素。 

返回值
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

说明
splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
提示和注释
注释:请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
实例
例子 
1
在本例中,我们将创建一个新数组,并向其添加一个元素:

<script type="text/javascript">

var arr = new Array(6)
arr[
0= "George"
arr[
1= "John"
arr[
2= "Thomas"
arr[
3= "James"
arr[
4= "Adrew"
arr[
5= "Martin"

document.write(arr 
+ "<br />")
arr.splice(
2,0,"William")
document.write(arr 
+ "<br />")

</script>输出:

George,John,Thomas,James,Adrew,Martin
George,John,William,Thomas,James,Adrew,Martin例子 
2
在本例中我们将删除位于 index 
2 的元素,并添加一个新元素来替代被删除的元素:

<script type="text/javascript">

var arr = new Array(6)
arr[
0= "George"
arr[
1= "John"
arr[
2= "Thomas"
arr[
3= "James"
arr[
4= "Adrew"
arr[
5= "Martin"

document.write(arr 
+ "<br />")
arr.splice(
2,1,"William")
document.write(arr)

</script>输出:

George,John,Thomas,James,Adrew,MartinGeorge,John,William,James,Adrew,Martin例子 
3
在本例中我们将删除从 index 
2 ("Thomas") 开始的三个元素,并添加一个新元素 ("William") 来替代被删除的元素:

<script type="text/javascript">

var arr = new Array(6)
arr[
0= "George"
arr[
1= "John"
arr[
2= "Thomas"
arr[
3= "James"
arr[
4= "Adrew"
arr[
5= "Martin"

document.write(arr 
+ "<br />")
arr.splice(
2,3,"William")
document.write(arr)

</script>输出:

George,John,Thomas,James,Adrew,MartinGeorge,John,William,MartinTIY
splice() 
如何使用 splice() 来更改数组。 
posted @ 2008-11-19 20:00 brock 阅读(310) | 评论 (0)编辑 收藏

  <HTML>  
  <HEAD>  
  <TITLE>   New   Document   </TITLE>  
  <script>  
  //判断当前页面是刷新还是关闭  
  function   a(){  
  if(event.clientX<=0&&   event.clientY   <   0){//>0是刷新,<=0是关闭当前页  
        alert("开新的");  
                          openwin();  
                    }else{  
        alert("不开新的");  
                    }  
  }  
  </script>  
  </HEAD>  
   
  <BODY   onUnload="a();">  
   
  </BODY>  
  </HTML>  
posted @ 2008-11-19 16:36 brock 阅读(355) | 评论 (0)编辑 收藏

http://space.itpub.net/10707242/viewspace-136175
posted @ 2008-10-16 10:31 brock 阅读(141) | 评论 (0)编辑 收藏

javascript 中文字符长度判断

if(srt.charCodeAt(i) > 255{
//if(friendnick.charCodeAt(i) < 0x4E00 || friendnick.charCodeAt(i) > 0x9FA5) {
     charlen 
+=2;
    }
else{
    
     charlen 
+=1;
    }

java 中文字符长度判断
 if(tempProperty.getBytes().length > cut*2 ){
                
if (tempProperty.length() >= (cut + 1)) {
                    
byte [] src = tempProperty.getBytes();
                    
byte [] dest = new byte[cut*2+2];
                    
int flag = 0;
                    
for(int j=0;j<src.length;j++){  
                        
if(j<= cut*2){
                           
// System.out.println(j);
                            if(src[j]<0)
                                flag
++;
                            dest[j]
= src[j];
                        }

                    }

                  
                    
if(flag % 2 !=0){
                        dest[cut
*2]= 0;
                    }

                    tempProperty 
=  new String(dest).trim()+ ""
这个代码有问题  "sss顺磾村厈士大夫"  tempProperty.getBytes() 其中一个数字不为负数
  修改过的代码

 String s = "stss顺磾村厈士大夫";
        String badChar 
="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        badChar 
+= "abcdefghijklmnopqrstuvwxyz"
        badChar 
+= "0123456789"
        badChar 
+= " "+" ";//半角与全角空格 
        badChar += ".`~!@#$%^&()-_=+]\\|:;\"\'<,>?/*";
        String result = "";
        
int len = 0;
            
for(int i=0;i<s.length();i++)
                
char c = s.charAt(i);
                
if(badChar.indexOf(c)==-1){//如果是中文
                   result = result+c;
                   len 
+= 2;
                }
else{
                   result 
=  result+c;
                   len 
+= 1;
                }

                
if(len>=15break;
            }
 
posted @ 2008-10-14 09:22 brock 阅读(641) | 评论 (0)编辑 收藏

[Java]用OSCache进行缓存对象

1、OSCache是什么?
     OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。
2、OSCache的特点
    (1) 缓存任何对象:你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。
    (2) 拥有全面的API:OSCache API允许你通过编程的方式来控制所有的OSCache特性。
    (3) 永久缓存:缓存能被配置写入硬盘,因此允许在应用服务器的多次生命周期间缓存创建开销昂贵的数据。
    (4) 支持集群:集群缓存数据能被单个的进行参数配置,不需要修改代码。
    (5) 缓存过期:你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不能满足需要时)。
3、OSCache的安装与配置
    网上已经有一个不错的使用教程:http://blog.csdn.net/ezerg/archive/2004/10/14/135769.aspx
4、有关“用OSCache进行缓存对象”的研究
    这个是我今天要说的东西。网上对于OSCache缓存Web页面很多说明和例子,但对于缓存对象方面说得不多,我就把自已写得一些东西放出来,让大家看一看是怎样缓存对象的!
    我基于GeneralCacheAdministrator类来写的BaseCache类
   
  1. package com.klstudio.cache;   
  2.   
  3. import java.util.Date;   
  4.   
  5. import com.opensymphony.oscache.base.NeedsRefreshException;   
  6. import com.opensymphony.oscache.general.GeneralCacheAdministrator;   
  7.   
  8. public class BaseCache extends GeneralCacheAdministrator {   
  9.     //过期时间(单位为秒);   
  10.     private int refreshPeriod;   
  11.     //关键字前缀字符;   
  12.     private String keyPrefix;   
  13.        
  14.     private static final long serialVersionUID = -4397192926052141162L;   
  15.        
  16.     public BaseCache(String keyPrefix,int refreshPeriod){   
  17.         super();   
  18.         this.keyPrefix = keyPrefix;   
  19.         this.refreshPeriod = refreshPeriod;   
  20.     }   
  21.     //添加被缓存的对象;   
  22.     public void put(String key,Object value){   
  23.         this.putInCache(this.keyPrefix+"_"+key,value);   
  24.     }   
  25.     //删除被缓存的对象;   
  26.     public void remove(String key){   
  27.         this.flushEntry(this.keyPrefix+"_"+key);   
  28.     }   
  29.     //删除所有被缓存的对象;   
  30.     public void removeAll(Date date){   
  31.         this.flushAll(date);   
  32.     }   
  33.        
  34.     public void removeAll(){   
  35.         this.flushAll();   
  36.     }   
  37.     //获取被缓存的对象;   
  38.     public Object get(String key) throws Exception{   
  39.         try{   
  40.             return this.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);   
  41.         } catch (NeedsRefreshException e) {   
  42.             this.cancelUpdate(this.keyPrefix+"_"+key);   
  43.             throw e;   
  44.         }   
  45.   
  46.     }   
  47.        
  48. }   
  49.   
  50.   

   通过CacheManager类来看怎样缓存对象的,这个类中所用的News只是具体功能的类,我就不贴出来了,你可以自己写一个!
   
  1. package com.klstudio;   
  2.   
  3. import com.klstudio.News;   
  4. import com.klstudio.cache.BaseCache;   
  5.   
  6. public class CacheManager {   
  7.        
  8.     private BaseCache newsCache;   
  9.   
  10.        
  11.     private static CacheManager instance;   
  12.     private static Object lock = new Object();   
  13.        
  14.     public CacheManager() {   
  15.         //这个根据配置文件来,初始BaseCache而已;   
  16.         newsCache = new BaseCache("news",1800);        
  17.     }   
  18.        
  19.     public static CacheManager getInstance(){   
  20.         if (instance == null){   
  21.             synchronized( lock ){   
  22.                 if (instance == null){   
  23.                     instance = new CacheManager();   
  24.                 }   
  25.             }   
  26.         }   
  27.         return instance;   
  28.     }   
  29.   
  30.     public void putNews(News news) {   
  31.         // TODO 自动生成方法存根   
  32.         newsCache.put(news.getID(),news);   
  33.     }   
  34.   
  35.     public void removeNews(String newsID) {   
  36.         // TODO 自动生成方法存根   
  37.         newsCache.remove(newsID);   
  38.     }   
  39.   
  40.     public News getNews(String newsID) {   
  41.         // TODO 自动生成方法存根   
  42.         try {   
  43.             return (News) newsCache.get(newsID);   
  44.         } catch (Exception e) {   
  45.             // TODO 自动生成 catch 块   
  46.             System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage());   
  47.             News news = new News(newsID);   
  48.             this.putNews(news);   
  49.             return news;   
  50.         }   
  51.     }   
  52.   
  53.     public void removeAllNews() {   
  54.         // TODO 自动生成方法存根   
  55.         newsCache.removeAll();   
  56.     }   
  57.   
  58. }   
  59.   
posted @ 2008-09-09 10:39 brock 阅读(686) | 评论 (0)编辑 收藏

根据上面英文的意思,我认为:
之前大量的符合jsp1.2标准的项目中用到了${***},比如${1+2},但本意就是想显示${1+2},而不是3,所以应该有控制是否解析el表达式的选项,我觉得分为三个级别:

1、设置整个应用服务器下的所有项目是否解析el表达式(控制所有项目)
(这个我还没找到在哪,但应该有)。

2、设置整个项目使用el表达式,需要在web.xml中加上 (控制一个项目)
<jsp-config>
<jsp-property-group>
<el-ignored>false</el-ignored>
</jsp-property-group>
</jsp-config>


3、设置某个jsp页面使用el表达式,需要在jsp页面加上(控制单个页面)
<%@ page isELIgnored="false"%>

你的应用服务器默认设为不解析el表达式了(我的tomcat5.0也是一样),所以要用上面的方法修改,以在页面/项目/应用服务器,级别解析el表达式。
posted @ 2008-08-26 10:57 brock 阅读(145) | 评论 (0)编辑 收藏

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