简单过滤链的实现思路

模仿SpringMVVC的FilterChain方式,使用过滤链的思路实现功能逻辑。

发布于 technology

使用spring启动httpserver

项目中原本使用的是基于socket的server,后来因为一些原因,需要添加一个http的回调地址,供外部调用,但是总不能修改项目结构,而且只是一个接口需求,不想也不需要重新开个项目丢进服务器,所以直接使用了java自带的HttpServer类,启动一个端口作为http请求的回调地址。

发布于 technology

Jquery-template的使用

之前的项目中用到了jquery-template这东西,这里做一下记录,以免遗忘。

发布于 technology

JAVA DES 秘钥问题

在偶然中,我发现使用两个不同的秘钥00401888和00401889,对同样的数据,加密出来的结果是一样的。再一看,发现不仅仅这两个秘钥生成的结果是一样的,比如00401880和00401881生成的加密结果也是一样的。 刚开始我以为是自己的代码写得有问题,然后再网上搜了下其他人写的java des代码,发现写法都是一样的,在copy到自己的类中调用,生成的结果也是一样的。我再找到一个DES在线加解密的网站,也会有这种秘钥不同但加密结果一样的问题。

发布于 technology

url动态加解密

表单提交(或其他需要请求后台url)的场景下,url对于客户端来说是可见的,攻击者可以通过url猜测到很多信息并伪造请求对url进行攻击。本文探讨了一种对url加密和解密的方案,并给出了关键代码。

发布于 technology

spring security csrf 学习笔记

最近在学习和研究csrf攻击,项目中使用了spring security,提供了csrf防御的能力,本文对该功能的使用做记录和说明、总结。

发布于 technology

CSRF(跨站请求伪造)学习笔记

记录CSRF跨站请求伪造攻击的原理和防御。

发布于 technology

ServerSocket 和 ThreadPoolExecutor学习笔记

ServerSocket部分123456789101112final ServerSocket server = new ServerSocket(9090);server.setReceiveBufferSize(1024 * 4);// 设置缓冲区大小4kdo { try { final Socket client = server.accept(); soaTransPool.execute(new SoaTransPool.SoaCodecTask(client)); } catch (IOException e) { //TODO e.printStackTrace(); }} while (true); 其中,soaTransPool是一个自定义的类,类中定义了ThreadPoolExecutor,以及实现了Runnable的静态类SoaCodecTask. ServerSocket监听9090端口,每当有请求到达,就创建一个socket,使用这个socket构造一个Runnable对象,即SoaCodecTask,再使用ThreadPoolExecutor来执行这个Runnable对象。也就是说,对每个请求创建一个任务,由线程池来执行这个任务。 事实上,ServerSocket的功能就是向系统注册一个服务,然后等待客户端请求,或者从请求队列中取出Socket,至于数据的传递则由Socket完成。 上面的例子中,使用的是线程池的处理方式,接收到的请求由线程池来处理;如果是简单的单线程ServerSocket,则可以这么写: 1234567891011121314151617ServerSocket server = new ServerSocket(9090);Socket client = null;do { try { client = server.accept(); System.out.println("新增链接: " + client.getInetAddress() + ": " + client.getPort()); // ...接收、处理、发送数据 } catch (IOException e) { //TODO e.printStackTrace(); }finally{ if(client != null){ client.close(); } }} while (true); 如果是想用多线程,就如第一个例子中那样,将socket作为参数创建一个Runnable对象,并新建一个线程并start以执行run方法。

发布于 technology

markdown 学习笔记

终于知道为什么github上面每个项目的说明文件都叫README.md,原来是使用markdown语法编写的文档,再通过工具生成html页面,我们在github上打开的readme.md都是经过渲染后的结果。

发布于 technology

巽寮湾

发布于 相册
68