- 浏览: 184090 次
- 性别:
- 来自: 上海
最新评论
-
kittaaron123:
爱玛,写得很好,最近也想看下这个写个文档 可以借鉴一下
Java NIO——Selector机制解析三(源码分析) -
liaohb:
pollWrapper:保存selector上注册的FD,包括 ...
Java NIO——Selector机制解析三(源码分析) -
wertyliii:
写的很好。。感觉再做点比喻什么的就更好理解了
Java NIO——Selector机制解析三(源码分析)
文章列表
Https交互流程《转》
- 博客分类:
- 随记
最经看了一些关于https的东西,比较乱,现在做个总结(不一定正确,而且很多细节没挖掘,只是目前的一个粗浅认识) Https流程图 从这个图我们可以看出: 由于浏览器和服务器之间对数据传输进行了对称加密,从而保证了 ...
如何调试php《转》
- 博客分类:
- PHP
一个好的代码调试器可以让你在解决问题的时候事半功倍,因为代码调试器可以设置断点,可以逐行逐行代码进行跟踪,可以查看变量的值等等优点。每一种开发语言都有很好的代码调试器,PHP也不例外,Xdebug、Zend Debugger等都是十分好的php调试工具,本文将为您展示如何用eclipse+pdt+xdebug来调试php网站。
1.工具准备
eclipse,地球上的软件开发人员都知道能用它来开发java项目,其实还可以用它来开发php网站,点击这里下载集成了pdt的eclipse版本。选择
eclipse批量转码插件《转》
- 博客分类:
- 随记
插件源代码下载 (导入插件在workspace中,右键export->Plug-in Development->Deployable plug-ins and fragments,然后生成插件binar文件)二进制包下载 (因为blogjava不许上传jar文件,请下载后将zip后缀改为jar后缀然后拷贝到eclipse/plugins目录)一般在使用Eclipse过程中会有两种跟文件编码(charset)有关的情况让我们不愉快。1 导入一个项目。 假设你的同事做好了一个项目,为了更好的支持国际化,里面的jsp页面都采用UTF-8,然后发给你,你导入到Eclipse的work ...
1、php5.3.27 + apache2.2 + mysql
2、在apache的httpd.conf上配置php:#LoadModule vhost_alias_module modules/mod_vhost_alias.soLoadModule php5_module "d:/dev/php/php5apache2_2.dll"PHPIniDir "d:/dev/php"LoadFile "d:/dev/php/libmysql.dll"AddType application/x-httpd-php .php .htm ...
这两天刚装好Windows 7,碰巧前段时间有朋友问我Windows下如何安装搭建PHP环境,所以打算勤劳下,手动一步步搭建PHP环境,暂且不使用PHP环境搭建软件了,在此详细图解在Windows 7下安装配置PHP+Apache+Mysql环境的教程,希望对PHP初学 ...
XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的. 比如获取用户的Cookie,导航到恶意网站,携带木马等。
作为测试人员,需要了解XSS的原理,攻击场景,如何修复。 才能有效的防止XSS的发生。
阅读目录
XSS 是如何发生的
HTML Encode
XSS 攻击场景
XSS漏洞的修复
如何测试XSS漏洞
Memcached存储机制
- 博客分类:
- 数据库
主要通过测试,推理memcached的存储机制。
平台 windows7
版本 memcached-1.2.6-win32
启动日志:
E:\memcached\memcached-1.2.6-win32-bin>memcached -m 32 -p 12001 -vv
slab class 1: chunk size 88 perslab 11915
slab class 2: chunk size 112 perslab 9362
slab class 3: chunk size 144 perslab 7281
sla ...
webx处理请求与Spring aop
- 博客分类:
- webx
webx在启动时通过:
com.alibaba.citrus.webx.servlet.WebxFrameworkFilter.init()==>ServletContext. getAttribute(attrName)
获取WebxComponentsContext。
后续调用过程:
WebxRootControllerImpl. handleRequest()
getComponents().findMatchedComponent(path).getWebxController().service(requestContext)
在service中: ...
webx启动时,关键在于其实现了自己的ContexLoaderListener、ContextLoader和WebApplicationContext,从而可以加入自己的一些定制。其中WebxComponentsContext是Webx的核心,其中保存了components、controller等重要信息,WebxComponentsContext对象初始化完成后,会被保存咋ServletContext中,WebxFrameworkFilter在doFilter时就可以取到这个对象。
hessian——客户端动态代理
- 博客分类:
- Hessian
客户端代码:
String urlString = "http://localhost/hessian/testService";
HessianProxyFactory factory = new HessianProxyFactory();
TestService testService = (TestService)factory.create(TestService.class,urlString);
public Object create(Class<?> api, URL url, ClassLoader loader)
...
hessian——序列化
- 博客分类:
- Hessian
当方法返回的类型未implement java.io.Serializable时,会throw exception;
原因: SerializerFactory中以下方法:
/**
* Returns the default serializer for a class that isn't matched
* directly. Application can override this method to produce
* bean-style serialization instead of field serialization.
*
...
HessianSkeleton是Hessian server端的核心类,主要功能是接收网络输入流(被包装为AbstractHessianInput),反序列化输入流得到methodName和参数,然后调用服务端的服务,得到结果后序列化为输出流,返回给客户端,主要流程如下图所示:
HessianSkeleton的核心代码如下所示:
[java] view plaincopy
Hessian在客户端一块采用Proxy模式,当客户端调用远程接口时,HessianProxy会代理这个动作,在invoke方法中,把客户端请求的方法和参数序列化为预订格式的输出流,主要流程如下图所示:
下面我将详细解析一下invoke源码:
[java] view plaincopy
看了一遍源码,跟这篇文章写的差不多,所以就转到这里记录一下。
大致翻了翻源码后,发现hessian的主要结构分客户端与服务端,中间基于http传输。客户端主要做的事情是把对远程接口调用序列化为流,并传输到服务端;服务端主要做的事情是把传输过来的流反序列化为对服务的请求,调用相应服务后把结果序列化为流返回给客户端。一次完整的调用如下图所示:
HessianProxy是hessian client处理客户端请求的核心类,它采用proxy的设计模式,代理客户端对远程接口的调用,hessian client的主流程的时序图如下所示:
HessianSkeleton是hessi ...