Commit bb695cef by 罗胜

高危漏洞修复

parent aa4d3061
# 通过ID直接查询(基本禁止使用,只有与用户相关及业务相关接口禁止直接使用ID查询)
http://localhost:8080/ejweb-api-1.0/api/user/findById?content={"user_id":2}&sign=asas
# 通过CODE查询(常用)
http://localhost:8080/ejweb-api-1.0/api/user/findByCode?content={"usercode":"aab"}&sign=asas
在部署到测试TOMCAT时候需要设置图片的虚拟路径
<Context docBase="${file.upload.dir}" path="/static" reloadable="true"/>
例如:
<Context docBase="D:\\WorkSapce\\JEESpace\\uploads\\" path="/static" reloadable="true"/>
package com.ejweb.core.base;
import java.util.List;
import com.ejweb.core.conf.GConstants;
/**
* @team IT Team
* @author renmb
* @version 1.0
* @time 2016-03-10
*
* @param <T>
*/
public final class PageEntity<T> extends BaseEntity{
/**
*
*/
private static final long serialVersionUID = 1L;
// @Min(value=1, message="page_no必须大于等于1")
// @JSONField(name="page_no")
private int pageNo=1;//第几页
// @Min(value=1, message="page_size必须大于等于1")
// @JSONField(name="page_size")
private int pageSize=GConstants.PAGE_SIZE;//每页条数
// @JSONField(name="total_page")
private int totalPage;//总页数
private long count;//总条数
private int first=1;// 首页索引
private int last;// 尾页索引
private int prev;// 上一页索引
private int next;// 下一页索引
private String funcName = "page"; // 设置点击页码调用的js函数名称,默认为page,在一页有多个分页对象时使用。
private int length = 8;// 显示页面长度
private String funcParam = ""; // 函数的附加参数,第三个参数值。
private int slider = 1;// 前后显示页面长度
private List<T> list;
public PageEntity() {
super();
}
public PageEntity(int pageNo, int pageSize) {
super();
this.pageNo = pageNo;
this.pageSize = pageSize;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.last = totalPage;
this.totalPage = totalPage;
}
public long getCount() {
return count;
}
public void setCount(long count) {
this.count = count;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
if (pageNo == first) {// 如果是首页
sb.append("<li class=\"disabled\"><a href=\"javascript:\">&#171; 上一页</a></li>\n");
} else {
sb.append("<li><a href=\"javascript:\" onclick=\""+funcName+"("+prev+","+pageSize+",'"+funcParam+"');\">&#171; 上一页</a></li>\n");
}
int begin = pageNo - (length / 2);
if (begin < first) {
begin = first;
}
int end = begin + length - 1;
if (end >= last) {
end = last;
begin = end - length + 1;
if (begin < first) {
begin = first;
}
}
if (begin > first) {
int i = 0;
for (i = first; i < first + slider && i < begin; i++) {
sb.append("<li><a href=\"javascript:\" onclick=\""+funcName+"("+i+","+pageSize+",'"+funcParam+"');\">"
+ (i + 1 - first) + "</a></li>\n");
}
if (i < begin) {
sb.append("<li class=\"disabled\"><a href=\"javascript:\">...</a></li>\n");
}
}
for (int i = begin; i <= end; i++) {
if (i == pageNo) {
sb.append("<li class=\"active\"><a href=\"javascript:\">" + (i + 1 - first)
+ "</a></li>\n");
} else {
sb.append("<li><a href=\"javascript:\" onclick=\""+funcName+"("+i+","+pageSize+",'"+funcParam+"');\">"
+ (i + 1 - first) + "</a></li>\n");
}
}
if (last - end > slider) {
sb.append("<li class=\"disabled\"><a href=\"javascript:\">...</a></li>\n");
end = last - slider;
}
for (int i = end + 1; i <= last; i++) {
sb.append("<li><a href=\"javascript:\" onclick=\""+funcName+"("+i+","+pageSize+",'"+funcParam+"');\">"
+ (i + 1 - first) + "</a></li>\n");
}
if (pageNo == last) {
sb.append("<li class=\"disabled\"><a href=\"javascript:\">下一页 &#187;</a></li>\n");
} else {
sb.append("<li><a href=\"javascript:\" onclick=\""+funcName+"("+next+","+pageSize+",'"+funcParam+"');\">"
+ "下一页 &#187;</a></li>\n");
}// 共 61 条记录,每页 20 条
// sb.append("<li class=\"disabled controls\"><a href=\"javascript:\">当前第 ");
// sb.append("<input type=\"text\" value=\""+pageNo+"\" onkeypress=\"var e=window.event||this;var c=e.keyCode||e.which;if(c==13)");
// sb.append(funcName+"(this.value,"+pageSize+",'"+funcParam+"');\" onclick=\"this.select();\"/> / ");
// sb.append("<input type=\"text\" value=\""+pageSize+"\" onkeypress=\"var e=window.event||this;var c=e.keyCode||e.which;if(c==13)");
// sb.append(funcName+"("+pageNo+",this.value,'"+funcParam+"');\" onclick=\"this.select();\"/> 条,");
// sb.append("共 " + count + " 条"+(message!=null?message:"")+"</a></li>\n");
sb.append("<li class=\"disabled controls\"><a href=\"javascript:\">共 "+count+" 条记录,每页 "+pageSize+" 条</a></li>");
sb.insert(0,"<ul>\n").append("</ul>\n");
sb.append("<div style=\"clear:both;\"></div>");
// sb.insert(0,"<div class=\"page\">\n").append("</div>\n");
return sb.toString();
}
}
@time 2016-03-11 @renmb
=================================================
各位童鞋:
为了规范化开发流程和规范开发代码,现给出基本要求如下,
请各位童鞋按照以下规则来书写,如有好的习惯可以商讨添加,
如以下规则有不好的地方请指出,如果合理就进行修改。
基本规范
特注: 所有保存到数据库的实体类均要继承BaseEntity或者BaseBean,
因为Mybatis对应的mapper文件里面使用${dbprefix}数据库表前缀,
数据库表前缀在resources/jdbc.properties里面,db.table.prefix,例如: db.table.prefix=bbc_
1、包名小写
2、所有的DAO均以Dao结尾
3、所有的Entity均以Entity结尾
4、所有的Service均以Service结尾
5、所有的Controller均以Controller结尾
6、尽量使用对象实体,不要使用多参数,即将多参数转化为对象
7、所有的查询均也find、select或者get开头
8、所有的更新均也update开头
9、所有的删除均也delete开头
10、所有的插入操作均也add、create或者insert开头
11、尽量使用BaseDao的方法,即尽量继承BaseDao
12、单词均使全拼,不得使用缩写,除非通用的简写,否则禁止使用简写
13、DAO对应的映射文件名称和DAO名称一致,路径为
14、所有的缩写名称都记录到SHORTNAME.TXT文件里面(字符串未超过20个字且不是通用缩写单词则禁止缩写)
15、尽量写注释,特别是逻辑判断(如if,for)的地方和返回码,一定要在代码处加上注释。
16、代码注释规范
16.1 单行注释使用// 注释,即双斜杠后面有一个空格,空格后面才是注释
16.2 方法注释:简要说明+作者+时间
16.3 类注释(必须加):简要说明+作者+时间
17、SQL语句关键词一定要使用大写,查询字段及表名称小写。
19、SQL语句一定要格式化,便于阅读和修改
20、接口采用JSON格式,字段有content和sign组成
21、接口的所有字段使用下划线"_"链接单词,不允许驼峰格式
22、接口均有公共字段(公共字段待定app_code必须包括)
23、所有的请求实体都叫什么bean放到模块的bean目录下面,命名规则:某块名称+方法名称(首字母大写)+Bean,例如:UserFindByCodeBean
(注:方法名称如果后面是复数的改为单数,例如:cities改为city,RegionCityBean)
25、所有的请求bean都继承BaseBean
26、所有的接口都也API开头,规则:/api/+模块名称+方法名称,例如:/api/user/findByCode
27、所有的WEB页面请求都以WEB开头,规则:/web/+模块名称+方法名称例如:/web/user/index
28、所有的接口控制器均以Controller结尾(为了避免和WEB请求同名),例如:UserController
29、所有的WEB网页请求均以Action结尾(为了避免和API请求同名),例如:UserAction
30、接口命名尽量使用以下简写(如果一个控制层有多个查询请使用方法名称)
添加:
add(优先使用)
create
修改:
edit(优先使用)
modify
update
获取列表:
list
简单获取(即筛选条件):
get(优先使用)
查询:
find
query
获取详情:
detail
删除:
delete(优先使用)
cancel
主要说明:
1、临时文件地址为:file.upload.dir下的tmp文件夹,即需要在根目录下新建tmp文件夹
2、及时聊天使用环信即时通讯云,http://www.easemob.com/
3、短信推送使用信易通短信业务http://www.106vxt.com/
4、resources/acp_sdk.properties 银联配置文件
5、resources/jdbc.properties 数据库连接配置文件
6、resources/ejweb.properties 基本配置文件
未完成MAVEN配置
1、添加/ejweb-api-1.0/WebContent/WEB-INF/lib/commons-codec-1.9.jar
2、添加/ejweb-api-1.0/WebContent/WEB-INF/lib/bcprov-jdk16-1.45.jar
2、添加/ejweb-api-1.0/WebContent/WEB-INF/lib/UserAgentUtils-1.13.jar
bean 普通的java bean 可以包含业务逻辑代码!
entity 实体bean ,一般是用于ORM 对象关系映射 ,一个实体映射成一张表,一般无业务逻辑代码!
项目基本结构
ejweb
++core
++demo
++++user
++++++api
++++++dao
++++++entity
++++++service
++++++web
++++++util
++++++config
++modules
++++user
++++++api
++++++dao
++++++entity
++++++service
++++++web
++++++util
++++++config
++++++bean
remit remittance 汇款
val value 值
avg average 平均值
http://blog.csdn.net/jiangjunjie_2005/article/details/23130891
序号 描述 缩写词
A Addition Add
Accumulator Acc
Address Addr
Action Act
Active Act
Amplitude Amp
Analog Input AI
Anolog I/O AIO
All All
Alarm Alm
Allocate Alloc
Analog Output AO
Apparent App
Argument Arg
Arrange Arrng
Array Array
Assemble Asm
Attribute Attrib
B Bar Bar
Bit Bit
Block Blk
Buffer Buf
Button Btn
Bypass Bypass
C Calibration Cal
Calculate Calc
Configuration Cfg
Channel Ch
Change Chg
Check Chk
Clock Clk
Clear Clr
Clear Screen Cls
Command Cmd
Compare Cmp
Complete Comp
Count Cnt
Counter Ctr
Column Col
Communication Comm
Connect Con
Construct Cons
Control Ctrl
Context Ctx
Convert Conv
Copy Cp
Current Cur
Cursor Csr
Control Word CW
D Date Date
Day Day
Debounce Debounce
Decrease Dec
Decimal Dec
Decode Decode
Define Def
Degree Deg
Delete Del
Destination Dst
Descriptor Desc
Device Dev
Discrete Input DI
Digit Dig
Discrete I/O DIO
Discrete Output(s) DO
Disable Dis
Display Disp
Discovery Disc
Division Div
Divisor/Division Div
Delay Dly
Day-of-week DOW
Down Down
Dummy Dummy
Dynamic Dyn
E Edge Edge
Effective Eff
Electric Elec
Empty Empty
Enable En
Engine Eng
Enter Enter
Entries Entries
Equivalent Equiv
Error(s) Err
Ethernet Eth
Engineering Units EU
Event(s) Event
Extension Ext
Exit Exit
Exception Exc
Expiration Exp
Exponent Exp
F Field Fld
Flag Flag
Flush Flush
Function(s) Fnct
Format Format
Fraction Fract
Free Free
Frequency Freq
Full Full
G Gain Gain
Get Get
Generate Gen
Group(s) Grp
H Handler Handler
Harmonic Harm
Hexadecimal Hex
High Hi
History Hist
Hit Hit
High Priority Task HPT
Hour(s) Hr
I I.D. Id
Idle Idle
Impulse Imp
Input(s) In
Initialization Init
Initialize Init
Instruction Instr
Interrupt Int
Invert Inv
Interrupt Service Routine ISR
Index Ix
K Key Key
Keyboard Key
L Length Len
Limit Lim
List List
Low Lo
Lower Le
Lowest Lo
Lock Lock
Low Priority Task LTP
M Magnitude Mag
Mantissa Man
Manual Man
Manufacture Mfg
Maximum Max
Mailbox Mbox
Minimum Min
Mode Mode
Month Month
Move Mov
Message Msg
Measure Meas
Mask Msk
Multiplication Mul
Multiplex Mux
Make Mk
N Negative Neg
Number of Num
Nesting Nesting
Neutral Neut
New New
Next Next
O Offset Offset
Old Old
Operation System OS
Optimize Opt
Original Orig
Output Out
Overflow Ovf
P Package Pkg
Parameter Param
Pass Pass
Performance Perf
Period Per
Phase Ph
Port Port
Position Pos
Positive Pos
Power Pwr
Previous Prev
Priority Prio
Printer Prt
process Proc
Product Prod
Protocol Prot
Pointer Ptr
Put Put
Q Queue Q
Quality Qlty
Quarter Quar
R Raw Raw
Reactive React
Recall Rcl
Rectangle Rect
Read Rd
Ready Rdy
Reference Ref
Register Reg
Request Req
Reset Reset
Reserve Resv
Resume Resume
Response Resp
Return Rtn
Reverse Revs
Ring Ring
Row Row
Repeat Rpt
Real-Time RT
Running Running
Receive Rx
S Sample Smp
Scale Scale
Scale Factor SF
Scaling Scaling
Scan Scan
Schedule Sched
Scheduler Sched
Screen Scr
Second(s) Sec
Segment(s) Seg
Select Sel
Semaphore Sem
Sequence Seq
Server Svr
Set Set
Setting Setting
Signal Sig
Size Size
Seven-segments SS
Sourse Src
Start Start
Statistic(s) Stat
Status Stat
Stack Stk
Standard Std
Stop Stop
String Str
Subtraction Sub
Suspend Suspend
Switch Sw
Synchronize Synch
System Syst
T Task Task
Table Tbl
Threshold Th
Tick Tick
Time Time
Timer Tmr
Toggle Tgl
Total Tot
Trigger Trig
Time-stamp TS
Timeout TO
U Unlock Unlock
Up Up
Update Update
Utility Util
V Value Val
Vector Vect
Version Ver
Variable Var
Visible Vis
Voltage Vol
W Watchdog Wdog
Write Wr
Y Year Year
#MySQL Database Config(The All Config Is Must)
db.table.prefix=foc_
jdbc.type=mysql
jdbc.driver.class=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.70.94.153:3306/foc?useUnicode=true&characterEncoding=utf-8
jdbc.username=foc
jdbc.password=1qaz@WSX
#\u521d\u59cb\u5316\u8fde\u63a5
jdbc.initialSize=0
#\u8fde\u63a5\u6c60\u7684\u6700\u5927\u6d3b\u52a8\u4e2a\u6570
jdbc.maxActive=20
#\u6ca1\u6709\u4eba\u7528\u8fde\u63a5\u7684\u65f6\u5019\uff0c\u6700\u5927\u95f2\u7f6e\u7684\u8fde\u63a5\u4e2a\u6570\u3002
jdbc.maxIdle=100
#\u6ca1\u6709\u4eba\u7528\u8fde\u63a5\u7684\u65f6\u5019\uff0c\u6700\u5c0f\u95f2\u7f6e\u7684\u8fde\u63a5\u4e2a\u6570\u3002
jdbc.minIdle=0
#\u8d85\u65f6\u7b49\u5f85\u65f6\u95f4\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d
jdbc.maxWait=10000
#\u662f\u5426\u81ea\u52a8\u56de\u6536\u8d85\u65f6\u8fde\u63a5
jdbc.removeAbandoned=true
#\u8bbe\u7f6e\u88ab\u9057\u5f03\u7684\u8fde\u63a5\u7684\u8d85\u65f6\u7684\u65f6\u95f4\uff08\u4ee5\u79d2\u6570\u4e3a\u5355\u4f4d\uff09\uff0c\u5373\u5f53\u4e00\u4e2a\u8fde\u63a5\u88ab\u9057\u5f03\u7684\u65f6\u95f4\u8d85\u8fc7\u8bbe\u7f6e\u7684\u65f6\u95f4\uff0c\u5219\u5b83\u4f1a\u81ea\u52a8\u8f6c\u6362\u6210\u53ef\u5229\u7528\u7684\u8fde\u63a5\u3002\u9ed8\u8ba4\u7684\u8d85\u65f6\u65f6\u95f4\u662f300\u79d2\u3002
jdbc.removeAbandonedTimeout=60
#\u662f\u5426\u5728\u81ea\u52a8\u56de\u6536\u8d85\u65f6\u8fde\u63a5\u7684\u65f6\u5019\u6253\u5370\u8fde\u63a5\u7684\u8d85\u65f6\u9519\u8bef
jdbc.logAbandoned=true
#\u7ed9\u51fa\u4e00\u6761\u7b80\u5355\u7684sql\u8bed\u53e5\u8fdb\u884c\u9a8c\u8bc1
jdbc.validationQuery=SELECT 1 FROM DUAL
#\u5728\u53d6\u51fa\u8fde\u63a5\u65f6\u8fdb\u884c\u6709\u6548\u9a8c\u8bc1
jdbc.testOnBorrow=true
package com.ejweb.modules.module.api;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ejweb.core.api.RequestBean;
import com.ejweb.core.api.ResponseBean;
import com.ejweb.core.conf.GConstants;
@Controller
@RequestMapping("/api/module")
public class ModuleController {
@ResponseBody
@RequestMapping("/index")
public ResponseBean index(HttpServletRequest request,
@Valid RequestBean requestBean, BindingResult errors){
ResponseBean responseBean = new ResponseBean();
String message = requestBean.getValidateMessage(errors);
if(message == null){// 验证通过
}
responseBean.setStatus(GConstants.STATUS_CODE_4001);
responseBean.setMessage(message);
return responseBean;
}
}
Druid连接池
++ /dev/null
Druid连接池
http://blog.csdn.net/chenleixing/article/details/45165753
Druid连接池及监控在Spring配置如下:
[html] view plaincopy
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc_url}" />
<property name="username" value="${jdbc_user}" />
<property name="password" value="${jdbc_password}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="20" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
<!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->
<property name="filters" value="stat" />
</bean>
只要配置initialSize,maxActive就可以,目前这样的配置已经能够使用连接池,加入其实配置性能不好,官方文档里也不没加其它属性,连接池jar包免费下载。
然后是监控的配置:
web.xml
[html] view plaincopy
<span style="white-space:pre"> </span><filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter可以监控webURl 访问
[html] view plaincopy
<span style="white-space:pre"> </span><servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
该配置可以访问监控界面,配置好后,访问http://ip地址:端口号/项目名/druid/index.html即可监控数据库访问性能。
Druid连接池-阿里巴巴开源JDBC组件
例如:
http://127.0.0.1:8080/ejweb-api-1.0/druid/index.html
\ No newline at end of file
++ /dev/null
EL表达<%@page isELIgnored="false"%>问题
http://wushuicheng.iteye.com/blog/875753
博客分类: JSP/EL/JSTL
JavaEEWebJSPJavaXML
最近重构一个之前自己所做的项目,把原来的EJB+Struts2改回用Spring2.5+Struts2+Hibernate3.3来做,之前用Jboss发布的,现在改用Tomcat5.5发布,谁知原来正确的<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>时间格式化在Tomcat5.5下不管用,提示:Unable to convert string "${deployTime}" to class "java.util.Date" for attribute "value": Property Editor not registered with the PropertyEditorManager
上网查找资料后得知:主要原因是EL表达式无法被解析到.
其实从后台取值并传值到前台来根本就没有错,而前台JSP页面EL表达式无效,解析不到EL表达式,引起的原因是web.xml中:
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
注意里面的web-app_2_5.xsd,就是这个引起的,在web-app_2_4.xsd中就不会出现这种问题(这个版本的isELIgnored默认设置为false)。
在不改变web.xml2.5版本的情况下解决办法是:在jsp页面头加:<%@page isELIgnored="false"%> 问题得以解决。
还有就是:<%@page isELIgnored="false"%>的优先级要高于web.xml中的设置,所以在JSP中的设置会盖掉web.xml中的设置.
SpringMVC整合fastjson-1.1.41
++ /dev/null
SpringMVC整合fastjson-1.1.41
http://www.cnblogs.com/exmyth/p/4563673.html
以前用fastjson也只是硬编码,就好像这篇博文写的http://blog.csdn.net/jadyer/article/details/24395015
昨天心血来潮突然想和SpringMVC整合,然后利用@ResponseBody注解的方式序列化输出json字符串
下面是研究成果
首先是applicationContext.xml中的相关配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:component-scan base-package="com.jadyer"/>
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
<property name="features">
<array>
<value>WriteMapNullValue</value>
<value>WriteNullStringAsEmpty</value>
</array>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<value>WriteMapNullValue</value>
<value>QuoteFieldNames</value>
<!-- fastjson-1.1.41与SpringMVC整合 -->
<!--
1)若按照jackson和SpringMVC的整合方式,应按照下面的写法,但测试发现这样会报告"HTTP Status 406"
The resource identified by this request is only capable of generating responses
with characteristics not acceptable according to the request "accept" headers.
2)测试通过的整合方式为上面那样在mvc:annotation-driven里面进行注册
3)supportedMediaTypes增加[text/html;charset=UTF-8]值,是为了兼容IE6
否则[application/json]值在IE6中会导致弹出对话框询问是否保存文件,而firefox等高级浏览器会正常打印json字符串
4)若像下面这样给supportedMediaTypes属性赋两个值[text/html;charset=UTF-8]和[application/json],则[application/json]是无效的
因为此时应答给浏览器(或者说请求方)的Content-Type头信息都是[text/html;charset=UTF-8],所以给它一个值就行了
如果给supportedMediaTypes的值为[application/json],则应答给浏览器的Content-Type头信息就是[application/json;charset=UTF-8]
5)关于features属性,不是serializerFeature,而是features,详见FastJsonHttpMessageConverter.java
它是用来控制json序列化输出时的一些额外属性,比如说该字段是否输出、输出时key使用单引号还是双引号、key不使用任何引号等等
QuoteFieldNames----------输出key时是否使用双引号,默认为true
WriteMapNullValue--------是否输出值为null的字段,默认为false
WriteNullNumberAsZero----数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty-----List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty---字符类型字段如果为null,输出为"",而非null
WriteNullBooleanAsFalse--Boolean字段如果为null,输出为false,而非null
6)通常在网上搜到的fastjson和springMVC整合的例子中都像下面注释的代码那样给了两个属性WriteMapNullValue和QuoteFieldNames
这就表示为json解析器设置QuoteFieldNames和WriteMapNullValue的值为true,即输出时key使用双引号,同时也输出值为null的字段
7)输出时某字段为String类型,且值为null,此时若需要其输出,且输出值为空字符串,则需同时赋值WriteMapNullValue和WriteNullStringAsEmpty
经测试,若只赋值WriteNullStringAsEmpty,则不会输出该字段..加上WriteMapNullValue属性后,便输出了,且输出值不是null,而是预期的空字符串
-->
<!--
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json</value>
</list>
</property>
<property name="serializerFeature">
<array>
<value>QuoteFieldNames</value>
<value>WriteMapNullValue</value>
</array>
</property>
</bean>
</list>
</property>
</bean>
-->
<!--
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
</bean>
</list>
</property>
</bean>
-->
</beans>
接着是SpringMVC中的Controller
package com.jadyer.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
import com.jadyer.model.LoginResult;
@Controller
@RequestMapping(value="/account")
public class AccountController {
@Resource
private AccountService accountService;
// @RequestMapping(value="/login")
// public String login(String username, String password, HttpServletResponse response) throws IOException{
// response.setContentType("text/plain; charset=UTF-8");
// response.setHeader("Cache-Control", "no-cache");
// response.setHeader("Pragma", "no-cache");
// response.setDateHeader("Expires", 0);
// PrintWriter out = response.getWriter();
// out.write(JSON.toJSONString(accountService.login(username, password)));
// out.flush();
// out.close();
// return null;
// }
@ResponseBody
@RequestMapping(value="/login")
public LoginResult login(String username, String password){
LoginResult result = new LoginResult();
//验签过程暂略....
result = accountService.login(username, password);
return result;
}
}
最后是login()方法的应答实体类LoginResult.java
package com.jadyer.model;
public class LoginResult {
private String respCode; //应答码
private String respDesc; //应答描述
private String userId; //用户编号
private String username; //用户名
private String mobileNo; //用户手机号
private String integral; //用户拥有的积分
/*-- 对应的setter和getter略 --*/
}
Spring常用的Listener
++ /dev/null
Spring常用的Listener
一.Spring中的WebAppRootListener
这个listner的作用就是监听web.xml中的配置para-name为webAppRootKey的值,比如我的web应用为tsts,那么我配置
这样一个
1.<context-param>
2. <param-name>webAppRootKey</param-name>
3. <param-value>tsts.root</param-value>
4. </context-param>
5.,然后再配置这样一个监听器:
1.<listener>
2. <listener-class>
3. org.springframework.web.util.WebAppRootListener
4. </listener-class>
5. </listener>
。这个监听器就会在web上下文初始化的时候,调用webUtil的对应方法,首先获取到param-name对应的param-value ,然后,根据传递进去的ServletContext对象得到web的物理路径:String root = servletContext.getRealPath("/");
接着把这个param-value作为key,root作为value放到system中System.setProperty(key, root);
然后再web中可以用 System.get.....就可以得到web的跟目录的物理路径了。
之前我的做法是用一个filter,在filter的init中调用String root = servletContext.getRealPath("/");,然后再去设置对应一个常量类文件的属性。做法差不多,但是spring的做法更可以借鉴!
------------------------------------------
二.spring中的Log4jConfigListener
使用spring中的Log4jConfigListener有如如下好处:
1. 动态的改变记录级别和策略,不需要重启Web应用,如《Effective Enterprise Java》所说。
2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。
因为 系统把web目录的路径压入一个叫webapp.root的系统变量。这样写log文件路径时不用写绝对路径了.
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log
3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path。
4.log4jRefreshInterval为60000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;
在web.xml 添加
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
-----------------------------------
三.ContextLoaderListener
* Bootstrap listener to start up Spring's root WebApplicationContext.
* Simply delegates to ContextLoader.
* <p>This listener should be registered after Log4jConfigListener in web.xml,
* if the latter is used.
与BeanFactory通常以编程的方式被创建不同的是,ApplicationContext能以声明的方式创建,如使用ContextLoader。当然你也可以使用ApplicationContext的实现之一来以编程的方式创建ApplicationContext实例。首先,让我们先分析ContextLoader接口及其实现。
ContextLoader机制有两种方式,ContextLoaderListener 和ContextLoaderServlet,他们功能相同但是listener不能在Servlet2.3容器下使用。Servlet2.4规范中servlet context listeners需要在web应用启动并能处理初始请求时立即运行。(servlet context listener关闭的时候也是相同的)。servlet context listener是初始化SpringApplicationContext理想的方式。你可能愿意选择ContextLoaderListener,虽然是一样的,但决定权在于你。你可以查看ContextLoaderServlet的Javadoc来获得更详细的信息。
可以象下面所示例的一样使用ContextLoaderListener注册一个ApplicationContext
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- or use the ContextLoaderServlet instead of the above listener
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
-->
监听器首先检查contextConfigLocation参数,如果它不存在,它将使用/WEB-INF/applicationContext.xml作为默认值。如果已存在,它将使用分隔符(逗号、冒号或空格)将字符串分解成应用上下文件位置路径。可以支持ant-风格的路径模式,如/WEB-INF/*Context.xml(WEB-INF文件夹下所有以"Context.xml"结尾的文件)。或者/WEB-INF/**/*Context.xml(WEB-INF文件夹及子文件夹下的以"Context.xml"结尾的文件)。
ContextLoaderServlet同ContextLoaderListener一样使用'contextConfigLocation'参数。
-----------------------------------
四.ServletContextListener
------------------------------------
五.IntrospectorCleanupListener
org.springframework.web.util.IntrospectorCleanupListener监听器主要负责处理由JavaBean Introspector使用而引起的缓冲泄露,
它是一个在web应用关闭时清除JavaBean Introspector的监听器,在web.xml中注册这个listener可以保证在web应用关闭的时候释放掉与这个web应用相关的class loader和由它管理的类.
如果你使用了JavaBeans Introspector来分析应用中的类.Introspector缓冲中会保留这些类的引用.结果在你的应用关闭的时候,这些类以及web应用相关的class loader没有被垃圾回收.
不幸的是,清除Introsepctor的唯一方法是刷新整个缓冲,这是因为我们没有办法判断哪些是属于你的应用的引用,所以删除被缓冲的Introspection会导致把这台电脑上的所有应用的introspection都删掉.
spring托管的bean不需要使用这个监听器.因为spring它自己的introspection所使用的缓冲在分析完一个类之后会被马上从javabeans introspector缓冲中清除掉.
应用程序中的类从来不直接使用JavaBeans Introspector,所以他们一般不会导致内部查看资源泄露,但是一些类库和框架往往会产生这个问题.如:Struts和Quartz.单个的内部查看泄露会导致整个的web应用的类加载器不能进行垃圾回收,在web应用关闭之后,你会看到此应用的所在静态资源如单例,这个错误不是由该类自身引起的.
\ No newline at end of file
<!-- spring-servlet.xml -->
++ /dev/null
<!-- spring-servlet.xml -->
http://blog.csdn.net/yakson/article/details/44832967
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<description>Spring MVC Configuration</description>
<!-- 对静态资源文件的访问,交给default servlet handler处理 -->
<mvc:default-servlet-handler/>
<!-- 启用spring mvc 注解 -->
<context:annotation-config />
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven />
<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="com.ansitech.web"></context:component-scan>
<!-- 完成请求和注解POJO的映射 -->
<bean class=
"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<!-- JSP视图文件解析配置 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
<property name="viewNames" value="jsp/*"/>
<property name="order" value="1"/>
</bean>
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
<property name="order" value="2"/>
</bean>
<!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
</beans>
\ No newline at end of file
<!-- springmvc-mybatis.xml -->
++ /dev/null
<!-- springmvc-mybatis.xml -->
http://blog.csdn.net/yakson/article/details/44832967
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.1.xsd">
<!-- 数据源定义-->
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource">
<property name="driverClass" value="jdbc:mysql://127.0.0.1:3306/web" />
<property name="jdbcUrl" value="root" />
<property name="username" value="123456" />
<property name="password" value="com.mysql.jdbc.Driver" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:dbmap/*Mapper.xml" />
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="defaultLobHandler"
class="org.springframework.jdbc.support.lob.DefaultLobHandler"
lazy-init="true"/>
<!-- 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ansitech.web.orm.mapper" />
</bean>
</beans>
\ No newline at end of file
<!-- web.xml -->
++ /dev/null
<!-- web.xml -->
http://blog.csdn.net/yakson/article/details/44832967
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- 程序Session配置 -->
<session-config>
<!-- Session过期时间(单位:分) -->
<session-timeout>30</session-timeout>
</session-config>
<!-- 激活Tomcat的defaultServlet来处理静态文件 -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<!-- Spring 上下文参数 加载Spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:xmlconfig/springmvc-mybatis.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- spring mvc 拦截器配置 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/xmlconfig/springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 字符编码配置 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 欢迎页 -->
<welcome-file-list>
<welcome-file>/index.html</welcome-file>
</welcome-file-list>
</web-app>
\ No newline at end of file
常用外贸术语简写
++ /dev/null
常用外贸术语简写
http://bbs.fobshanghai.com/thread-5984368-1-1.html
A.A.R = against all risks 担保全险,一切险
A.B.No. = Accepted Bill Number 进口到单编号
A/C = Account 账号
AC. = Acceptance 承兑
acc = acceptance,accepted 承兑,承诺
a/c.A/C = account 帐,帐户
ackmt = acknowledgement 承认,收条
a/d = after date 出票后限期付款(票据)
ad.advt. = advertisement 广告
adv. = advice 通知(书)
ad val. = Ad valorem(according to value) 从价税
A.F.B. = Air Freight Bill 航空提单
Agt. = Agent 代理商
AI = first class 一级
AM = Amendment 修改书
A.M.T. = Air Mail Transfer 信汇
Amt. = Amount 额,金额
A.N. = arrival notice 到货通知
A.P. = account payable 应付账款
A/P = Authority to Purchase 委托购买
a.p. = additional premiun 附加保险费
A.R. = Account Receivable 应收款
Art. = Article 条款,项
A/S = account sales 销货清单
a/s = after sight 见票后限期付款
asstd. = Assorted 各色俱备的
att,.attn. = attention 注意
av.,a/v = average 平均,海损
a/v = a vista (at sight) 见票即付
(D)
DD/A =documents against acceptance, 承兑后交付单
= documents for acceptance,= documents attached, 备承兑单据
= deposit account 存款账号
d/a = days after acceptance 承兑后……日付款
D.A. = Debit advice 付款报单
D/D,D. = Demand draft,documentary draft 即期汇票,跟单汇票
d/d = day’s date (days after date) 出票后……日付款
d.f.,d.fet. = dead freight 空载运费(船)
Disc. = Discount 贴现;折扣
DLT = Day Letter Telegram 书信电
D/N = debit note 借方通知
D/O = delivery order 卸货通知书
D/P = documents against payment 付款后交付单据
Dr. = debit debter 借方,债务人
d/s. = days’ sight 见票后……日付款
DV = Dividends 股利
(E)
Eea. = each 每,各
e.e.E.E. = error excepted 错误除外
E/B = Export-Import Bank 进出口银行(美国)
enc.,encl.= enclosure 附件
E.& O.E. = errors and omissions excepted 错误或遗漏不在此限
ETA = estimated time of arrival 预定到达日期
ex. = example,executive,exchange,extract 例子,执行官,外汇交换,摘要
Exp. = Export 出口
(F)
f.a.q.=fair average quality 良好平均品质
f.a.s.=free alongside ship 船边交货价
F.B.E.=foreign bill of exchange 国外汇票
f.c.l.=full container load 整个集装箱装满
f.d.free discharge 卸货船方不负责
F.& D.=Freight and Demurrage 运费及延装费
f.i.=free in 装货船方步负责
f.i.o.=free in and out 装卸货船方均不负责
f.i.o.=free in out stowed and trimming 装卸堆储平仓船方均不负责
f.o.=free out 卸货船方不负责
f.o.,f/o=firm offer 规定时限的报价
f.o.b.=free on board 船上交货价
f.o.c.=free of charge免费
F.O.I.=free of Interest 免息
f.o.r.=free on rail,free on road 火车上交货价
f.o.s.=free on steamer 轮船上交货价
f.o.t.=free on truck 卡车上交货价
f.p.a.=free of particular average 单独海损不保
fr.f=franc,from,free 法郎,从,自由
FX=Foreign Exchange 外汇
(G)
Gg=good,goods,gramme 佳,货物,一克
G/A=general average 共同海损
GATT=General Agreement on Tariffs and Trade 关税贸易总协定
gm.=gramme 一克
g.m.b.=good merchantable brand品质良好适合买卖之货品
g.m.q.=good merchantable quality良好可售品质
G/N=Guarantee of Notes 承诺保证
g.s.w.=gross shipping weight 运输总重量
gr.wt.=gross weight 毛重
(I)
IIATA=International Air Transport Association 国际航空运输协会
IBRD=International Bank Reconstruction and Development 国际复兴开发银行
I/C=Inward Collection 进口托收
ICC=International Chamber of Commerce 国际商会
IMO=International Money Orders 国际汇票
Imp=Import 进口
IN=Interest 利息
IMF=International Monetary Fund 国际货币基金
inst.=instant(this month) 本月
int.=interest 利息
Inv.=Invoice 发票
IOU=I owe you 借据
I/P=Insurance Policy 保险单
I/R=Inward Remittance 汇入汇款
ISIC=International Standard Industrial Classification 国际行业标准分类
it.=item 项目
(K)
Kk.=karat(carat) 卡拉(纯金含有度)
kg.=keg,kilogramme笑,公斤
K.W.=Kilo Watt 千瓦
(L)
LL/A=Letter of Authorization 授权书
lbs.=pounds 磅
L/C=Letter of Credit 信用证
L/H=General Letter of Hypothecation 质押权利总股定书
L/I=Letter of Indemnity赔偿保证书
L/G=Letter of Guarantee 保证函
l.t.=long ton 长吨(2,240磅)
L/T=Letter Telegram 书信电报
Ltd.=Limited 有限责任
L/U=Letter of Undertaking 承诺书
(M)
Mm.=mile,metre,mark,month,minute,meridian(noon)哩,公尺,记号,月,分,中午
m/d=month after date 出票后……月付款
memo.=memorandum 备忘录
M.I.P.=marine insurance policy 海上保险单
misc.=miscellaneous杂项
M/L=more or less增或减
M/N=Minimum最低额
MO=Money Order拨款单,汇款单,汇票
m/s=months after sight见票后……月付款
m.s.=mail steamer,mail transfer油船,轮船
M.T.=metric ton,mail transfer公吨,信汇
M/T=Mail Transfer信汇
m.v.=motor vessel轮船
MNC=multi-national corporation跨国公司
(N)
NN.B.=Nota Bene(take notice)注意
NO.=number号码
n/p=non-payment拒付
Nt.Wt=Net Weight净重
(O)
O.=Order定单,定货
O.B/L=Order bill of lading指示式提单
O.C.P.=Overland Common Point通常陆上运输可到达地点
O/C=Outward Collection出口托收
OD.=Overdraft透支
O/d=overdraft,on demand透支,要求即付款(票据)
O/No.=order number定单编号
o.p.=open policy预约保单
O/R=Outward Remittance汇出汇款
ORT=ordinary telegram寻常电报
o/s=on sale,out of stock廉售,无存货
O/S=old style老式
o.t.=old term旧条件
oz=ounce盎斯
(P)
PP/A,p/a=particular average单独海损
pa=power of attorney委任状
=private account私人账户
p.a.=per annum(by the year)每年
p.c.=per cent,petty cash百分比,零用金
p.l.=partial loss分损
P.&I.=Protection and Indemnity意外险
P.&L.=profit and loss益损
P.M.O.=postal money order邮政汇票
P/N=promissory note本票
P.O.B.=postal office box邮政信箱
p.o.d.=payment on delivery交货时付款
P.O.D.=Pay on Delivery发货付款
P/O=Payment Order支付命令
P/R=parcel receipt邮包收据
prox.=proximo(next month)下月
PS.=postscript再启
pt.=pint品脱
P.T.O.=please turn over请看里面
PTL=private tieline service电报专线业务
(Q)
Qqlty=quality品质
qr=quarter四分之一
qty=quantity数量
quotn=quotation报价单
qy=quay码头
(R)
recd=received收讫
recpt=receipt收据
ref.=reference参考,关于
RFWD=rain,fresh water damage雨水及淡水险
remit.=remittance汇款
r.m.=ready money,readymade备用金,现成的
RM=Remittance汇款
R.O.=remittance Order汇款委托书
R.P.=reply paid,returnof post邮下或电费预付,请即会示
rt.=rate率
(S)
SS.A.=-Statement of Account账单
s.a.=subject to approval以承认(赞成,批准)为条件
S/C=sale contract售货合同
S/D=sight draft即期汇票
S/D=sea damage海水损害
SD.=Sundries杂项
SE.=Securities抵押品
S/N=shipping note装运通知
S.O.s.o.=shipping order,seller’s option装船通知书,卖方有权选择
S/S,s/s,ss,s.s=steamship轮船
s.t.=short ton短吨
(T)
T/A=telegraphic address电报挂号
tgm=telegram电报
T.L.O.=total loss only只担保全损(分损不赔)
T.M.O.=telegraphic money order电报汇款
T.R.=trust receipt信托收据
T.T.=telegraphic transfer电汇
TPND=theft,pilferage and nondelivery盗窃遗失条款
Uult.=ultimo(last month)上月
u/w=underwriter保险业者
(V)
voy.=voyage航次
V.V.=Vice Versa反之亦然
(W)
w.a.=with average水渍险(单独海损赔偿)
war=with risk担保一切险
W/B=way bill warehouse book货运单,仓库簿
wgt=weight重量
whf=wharf码头
W/M=weight or measurement重量或容量
w.p.a.=with particular average单独海损赔偿
W.R.=War Risk战争险
W.R.=warehouse receipt仓单
wt=weight重量
(X)
x.d.=ex dividend除息
XX=good quality良好品质
XXX=very good quality甚佳品质
XXXX=best quality最佳品质
(Y)
yd.=yard码
yr.=your,year你的,年
(Z)
Z=Zone地区,地带
body{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;margin:0}p{font-size:13px;line-height:1.5}span{line-height:1.5}td{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}a:visited,a:active,a:link{color:navy;text-decoration:none}a:hover{text-decoration:underline}h1{margin:0;margin-top:10px;margin-bottom:5px;font-size:18px}h1 a:visited,h1 a:active,h1 a:link{color:#000}h1 a:hover{color:#47f;text-decoration:none}h2{margin-top:10px;margin-bottom:3px;font-size:13px}h3{font-size:12px}h5{margin:0;padding:0}p{margin:10px 0}#authors ul{list-style:none;padding:0;margin:0 5px}div.News{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;padding:5px;padding-left:10px}.HeaderTitle{font-size:1.5em;margin:0}.HeaderTitles{padding-top:10px;padding-left:10px;padding-right:10px;padding-bottom:10px;width:100%}.HeaderTitles a:visited,.HeaderTitles a:active,.HeaderTitles a:link,.HeaderTitles a:hover{color:#fff;text-decoration:none;font-size:18px;font-weight:normal}.HeaderBar{font-weight:normal;font-size:12px;border-collapse:collapse;background-image:url(images/BlueTabBack.gif);background-repeat:repeat-x}.HeaderBar a:visited,.HeaderBar a:active,.HeaderBar a:link{color:#f5f5f5;text-decoration:none;font-weight:normal}.HeaderBarTab{background-image:url(images/BlueTabFace.gif);background-repeat:repeat-x;border-collapse:collapse;padding:0}.BlogStatsBar{text-align:right;font-weight:normal;font-size:12px;color:silver;border-collapse:collapse}p.date img{vertical-align:middle}p.date{font-size:12px;font-weight:bold;margin-bottom:0;padding-top:2px;padding-right:0;padding-bottom:4px;text-align:right}blockquote{}div.postTitle a:visited,div.postTitle a:active,div.postTitle a:link{color:navy;text-decoration:none}div.post{border-right:#dcdcdc 2px solid;border-top:#dcdcdc 2px solid;border-left:#dcdcdc 2px solid;border-bottom:#dcdcdc 2px solid}div.postTitle{padding-left:3px;font-weight:bolder;font-size:13px;padding-bottom:3px;padding-top:3px;border-bottom:#dcdcdc 1px solid;background-color:#f5f5f5}div.postText{padding-right:10px;padding-left:3px;font-size:13px;padding-bottom:5px;padding-top:10px;line-height:1.5;margin-left:5px}div.postText p{line-height:1.5}div.postFoot{background-color:#f5f5f5;border-top:#dcdcdc 1px solid;font-size:12px;padding-right:3px;padding-left:3px;padding-bottom:1px;padding-top:1px;text-align:right}#top{background-image:url(images/BlueTabBackground.gif);background-repeat:repeat;color:#f5f5f5;border-top:4px solid #000;border-bottom:4px solid #000;padding:0;margin:0}#tagline{font-size:16px;margin:0;color:#fff}#leftmenu{position:absolute;left:0;width:200px;height:auto;background-color:#f5f5f5;padding-top:0}#leftmenu h3{font-size:12px;margin:0;margin-top:10px;padding-bottom:2px;padding-left:3px;border-top:solid 1px #dcdcdc;padding-top:3px}#leftmenu ul{list-style:none;margin:0;padding-left:5px;margin-left:5px;margin-bottom:10px;font-size:12px}#leftmenu a{padding:1px;text-decoration:none}#leftmenu a:active,#leftmenu a:visited,#leftmenu a:link{}#leftmenu a:hover{font-style:italic}#main{margin-left:200px;background-color:#fff;padding:10px;border-left:1px solid #555;border-bottom:4px solid #000}#footer{margin:0;padding-top:5px;text-align:center;font-size:10px}#CommentForm{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}input,textarea{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}.CommentForm{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}.Button{border:1px solid #4682b4;background-color:#dcdcdc}.Cal{border:1px solid #186aa2;width:100%;font-family:Arial;font-size:12px;margin-top:0;margin-bottom:10px;height:180px;background-color:#f5f5f5;padding:0}.CalTitle{background-color:#014e82;border-color:#adf;font-family:Arial;font-size:13px;font-weight:normal;color:#000;margin-left:0;padding:0;height:100%}.CalOtherMonthDay{color:gray}.CalSelector{}.CalNextPrev{background-color:#014e82}.CalDayHeader{background-color:#186aa2;color:#000}.CalSelectedDay{}.CalWeekendDay{}.CalTodayDay{color:red}h1{margin:0;margin-top:10px;margin-bottom:5px;font-size:24px;line-height:200%}h2{margin-top:10px;margin-bottom:3px;font-size:18px}h3{font-size:16px}h4{font-size:14px}p{margin:10px 0;line-height:150%}.CalTitle{background-color:#014e82;border-color:#adf;font-family:Arial;font-size:13px;font-weight:normal;color:#fff;margin-left:0;padding:0;height:100%}.CalNextPrev{background-color:#014e82;color:#fff}.CalDayHeader{background-color:#186aa2;color:#fff}div.News{font-size:12pxpx;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;padding:5px;padding-left:10px}.HeaderBar{font-size:12pxpx;font-weight:normal;border-collapse:collapse;background-image:url(images/BlueTabBack.gif);background-repeat:repeat-x}.BlogStatsBar{font-size:12pxpx;text-align:right;font-weight:normal;color:silver;border-collapse:collapse}p.date{font-size:12pxpx;font-weight:bold;margin-bottom:0;padding-top:2px;padding-right:0;padding-bottom:4px;text-align:right}blockquote{}div.postFoot{font-size:12pxpx;background-color:#f5f5f5;border-top:#dcdcdc 1px solid;padding-right:3px;padding-left:3px;padding-bottom:1px;padding-top:1px;text-align:right}#leftmenu h3{font-size:12pxpx;margin:0;margin-top:10px;padding-bottom:2px;padding-left:3px;border-top:solid 1px #dcdcdc}#leftmenu ul{font-size:12pxpx;list-style:none;margin:0;padding-left:5px;margin-left:5px;margin-bottom:10px}#leftmenu a{font-size:12pxpx;padding:1px;text-decoration:none}#footer{font-size:12pxpx;margin:0;padding-top:5px;text-align:center}#CommentForm{font-size:12pxpx;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}input,textarea{font-size:12pxpx;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}.CommentForm{font-size:12pxpx;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}#leftmenu{position:absolute;left:0;width:200px;height:auto;background-color:#f5f5f5;padding-top:0}#main{margin-left:200px;background-color:#fff;padding:10px;border-left:1px solid #555;border-bottom:4px solid #000}.div_my_zzk{margin-left:5px}.commentOpt{padding-bottom:5px}.blog_comment_body{line-height:1.8}
++ /dev/null
body{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;margin:0}p{font-size:13px;line-height:1.5}span{line-height:1.5}td{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}a:visited,a:active,a:link{color:navy;text-decoration:none}a:hover{text-decoration:underline}h1{margin:0;margin-top:10px;margin-bottom:5px;font-size:18px}h1 a:visited,h1 a:active,h1 a:link{color:#000}h1 a:hover{color:#47f;text-decoration:none}h2{margin-top:10px;margin-bottom:3px;font-size:13px}h3{font-size:12px}h5{margin:0;padding:0}p{margin:10px 0}#authors ul{list-style:none;padding:0;margin:0 5px}div.News{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;padding:5px;padding-left:10px}.HeaderTitle{font-size:1.5em;margin:0}.HeaderTitles{padding-top:10px;padding-left:10px;padding-right:10px;padding-bottom:10px;width:100%}.HeaderTitles a:visited,.HeaderTitles a:active,.HeaderTitles a:link,.HeaderTitles a:hover{color:#fff;text-decoration:none;font-size:18px;font-weight:normal}.HeaderBar{font-weight:normal;font-size:12px;border-collapse:collapse;background-image:url(images/BlueTabBack.gif);background-repeat:repeat-x}.HeaderBar a:visited,.HeaderBar a:active,.HeaderBar a:link{color:#f5f5f5;text-decoration:none;font-weight:normal}.HeaderBarTab{background-image:url(images/BlueTabFace.gif);background-repeat:repeat-x;border-collapse:collapse;padding:0}.BlogStatsBar{text-align:right;font-weight:normal;font-size:12px;color:silver;border-collapse:collapse}p.date img{vertical-align:middle}p.date{font-size:12px;font-weight:bold;margin-bottom:0;padding-top:2px;padding-right:0;padding-bottom:4px;text-align:right}blockquote{}div.postTitle a:visited,div.postTitle a:active,div.postTitle a:link{color:navy;text-decoration:none}div.post{border-right:#dcdcdc 2px solid;border-top:#dcdcdc 2px solid;border-left:#dcdcdc 2px solid;border-bottom:#dcdcdc 2px solid}div.postTitle{padding-left:3px;font-weight:bolder;font-size:13px;padding-bottom:3px;padding-top:3px;border-bottom:#dcdcdc 1px solid;background-color:#f5f5f5}div.postText{padding-right:10px;padding-left:3px;font-size:13px;padding-bottom:5px;padding-top:10px;line-height:1.5;margin-left:5px}div.postText p{line-height:1.5}div.postFoot{background-color:#f5f5f5;border-top:#dcdcdc 1px solid;font-size:12px;padding-right:3px;padding-left:3px;padding-bottom:1px;padding-top:1px;text-align:right}#top{background-image:url(images/BlueTabBackground.gif);background-repeat:repeat;color:#f5f5f5;border-top:4px solid #000;border-bottom:4px solid #000;padding:0;margin:0}#tagline{font-size:16px;margin:0;color:#fff}#leftmenu{position:absolute;left:0;width:200px;height:auto;background-color:#f5f5f5;padding-top:0}#leftmenu h3{font-size:12px;margin:0;margin-top:10px;padding-bottom:2px;padding-left:3px;border-top:solid 1px #dcdcdc;padding-top:3px}#leftmenu ul{list-style:none;margin:0;padding-left:5px;margin-left:5px;margin-bottom:10px;font-size:12px}#leftmenu a{padding:1px;text-decoration:none}#leftmenu a:active,#leftmenu a:visited,#leftmenu a:link{}#leftmenu a:hover{font-style:italic}#main{margin-left:200px;background-color:#fff;padding:10px;border-left:1px solid #555;border-bottom:4px solid #000}#footer{margin:0;padding-top:5px;text-align:center;font-size:10px}#CommentForm{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}input,textarea{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}.CommentForm{font-size:12px;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}.Button{border:1px solid #4682b4;background-color:#dcdcdc}.Cal{border:1px solid #186aa2;width:100%;font-family:Arial;font-size:12px;margin-top:0;margin-bottom:10px;height:180px;background-color:#f5f5f5;padding:0}.CalTitle{background-color:#014e82;border-color:#adf;font-family:Arial;font-size:13px;font-weight:normal;color:#000;margin-left:0;padding:0;height:100%}.CalOtherMonthDay{color:gray}.CalSelector{}.CalNextPrev{background-color:#014e82}.CalDayHeader{background-color:#186aa2;color:#000}.CalSelectedDay{}.CalWeekendDay{}.CalTodayDay{color:red}h1{margin:0;margin-top:10px;margin-bottom:5px;font-size:24px;line-height:200%}h2{margin-top:10px;margin-bottom:3px;font-size:18px}h3{font-size:16px}h4{font-size:14px}p{margin:10px 0;line-height:150%}.CalTitle{background-color:#014e82;border-color:#adf;font-family:Arial;font-size:13px;font-weight:normal;color:#fff;margin-left:0;padding:0;height:100%}.CalNextPrev{background-color:#014e82;color:#fff}.CalDayHeader{background-color:#186aa2;color:#fff}div.News{font-size:12pxpx;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;padding:5px;padding-left:10px}.HeaderBar{font-size:12pxpx;font-weight:normal;border-collapse:collapse;background-image:url(images/BlueTabBack.gif);background-repeat:repeat-x}.BlogStatsBar{font-size:12pxpx;text-align:right;font-weight:normal;color:silver;border-collapse:collapse}p.date{font-size:12pxpx;font-weight:bold;margin-bottom:0;padding-top:2px;padding-right:0;padding-bottom:4px;text-align:right}blockquote{}div.postFoot{font-size:12pxpx;background-color:#f5f5f5;border-top:#dcdcdc 1px solid;padding-right:3px;padding-left:3px;padding-bottom:1px;padding-top:1px;text-align:right}#leftmenu h3{font-size:12pxpx;margin:0;margin-top:10px;padding-bottom:2px;padding-left:3px;border-top:solid 1px #dcdcdc}#leftmenu ul{font-size:12pxpx;list-style:none;margin:0;padding-left:5px;margin-left:5px;margin-bottom:10px}#leftmenu a{font-size:12pxpx;padding:1px;text-decoration:none}#footer{font-size:12pxpx;margin:0;padding-top:5px;text-align:center}#CommentForm{font-size:12pxpx;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}input,textarea{font-size:12pxpx;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}.CommentForm{font-size:12pxpx;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif}#leftmenu{position:absolute;left:0;width:200px;height:auto;background-color:#f5f5f5;padding-top:0}#main{margin-left:200px;background-color:#fff;padding:10px;border-left:1px solid #555;border-bottom:4px solid #000}.div_my_zzk{margin-left:5px}.commentOpt{padding-bottom:5px}.blog_comment_body{line-height:1.8}
\ No newline at end of file
Encoder={EncodeType:"entity",isEmpty:function(a){return a?a===null||a.length==0||/^\s+$/.test(a):true},arr1:["&nbsp;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&shy;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&yacute;","&thorn;","&yuml;","&quot;","&amp;","&lt;","&gt;","&OElig;","&oelig;","&Scaron;","&scaron;","&Yuml;","&circ;","&tilde;","&ensp;","&emsp;","&thinsp;","&zwnj;","&zwj;","&lrm;","&rlm;","&ndash;","&mdash;","&lsquo;","&rsquo;","&sbquo;","&ldquo;","&rdquo;","&bdquo;","&dagger;","&Dagger;","&permil;","&lsaquo;","&rsaquo;","&euro;","&fnof;","&Alpha;","&Beta;","&Gamma;","&Delta;","&Epsilon;","&Zeta;","&Eta;","&Theta;","&Iota;","&Kappa;","&Lambda;","&Mu;","&Nu;","&Xi;","&Omicron;","&Pi;","&Rho;","&Sigma;","&Tau;","&Upsilon;","&Phi;","&Chi;","&Psi;","&Omega;","&alpha;","&beta;","&gamma;","&delta;","&epsilon;","&zeta;","&eta;","&theta;","&iota;","&kappa;","&lambda;","&mu;","&nu;","&xi;","&omicron;","&pi;","&rho;","&sigmaf;","&sigma;","&tau;","&upsilon;","&phi;","&chi;","&psi;","&omega;","&thetasym;","&upsih;","&piv;","&bull;","&hellip;","&prime;","&Prime;","&oline;","&frasl;","&weierp;","&image;","&real;","&trade;","&alefsym;","&larr;","&uarr;","&rarr;","&darr;","&harr;","&crarr;","&lArr;","&uArr;","&rArr;","&dArr;","&hArr;","&forall;","&part;","&exist;","&empty;","&nabla;","&isin;","&notin;","&ni;","&prod;","&sum;","&minus;","&lowast;","&radic;","&prop;","&infin;","&ang;","&and;","&or;","&cap;","&cup;","&int;","&there4;","&sim;","&cong;","&asymp;","&ne;","&equiv;","&le;","&ge;","&sub;","&sup;","&nsub;","&sube;","&supe;","&oplus;","&otimes;","&perp;","&sdot;","&lceil;","&rceil;","&lfloor;","&rfloor;","&lang;","&rang;","&loz;","&spades;","&clubs;","&hearts;","&diams;"],arr2:["&#160;","&#161;","&#162;","&#163;","&#164;","&#165;","&#166;","&#167;","&#168;","&#169;","&#170;","&#171;","&#172;","&#173;","&#174;","&#175;","&#176;","&#177;","&#178;","&#179;","&#180;","&#181;","&#182;","&#183;","&#184;","&#185;","&#186;","&#187;","&#188;","&#189;","&#190;","&#191;","&#192;","&#193;","&#194;","&#195;","&#196;","&#197;","&#198;","&#199;","&#200;","&#201;","&#202;","&#203;","&#204;","&#205;","&#206;","&#207;","&#208;","&#209;","&#210;","&#211;","&#212;","&#213;","&#214;","&#215;","&#216;","&#217;","&#218;","&#219;","&#220;","&#221;","&#222;","&#223;","&#224;","&#225;","&#226;","&#227;","&#228;","&#229;","&#230;","&#231;","&#232;","&#233;","&#234;","&#235;","&#236;","&#237;","&#238;","&#239;","&#240;","&#241;","&#242;","&#243;","&#244;","&#245;","&#246;","&#247;","&#248;","&#249;","&#250;","&#251;","&#252;","&#253;","&#254;","&#255;","&#34;","&#38;","&#60;","&#62;","&#338;","&#339;","&#352;","&#353;","&#376;","&#710;","&#732;","&#8194;","&#8195;","&#8201;","&#8204;","&#8205;","&#8206;","&#8207;","&#8211;","&#8212;","&#8216;","&#8217;","&#8218;","&#8220;","&#8221;","&#8222;","&#8224;","&#8225;","&#8240;","&#8249;","&#8250;","&#8364;","&#402;","&#913;","&#914;","&#915;","&#916;","&#917;","&#918;","&#919;","&#920;","&#921;","&#922;","&#923;","&#924;","&#925;","&#926;","&#927;","&#928;","&#929;","&#931;","&#932;","&#933;","&#934;","&#935;","&#936;","&#937;","&#945;","&#946;","&#947;","&#948;","&#949;","&#950;","&#951;","&#952;","&#953;","&#954;","&#955;","&#956;","&#957;","&#958;","&#959;","&#960;","&#961;","&#962;","&#963;","&#964;","&#965;","&#966;","&#967;","&#968;","&#969;","&#977;","&#978;","&#982;","&#8226;","&#8230;","&#8242;","&#8243;","&#8254;","&#8260;","&#8472;","&#8465;","&#8476;","&#8482;","&#8501;","&#8592;","&#8593;","&#8594;","&#8595;","&#8596;","&#8629;","&#8656;","&#8657;","&#8658;","&#8659;","&#8660;","&#8704;","&#8706;","&#8707;","&#8709;","&#8711;","&#8712;","&#8713;","&#8715;","&#8719;","&#8721;","&#8722;","&#8727;","&#8730;","&#8733;","&#8734;","&#8736;","&#8743;","&#8744;","&#8745;","&#8746;","&#8747;","&#8756;","&#8764;","&#8773;","&#8776;","&#8800;","&#8801;","&#8804;","&#8805;","&#8834;","&#8835;","&#8836;","&#8838;","&#8839;","&#8853;","&#8855;","&#8869;","&#8901;","&#8968;","&#8969;","&#8970;","&#8971;","&#9001;","&#9002;","&#9674;","&#9824;","&#9827;","&#9829;","&#9830;"],HTML2Numerical:function(a){return this.swapArrayVals(a,this.arr1,this.arr2)},NumericalToHTML:function(a){return this.swapArrayVals(a,this.arr2,this.arr1)},numEncode:function(c){if(this.isEmpty(c))return"";for(var d="",b=0;b<c.length;b++){var a=c.charAt(b);if(a<" "||a>"~")a="&#"+a.charCodeAt()+";";d+=a}return d},htmlDecode:function(e){var c,b,a=e;if(this.isEmpty(a))return"";a=this.HTML2Numerical(a);arr=a.match(/&#[0-9]{1,5};/g);if(arr!=null)for(var d=0;d<arr.length;d++){b=arr[d];c=b.substring(2,b.length-1);if(c>=-32768&&c<=65535)a=a.replace(b,String.fromCharCode(c));else a=a.replace(b,"")}return a},htmlEncode:function(a,b){if(this.isEmpty(a))return"";b=b||false;if(b)if(this.EncodeType=="numerical")a=a.replace(/&/g,"&#38;");else a=a.replace(/&/g,"&amp;");a=this.XSSEncode(a,false);if(this.EncodeType=="numerical"||!b)a=this.HTML2Numerical(a);a=this.numEncode(a);if(!b){a=a.replace(/&#/g,"##AMPHASH##");if(this.EncodeType=="numerical")a=a.replace(/&/g,"&#38;");else a=a.replace(/&/g,"&amp;");a=a.replace(/##AMPHASH##/g,"&#")}a=a.replace(/&#\d*([^\d;]|$)/g,"$1");if(!b)a=this.correctEncoding(a);if(this.EncodeType=="entity")a=this.NumericalToHTML(a);return a},XSSEncode:function(a,b){if(!this.isEmpty(a)){b=b||true;if(b){a=a.replace(/\'/g,"&#39;");a=a.replace(/\"/g,"&quot;");a=a.replace(/</g,"&lt;");a=a.replace(/>/g,"&gt;")}else{a=a.replace(/\'/g,"&#39;");a=a.replace(/\"/g,"&#34;");a=a.replace(/</g,"&#60;");a=a.replace(/>/g,"&#62;")}return a}else return""},hasEncoded:function(a){return/&#[0-9]{1,5};/g.test(a)?true:/&[A-Z]{2,6};/gi.test(a)?true:false},stripUnicode:function(a){return a.replace(/[^\x20-\x7E]/g,"")},correctEncoding:function(a){return a.replace(/(&amp;)(amp;)+/,"$1")},swapArrayVals:function(b,a,d){if(this.isEmpty(b))return"";var e;if(a&&d)if(a.length==d.length)for(var c=0,f=a.length;c<f;c++){e=new RegExp(a[c],"g");b=b.replace(e,d[c])}return b},inArray:function(c,b){for(var a=0,d=b.length;a<d;a++)if(b[a]===c)return a;return-1}}
++ /dev/null
Encoder={EncodeType:"entity",isEmpty:function(a){return a?a===null||a.length==0||/^\s+$/.test(a):true},arr1:["&nbsp;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&shy;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&yacute;","&thorn;","&yuml;","&quot;","&amp;","&lt;","&gt;","&OElig;","&oelig;","&Scaron;","&scaron;","&Yuml;","&circ;","&tilde;","&ensp;","&emsp;","&thinsp;","&zwnj;","&zwj;","&lrm;","&rlm;","&ndash;","&mdash;","&lsquo;","&rsquo;","&sbquo;","&ldquo;","&rdquo;","&bdquo;","&dagger;","&Dagger;","&permil;","&lsaquo;","&rsaquo;","&euro;","&fnof;","&Alpha;","&Beta;","&Gamma;","&Delta;","&Epsilon;","&Zeta;","&Eta;","&Theta;","&Iota;","&Kappa;","&Lambda;","&Mu;","&Nu;","&Xi;","&Omicron;","&Pi;","&Rho;","&Sigma;","&Tau;","&Upsilon;","&Phi;","&Chi;","&Psi;","&Omega;","&alpha;","&beta;","&gamma;","&delta;","&epsilon;","&zeta;","&eta;","&theta;","&iota;","&kappa;","&lambda;","&mu;","&nu;","&xi;","&omicron;","&pi;","&rho;","&sigmaf;","&sigma;","&tau;","&upsilon;","&phi;","&chi;","&psi;","&omega;","&thetasym;","&upsih;","&piv;","&bull;","&hellip;","&prime;","&Prime;","&oline;","&frasl;","&weierp;","&image;","&real;","&trade;","&alefsym;","&larr;","&uarr;","&rarr;","&darr;","&harr;","&crarr;","&lArr;","&uArr;","&rArr;","&dArr;","&hArr;","&forall;","&part;","&exist;","&empty;","&nabla;","&isin;","&notin;","&ni;","&prod;","&sum;","&minus;","&lowast;","&radic;","&prop;","&infin;","&ang;","&and;","&or;","&cap;","&cup;","&int;","&there4;","&sim;","&cong;","&asymp;","&ne;","&equiv;","&le;","&ge;","&sub;","&sup;","&nsub;","&sube;","&supe;","&oplus;","&otimes;","&perp;","&sdot;","&lceil;","&rceil;","&lfloor;","&rfloor;","&lang;","&rang;","&loz;","&spades;","&clubs;","&hearts;","&diams;"],arr2:["&#160;","&#161;","&#162;","&#163;","&#164;","&#165;","&#166;","&#167;","&#168;","&#169;","&#170;","&#171;","&#172;","&#173;","&#174;","&#175;","&#176;","&#177;","&#178;","&#179;","&#180;","&#181;","&#182;","&#183;","&#184;","&#185;","&#186;","&#187;","&#188;","&#189;","&#190;","&#191;","&#192;","&#193;","&#194;","&#195;","&#196;","&#197;","&#198;","&#199;","&#200;","&#201;","&#202;","&#203;","&#204;","&#205;","&#206;","&#207;","&#208;","&#209;","&#210;","&#211;","&#212;","&#213;","&#214;","&#215;","&#216;","&#217;","&#218;","&#219;","&#220;","&#221;","&#222;","&#223;","&#224;","&#225;","&#226;","&#227;","&#228;","&#229;","&#230;","&#231;","&#232;","&#233;","&#234;","&#235;","&#236;","&#237;","&#238;","&#239;","&#240;","&#241;","&#242;","&#243;","&#244;","&#245;","&#246;","&#247;","&#248;","&#249;","&#250;","&#251;","&#252;","&#253;","&#254;","&#255;","&#34;","&#38;","&#60;","&#62;","&#338;","&#339;","&#352;","&#353;","&#376;","&#710;","&#732;","&#8194;","&#8195;","&#8201;","&#8204;","&#8205;","&#8206;","&#8207;","&#8211;","&#8212;","&#8216;","&#8217;","&#8218;","&#8220;","&#8221;","&#8222;","&#8224;","&#8225;","&#8240;","&#8249;","&#8250;","&#8364;","&#402;","&#913;","&#914;","&#915;","&#916;","&#917;","&#918;","&#919;","&#920;","&#921;","&#922;","&#923;","&#924;","&#925;","&#926;","&#927;","&#928;","&#929;","&#931;","&#932;","&#933;","&#934;","&#935;","&#936;","&#937;","&#945;","&#946;","&#947;","&#948;","&#949;","&#950;","&#951;","&#952;","&#953;","&#954;","&#955;","&#956;","&#957;","&#958;","&#959;","&#960;","&#961;","&#962;","&#963;","&#964;","&#965;","&#966;","&#967;","&#968;","&#969;","&#977;","&#978;","&#982;","&#8226;","&#8230;","&#8242;","&#8243;","&#8254;","&#8260;","&#8472;","&#8465;","&#8476;","&#8482;","&#8501;","&#8592;","&#8593;","&#8594;","&#8595;","&#8596;","&#8629;","&#8656;","&#8657;","&#8658;","&#8659;","&#8660;","&#8704;","&#8706;","&#8707;","&#8709;","&#8711;","&#8712;","&#8713;","&#8715;","&#8719;","&#8721;","&#8722;","&#8727;","&#8730;","&#8733;","&#8734;","&#8736;","&#8743;","&#8744;","&#8745;","&#8746;","&#8747;","&#8756;","&#8764;","&#8773;","&#8776;","&#8800;","&#8801;","&#8804;","&#8805;","&#8834;","&#8835;","&#8836;","&#8838;","&#8839;","&#8853;","&#8855;","&#8869;","&#8901;","&#8968;","&#8969;","&#8970;","&#8971;","&#9001;","&#9002;","&#9674;","&#9824;","&#9827;","&#9829;","&#9830;"],HTML2Numerical:function(a){return this.swapArrayVals(a,this.arr1,this.arr2)},NumericalToHTML:function(a){return this.swapArrayVals(a,this.arr2,this.arr1)},numEncode:function(c){if(this.isEmpty(c))return"";for(var d="",b=0;b<c.length;b++){var a=c.charAt(b);if(a<" "||a>"~")a="&#"+a.charCodeAt()+";";d+=a}return d},htmlDecode:function(e){var c,b,a=e;if(this.isEmpty(a))return"";a=this.HTML2Numerical(a);arr=a.match(/&#[0-9]{1,5};/g);if(arr!=null)for(var d=0;d<arr.length;d++){b=arr[d];c=b.substring(2,b.length-1);if(c>=-32768&&c<=65535)a=a.replace(b,String.fromCharCode(c));else a=a.replace(b,"")}return a},htmlEncode:function(a,b){if(this.isEmpty(a))return"";b=b||false;if(b)if(this.EncodeType=="numerical")a=a.replace(/&/g,"&#38;");else a=a.replace(/&/g,"&amp;");a=this.XSSEncode(a,false);if(this.EncodeType=="numerical"||!b)a=this.HTML2Numerical(a);a=this.numEncode(a);if(!b){a=a.replace(/&#/g,"##AMPHASH##");if(this.EncodeType=="numerical")a=a.replace(/&/g,"&#38;");else a=a.replace(/&/g,"&amp;");a=a.replace(/##AMPHASH##/g,"&#")}a=a.replace(/&#\d*([^\d;]|$)/g,"$1");if(!b)a=this.correctEncoding(a);if(this.EncodeType=="entity")a=this.NumericalToHTML(a);return a},XSSEncode:function(a,b){if(!this.isEmpty(a)){b=b||true;if(b){a=a.replace(/\'/g,"&#39;");a=a.replace(/\"/g,"&quot;");a=a.replace(/</g,"&lt;");a=a.replace(/>/g,"&gt;")}else{a=a.replace(/\'/g,"&#39;");a=a.replace(/\"/g,"&#34;");a=a.replace(/</g,"&#60;");a=a.replace(/>/g,"&#62;")}return a}else return""},hasEncoded:function(a){return/&#[0-9]{1,5};/g.test(a)?true:/&[A-Z]{2,6};/gi.test(a)?true:false},stripUnicode:function(a){return a.replace(/[^\x20-\x7E]/g,"")},correctEncoding:function(a){return a.replace(/(&amp;)(amp;)+/,"$1")},swapArrayVals:function(b,a,d){if(this.isEmpty(b))return"";var e;if(a&&d)if(a.length==d.length)for(var c=0,f=a.length;c<f;c++){e=new RegExp(a[c],"g");b=b.replace(e,d[c])}return b},inArray:function(c,b){for(var a=0,d=b.length;a<d;a++)if(b[a]===c)return a;return-1}}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<html><head>
++ /dev/null
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head>
<body style="margin:0"><!--AdForward Begin:-->
<script src="187_data/ca-pub-8990951720398508.js"></script><script ads-tid="2223c262f_0" ads-outputs="0" id="allyes_ins_5685d35d" type="text/javascript" ads-src="http://csdnim.qtmojo.com/main/s?user=iteye|blogs|banner3&amp;db=csdnim&amp;border=0&amp;local=yes&amp;js=ie" src="187_data/AllyesDeliver.js" charset="gbk"></script><div id="2223c262f_0" style="padding:0;margin:0;border:0;"><script type="text/javascript" data-belong="allyes" src="187_data/s.js"></script><script type="text/javascript"><!--
google_ad_client = "ca-pub-8990951720398508";
/* Iteye博客内页下方banner680*90 */
google_ad_slot = "8267689356/1918544322";
google_ad_width = 680;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript" src="187_data/show_ads.js">
</script><ins id="aswift_0_expand" style="display:inline-table;border:none;height:90px;margin:0;padding:0;position:relative;visibility:visible;width:680px;background-color:transparent"><ins id="aswift_0_anchor" style="display:block;border:none;height:90px;margin:0;padding:0;position:relative;visibility:visible;width:680px;background-color:transparent"><iframe marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;&amp;s.handlers,h=H&amp;&amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;&amp;d&amp;&amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;" frameborder="0" height="90" width="680"></iframe></ins></ins><script type="text/javascript" data-belong="allyes" src="187_data/delay.js"></script><script type="text/javascript" data-belong="allyes" src="187_data/delay.js"></script><script type="text/javascript" data-belong="allyes" src="187_data/delay.js"></script><script type="text/javascript" data-belong="allyes" src="187_data/delay.js"></script><script type="text/javascript" data-belong="allyes" src="187_data/delay.js"></script></div>
<!--AdForward End-->
</body></html>
\ No newline at end of file
<!DOCTYPE html>
++ /dev/null
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><script src="187_data/osd.js" type="text/javascript"></script></head><body><iframe style="display:none" data-ad-client="ca-pub-8990951720398508" id="google_esf" name="google_esf" src="187_data/zrt_lookup.htm"></iframe><script>google_ad_client="ca-pub-8990951720398508";google_ad_height=90;google_ad_modifications={"plle":true,"loeids":[]};google_ad_slot="8267689356\/1918544322";google_ad_width=680;google_loader_used="sa";google_active_plles=[];google_ad_format="";google_ad_unit_key="3825380764";google_show_ads_impl=true;google_unique_id=1;google_async_iframe_id="aswift_0";google_start_time=1450586876339;google_bpp=14;google_async_rrc=0;google_iframe_start_time=new Date().getTime();</script><script src="187_data/show_ads_impl.js"></script><iframe id="google_ads_frame1" name="google_ads_frame1" src="187_data/ads.htm" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" frameborder="0" height="90" width="680"></iframe><iframe style="display: none; width: 0px; height: 0px;" name="google_osd_static_frame" id="google_osd_static_frame_9678400710560"></iframe></body></html>
\ No newline at end of file
<html><head>
++ /dev/null
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<html><head>
++ /dev/null
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body></body></html>
\ No newline at end of file
<!DOCTYPE html>
++ /dev/null
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><script src="ads_data/059UOUiBZofdp2zuH0cIrS6t6ROEcPA-84f-syFU6Gs.js" type="text/javascript"></script></head><body></body></html>
\ No newline at end of file
@font-face {
++ /dev/null
@font-face {
font-family: 'Slabo 27px';
font-style: normal;
font-weight: 400;
src: local('Slabo 27px'), local('Slabo27px-Regular'), url(http://fonts.gstatic.com/s/slabo27px/v3/PuwvqkdbcqU-fCZ9Ed-b7fk_vArhqVIZ0nv9q090hN8.woff2) format('woff2');
}
<!DOCTYPE html>
++ /dev/null
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body style="background:transparent" onload="onloadHasFired=true;">
<script>
(function(){var k=this,aa=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
else if("function"==b&&"undefined"==typeof a.call)return"object";return b},l=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};var q=function(a){q[" "](a);return a};q[" "]=function(){};var r=function(a){try{var b;if(b=!!a&&null!=a.location.href)a:{try{q(a.foo);b=!0;break a}catch(c){}b=!1}return b}catch(c){return!1}},t=function(a,b){for(var c=[k.top],d=[],f=0,e=b||1024,g;g=c[f++];){a&&!r(g)||d.push(g);try{if(g.frames)for(var m=g.frames.length,h=0;h<m&&c.length<e;++h)c.push(g.frames[h])}catch(n){}}return d},ba=function(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.call(void 0,a[c],c,a)};var v=function(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)};var x=function(a,b,c,d,f,e){try{if((d?a.w:Math.random())<(f||a.o)){var g=a.m+b+ca(c),g=g.substring(0,2E3);"undefined"===typeof e?w(g):w(g,e)}}catch(m){}},ca=function(a){var b="";ba(a,function(a,d){if(0===a||a)b+="&"+d+"="+encodeURIComponent(String(a))});return b},w=function(a,b){k.google_image_requests||(k.google_image_requests=[]);var c=k.document.createElement("img");if(b){var d=function(a){b(a);a=d;c.removeEventListener?c.removeEventListener("load",a,!1):c.detachEvent&&c.detachEvent("onload",a);
a=d;c.removeEventListener?c.removeEventListener("error",a,!1):c.detachEvent&&c.detachEvent("onerror",a)};v(c,"load",d);v(c,"error",d)}c.src=a;k.google_image_requests.push(c)};var y=function(a,b,c){this.v=a;this.u=b;this.l=c;this.j=null;this.s=this.i;this.A=!1},z=function(a,b,c){this.message=a;this.fileName=b||"";this.lineNumber=c||-1},B=function(a,b,c,d){var f;try{f=c()}catch(m){var e=a.l;try{var g=A(m),e=(d||a.s).call(a,b,g,void 0,void 0)}catch(h){a.i("pAR",h)}if(!e)throw m;}finally{}return f},da=function(a){var b=C;return function(){var c=arguments;return B(b,"sra::wls",function(){return a.apply(void 0,c)})}};
y.prototype.i=function(a,b,c,d,f){var e={};e.context=a;b instanceof z||(b=A(b));e.msg=b.message.substring(0,512);b.fileName&&(e.file=b.fileName);0<b.lineNumber&&(e.line=b.lineNumber.toString());a=k.document;e.url=a.URL.substring(0,512);e.ref=a.referrer.substring(0,512);if(this.j)try{this.j(e)}catch(g){}if(d)try{d(e)}catch(g){}x(this.v,f||this.u,e,this.A,c);return this.l};
var A=function(a){var b=a.toString();a.name&&-1==b.indexOf(a.name)&&(b+=": "+a.name);a.message&&-1==b.indexOf(a.message)&&(b+=": "+a.message);if(a.stack){var c=a.stack,d=b;try{-1==c.indexOf(d)&&(c=d+"\n"+c);for(var f;c!=f;)f=c,c=c.replace(/((https?:\/..*\/)[^\/:]*:\d+(?:.|\n)*)\2/,"$1");b=c.replace(/\n */g,"\n")}catch(e){b=d}}return new z(b,a.fileName,a.lineNumber)};var D=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},E=function(a,b){return a<b?-1:a>b?1:0};var F;a:{var G=k.navigator;if(G){var H=G.userAgent;if(H){F=H;break a}}F=""};var ea=-1!=F.indexOf("Opera")||-1!=F.indexOf("OPR"),I=-1!=F.indexOf("Trident")||-1!=F.indexOf("MSIE"),fa=-1!=F.indexOf("Edge"),J=-1!=F.indexOf("Gecko")&&!(-1!=F.toLowerCase().indexOf("webkit")&&-1==F.indexOf("Edge"))&&!(-1!=F.indexOf("Trident")||-1!=F.indexOf("MSIE"))&&-1==F.indexOf("Edge"),K=-1!=F.toLowerCase().indexOf("webkit")&&-1==F.indexOf("Edge"),ga=function(){var a=F;if(J)return/rv\:([^\);]+)(\)|;)/.exec(a);if(fa)return/Edge\/([\d\.]+)/.exec(a);if(I)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);
if(K)return/WebKit\/(\S+)/.exec(a)},L=function(){var a=k.document;return a?a.documentMode:void 0},M=function(){if(ea&&k.opera){var a;var b=k.opera.version;try{a=b()}catch(c){a=b}return a}a="";(b=ga())&&(a=b?b[1]:"");return I&&(b=L(),b>parseFloat(a))?String(b):a}(),ha={},N=function(a){var b;if(!(b=ha[a])){b=0;for(var c=D(String(M)).split("."),d=D(String(a)).split("."),f=Math.max(c.length,d.length),e=0;0==b&&e<f;e++){var g=c[e]||"",m=d[e]||"",h=RegExp("(\\d*)(\\D*)","g"),n=RegExp("(\\d*)(\\D*)","g");
do{var p=h.exec(g)||["","",""],u=n.exec(m)||["","",""];if(0==p[0].length&&0==u[0].length)break;b=E(0==p[1].length?0:parseInt(p[1],10),0==u[1].length?0:parseInt(u[1],10))||E(0==p[2].length,0==u[2].length)||E(p[2],u[2])}while(0==b)}b=ha[a]=0<=b}return b},ia=k.document,ja=ia&&I?L()||("CSS1Compat"==ia.compatMode?parseInt(M,10):5):void 0;var O;if(!(O=!J&&!I)){var P;if(P=I)P=9<=ja;O=P}O||J&&N("1.9.1");I&&N("9");var Q=window;var R,C;R=new function(){this.m="http"+("http:"==Q.location.protocol?"":"s")+"://pagead2.googlesyndication.com/pagead/gen_204?id=";this.o=.01;this.w=Math.random()};C=new y(R,"jserror",!0);var ka=C.i,S=function(a){x(R,"jserror",a,!1,void 0,void 0)};var T=function(a,b,c,d,f){if(f)c=a+("&"+b+"="+c);else{var e="&"+b+"=",g=a.indexOf(e);0>g?c=a+e+c:(g+=e.length,e=a.indexOf("&",g),c=0<=e?a.substring(0,g)+c+a.substring(e):a.substring(0,g)+c)}return 2E3<c.length?void 0!==d?T(a,b,d,void 0,f):a:c};var U=null,V=function(){if(!U)a:{for(var a=t(),b=0;b<a.length;b++)try{var c=a[b].frames.google_esf;if(c&&r(c)){U=c;break a}}catch(d){}U=null}return U},W=function(){var a=V();if(!a)return null;var b=a.esf_propArray;b||(b=a.esf_propArray={});return b},X=function(a,b,c){return a?(a[b]=c,!0):!1},Y=function(a){var b=W();a=b?b[a]:void 0;return a};var ta=function(a,b){var c=null;try{c=a.frameElement}catch(d){}c&&la(c)?ma?c.srcdoc=b:na?oa(c.contentWindow.document,b):pa(c,b):na?oa(a.document,b):(c=b,I&&N(7)&&!N(10)&&6>qa()&&ra(c)&&(c=sa(c)),a.goog_content=c,a.location.replace("javascript:window.goog_content"))},ma=K&&"srcdoc"in document.createElement("iframe"),na=J||K||I&&N(11),oa=function(a,b){a.open("text/html","replace");a.write(b);a.close()},pa=function(a,b){I&&N(7)&&!N(10)&&6>qa()&&ra(b)&&(b=sa(b));var c=function(){a.contentWindow.goog_content=
b;a.contentWindow.location.replace("javascript:window.goog_content")};I&&!la(a)?ua(a,c):c()},qa=function(){var a=navigator.userAgent.match(/Trident\/([0-9]+.[0-9]+)/);return a?parseFloat(a[1]):0},la=function(a){try{return r(a.contentWindow)}catch(b){return!1}},va=0,ua=function(a,b){var c="goog_rendering_callback"+va++;window[c]=b;a.src="javascript:'<script>(function() {document.domain = \""+document.domain+'";var continuation = window.parent.'+c+";window.parent."+c+" = null;continuation();})()\x3c/script>'"},
ra=function(a){for(var b=0;b<a.length;++b)if(127<a.charCodeAt(b))return!0;return!1},sa=function(a){a=unescape(encodeURIComponent(a));for(var b=Math.floor(a.length/2),c=[],d=0;d<b;++d)c[d]=String.fromCharCode(256*a.charCodeAt(2*d+1)+a.charCodeAt(2*d));1==a.length%2&&(c[b]=a.charAt(a.length-1));return c.join("")};var wa={creative:"",metadata:{}},xa=function(a,b){var c;a:{var d=V();if(d){(c=d.esf_winPropArray)||(c=d.esf_winPropArray=[]);for(d=0;d<c.length;d++)if(c[d].window==a){c=c[d].store;break a}d={};d.window=a;d.store={};c.push(d);c=d.store}else c=null}if(X(c,"adUrl",b)){var f;a:{c=Y("sraResponses");for(var d={},e=b.split("?"),e=e[e.length-1].split("&"),g=0;g<e.length;g++){var m=e[g].split("=");if(m[0])try{var h=m[0].toLowerCase(),n;if(1<m.length){var p=m[1];n=Q.decodeURIComponent?decodeURIComponent(p.replace(/\+/g,
" ")):unescape(p)}else n="";d[h]=n}catch(u){}}if(c){for(h=0;h<c.length;h++){n=c[h].metadata;p=!0;for(f in n)if(Object.prototype.hasOwnProperty.call(n,f)){e=n[f];g=d[f];if(""===e&&g){p=!1;break}if(""!==e&&e!=g){p=!1;break}}if(p){f=Array.prototype.splice.call(c,h,1)[0];break a}}f=wa}else f=null}if(f){if(f==wa)return 129;ta(a,f.creative);return 0}return 3}return V()?1:130};var ya=function(a){if(a="GAS1L"==a.data)a=Y("sraResponses"),a="array"!=aa(a);if(a)try{if(0==Q.parent.frames.google_ads_frame1.document.body.innerHTML.replace(/^\s+|\s+$/g,"").length){if(a=[],a.length){for(var b=[],c=[],d=0;d<a.length;d++){var f=a[d];f&&f.metadata&&null!=f.metadata.fa?b.push(f):c.push(f)}var e=W();X(e,"sraResponses",c);var g=W();X(g,"reactiveSraResponses",b)}for(var m=t(!0,void 0),f=0;f<m.length;f++){var h=m[f],n=h.google_sra_callback;n&&"function"==typeof n&&n.call&&h.setTimeout(da(l(n,
1)),0)}}}catch(p){}};var za=/#(R?S)-(.*)/,Aa=/^(\d+)-(.*)/,Ba=/\.((google(|groups|mail|images|print))|gmail)\./;var Z=null,Ca=function(a,b,c){a.google_sra_callback=null;null!=Z&&(a.clearTimeout(Z),Z=null);b=T(b,"sfr",c);a:{if(b&&(c=b.match("dt=([^&]+)"))&&2==c.length){c=c[1];break a}c=""}c=(new Date).getTime()-c;b=T(b,"dtd",1E5<=c?"M":0<=c?c:"-M");0!=xa(a,b)&&a.location.replace(b)};B(C,"zrt_lookup::main",function(){var a;try{var b=Ba.test(Q.location.host);a=!(!Q.postMessage||!Q.JSON||b)}catch(d){a=!1}if(a&&(b=(a=(b=za.exec(Q.location.href))&&b[2])&&b[1],a))switch(a=decodeURIComponent(a),b){case "S":if(b=Aa.exec(a)){a=1E3*+b[1];var b=b[2],c;c=xa(Q,b);0==c?c=!0:128<=c?(Q.location.replace(b),130==c&&S({context:"zrt_lookup::srau",esf:0}),c=!0):c=!1;c||(b=l(Ca,Q,b),Z=Q.setTimeout(l(b,2),a),Q.google_sra_callback=b,Q.google_sra_interface=1)}else S({context:"zrt_lookup::sra",params:a});
break;case "RS":b=parseInt(a,10),isNaN(b)?S({context:"zrt_lookup::rsra",params:a}):(a=(a=Y("reactiveSraResponses"))?a[b]:null)&&ta(Q,a.creative)}},ka);B(C,"esf::main",function(){"google_esf"==Q.name&&v(Q,"message",ya)},ka);}).call(this);
</script>
</body></html>
\ No newline at end of file
(google_async_config = window.google_async_config || {})['ca-pub-8990951720398508'] = {"sra_enabled":false};
++ /dev/null
(google_async_config = window.google_async_config || {})['ca-pub-8990951720398508'] = {"sra_enabled":false};
\ No newline at end of file
/*!
++ /dev/null
/*!
*description: delay for AllyesDeliver
*email:lei_ding@allyes.com
*date:2013.12.1
*version:2.1
*/
!function(a){var b,c,d;"undefined"!=typeof AllyesDeliver&&(d=function(b){a.document.write(b)},b=a.allyes_inter||0,c=AllyesDeliver.cdnSrc("delay.min.js"),++b<5?(a.allyes_inter=b,d('<script type="text/javascript" data-belong="allyes" src="'+c+'"></script>')):(d("</div>"),b=null,c=null,a.allyes_inter=null,AllyesDeliver.checking()))}(window);
\ No newline at end of file
ADFHOST3643="http://csdnim.qtmojo.com";
++ /dev/null
ADFHOST3643="http://csdnim.qtmojo.com";
ADFCID3643=236;
ADFBID3643=3643;
ADFLOC='CNTJ0000';
ADFUSER3643="http://csdnim.qtmojo.com/c?d=csdnim&i=z236,10471759,3643,18529&rf=http%3A%2F%2Fgreemranqq.iteye.com%2Fiframe_ggbd%2F794&a=dwCukl8tC2jH42A5yG63YkaczXlM&u=";
ALLYESID4="CKswK1qmt2A5yGw7Fnu";
ADFPGC="3,22,236,0,4781,3643,18529,10471759";
document.write("<script type=\"text/javascript\"><!--\n");
document.write("google_ad_client = \"ca-pub-8990951720398508\";\n");
document.write("/* Iteyeҳ·banner680*90 */\n");
document.write("google_ad_slot = \"8267689356/1918544322\";\n");
document.write("google_ad_width = 680;\n");
document.write("google_ad_height = 90;\n");
document.write("//-->\n");
document.write("</Scr"+"ipt>\n");
document.write("<script type=\"text/javascript\"\n");
document.write("src=\"//pagead2.googlesyndication.com/pagead/show_ads.js\">\n");
document.write("</Scr"+"ipt>");
.dp-highlighter
++ /dev/null
.dp-highlighter
{
font-family: Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Consolas, Courier New, monospace;
font-size: 12px;
background-color: transparent;
width: 97%;
overflow: auto;
margin-left: 9px;
padding: 1px; /* adds a little border on top when controls are hidden */
word-break: break-all;
word-wrap: break-word;
}
.dp-highlighter ol
{
border: 1px solid #D1D7DC;
list-style: decimal; /* for ie */
background-color: #fff;
margin: 0px 0px 1px 0px; /* 1px bottom margin seems to fix occasional Firefox scrolling */
padding: 2px 0;
color: #2B91AF;
}
.dp-highlighter ol li,
.dp-highlighter .columns div
{
border-left: 1px solid #D1D7DC;
background-color: #FAFAFA;
padding-left: 10px;
line-height: 18px;
margin: 0 0 0 38px;
}
.dp-highlighter .columns
{
color: gray;
overflow: hidden;
width: 100%;
}
.dp-highlighter .columns div
{
padding-bottom: 5px;
}
.dp-highlighter ol li span
{
color: Black;
}
/* Styles for the tools */
.dp-highlighter .tools
{
padding: 3px;
text-align: left;
margin: 0;
color: black;
font-weight: bold;
}
/* About dialog styles */
.dp-about { background-color: #fff; margin: 0px; padding: 0px; }
.dp-about table { width: 100%; height: 100%; font-size: 11px; font-family: Tahoma, Verdana, Arial, sans-serif !important; }
.dp-about td { padding: 10px; vertical-align: top; }
.dp-about .copy { border-bottom: 1px solid #ACA899; height: 95%; }
.dp-about .title { color: red; font-weight: bold; }
.dp-about .para { margin: 0 0 4px 0; }
.dp-about .footer { background-color: #ECEADB; border-top: 1px solid #fff; text-align: right; }
.dp-about .close { font-size: 11px; font-family: Tahoma, Verdana, Arial, sans-serif !important; background-color: #ECEADB; width: 60px; height: 22px; }
/* Language specific styles */
.dp-highlighter .comment, .dp-highlighter .comments { color: #008200; padding: 0; margin: 0; width: auto; border: 0}
.dp-highlighter .string { color: blue; }
.dp-highlighter .keyword { color: #7f0055; font-weight: bold; }
.dp-highlighter .preprocessor { color: gray; }
This source diff could not be displayed because it is too large. You can view the blob instead.
++ /dev/null
function code_favorites_init(css_rules){
css_rules = css_rules || "pre[name=code]";
$$(css_rules).each(function(pre){
var sh_bar_tools = pre.previous().down(".tools");
var favorite_link = '&nbsp;<a href="javascript:void()" title="收藏这段代码" onclick="code_favorites_do_favorite(this);return false;">'
favorite_link += '<img class="star" src="/images/icon_star.png" alt="收藏代码" />';
favorite_link += '<img class="spinner" src="/images/spinner.gif" style="display:none" />';
favorite_link += '</a>';
sh_bar_tools.innerHTML += favorite_link;
});
}
function code_favorites_do_favorite(link_element){
$(link_element);// for ie6
var pre_element = link_element.up(".dp-highlighter").next();
var parameters = undefined;
if(pre_element.hasAttribute("code_favorite_id")){
parameters = {
"code_favorite[id]": pre_element.readAttribute("code_favorite_id")
}
}else{
var language = pre_element.readAttribute("class");
language = (!language || language == "data_info")?pre_element.readAttribute("language"):language;
var pre_index = pre_element.readAttribute("pre_index") || link_element.up(".dp-highlighter").readAttribute("pre_index");
parameters = {
'code_favorite[source_url]': pre_element.readAttribute("source_url"),
'code_favorite[page_title]': pre_element.readAttribute("title"),
'code_favorite[language]': language,
'code_favorite[codeable_id]': pre_element.readAttribute("codeable_id"),
'code_favorite[codeable_type]': pre_element.readAttribute("codeable_type"),
'code_favorite[code_index]': pre_index
};
}
link_element.down('.star').hide();
link_element.down('.spinner').show();
new Ajax.Request('/admin/code/new_xhr', {
method: 'post',
parameters: parameters,
onSuccess: function(response){
$(document.getElementsByTagName('body')[0]).insert({
bottom:response.responseText
});
link_element.down('.spinner').hide();
link_element.down('.star').show();
}
});
}
Object.Event={
++ /dev/null
Object.Event={
extend:function(object){
object._objectEventSetup=function(event_name){
this._observers=this._observers||{};
this._observers[event_name]=this._observers[event_name]||[];
};
object.observe=function(event_name,observer){
if(typeof(event_name)=='string'&&typeof(observer)!='undefined'){
this._objectEventSetup(event_name);
if(!this._observers[event_name].include(observer))
this._observers[event_name].push(observer);
}else
for(var e in event_name)
this.observe(e,event_name[e]);
};
object.stopObserving=function(event_name,observer){
this._objectEventSetup(event_name);
if(event_name&&observer)
this._observers[event_name]=this._observers[event_name].without(observer);
else if(event_name)
this._observers[event_name]=[];
else
this._observers={};
};
object.observeOnce=function(event_name,outer_observer){
var inner_observer=function(){
outer_observer.apply(this,arguments);
this.stopObserving(event_name,inner_observer);
}.bind(this);
this._objectEventSetup(event_name);
this._observers[event_name].push(inner_observer);
};
object.notify=function(event_name){
this._objectEventSetup(event_name);
var collected_return_values=[];
var args=$A(arguments).slice(1);
try{
for(var i=0;i<this._observers[event_name].length;++i)
collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args)||null);
}catch(e){
if(e==$break)
return false;
else
throw e;
}
return collected_return_values;
};
if(object.prototype){
object.prototype._objectEventSetup=object._objectEventSetup;
object.prototype.observe=object.observe;
object.prototype.stopObserving=object.stopObserving;
object.prototype.observeOnce=object.observeOnce;
object.prototype.notify=function(event_name){
if(object.notify){
var args=$A(arguments).slice(1);
args.unshift(this);
args.unshift(event_name);
object.notify.apply(object,args);
}
this._objectEventSetup(event_name);
var args=$A(arguments).slice(1);
var collected_return_values=[];
try{
if(this.options&&this.options[event_name]&&typeof(this.options[event_name])=='function')
collected_return_values.push(this.options[event_name].apply(this,args)||null);
for(var i=0;i<this._observers[event_name].length;++i)
collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args)||null);
}catch(e){
if(e==$break)
return false;
else
throw e;
}
return collected_return_values;
};
}
}
};
var HotKey=Class.create({
initialize:function(letter,callback,options){
if(!(letter instanceof Number))letter=letter.toUpperCase().charCodeAt(0);
HotKey.hotkeys.push(this);
this.options=Object.extend({
element:false,
shiftKey:false,
altKey:false,
ctrlKey:true
},options||{});
this.letter=letter;
this.callback=callback;
this.element=$(this.options.element||document);
this.handler=function(event){
if(!event||(this.letter==event.keyCode&&((!this.options.shiftKey||(this.options.shiftKey&&event.shiftKey))&&(!this.options.altKey||(this.options.altKey&&event.altKey))&&(!this.options.ctrlKey||(this.options.ctrlKey&&event.ctrlKey))))){
this.callback(event);
event.cancelBubble=true;
event.returnValue=false;
if(event.stopPropagation){
event.stopPropagation();
event.preventDefault();
}
return false;
}
}.bind(this);
this.enable();
},
trigger:function(){
this.handler();
},
enable:function(){
this.element.observe('keydown',this.handler);
},
disable:function(){
this.element.stopObserving('keydown',this.handler);
},
destroy:function(){
this.disable();
HotKey.hotkeys=Control.HotKey.hotkeys.without(this);
}
});
Object.extend(HotKey,{
hotkeys:[]
});
Object.Event.extend(HotKey);
\ No newline at end of file
div.topic_page, a {
++ /dev/null
div.topic_page, a {
color: #7d0000;
text-decoration: underline;
}
a:hover {
color: white;
}
div.app_nav, div#page, .comment_title, tr.mouse_over {
background-color: #fff0f0;
}
div#local, div#main, .blog_main, .pagination a:hover, .pagination a:active {
background-color: white;
border-color: #7d0000;
}
div.nav, div#app_list div.decorate, a:hover, div#branding, input.button, input.submit, td.buttons a, .pagination span.current {
background-color: #7d0000;
}
.blog_bottom li {
border-right-color: #7d0000;
color: #7d0000;
}
table.admin thead, .pagination a, .pagination a:visited {
color: #7d0000;
}
div.app_nav, .pagination span.current {
border-color: #7d0000;
}
.blog_comment, div.picture_full {
border-top-color: #7d0000;
}
/*new*/
.white{ color:#FFF !important;}
#blog_navbar{
background-color: #7d0000;
}
.blog_navbar_for{
color: #7d0000;
background-color:#fff0f0;
}
#blog_navbar .blog_navbar_for a:visited{color: #7d0000 ; background-color:#fff0f0;}
#blog_navbar .blog_navbar_for a:link{color: #7d0000 ; background-color:#fff0f0;}
.blog_main_title{color: #000;}
.about_bar{ background:#CCCCCC;color:#7d0000 ;}
.view a:hover{color:#e9650e;}
.list_current{}
.list_current a{ color:#108AC6; font-weight:bold;}
.list_current a:hover{ color:#FFFFFF; background:#108AC6;}
#my_resume .editing a.del:hover,
#my_resume .editing a.add:hover{color: #7d0000;}
var __slice=[].slice;!function(a,b){var c,d,e,f,g;e=this,c=e.jQuery,d={},a(e,d,c),e.csdn===b&&(e.csdn=d);for(f in d)e[f]=e.csdn[f]=d[f];(g=d.tracking)({"":[g.baseParams,g.tos,g.sessionId],"bbs.csdn.net":g.tags("/topics/","div.tag span"),"blog.csdn.net":g.tags("/article/details/","div.tag2box a"),"ask.csdn.net":g.tags("/questions/","div.tag_data a.tag span"),"download.csdn.net":g.tags("/detail/",'div.info a[href^="/tag/"]'),"www.csdn.net":[g.tags("/article/","div.tag a"),g.cmsPid],"www.csto.com":g.tags("/p/","span.tech a"),"www.iteye.com":g.tags("/topic/","#topic_tags a")})}(function(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;return e=a.document,k=a.location,l="http"===k.protocol.substr(0,4)?"":"http:",h=[],n=e.documentElement,i=n.doScroll,j=(i?/^loaded|^c/:/^loaded|c/).test(e.readyState),g=function(){var a;for(j=1;a=h.shift();)a()},"function"==typeof e.addEventListener&&e.addEventListener("DOMContentLoaded",function(){e.removeEventListener("DOMContentLoaded",arguments.callee,!1),g()}),i&&e.attachEvent("onreadystatechange",function(){/^c/.test(e.readyState)&&(e.detachEvent("onreadystatechange",arguments.callee),g())}),f=i?function(b){if(a.self!==a.top)return j?b():h.push(b);try{n.doScroll("left")}catch(c){return void a.setTimeout(function(){f(b)},50)}b()}:function(a){j?a():h.push(a)},o=function(a){return/\.?([a-z0-9\-]+\.[a-z0-9\-]+)(:\d+)?$/.exec(a)[1]},b.tracking=p=function(a){f(function(){var b,c,e,f,g,h,i,j;for(b={},j=[a[k.host],a[""]],f=0,h=j.length;h>f;f++)if(e=j[f])if("function"==typeof e)e(b);else for(g=0,i=e.length;i>g;g++)c=e[g],"function"==typeof c&&c(b);d(b)})},p.baseParams=function(a){var b,c,d,f,g;return a.user_name=/iteye.com$/.test(k.host)?(null!=(b=/>欢迎([^<]+)<\/a>/.exec(null!=(c=e.getElementById("user_nav"))?c.innerHTML:void 0))?b[1]:void 0)||"":(null!=(d=/(; )?(UserName)=([^;]+)/.exec(e.cookie))?d[3]:void 0)||"",a["x-acl-token"]="status_js_dkuyqthzbajmncbsb_token",a.pid||(a.pid=/iteye.com$/.test(k.host)?"iteye":e.body.getAttribute("data-pid")||(null!=(f=/(\w+)\.\w+\.\w+$/.exec(k.host))?f[1]:void 0)),a.oid=(null!=(g=m(".h-entry .p-author")[0])?g.innerHTML.replace(/^\s+|\s+$/g,""):void 0)||"",a.referrer=e.referrer},p.sessionId=function(a){var b,c;return b=null!=(c=/\bdc_session_id=([^;]*)(?:$|;)/.exec(e.cookie))?c[1]:void 0,/^https?:\/\/([\w-]+\.)*csdn\.net\//.test(e.referrer)||(b=void 0),void 0!==b&&/^\d+$/.test(b)||(b=+new Date),e.cookie="dc_session_id="+b+"; path=/; domain=."+o(k.host),a.session_id=""+b},p.tos=function(a){var b,c,d,f,g;c=+new Date/1e3|0,d=null!=(g=/\bdc_tos=([^;]*)(?:$|;)/.exec(e.cookie))?g[1]:void 0;try{f=c-parseInt(d,36)}catch(h){b=h,f=-1}return e.cookie="dc_tos="+c.toString(36)+"; expires="+new Date(1e3*(c+14400)).toGMTString()+"; max-age=14400; path=/; domain=."+o(k.host),a.tos=f},p.tags=function(){var a,b;return a=arguments[0],b=2<=arguments.length?__slice.call(arguments,1):[],function(c){var d,e,f,g,h,i,j,l,n,o,p,q,r;if(!("string"==typeof a&&!~k.pathname.indexOf(a)||a instanceof RegExp&&!a.test(k.pathname))){for(e=[],j=0,o=b.length;o>j;j++)for(h=b[j],r="string"==typeof h?m(h):("function"==typeof h?h():void 0)||[],l=0,p=r.length;p>l;l++)f=r[l],e.push(f);for(g={},n=0,q=e.length;q>n;n++)d=e[n],g[d.innerHTML.replace(/^\s+|\s+$/g,"")]=1;c.tag=function(){var a;a=[];for(i in g)a.push(i);return a}().join()}}},p.cmsPid=function(a){if(-1!==k.pathname.indexOf("/article/"))try{return a.pid=m(".brea_nav > a")[1].hostname.match(/(\w+)\.\w+\.\w+$/)[1]}catch(b){}},p.querySelectorAll=m=function(b){return("function"==typeof e.querySelectorAll?e.querySelectorAll(b):void 0)||("function"==typeof c?c(b):void 0)||a.Prototype&&("function"==typeof a.$$?a.$$(b):void 0)||[]},p.crossdomainGet=d=function(a){var b,c;a[1e4*Math.random()|0]="",b=new Image,b.onload=b.onerror=function(){b.onload=b.onerror=null,b.removeAttribute("src"),b=null},b.src=l+"//dc.csdn.net/track?"+function(){var b;b=[];for(c in a)b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b}().join("&")}});
++ /dev/null
var __slice=[].slice;!function(a,b){var c,d,e,f,g;e=this,c=e.jQuery,d={},a(e,d,c),e.csdn===b&&(e.csdn=d);for(f in d)e[f]=e.csdn[f]=d[f];(g=d.tracking)({"":[g.baseParams,g.tos,g.sessionId],"bbs.csdn.net":g.tags("/topics/","div.tag span"),"blog.csdn.net":g.tags("/article/details/","div.tag2box a"),"ask.csdn.net":g.tags("/questions/","div.tag_data a.tag span"),"download.csdn.net":g.tags("/detail/",'div.info a[href^="/tag/"]'),"www.csdn.net":[g.tags("/article/","div.tag a"),g.cmsPid],"www.csto.com":g.tags("/p/","span.tech a"),"www.iteye.com":g.tags("/topic/","#topic_tags a")})}(function(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;return e=a.document,k=a.location,l="http"===k.protocol.substr(0,4)?"":"http:",h=[],n=e.documentElement,i=n.doScroll,j=(i?/^loaded|^c/:/^loaded|c/).test(e.readyState),g=function(){var a;for(j=1;a=h.shift();)a()},"function"==typeof e.addEventListener&&e.addEventListener("DOMContentLoaded",function(){e.removeEventListener("DOMContentLoaded",arguments.callee,!1),g()}),i&&e.attachEvent("onreadystatechange",function(){/^c/.test(e.readyState)&&(e.detachEvent("onreadystatechange",arguments.callee),g())}),f=i?function(b){if(a.self!==a.top)return j?b():h.push(b);try{n.doScroll("left")}catch(c){return void a.setTimeout(function(){f(b)},50)}b()}:function(a){j?a():h.push(a)},o=function(a){return/\.?([a-z0-9\-]+\.[a-z0-9\-]+)(:\d+)?$/.exec(a)[1]},b.tracking=p=function(a){f(function(){var b,c,e,f,g,h,i,j;for(b={},j=[a[k.host],a[""]],f=0,h=j.length;h>f;f++)if(e=j[f])if("function"==typeof e)e(b);else for(g=0,i=e.length;i>g;g++)c=e[g],"function"==typeof c&&c(b);d(b)})},p.baseParams=function(a){var b,c,d,f,g;return a.user_name=/iteye.com$/.test(k.host)?(null!=(b=/>欢迎([^<]+)<\/a>/.exec(null!=(c=e.getElementById("user_nav"))?c.innerHTML:void 0))?b[1]:void 0)||"":(null!=(d=/(; )?(UserName)=([^;]+)/.exec(e.cookie))?d[3]:void 0)||"",a["x-acl-token"]="status_js_dkuyqthzbajmncbsb_token",a.pid||(a.pid=/iteye.com$/.test(k.host)?"iteye":e.body.getAttribute("data-pid")||(null!=(f=/(\w+)\.\w+\.\w+$/.exec(k.host))?f[1]:void 0)),a.oid=(null!=(g=m(".h-entry .p-author")[0])?g.innerHTML.replace(/^\s+|\s+$/g,""):void 0)||"",a.referrer=e.referrer},p.sessionId=function(a){var b,c;return b=null!=(c=/\bdc_session_id=([^;]*)(?:$|;)/.exec(e.cookie))?c[1]:void 0,/^https?:\/\/([\w-]+\.)*csdn\.net\//.test(e.referrer)||(b=void 0),void 0!==b&&/^\d+$/.test(b)||(b=+new Date),e.cookie="dc_session_id="+b+"; path=/; domain=."+o(k.host),a.session_id=""+b},p.tos=function(a){var b,c,d,f,g;c=+new Date/1e3|0,d=null!=(g=/\bdc_tos=([^;]*)(?:$|;)/.exec(e.cookie))?g[1]:void 0;try{f=c-parseInt(d,36)}catch(h){b=h,f=-1}return e.cookie="dc_tos="+c.toString(36)+"; expires="+new Date(1e3*(c+14400)).toGMTString()+"; max-age=14400; path=/; domain=."+o(k.host),a.tos=f},p.tags=function(){var a,b;return a=arguments[0],b=2<=arguments.length?__slice.call(arguments,1):[],function(c){var d,e,f,g,h,i,j,l,n,o,p,q,r;if(!("string"==typeof a&&!~k.pathname.indexOf(a)||a instanceof RegExp&&!a.test(k.pathname))){for(e=[],j=0,o=b.length;o>j;j++)for(h=b[j],r="string"==typeof h?m(h):("function"==typeof h?h():void 0)||[],l=0,p=r.length;p>l;l++)f=r[l],e.push(f);for(g={},n=0,q=e.length;q>n;n++)d=e[n],g[d.innerHTML.replace(/^\s+|\s+$/g,"")]=1;c.tag=function(){var a;a=[];for(i in g)a.push(i);return a}().join()}}},p.cmsPid=function(a){if(-1!==k.pathname.indexOf("/article/"))try{return a.pid=m(".brea_nav > a")[1].hostname.match(/(\w+)\.\w+\.\w+$/)[1]}catch(b){}},p.querySelectorAll=m=function(b){return("function"==typeof e.querySelectorAll?e.querySelectorAll(b):void 0)||("function"==typeof c?c(b):void 0)||a.Prototype&&("function"==typeof a.$$?a.$$(b):void 0)||[]},p.crossdomainGet=d=function(a){var b,c;a[1e4*Math.random()|0]="",b=new Image,b.onload=b.onerror=function(){b.onload=b.onerror=null,b.removeAttribute("src"),b=null},b.src=l+"//dc.csdn.net/track?"+function(){var b;b=[];for(c in a)b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b}().join("&")}});
\ No newline at end of file
function open_window(url) {
++ /dev/null
function open_window(url) {
function o(){
if(!window.open(url,'iteye',['toolbar=0,status=0,resizable=1,width=440,height=430,left=',(screen.width-440)/2,',top=',(screen.height-430)/2].join('')))
window.location.href = url;
}
if(/Firefox/.test(navigator.userAgent)) {
setTimeout(o,0);
} else {
o();
}
}
var WeiboShare = Class.create({
initialize: function(opts) {
var imgs = opts['img_scope'].select('img:not(.star):not(.spinner)');
var img_url = '';
if(imgs.size() > 0) img_url = imgs[0]['src'];
this.params = {
title: opts['title'] || document.title,
url: encodeURIComponent(opts['url'] || document.location.href),
pic: encodeURIComponent(img_url)
}
this.share_buttons = opts['share_buttons'];
this.share_buttons.select('a').each(function(link){
link.observe('click', (function(event){
var url = WeiboShare.make_share_url(link.readAttribute('data-type'), this.params);
open_window(url);
event.stop();
}).bindAsEventListener(this));
}, this);
}
});
WeiboShare.register = function(sites) {
this.sites = (this.sites || new Hash()).merge(sites);
};
WeiboShare.make_share_url = function(key, params) {
var site_info = this.sites.get(key);
params['appkey'] = site_info['appkey'];
var param_array = [];
for(var p in params) {
param_array.push(p + '=' + params[p]);
}
return (site_info['url'] + '?' + param_array.join('&'));
}
WeiboShare.register({
sina: {
url: 'http://service.weibo.com/share/share.php',
appkey: '3842512498'
},
qq: {
url: 'http://v.t.qq.com/share/share.php',
appkey: '050a47d9d5d848029e1de3198d2abcda'
}
});
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment