发表于: 2017-11-29 23:55:48

1 694


今天做的事情:


                                                          做一个小决定,分享每天一些面试小题。

            

             


                     代码:

                         

  //值传递和引用传递的测试
   public static void testPassParameter(StringBuffer ssl,int n){
//        ssl.append("world");
       n = 8;
ssl = new StringBuffer("World");
System.out.println(ssl);
}
//在方法调用的时候,将sl的值赋给ssl,ssl在调用 new StringBuffer("world"); 改变了ssl的值,指向了world。而对sl没有影响
   //从这个角度看StringBuffer从本质上讲还是值传递,通过值传递的方式来传递引用传递。

   /**
    * 形参全称为“形式参数”,是在定义方法名和方法体的时候使用的参数,目的是用来接收调用该方法时传递的参数,
    * 他的作用是整个方法体,是在方法调用是的一个临时变量,实参主要出现在
    * 主调方法里面。在方法调用时将值给形参,在被调用的方法的内部只能使用形参,不能使用实参。
    *
    */
   public static void main(String[] args) {
int i = 1;
StringBuffer sl = new StringBuffer("Hello");
testPassParameter(sl,i);
System.out.println(sl);
System.out.println(i);
}

                          控制台信息:

                        

                      

从运行结果可以看出, int作为参数时,对形参值的修改不会影响到实参,对于StringBuffer类型的参数,对形参对象内容的修改影响到了参。为了便于理解,int类型的参数可以理解为按值传递,StringBuffer类型的参数可以理解为引用传递。为了便于理解,Java课本中会经常提到在Java应用程序中永远不会传递对象,而只传递对象引用,因此,是按引用传递对象。从本质上来讲,引用传递还是通过值传递来实现的,Java语言中的引用传递实际上还是值传递(传递的是地址的值)


                   

                    这张图片是之前老大在群里转发的一篇文章,一年经验所具备的能力。在以前我粗浅的看过,上午正好看过这个值传递,下午翻知乎就又看到了。有新的感悟,理解的更深刻。


                  所以,每天多挤出一点时间,去看基础,去看之前任务中的深度思考。时间挤一挤,还是有的,碰到实际问题,也有很多帮助。如果我没有看这个值传递,可能看这篇文章还是只是看看而已。


                七牛元demo,和集成到自己项目。


                 效果图:


              jsp页面:

             

<td>
<form action="<%=request.getContextPath()%>/upload" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="${u.id}" />
请选择上传文件:<input type="file" name="file" /><br/>
<input type="submit" value="上传" />
</form>
</td>

                需要特别注意一下 multipart ,稍后会补充。



                controller:

@RequestMapping(value = "/upload",method = RequestMethod.POST)
public String applyRefister(MultipartFile file, Long id,HttpServletRequest request) throws IOException {
// String filename=file.getOriginalFilename();

 //  String suffix = filename.substring(filename.lastIndexOf(".") + 1);

   String filename= UUID.randomUUID().toString().replace("-", "")+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
logger.info("图片名称:"+filename+"和用户id"+id);
// UploadPicture.uploadPic(s,filename);
   this.qiNiuYunHeadPic.QiniusendImage(file.getBytes(),filename);
String headinfo = "http://ozv40frey.bkt.clouddn.com/" + filename;
logger.info("headinfo :"+headinfo);

int i = serviceI.addPicById(headinfo,id);
if(i==0){
return "error2";
}else{
return "success2";
}
}

 

                 数据库信息:存储的七牛云的外链。在jsp页面使用img标签,就可以显示。

              




              

遇到的问题:


             下午一直在做这个上传,使用表单提交,并没有一个绝对路径,思路有问题,一直在拼接这个路径,这样是不行的,在处理代码时,使用字节流上传可以实现。


           


收获:


             对使用第三方API有很多认知,知道从什么下手,遇到问题,认真查看文档。对java中的值传递和引用传递有很多的认识,还有一些零散的知识点,ok,提交任务七。

             最后一点,早上在找之前发的文档,没有找到,然后一直忙着也忘了,抱歉师兄。还是没有链接。




返回列表 返回列表
评论

    分享到