发表于: 2017-09-06 09:14:29
1 998
一.今天完成的主要事情
1.初步了解java rmi的概念,编写了一个demo.
首先,创建一个maven工程,该工程有两个模块,一个服务端模块,一个客户端模块
然后,在服务端编写一个接口,该接口继承Remote接口,这个接口中的方法就是服务端开放给客户端的方法,客户端能够通过rmi远程调用该接口定义的方法.如图
接口中只有一个实例方法,同时接口中的方法都要抛出RemoteException,因为远程调用很有可能会出问题.
接着编写该接口的实现类
该实现类实现UnicastRemoteobject类并同时继承Hello接口和Serializable接口,实现类必须继承UnicastRemoteobject类才可以在网络中传输,而传输之前必须要先序列化.
最后在启动srver类中编写main方法.
其中,LocateRegistry 用于获取特定主机(包括本地主机)上的远程对象注册表的引用,而Naming.rebind()将helloServer对象绑定到远程对象注册表中.
然后是客户端的编写,
客户端主要是在main方法中通过Naming.lookup()查找远程对象注册表中的对象,然后调用对象中的方法.最后要处理各种异常.
执行时先执行服务端,执行结果
结果打印服务启动,然后再执行客户端:
客户端没有显示,但是在服务端却显示结果,说明客户端调用的是服务端对象中的方法.
2.将任务七的项目通过java rmi分为web和service两部分.
在service部分创建接口,使原来的service类实现该接口,然后service类自己继承UnicastRemoteobject并实现序列化接口,接着编写一个StartService类,类中有main方法,main方法中创建对象,并将对象注册到远程对象注册表中.
在web端需要引用的service对象的地方用Naming查找远程对象注册表中已经注册的对象
代码就不贴了,原理和demo是一样的
二.明天的计划
1.用spring rmi对项目进行拆分.
2.如果有时间,完成nginx跨域的配置
三.遇到的问题
1.遇到端口被占用的问题,后来换了一个不常用的端口解决
2.公共的接口必须要在同一个包下,否则会报错
一开始没有注意到这个问题,项目运行报错,然后通过百度,谷歌等发现这个问题,依然是通过搜索引擎解决.
四.收获
以上
实现该功能的同时,也发现了java rmi的问题,就是需要创建的接口太多了,像我的service层中有三个service类,那么就要编写三个接口,如果有七八个就要编写七八个接口,这些接口实际上没有其他的作用,项目非常臃肿,不知道spring rmi能不能解决这个问题,明天实现后比较一下.
五.任务进度
禅道链接: http://task.ptteng.com/zentao/project-task-259.html
暂无延期风险
以下是昨天的日报内容,昨天写好忘记提交,交了5分的智商税...
一.今天完成的主要事情
1.将项目部署到服务器,编写统计第三方API执行情况的脚本
首先,日志格式为:
可以以"]"为分割符,将INFO和ERROR部分抽取出来统计
脚本代码如下:
利用awk命令分别统计INFO级的日志数量和ERROR级的日志数量,脚本运行结果如下:
可以得到第三方api的错误率.这里统计的是项目中所有第三方api的错误率,如果要统计某个第三方api的错误率也是相同的原理,
先配置日志文件,让该api所在类的日志单独输出到一个文件中,然后编写相应脚本,脚本基本同上,只是修改LOG_PATH变量即可,然后运行脚本.
2.关于任务要求中的内容
(1).关于短信通道的防攻击策略,邮箱的防攻击策略
针对短信接口和邮箱接口的攻击有两种,一种是有人调用机器代码恶意攻击,它会随机生成手机号码,短时间内多次的调用第三方接口,不仅大量消耗第三方接口的资源,同时也因为对用户手机产生垃圾短信带来相当大的负面影响,针对这种攻击,PC端最常用的方式就是图文验证,触点验证或者滑动验证等,接班呢就可以杜绝机器代码恶意攻击.还有一种是有个别人比较闲,没事干喜欢发短信,这种攻击靠图文验证是不能杜绝的,这种方式可以通过限制同一个IP,在一小时或一天内发送的短信数量总和杜绝,像阿里云就会对同一个手机号,在一小时内和一天内的发送次数有限制.对于邮箱的策略同短信一样.
(2).七牛云和阿里云如何做缩略图,防盗链
七牛云的缩略图可以通过界面设定和增加url参数两种方式,增加url参数的方式是通过将生成的图片url的尾部再加入一个imageView参数设定,生成缩略图的方式通过imageView的参数指定,具体可以在官方文档中找到,生成缩略图后可以将其转化为持久化存储,得到一个访问缩略图的url,通过这个最后的url就可以访问缩略图.阿里云的缩略图和七牛类似,也是在原图片的url之后添加参数进行缩放和裁剪,具体参数代表的含义官方文档中都介绍的很详细,在项目中可以根据需求进行设置.
盗链是指在自己的页面上展示一些并不在自己服务器上的内容.通常的做法是获得他人服务器上的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容.防盗链系统是就是防止别人通过一些技术手段绕过本站的资源展示页面,盗用本站的资源.实施了防盗链系统后,因为屏蔽了盗链的间接资源请求,从而可以大大减轻服务器及带宽的压力.
七牛云的防盗链是采用在url中添加时间戳的方式,可以通过调用相应的代码构建时间戳防盗链url,阿里云的防盗链是通过识别HTTP请求头的Referer字段的值来实现,阿里云存储会检查相应的请求的Referer字段是否为用户设定的url,如果不是,则拒绝访问云存储中的资源.
(3).七牛云和阿里云存储的功能对比
上传文件:七牛云的客户端上传功能更为强大,可以实现不通过业务服务器直接从客户端上传至云存储,而.阿里云的服务器上传功能更为丰富,比如像追加上传,分片上传,上传进度条等功能七牛就没有.经过测试,七牛云上传文件的速度更快一些,而阿里云支持上传单个文件的最大大小更大,阿里支持单个文件为5G,而七牛只有500M.
下载文件:阿里云的功能要比七牛云的功能更为丰富和强大,支持流式下载,下载到本地文件,断点续传下载,范围下载等功能,而七牛云的下载则要通过客户端才能完成.
管理文件:两者都有,增加,删除,复制,查看,管理文件生命周期,抓取网络资源等基本功能,而阿里云还提供判断文件是否存在,通过前缀和分页获取文件.模拟文件夹等功能,七牛则提供了修改文件类型的功能
其他功能:方面,两者都提供了设置访问日志和设置防盗链的功能,跨区域复制,图片处理,跨区域处理等功能.阿里云还提供跨域资源共享,静态网站托管七牛则提供了刷新文件和目录,文件预取,获取域名流量,获取域名带宽等功能.
额外说下图片处理功能,七牛有控制台和代码两种管理方式,可以实现缩放,裁剪,持久化,水印等功能,阿里云除以上功能外还有调整亮度,样式,旋转等功能,更加丰富一些.
3.初步了解java的RMI.
全名是remote method invoked,执行远程方法的意思,大意就是像执行同一个JVM环境下的方法一样执行另一个JVM环境下的方法.通过stub和skeleton模型实现,大概流程是这样:
Client<--->stub<--->[NETWORK]<--->Server_with_skeleton
二.明天的计划
1.开始任务八,先从java的rmi开始,然后用spring整合
评论