1.部分css知识:
(1)出现问题:li里面设置了长度和宽度,但是文字不会换行,超过了li的范围
一般控制换行所用到的CSS属性一共有三个:word-wrap; word-break; white-space。这三个属性可以说是专为了文字断行而创造出来的。
(i)word-wrap 属性允许长单词或 URL 地址换行到下一行。word-wrap: normal|break-word;
normal :只在允许的断字点换行(浏览器保持默认处理)。break-word :在长单词或 URL 地址内部进行换行,必要时会触发word-break ;
word-wrap是控制换行的。使用break-word时,是将强制换行。中文没有任何问题,英文语句也没问题。但是对于长串的英文,就不起作用
(ii)word-break 属性规定自动换行的处理方法。提示:通过使用 word-break 属性,可以让浏览器实现在任意位置的换行。word-break: normal|break-all|keep-all;
normal :使用浏览器默认的换行规则。break-all :允许在单词内换行 ; keep-all :只能在半角空格或连字符处换行
break-word是控制是否断词的。normal是默认情况,英文单词不被拆开。break-all,是断开单词。在单词到边界时,下个字母自动到下一行。主要解决了长串英文的问题。
keep-all,是指Chinese, Japanese, and Korean不断词。即只用此时,不用word-wrap,中文就不会换行了。(英文语句正常。)
(iii)white-space 属性设置如何处理元素内的空白。这个属性声明建立布局过程中如何处理元素中的空白符。
normal | 默认。空白会被浏览器忽略。 |
pre | 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。 |
nowrap | 文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。 |
pre-wrap | 保留空白符序列,但是正常地进行换行。 |
pre-line | 合并空白符序列,但是保留换行符。 |
inherit | 规定应该从父元素继承 white-space 属性的值。 |
有可能会出现的问题:
ie下:
使用word-wrap:break-word;所有的都正常。
ff下:
如这2个都不用的话,中文不会出任何问题。英文语句也不会出问题。但是,长串英文会出问题。如没意思的aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
为了解决长串英文,一般用word-wrap:break-word;word-break:break-all;。但是,此方式会导致,普通的英文语句中的单词会被断开(ie下也是)。
实现强制换行:
如果在div这类标准块级元素中需要强制换行,最普遍的方案那就是word-wrap:break-word; word-break:break-all;此方式的缺点就是会导致如果恰巧该行末端宽为一个长串英文单词,那么该单词会被撕开的尴尬样式。
如果是在td,th这类table元素中需要强制换行,个人比较推荐的方式为:先为table设定table-layout:fixed,基本上设 定完这个属性后基本的换行问题都能够解决而不会出现table中td,th因为里面各个内容的多寡发生抢夺其他td,th宽度的情形发生。这时如果你依旧 有强制换行问题,那么在此td中内部加一层div,那么情况就会像上面讨论的方式来解决。
实现强制不换行:
强制不换行的问题到是比较容易分析的,就如上面所讨论的那样使用white-space:nowrap,Firefox的div和td中,以及IE的 div中,均没有问题。唯一的瑕疵就是在IE的td中会有一个问题,如果td没有指定宽度,则nowrap仍然有效,如果td有宽度,并且文字中无标点、 无空格(例如中文长串文字),nowrap则不再有效。解决方式就是可以加word-break:keep-all;可以解决此问题。综合下来,比较稳妥 的方式是在文字与td之间再套一层div,然后使用nowrap,那么就是强制不换行。注意这时候很有可能文字会过多导致溢出容器,所以你还得加一个 overflow:hidden,防止溢出容器,这样子就可以兼容各个浏览器了。
(2)ie7下的overflow不起作用问题:给其父元素以及自己设置position:relative;
(3)ie7下的z-index不起作用问题:设置元素自己的z-index比其父元素大,其父元素要比自己的父元素大,以此直到body ,而且还要配合元素的position属性一起设置。
详细内容参见:http://www.dtop.powereasy.net/Item.aspx?id=3339
2.数据库的横向分片和竖向分片(摘自csdn):
横向分片是将业务表按使用部门拆分为多个表,各个部门之间的数据相对独立,相互之间互不影响,这种方法适用于各部门相互独立的情况,不过带来的问题就是部 门不便扩展,统计及交换数据不便,举个例子,同样的医嘱管理系统,几个病区,一个病区一张表,虽然带来了查询数据效率的提高,但是病区之间病人转科,数据 交换不方便
竖向分片是将业务表中不常用的数据转移到另外的表中,如在院和出院病人数据分别存于不同的表中,病人出院后就将在院病人数据转到出院病人表中,因为在院病人数据是经常要操作的,所以这种分片保证了在院病人数据表始终保持一定的量,从而提高查询的效率
我们该怎样使用这两种方法呢,根据本人数据库设计经验,在数据量较小,部门之间数据频繁交换的情况下使用竖向分片,这样会保证程序设计中逻辑相对保持简单,提高了程序的可靠性,也降低了程序员的负担.
竖向分片仍然不足以解决问题的情况下,我们再引入横向分片,将数据经常交换的部门分为一组,放在同一张业务表中,横向分片数要尽量少,减少统计程序的复杂性
不过在要求更高效率的情况下,横向分片加并发的数据检索可大大提高数据统计速度,对要求实时高速的情况下可以使用这种方法,不过我更倾向于ODS,对业务数据自动抽取汇总,大大提高数据统计速度.
3.jsp页面向后台传参数遇见& 参数会被截断 解决方法:
(1)如果用js进行页面跳转的话,用encodeURIComponent处理下含有特殊字符的参数值就可以
window.location.href = "/portal/business/search.do?gosearch="+ encodeURIComponent(gosearch)+"&&categoryIdHeader="+categoryId+"&¤tPage=" + pageNum;
然后在后台java代码里面 gosearchStr = new String(gosearch.getBytes("iso-8859-1"),"UTF-8"); 即可完整获取传参内容
(2)如果必须用<a href="">进行提交的话:
实现方法如下:jsp页面内 <% String gosearch =(String)request.getAttribute("transGs"); %>获取到传值
然后在a标签里面如下写
<a href="/portal/business-lucene-cid<s:property value="categoryIdHeader"/>-search-<%=java.net.URLEncoder.encode(gosearch,"utf-8") %>-pnum<s:property value="currentPage-1"/>.htm">
如果要完整显示参数内容 :<s:property value="gosearch"/>
此jsp页面对应的java代码为(其中gosearch已经通过struts的get set 获取到)
request.setAttribute("transGs", gosearch.replaceAll("\ ", "%20").replaceAll("\&", "%26").replaceAll("\#","%23").replaceAll("\/","%2F").replaceAll("\\","%5C"));
gosearchStr = java.net.URLDecoder.decode(gosearch, "utf-8"); gosearchStr = new String(gosearchStr.getBytes("iso-8859-1"));