每日记载内容总结16

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+"&&currentPage=" + 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"));
posted @ 2013-07-14 18:49  CalronLoveRonnie  阅读(309)  评论(0编辑  收藏  举报
AmazingCounters.com