首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

此前的笔记1

2013-10-10 
以前的笔记1-----------------------------------------当修改了/etc/profile文件,想让它立刻生效,而不用

以前的笔记1

-----------------------------------------

当修改了/etc/profile文件,想让它立刻生效,而不用重新登录;这时就可以用source命令,用法: source /etc/profile

-----------------------------------------

OGNL表达式语言

?

由于ValueStack(值栈)是Struts 2中OGNL的根对象,如果用户需要访问值栈中的对象,则可以直接通过下面的代码访问ValueStack(值栈)中的属性:

${foo} //获得值栈中的foo属性

?

如果访问其他Context中的对象,由于不是根对象,在访问时,需要加#前缀。

application对象:用于访问ServletContext,例如#application.userName或者#application['userName'],相当于调用Servlet的getAttribute("username")。

?

session对象:用来访问HttpSession,例如#session.userName或者#session['userName'],相当于调用session.getAttribute("userName")。

?

request对象:用来访问HttpServletRequest属性(attribute)的Map,例如#request.userName或者#request['userName'],相当于调用request.getAttribute("userName")。

?

parameters对象:用于访问HTTP的请求参数,例如#parameters.userName或者#parameters['userName'],相当于调用request.getParameter("username")。

?

attr对象:用于按page->request->session->application顺序访问其属性

----------------------------------------------------------------

在用Hiberante时,

?

当一个model中使用联合主键,而联合主键中有其中一项还关联到另一张表,

?

这时用key-many-to-one,

?

?

?

但是,有时数据中,在做many-to-one时,找不到one的那一端,严格意义上讲,这种属于垃圾数据,

?

但是在实际应用中,又不可以删除。

?

?

?

在做many-to-one时,可以在配置文件中配置not-found="ignore",

?

但是key-many-to-one,不支持此属性,

?

?

?

于是,将key-many-to-one变通配置成了many-to-one,再重新配一遍该字段做联合主键,

?

-----------------------------------------------------

oracle中rank() over与row_number()的区别

?

PARTITION BY testid ORDER BY creat_time asc根据列testid分组,按照creat_time降序排列。

?

rank() OVER对有相同的值,标记相同的值。row_number() 则不会。

故如果要进行排重操作,使用row_number() 将不会有重复记录的产生。

?

eg:

?

-------rank() over-------------

select tmp.*

? ? ? ?from (select s.YTNEWSID,s.TITLE,s.TITLE_IMG,s.CHANNEL_ID,

? ? ? ? ? ? ? ? ? ? ? ? ? rank() over(partition by s.CHANNEL_ID order by release_date desc) px

? ? ? ? ? ? ? ? ? ? ? ? ? from YT_NEWS s

? ? ? ? ? ? ? ? ? ? ? ? ? where s.status=1

? ? ? ? ? ? ? ? ? ? ? ? ? ) tmp

? ? ? ? ? ? ? ? ?where px <= 5

?

------row_number() over()-------

select *

? from (select ?s.YTNEWSID,s.TITLE,s.TITLE_IMG,s.CHANNEL_ID,

? ? ? ? ? ? ? ?(Row_number()

? ? ? ? ? ? ? ? over(partition by channel_id order by release_date desc)) rn

? ? ? ? ? from news s)

?where rn <= 5;

?

-----------------------------------------------------------

保存退出文件 就是 :wq ?不保存退出 :q ? 不保存强制退出 :q!

------------------------------------------------------------

oracle数据库对prodece,function,package等加密:(加密后记得保存好源代码,不然就再也找不回来了)

?

cmd,执行如下命令:

?

wrap iname=d:/test.sql oname=d:/text.pld

?

注:第二个参数oname可以不用,则默认输出到相同目录下面同名的yipld结尾的文件,然后@倒入数据库,ok。

---------------------------------------------------------------

org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'shopcode' in 'class java.lang.String'

?

使用mybatis拼接动态sql语句的时候产生的异常,异常原因是接口中提供的方法,参数不是封装的对象,而是基础类型,比如String ,int等,

在这种情况下为了避免错误,需要在实体映射文件中把对应的查询参数名改为value,demo如下:

?

List<YtPartershop> get4ProductsByShopcode(String shopcode);

?

?

<select id="getModel" ?resultMap="PartershopResultMap" parameterType="java.lang.String">

select s.*,c.shopcontent,t.templateurl from shop s?

<if test="null != value and ''!= value"> -----把shopcode替换为value

where s.shopcode=#{value}-----把#{shopcode}替换为#{value}

</if>

</select>

?

另一种方法就是给实体对象中添加对应的属性名称。

---------------------------------------------------------------

HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。

?

普通报头中的Cache-Control用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。

请求时的缓存指令包括:no-cache(用于指示请示或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;

响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。

例:为了指示IE浏览器(客户端)不要缓存页面,服务器端的jsp程序可以编写如下:

response.setHeader(“Cache-Control”, “no-cache”);

//response.setHeader(“Pragma”, “no-cache”);作用相当于上行代码,通常两者合用

?

Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires实体报头域指定页面过期时间。例:Expires:Thu,15 Sep 2006 16:23:12 GMT

HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。如:为了让浏览器不要缓存页面,也可以利用Expires实体报关域,设置为0,jsp程序如下:

response.setDateHeader(“Expires”, “0”);

?

//JSP禁止缓存代码

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setDateHeader("Expires", 0);

response.flushBuffer();

?

另,网上各种禁客户端缓存总结如下:

?

HTM网页?

??

? <META ? HTTP-EQUIV="pragma" ? CONTENT="no-cache"> ??

? <META ? HTTP-EQUIV="Cache-Control" ? CONTENT="no-cache, ? must-revalidate"> ??

? <META ? HTTP-EQUIV="expires" ? CONTENT="Wed, ? 26 ? Feb ? 1997 ? 08:21:57 ? GMT"> ??

?

ASP网页 ??

? <% ??

? ? ? Response.Expires ? = ? -1 ??

? ? ? Response.ExpiresAbsolute ? = ? Now() ? - ? 1 ??

? ? ? Response.cachecontrol ? = ? "no-cache" ??

? %> ??

?

PHP网页 ??

? header("Expires: ? Mon, ? 26 ? Jul ? 1997 ? 05:00:00 ? GMT"); ??

? header("Cache-Control: ? no-cache, ? must-revalidate"); ??

? header("Pragma: ? no-cache"); ??

?

JSP ??

? ? response.setHeader("Pragma","No-Cache"); ??

? ? response.setHeader("Cache-Control","No-Cache"); ??

? ? response.setDateHeader("Expires", ? 0);?

? ? ? ? ? ??

C#中禁止cache的方法!

? ?

? Response.Buffer=true; ??

? Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1); ??

? Response.Expires=0; ??

? Response.CacheControl="no-cache";?

? ??

在<%@ ? Page ? language="c#" ? Codebehind="A.aspx.cs" ? AutoEventWireup="false" ? Inherits="*.*" ? %>下面加上以下的代码: ??

? <%@ ? OutPutCache ? Location="None"%> ? ?能每次页面Load时都可以清空缓存

?

?

-----------------------------------------------------------

网站项目安全退出后,由于使用了springmvc中拦截器的配置,基本上不会出现在地址栏中输入链接直接跳转到页面的bug,

但是有一个页面例外,就是left.do,退出后第一次输入该地址仍然会跳转到页面,可再次刷新,就会跳转到登陆页,

为什么每次都会有这么一次缓存呢,查看对应的jsp页面,发现里面把菜单缓存到了session里面,但是action里面缓存已经清空了啊,怎么还会出现这种状况,难道没有清除掉,下断点,单步跟踪,没问题,session是空的,那问题出在哪了?该不会是客户端缓存了吧,于是在left.jsp页面加入如下三句话,

<meta http-equiv="Pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">//表示不缓存,立即过期

重复之前的操作,恩,效果不错,再也不会缓存一次了。over!

?

注意:

HTTP/1.0有一个功能比较弱的缓存控制机制:Pragma,使用HTTP/1.0的缓存将忽略Expires和Cache-Control头

?

Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的

效果。但是如果同时存在,则被Cache-Control的max-age覆盖。

-----------------------------------------------------

热点排行