发表于: 2017-09-27 23:01:51

1 679


今天完成的事情:

注册七牛云,完成图片上传

创建一个存储空间

找到java的SDK文档,学习一下文件上传

上传本地文件是最简单的,只要给一个路径就行了

  1. //构造一个带指定Zone对象的配置类
  2. Configuration cfg = new Configuration(Zone.zone0());
  3. //...其他参数参考类注释
  4. UploadManager uploadManager = new UploadManager(cfg);
  5. //...生成上传凭证,然后准备上传
  6. String accessKey = "your access key";
  7. String secretKey = "your secret key";
  8. String bucket = "your bucket name";
  9. //如果是Windows情况下,格式是 D:\\qiniu\\test.png
  10. String localFilePath = "/home/qiniu/test.png";
  11. //默认不指定key的情况下,以文件内容的hash值作为文件名
  12. String key = null;
  13. Auth auth = Auth.create(accessKey, secretKey);
  14. String upToken = auth.uploadToken(bucket);
  15. try {
  16. Response response = uploadManager.put(localFilePath, key, upToken);
  17. //解析上传成功的结果
  18. DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
  19. System.out.println(putRet.key);
  20. System.out.println(putRet.hash);
  21. } catch (QiniuException ex) {
  22. Response r = ex.response;
  23. System.err.println(r.toString());
  24. try {
  25. System.err.println(r.bodyString());
  26. } catch (QiniuException ex2) {
  27. //ignore
  28. }
  29. }

这里需要一个access key,secret key和bucket,在注册之后都会有

根据你选的机房来选择Zone对象

给它一个测试类,运行一下

这个外链地址和文件名应该都有用,留意一下

看了一波老大讲的网站请求响应的时间流程

第一部分前端的响应,一般包括解析和渲染,这部分的性能跟前端的代码,前端硬件有关系。
第二部分就是网络延迟,这部分的代码正常来讲是在8~16MS左右,Http请求就是差不多这个性能。
第三部分就是服务器端的响应,我们说的网站慢,一般而言,也就是主要在这里,要做性能优化的地方,基本上也是看这里。

服务器端的响应时间,要看Nginx的Access.log

Access.log里会记录服务器端自己的响应时间,这是后端查看性能的重要依据。

Nginx相当于是一个大的总管,所有的请求都是先到Nginx这里来,然后再发给后面的Tomcat,或者是Resin什么的。

Tomcat本身也会有一个日志记录,也是Access.log

Tomcat里的时间其实还可以再分解的更细一些。第一个接受到响应的就是Controller,而Controller通常是用来控制Service的

所以Tomcat响应的时间可以分为:
1.Controller的处理时间
2.Service的调用时间
3.返回结果的处理时间

controller本身的处理事情,一般都会是在开始和结束各打一条毫秒数,这是所有的业务逻辑处理的总时间。调用各Service的时间包含网络传输和Service的响应时间。返回结果的时间一般都是解析成Json的时间。
生成Json的时间通常很短,很短,网络传输的时间说不好,RMI的话,除第一次建立连接外,几乎可以忽略不计,但是一个Controller里调用上百次的话,速度就会慢起来。Http无疑是最慢的,单纯建立就要花几MS。

那么,Controller那里应该怎么统计时间呢?
一般而言,我们会手写一个AOP的Util。并不会在Controller里手写StartAt和EndAt。
这个Aop写起来很容易,正常来讲,会在代码里这么写:
如果超过了50MS,记录日志,入参,时间。
如果不超过50MS,不记录。

而service里又可能涉及到了获取数据的时间,同理,可以用AOP的性能统计util来统计获取数据库数据的时间。

这样service的时间就可以分成本地运算和获取数据的时间。

而获取数据也可以分为从数据库获取和从缓存获取,这个时间差别也是很大的。

在做项目的时候,我们应该熟悉线上环境中项目各个环节所需的时间,这样有利于进行性能优化,能够非常快速的定位问题

明天计划的事情:

整合这些第三方API到项目中,测试


返回列表 返回列表
评论

    分享到