之前调试只发现有的方法执行完return语句后再执行finally,但是没有细究
最近debug代码的时候发现,不同返回类型的方法,return和finally执行顺序竟然不一样
继续执行:
继续:
发现执行顺序是:
try中代码->finally代码->try中的return,是先执行finally,再执行return
继续执行:
发现竟然直接到了return,继续:
开始执行finally,执行顺序为:
try中代码->try中return->finally,而且此方法返回值依然为1,x=100会执行,但不会返回
原因:
void方法的return就是返回,return是方法的最后一步,当然先执行finally
int方法或其他有返回值的方法,return实际是将返回值赋值给一个匿名变量,并在最后返回前加载该变量到栈顶,然后执行返回,所以debug执行testx时,执行return x并不是直接返回,只是把x的值赋给了一个匿名变量
补充:
JDK 7之后提供了try with resource的方式,会在代码块执行完毕后执行Closeable的close方法,释放资源
所以finally的在业务上的使用场景其实并不多,此处解释为了方便源码调试时的理解
至少我们曾经在一起过。来自:一言varxhr=newXMLHttpRequest();xhr.open('get','https://v1.hitokoto.cn/');xhr.onreadystatechange=function(){if(xhr.readyState===4){vardata=JSON.parse(xhr.responseText);varhitokoto=document.getElementById('hitokoto');hitokoto.innerText=data.hitokoto;}}xhr.send();前言CobaltStrike(简称‘cs’)自带了ssl证书,不过该证书已经被杀软标记了[aru_3],所以我们得生成自己的免费证书替换掉cs自带的证书,监听的时候选https的。该操作从渣渣辉博客学到的[aru_14],偷一手干货,以下是我使用的cs版本,有需要的朋友欢迎进群下载哦~证书生成1.利用keytool生成自己的免费证书(可在kali上生成)keytool-genkey-alia
一、KeyInput通过编辑器设置一个键盘按键:usingUnityEngine; usingSK.Framework; publicclassExample:MonoBehaviour { [SerializeField]privateKeyInputaInput; }复制通过代码设置一个键盘按键:usingUnityEngine; usingSK.Framework; publicclassExample:MonoBehaviour { privateKeyInputaInput; privatevoidStart() { aInput=newKeyInput(KeyCode.A); } } 复制开启按键监听: //开启按键监听 aInput.BeginListening();复制停止按键监听:复制//停止按键监听 aInput.StopListening();复制按键按下、持续按下、抬起:复制usingUnityEngine; usingSK.Framework; publicclassExample:MonoBehaviour { privateKeyInputaInp
前言随着可视化技术的进步与发展,传统再生水厂组态系统所展示的组态页面已逐渐无法满足当前现阶段多样化的展示手段。使得系统对污泥处理处置及生产运行成本方面的监控、分析方面较为薄弱,急需对信息化应用成果和各项信息资源进行多元化的展示并支持多元化终端的便捷访问。图扑软件HT可视化技术采用B/S架构,通过对传统二维的水厂组态图进行重构设计,对接测点数据实现Web化跨平台多端访问,无论是PC、PAD或是智能手机打开浏览器,即可随时访问监控场景。并支持集成至B/S端,与其他主流前端框架如Angular、React和Vue等无缝融合,打破了以往用户在控制室内控制场景的局限性,通过数据驱动形式让新型组态得以使用2D/2.5D等不同形式实现多样化展示。效果展示本期案例介绍的是对再生水厂厂区内的主要工艺流程进行2D/2.5D可视化设计,根据业务单元“消化池系统”、“絮凝剂系统”、“外来污泥接收系统”进行分类设计,结合接入测点后监测到的实时数据,直观呈现工艺流程和工艺设备的运行状态。消化池系统什么是污泥的消化?厌氧消化是利用厌氧微生物经过水解、酸化、产甲烷等过程,将污泥中的大部分固体有机物水解、液化后并最终分
juejin.cn/post/6973257605367988260axios作为我们工作中的常用的ajax请求库,作为前端工程师的我们当然是想一探究竟,axios究竟是如何去架构整个框架,中间的拦截器、适配器、取消请求这些都是我们经常使用的。前言由于axios源码中有很多不是很重要的方法,而且很多方法为了考虑兼容性,并没有考虑到用es6的语法去写。本篇主要是带你去梳理axios的主要流程,并用es6重写简易版axios拦截器适配器取消请求拦截器一个axios实例上有两个拦截器,一个是请求拦截器,然后响应拦截器。我们下看下官网的用法:添加拦截器//添加请求拦截器 axios.interceptors.request.use(function(config){ //在发送请求之前做些什么 returnconfig; },function(error){ //对请求错误做些什么 returnPromise.reject(error); }); 复制移除拦截器constmyInterceptor=axios.interceptors.request.use(function(){/*...*
大数据文摘出品作者:Caleb1997年9月21日,山东聊城,郭刚堂儿子郭新振在家门口被拐走,郭刚堂由此踏上漫漫寻子路。那年,郭新振仅有2岁5个月零17天。2015年3月20日,改编自郭刚堂亲身经历的电影《失孤》上映,也让更多的观众认识了这位骑着摩托车寻子的父亲。那年,郭刚堂已骑行将近40万公里,报废了10辆摩托车,一天最多曾骑过720多公里路。电影《失孤》剧照,有网友发现,剧照中的电话号码是可以打通的。2021年7月11日,寻子将满24年之际,51岁的郭刚堂终于和儿子重聚。 现场视频中,郭刚堂与妻子抱着郭新振失声痛哭,反复说到,“我的宝贝啊,你可回来了”,郭新振用普通话安慰父母说,“儿子已经回来了,您不要再哭了”。7月13日,公安部召开新闻发布会披露了这起案件详情,并介绍查找被拐失踪儿童专项行动“团圆行动”的开展情况。据了解,当年拐卖郭新振的为一对情侣,女子唐某是山东人,男子呼某是河南人,拐卖的目的则是图财。拐卖当天,二人旅行至山东聊城,唐某外出寻找作案目标,将在家门口独自玩耍的郭新振抱走,在长途汽车站与呼某会合,搭上开往河南的班车。父子一别,就是24年。身体特征+DNA对比,郭刚堂
一、概述说到Android中的文件下载,AndroidAPI中明确要求将耗时的操作放到一个子线程中执行,文件的下载无疑是需要耗费时间的,所以要将文件的下载放到子线程中执行。下面,我们一起来实现一个Android中利用多线程下载文件的小例子。二、服务端准备 在这个小例子中我以下载有道词典为例,在网上下载有道词典的安装包,在eclipse中新建项目web,将下载的有道词典安装包放置在WebContent目录下,并将项目发布到Tomcat中,具体如下图所示三、Android实现1、布局界面上自上而下放置一个TextView,用来提示文本框中输入的信息,一个文本框用来输入网络中下载文件的路径,一个Button按钮,点击下载文件,一个ProgressBar显示下载进度,一个TextView显示下载的百分比。具体布局内容如下:<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&qu
前提今天(2020-01-18)在编写Netty相关代码的时候,从Netty源码中的ThreadDeathWatcher和GlobalEventExecutor追溯到两个和线程上下文类加载器ContextClassLoader内存泄漏相关的Issue:ThreadDeathWatchercausescustomclassLoaderscriptmemoryleaksEnsureThreadDeathWatcherandGlobalEventExecutorwillnotcauseclas…两个Issue分别是两位前辈在2017-12的时候提出的,描述的是同一类问题,最后被Netty的负责人采纳,并且修复了对应的问题从而关闭了Issue。这里基于这两个Issue描述的内容,对ContextClassLoader内存泄漏隐患做一次复盘。ClassLoader相关的内容一个JVM实例(Java应用程序)里面的所有类都是通过ClassLoader加载的。不同的ClassLoader在JVM中有不同的命名空间,一个类实例(Class)的唯一标识是全类名+ClassLoader,也就是不同的Cla
有多少人做的是癌症相关研究,但其实对自己的研究对象了解很少,只是一些流行病学指标,全球各大国家地区的发病率和死亡率。所以前些天我推荐了:《高通量测序技术在肺癌领域的应用(书籍推荐)》,很多粉丝留言说看得非常过瘾。那就再推荐一些癌症背景知识学习资源。是搜索免疫系统构成无意中发现的CancerQuest:https://www.cancerquest.org/zh-hans/aizhengshengwuxue/mianyixitongCancerQuest是埃默里大学的一个癌症教育和外展项目。我们提供关于癌症生物学和治疗的可靠信息。了解更多关于CancerQuest项目和CancerQuest工作人员请参阅:来自主管的话项目幕后工作人员声明法律政策网站导航联系CancerQuest因为定位是教育,所以概念名词解释里面有大量的动图和小动画短片,适合学习。癌症生物学生物组成部分-生物体中的分子内信息。包括蛋白质、碳水化合物、脂肪和核酸。细胞结构-讨论细胞内的功能性结构,称做细胞器。细胞器包括细胞核、线粒体和细胞骨架。细胞周期-细胞生长和分裂时细胞经历的时钟一样的流程。细胞分裂-包括正常细胞的分
因为在采集中有图像解析的需求,如今将爬虫架构部署在docker中,需要配置一个PIL中image包的情况,因错误较多。故记录下来。主要参考链接是:http://www.linuxdiyf.com/linux/18829.htmlhttp://www.linuxdiyf.com/linux/18576.htmlPIL安装 1.安装依赖包 1.1ubuntu安装apt-getinstallpython-dev apt-getinstalllibjpeg-dev apt-getinstalllibjpeg8-dev apt-getinstalllibpng3 apt-getinstalllibfreetype6-dev ln-s/usr/lib/`uname-i`-linux-gnu/libfreetype.so/usr/lib ln-s/usr/lib/`uname-i`-linux-gnu/libjpeg.so/usr/lib ln-s/usr/lib/`uname-i`-linux-gnu/libz.so/usr/lib复制或者sudoapt-getbuild-deppython-im
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/Solo95/article/details/85017049整理并翻译自吴恩达深度学习系列视频:卷积神经网络1.9 PoolinglayersOtherthanconvolutionallayers,ConvNetsoftenusepoolinglayerstoreducethesizeoftheirrepresentationtospeedupcomputation,aswellastomakesomeofthefeaturesitdetectsabotmorerobust. 与卷积层不同,卷积网络通常使用池化层去减小其(图像)表示以加速计算,同时使其检测出的特征更加健壮。 这是一个最大池化的例子,使用2X2的filter在4X4block上做最大池化(即取最大值)。注意我们不仅选取f=2f=2f=2,也取了strides=2s=2s=2,因此我们最后得到了一个2X2的block,按颜色对应如上图。计算output维度变为: ⌊n+2p−fs+1⌋\lfloor\frac{n+2p-f}
源/程序君&小象编/昱良数据可视化的工具和程序库已经极大丰盛,当你习惯其中一种或数种时,你会干得很出色,但是如果你因此而沾沾自喜,就会错失从青铜到王者的新工具和程序库。如果你仍然坚持使用Matplotlib(这太神奇了),Seaborn(这也很神奇),Pandas(基本,简单的可视化)和Bokeh,那么你真的需要停下来了解一下新事物了。例如,python中有许多令人惊叹的可视化库,而且通用化程度已经很高,例如下面这五个:PlotlyCufflinksFoliumAltair+VegaD3.js(个人认为最好的选择,因为我也用JS写代码)如果您了解并使用上面提到的库,那么您就处于进化的正确轨道上。它们可以帮助生成一些令人拍案的可视化效果,语法也不难。一般来说,我更喜欢Plotly+Cufflinks和D3.js.以下详细道来:PlotlyPlotly是一个开源,交互式和基于浏览器的Python图形库。可以创建能在仪表板或网站中使用的交互式图表(您可以将它们保存为html文件或静态图像)。Plotly基于plotly.js,而plotly.js又基于D3.js,因此它是一个高级图表
您在一年前讨论大数据将与今天的对话截然不同。我们最近看到数据科学从外围功能显着转变为核心功能,更大的团队解决日益复杂的分析问题。我们已经看到数据科学平台的快速发展和对数据和分析团队的巨大影响。但是,在数据,分析和机器学习方面,存在哪些惊喜呢?数据科学将在一年内谈论什么新的发展?以下是我们的三个预测:大数据的收益递减:数据的大小不再是重点。我们越来越多地看到更大的数据通常不会更好。公司意识到,提取更多数据可能无法帮助他们更有效地解决某些问题。尽管如果干净的数据更多的数据可能是有用的,绝大多数的业务用例都会减少边际回报。更多的数据实际上可以减缓创新,使得数据科学家在测试需要更长时间并需要更多的基础设施时,更难以快速迭代。与较少数据集的实验相比,实验和迭代更快将导致更好的模型和结果。麻省理工学院研究员KalyanVeeramachaneni写道:“如果公司希望从数据中获得价值,他们需要专注于加速人们对数据的了解,缩短在短时间内可以询问数据的建模问题数量。事实上,财富500强企业将采取更灵活和更迭的方法,重点是从更高质量的数据样本中学习更多。他们将使用技术来提取更具代表性的数据示例,从而可以从
由于近期更换了工作,深圳市民赵先生想要查询新的单位社保是否正常缴纳。与过去亲自跑一趟社保局不同,他在支付宝城市服务“电子社保卡”栏目中轻松地了解到自己的社保缴纳情况,养老、医疗、工伤和失业四项明细清晰罗列。智慧社保是深圳数字经济正在渗透到生活方方面面的一个缩影。在今年紫光旗下新华三集团发布的《中国城市数字经济指数白皮书(2017)》中,深圳也力压群雄,成为全国各大城市中处于数字经济发展的领头羊。新华三集团总裁兼首席执行官于英涛数字化技术在民生和治理领域得到广泛尝试新华三发布的这份《中国城市数字经济指数白皮书(2017)》是我国首个针对城市数字经济的综合评估体系。在长达8个月的时间里,新华三集团数字经济研究院综合借鉴权威政策规划及第三方数据,对中国40座城市数字经济指数进行了调查。评价指标不局限于某项阶段性热点技术,而与城市发展及政策相结合,谋求为中国城市数字经济发展与评估进行系统性、前瞻性研究,探索可持续发展路径。《白皮书》指出,数字化技术在民生和治理领域得到了广泛尝试,部分城市将数字经济作为实现跨越式发展的重要抓手,数字化技术也已成为城市经济结构转型、改善民生、优化治理的强有力手段。
前言机器学习技术为现代社会的许多领域提供了强大的技术支持:从网络搜索到社交网络的内容过滤,再到电子商务网站的产品推荐。机器学习技术正越来越多的出现在消费级产品上,比如照相机和智能手机。机器学习系统可用于识别图像中的对象,将语音转换成文本,选择搜索结果的相关项,以及匹配新闻、帖子或用户感兴趣的其他东西。类似的应用越来越多,它们都使用了一种叫做深度学习的技术。深度学习(也称为深层结构学习、层次学习或深度机器学习)是基于对数据中的高级抽象进行建模的算法,它属于机器学习的分支。最简单的例子,你可以有两组神经元:接收输入信号的神经元和发送输出信号的神经元。当输入层接收到输入时,它将输入的修改版本传递给下一层。在深层网络中,输入和输出层之间有很多层(层并不是由神经元构成,这里只是为了帮助你思考),这些层允许算法使用多个处理层,这些层包含了多个线性和非线性变换。近来,深度学习技术使得机器学习发生了革命性的变化,并出现了很多伟大的成果。它们大大改进了语音识别、视觉对象识别、对象检测以及许多其他领域(如药物发现和基因组学)的技术。“深度学习”这个术语最早由Dechter(1986)引入机器学习,由Aiz
前言 先带来日常的GScript更新:新增了可变参数的特性,语法如下: intadd(strings,int...num){ println(s); intsum=0; for(inti=0;i<len(num);i++){ intv=num[i]; sum=sum+v; } returnsum; } intx=add("abc",1,2,3,4); println(x); assertEqual(x,10); 复制 得益于可变参数,所以新增了格式化字符串的内置函数: //formatsaccordingtoaformatspecifierandwritestostandardoutput. printf(stringformat,any...a){} //formatsaccordingtoaformatspecifierandreturnstheresultingstring. stringsprintf(stringformat,any...a){} 复制 下面重点看看GScript所支持的运算符重载是如何实现的。 使用 运算符重载其实也是多态的一种表
昨晚看springboot视频的时候,发现可以使用docker-maven-plugin这个插件直接build出docker镜像到远程服务器上,感觉很方便,于是自己也试了一下,但是碰到了几个问题,记录一下。 一、开启docker远程端口 视频中使用的是centos,然而我是Ubuntu。好吧,其实没啥区别,但是还是有一点小区别的,,比如文件位置不同。 Ubuntu下需要编辑的文件为 vim/etc/default/docker 复制 在最后一行加上 DOCKER_OPTS="-Hunix:///var/run/docker.sock-Htcp://0.0.0.0:6732" 复制 好,我们把端口设置为了6732,视频中就讲了这个,可能是系统原因,此时我本地用Telnet访问这个端口是不通的。 我们还需要 vim/lib/systemd/system/docker.service 复制 增加一行 EnvironmentFile=-/etc/default/docker 复制 指定使用我们刚才编辑的文件 然后修改 ExecStart=/usr/bin/dockerd-Hfd:// 复制 为
转自:https://www.cnblogs.com/pengdonglin137/p/16342898.html 参考 Linuxmem2.8Kfence详解 Linux内核调测中最最让开发者头疼的bug有解了 让人头疼的“内核内存被改”和“内存泄露”怎么解? 内核内存错误检测工具KFENCE 作者 pengdonglin137@163.com 内核版本 linux-5.14 实现分析 Kfence(KernelElectricFence)是Linux内核引入的一种低开销的内存错误检测机制,因为是低开销的所以它可以在运行的生产环境中开启,同样由于是低开销所以它的功能相比较KASAN会偏弱。 Kfence是一种基于采样的低开销的内存安全错误检测技术。可以检测UAF、非法释放、OOB三种内存错误,目前支持x86和ARM64,它在slab和slub内存分配器中添加了hook函数。 Kfence的设计理念:如果有足够长的总的运行时间,kfence可以在非生产环境的测试程序无法充分测试的代码路径上检测到bug。可以通过大范围部署kfence来快速达到足够长的总运行时间。 Kfe
首先获得一个图片对象 1DimspicAsStdPicture 2Setspic=LoadPicture("d:\0.bmp")'从文件获得 3Setspic=Clipboard.GetData'从粘贴板获得复制 方法一: DimwAsLong,hAsLong w=spic.Width/26.4591h=spic.Height/26.4591复制 方法二: DimwAsLong,hAsLong w=ScaleX(spic.Width,vbHimetric,vbPixels) h=ScaleY(spic.Height,vbHimetric,vbPixels)复制 方法三: '声明API PrivateDeclareFunctionGdiGetObjectLib"gdi32"Alias"GetObjectA"(ByValhObjectAsLong,ByValnCountAsLong,lpObjectAsAny)AsLong PrivateTypeBITMAP'14bytes bmTypeAsLong bmWidthAsLong bmHeightAsLong bmWidthBy
一、redis操作 importredis r=redis.Redis(host='211.149.218.16',port=6379,password='123456',db=2) r.set('suki','suki123')#插入string类型的值 print(r.get('suki').decode())#redis读取出来的值都是Byte类型,用decode转为字符串 r.delete('suki') r.setex('suki','hahahaha',10)#指定key的失效时间r.setex(key,value,时间) #hash类型 r.hset('sessions','suki','123456')#rediskey:sessionsrowkey:suki print(r.hget('sessions','suki'))#获取数据 print(r.hgetall('sessions'))#获取所有数据 redis_data=r.hgetall('sessions') all_data={} fork,vinredis_data.items(): k=k.
爬楼梯问题: 实际是求排列数。即:对于爬上3层,先2后1和先1后二是两种不同的方法。 状态定义:dp[i]表示到达第i层的方法有多少种。 状态转移:dp[i]=dp[i-1]+dp[i-2]; 零钱兑换问题: 实际是组合数问题。即:要凑3块钱,先选择2块还是先选择1块的零钱都只算1种方法。 子问题定义:对于硬币从0到k,必须使用第k个硬币时当前金额的组合数。 状态定义:dp[i]表示对于选择第k个硬币时凑到金额i的组合数。 状态转移:dp[i]=dp[i]+dp[i-coin[k]]; 关键:因为外循环时先遍历硬币种类数,所以其实这里规定了硬币的顺序,即排除了同样组合硬币的其他排列方式。