madfrog

madfrog

使用netty构建http服务器

近期需要对得到的搜索关键词做敏感词过滤,本来的想法是自己通过建立敏感词库,然后通过本地词库的匹配来实现,但是查询的效率上不好保证,通过在网上查询找到海鸥api可以实现,由于是在公网上查询,并且查询量也比较大,就考虑把查询过的敏感词存储到hbase中,下次查询如果在hbase中命中的话,就不用频繁调用api去查询了。 使用netty作为服务端接受传递的字符串,首先去hbase中查询,如果命中,直接返回包含敏感词,如果hbase中没有命中,就调用海鸥的接口查询,返回不包含敏感词就返回不包含敏感词,如果返回包含敏感词,解析返回的结果把敏感词存储到hbase中,返回包含敏感词。 在使用netty的过程中,遇到了不少的问题,netty是比较通用的框架,底层使用异步事件处理模型,作为http服务器的时候也只是在channel中添加一个HttpServerCodec的编解码包。 还可以添加自定义的handler来处理request请求,然后根据request中的url来分别处理并且返回response,但是习惯了使用spring开发接口服务,对于使用netty怎么实现类似spring的MVC结构不清楚,开发起来还是很别扭的,这个业务的逻辑比较简单,也只是对外提供一个接口,所以直接就在一个handler中处理了,

ubuntu安装scrapy需要的依赖

ubuntu安装必要的编译环境是apt-get install build-essential()(centos是 yum groupinstall "Development Tools") ubuntu直接使用pip install scrapy会出现twisted/test/raiser.c:4:20: fatal error: Python.h: No such file or directory错误,这种情况需要安装python的dev依赖apt-get install python-dev python-pip libxml2-dev libxslt1-dev

angularjs传递json形式参数的问题

在使用angularjs内置的$http的服务时,在js中还是像往常使用jquery的$.ajax的方式在data中放置json对象发送到后台的时候,在spring controller的方法中接收不到js传递过来的参数。 通过查询资料得知,使用$.ajax方法向后台发送请求的时候使用的Content-Type是application/x-www-form-urlencoded;charset=utf-8,然而angularjs的$http请求使用的Content-Type是application/json;charset=utf-8,因此在controller中使用HttpRequestServlet中的request.getParam方法的使用获取不到传递的参数。 有两种方法可以解决这个问题: 通过修改$http服务的配置,使它的Content-Type是application/x-www-form-urlencoded;charset=utf-8 可以通过$httpProvider.defaults.headers.post['Content-Type'] ='application/