lizhenqiu blog
最新评论流与站内评论搜索
Comment Stream
最新评论聚合
共 2892 条评论
Current Page
链接聚合
链接标签分页
Latest
评论流
第 26 / 145 页
当前展示 501 - 520 条,共 2892 条评论
finally代码块
结论:
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。
如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,
编译器把finally中的return实现为一个warning。
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。
在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去,执行完finally之后,在从中取出返回结果,
因此,即使finally中对变量x进行了改变,但是不会影响返回结果。
它应该使用栈保存返回值。
如果finally中没有return语句,但是改变了要返回的值,这里有点类似与引用传递和值传递的区别,分以下两种情况,: 1)如果return的数据是基本数据类型或文本字符串,则在finally中对该基本数据的改变不起作用,try中的return语句依然会返回进入finally块之前保留的值。 2)如果return的数据是引用数据类型,而在finally中对该引用数据类型的属性值的改变起作用,try中的return语句返回的就是在finally中改变后的该属性的值。
因为使用栈保存返回值,即使finally中执行i++,但是影响不到之前保存下来的具体的值。 所以return影响不了基本型的值。 而修改list ,map,自定义类等引用类型时,虽然进入finally之前保存了引用的地址,所以在finally中引用地址指向的内容改变了, 影响了返回值。
:try{ return;}catch(){return;} finally{return;} 程序执行try块中return之前(包括return语句中的表达式运算)代码; 有异常:执行catch块中return之前(包括return语句中的表达式运算)代码; 则再执行finally块,因为finally块中有return所以提前退出。 无异常:则再执行finally块,因为finally块中有return所以提前退出。 finally中有return会吃掉异常的
1.影响返回结果的前提是在 非 finally 语句块中有 return 且非基本类型 2.不影响返回结果 的前提是 非 finally 块中有return 且为基本类型 这也解释了,为什么Date类型是被修改的,究其本质 基本类型在栈中存储,返回的是真实的值,而引用类型返回的是其浅拷贝堆地址.所以才会改变~
基本数据类型是不能修改的,其他的可以修改,包括date
date类型底层貌似是对long类型的数据的封装,也就是说JVM可能在编译的时候指定了一个常量值保存了起来,所以在finally块中修改的其实不是date底层所指向的那个副本,而是对类似于基本数据类型的修改,所以返回的结果仍然是一开始编译好的时候指定的副本。也就是没变的原因。 而其他的对象(引用类型)则是被finally块中的代码改变了所引用变量的真实数据,所以发生了改变。 也就是说,严格来讲,Date类型是个伪对象类型。 以上均为个人观点,如果有误,还望指出,大家一起研究。 :)
finally代码块
即使try里包含continue,break,return,try块结束后,finally块也会执行。
finally代码块
我觉得当try,finally都有return时,不能叫做覆盖,因为try中的return只执行了表达式,然后放在某个空间,但是并没有执行return(因为一旦执行return程序就结束了),然后执行finally里面的代码,接着finally中遇到return直接结束了程序,所以应该说是执行了try中return的表达式,而被finally中的return提前结束比较好,并不是finally中的return覆盖了try中的return。
对于基本类型而言 是值传递 所以2被缓存的是值 而不是变量的地址 再return出去就是2
String类型不可变 也就是String a = "abc";后,存储"abc"字符串的地址的内容不可变,而a变量的重新赋值是通过指向另一块内存地址来实现的。同int型变量。String型变量暂存的是"abc"的存储地址,因此不会发生变化。你可以用StringBuffer、StringBuilder等可变字符类型来对比。
PHP高并发Redis MySQL重复插入测试笔记
Mysql查询某字段值重复的数据
查询user表中,user_name字段值重复的数据及重复次数
PHP高并发Redis MySQL重复插入测试笔记
php-redis中文帮助手册.chm
处理高并发情况下的DB插入
第一:如果线程1插入订单的过程中,线程2再去插入此时线程2会返回“订单已存在”的提示 ,然后问题是如果线程1插入失败,那么最终结果是数据库里并没有这个订单,但是线程2的用户却看到了“订单已存在” 这样的“错误”提示
第二:关于数据库事务的问题,在ssh这种框架里,经常出现配置的事务是在service方法执行前开启事务,在方法执行完以后提交事务,如果是这种情况的话,那还是会出现数据重复的问题,比如线程1 执行完 MemcacheUtil.del(key); 方法时 此时线程1的事务还没有提交(也就是说数据库里还没有相应的数据),但是缓存里的key已经被删掉了,与此同时线程2看不到数据库里的数据,缓存里的数据也没有
多台服务器部署,MemcacheUtil 要保证是全局的,不然也有问题
php redis 学习笔记
PHP中利用redis实现消息队列处理高并发请求
先将商品库存存入队列:
客户执行下单操作:
欢迎!毛片网址。
http://www.kdw019.com
程序员编程常用网页工具集[游戏]
马云呷了一口茶,定了当年的目标:“阿里要赚一块钱。”|中国电商往事
阿里的电商形态,起于流量,兴于支付,全于物流
@意见反馈/技术支持/伊网/安企网
把“性感”简单直接粗暴的与“女性”挂钩的人审美也一定是简单直接粗暴的
@意见反馈/技术支持/伊网/安企网
到底是“学术研究无禁区”,还是“思想道德无底线”
集权可以跑的很快,但刹不住车
OctoberCms学习笔记中文文档翻译
october CMS 模板
变量:
标签:
过滤器:
功能:
this.page:
this.layout:
this.param:
this.environment
{%content%}
{%占位符%}
模仿优酷首页的一些前端布局
模仿网易梦幻西游游戏西游记师徒四人行走动画css效果 gif背景动画图片 唐僧 孙悟空 猪八戒 沙和尚 西天取经
GitHub代码管理代码托管
git 换行符LF与CRLF转换问题
解决crlf 和 lf不同带来的冲突问题
crlf 和 lf 是文本换行的不同方式:
crlf: "\r\n", windows系统的换行方式
lf: "\n", Linux系统的换行方式
他们之间的不同经常会导致不同会导致使用不同系统的同事之间的代码冲突问题。
在你使用git拉取代码的时候,git会自动将代码当中与你当前系统不同的换行方式转化成你当前系统的换行方式,从而造成这种冲突。
window系统解决办法:
1. 修改git全局配置,禁止git自动将lf转换成crlf, 命令:
git config --global core.autocrlf false
2. 修改编辑器的用户配置,例如vscode
"files.eol": "\n", // 文件换行使用lf方式
OctoberCms学习笔记中文文档翻译
octobercms数据库使用
检索结果
models:
OctoberCms学习笔记中文文档翻译
使Nginx服务器支持.htaccess的方法
nginx可以include任何文件,而不仅仅是.htaccess
在 nginx/nginx.conf的server{}中引入 .htaccess 文件:
欢迎!毛片网址。
https://www.5513aa.com/Html/112/
常用代码2
画布大小,点哪边留哪边
如图,将向上裁剪,底部图片内容不变,顶部图片被裁剪
左右正好相反哦
@意见反馈/技术支持/伊网/安企网
《梦中的婚礼》机械手臂演奏钢琴曲 机器手弹钢琴