- 浏览: 82245 次
- 性别:
- 来自: 上海
最新评论
-
surprising:
[color=darkred][/color]交换机
jdk rmi 代码分析 -
weibei:
what?
java.lang.reflect.Type
文章列表
项目中使用oracle,和hibernate,需要为一个model中的一列,让它自动更新,使用**.nextval.
如果使用jdbc,就很简单,就是直接在insert,update语句中为那一列指定为**.nextval.
但在hibernate中有一点困难, 我通过查看hibernate代码,得到了以下解决方案。
以下是解决方案步骤:
为这个model指定insert sql,和update sql.
这些sql语句中列的顺序是根据property name来排序的
这个model中的propery不能指定为dynamic.
我觉得这个应该不是最佳的 ...
SOA(Service-Oriented Architecture)
这个单词目前是相当的热,现在外面全都是SOA, Web Service, ESB.
我说一下自己的一些看法,首先SOA跟web Service有什么关系,好像没有什么直接关系。ESB 好像被认为是 SOA的基础设施,Consumer可以找到Provider,可以做协议转换这些事情,我们可以想想是否真的一定需要协议转换,一定需要ESB来做转发,在量大的话,对性能要求高的情况下,根本就行不通
SOA就是一个新名词,本质上来讲,就是一个远程调用
SOA不是适合所有的使用场景,不是银弹,比如在一个大型软件公司 ...
由于很多原因,一般做互联网的,如果不考虑时间和资源的情况,都会开发自己的web framework。
实现一个web framework 需要做些什么:
基础框架,一般是IOC框架,你可以直接写,或者使用spring,或者使用 jdk services方法。
一般都需要component呢,所以我们的framework需要管理有component的关系
Template Service,也许是jsp,也许是velocity或者freemark
Control Service,一般都是需要COC方式来形成,所以就需要COC的Mapping Rule
现在流行POJO ...
序列化
作用:
很显然就是,主要让对象可以在多个jvm中流通,主要记录类的原信息,不关心类的方法
实现方法: 目前有四种方法
ObjectOutput(input)stream 对象必须实行 Serializable
Hessian2Output 对象必须实行 Serializable
ProtocolBuffer
通常互联网请求包括两种类型 get,post,他们请求所带参数,通常情况下,是由servlet container去处理,程序一般情况下不干预
但有一点必须要注意,就是客户端和服务器端必须统一
服务器端:
GET
tomcat 总是以server.xml中,以<Connector URIEncoding="xxx">中指定的编码,来解释GET请求的参数。如未指定,就是8859_1, 如果设置了Tomcat5参数:<Connector useBodyEncodingForURI="true">,那么GE ...
互联网 URL
按照标准,URL中只能出现US-ASCII字符,假如有其它类型的字符,必须对其进行URL编码
URL encode规则:
把 URL 转成 application/x-www-form-urlencoded
MIME格式,标准 http://www.ietf.org/rfc/rfc1738.txt
所有 大小写英文字母 , 数字都通过,不需要转码
“-”,"_",".","!","~","*","\","(",") ...
真正意义的mvc
跟jsp相比,它算真正意义的mvc,因为在vm中,你是不可以写java代码的
动态语言
跟jsp相比,写法灵活多了,比如a.b这样的表达式,对jsp只能是A.getB()这样的东西,对velocity却灵活多了
Docbook 做为一个文档格式,在开源社区比较流行
优点:
跨平台,如word就不能在linux中显示
中间格式,可以随便转到相关的目标格式,比如html(单,多),pdf
在版本仓库中,可以比较,因为它是xml文本
对maven的项目比较合适,因为有相关的maven plugin支持它
开源
缺点:
编辑工具只是普通的xml工具,不能做到所见即所得
http\://www.springframework.org/schema/p=org.springframework.beans.factory.xml.SimplePropertyNamespaceHandler
对attribute 中出现 p:** = **,你可以直接写相关的property在element中去,不需要写在子element中property中去
Stack
last-in-first-out ,jdk默认提供的需要同步,一般情况可以自己实现
Queue
first-in-first-out,跟排队一样
List
ArrayList 就是普通的数组,LinkedList是一个双向链表的数组,插入删除要方便点
java.lang.reflect.Type:
什么是java.lang.reflect.Type?
在java中所有类型都是type,包括raw类型和泛化的类型,有以下四种
Double-checked locking
http://en.wikipedia.org/wiki/Double-checked_locking
下面是一些互联网应用中可能遇到的一些安全问题
XSS 攻击
Xss: 就是在网页上发布一些有问题的javascript代码,当用户点击这些代码,就有可能使用用户的权限做一些事情
一般解决办法: 对输出进行转义
CSRF 攻击
CSRF: Cross-site request forgery, 就是攻击者模仿用户提交一个请求(get 或者 post)
一般解决办法:拒绝get请求,在post请求页面增加token,对post请求结束重定向,对用户权限进行检查
Http header 安全
Htt ...
在单独servlet container 里,request.getRemoteAddr得到远程的ip地址,request.getRemoteHost()跟request.getRemoteAddr()一样
jetty 代码片段
public String getRemoteAddr()
{
if (_remoteAddr != null)
return _remoteAddr;
return _endp==null?null:_endp.getRemoteAddr();
}
/* --- ...