2020
10-10
10-10
Java内部类的实现原理与可能的内存泄漏说明
在使用java内部类的时候要注意可能引起的内存泄漏代码如下packagecom.example;publicclassMyClass{publicstaticvoidmain(String[]args)throwsThrowable{}publicclassA{publicvoidmethed1(){}}publicstaticclassB{publicvoidmethed1(){}}编译生成了如下文件反编译MyClass反编译MyClassA反编译GlassB从反编译的结果可以知道,内部类的实现其实是通过编译器的语法糖实现的,通过生成...
继续阅读 >
最近在做一个项目,需要用到非对称加密,但是出现一个很诡异的情况,本地开发环境是Windows环境,测试环境是Linux环境,出现一个问题,那就是本地环境与开发环境同一个私钥字符串加密加密同一个信息,得到的加密结果不一样。经过查询网络得知,这是由于填充的规则不同导致。原来的加密的部分代码byte[]keyBytes=Base64.decodeBase64(privateKey);PKCS8EncodedKeySpecpkcs8KeySpec=newPKCS8EncodedKeySpec(keyBytes);KeyFac...
并行流并行流是一个把元素分成多个块的流,每个块用不同的线程处理。可以自动分区,让所有的处理器都忙起来。假设要写一个方法,接受一个数量n做参数,计算1-n的和。可以这样实现:publiclongsequentialSum(longn){returnStream.iterate(1L,i->i+1).limit(n).reduce(0L,Long::sum);}也许可以使用parallel方法,简单地使用并行计算,提高程序性能:publiclongsequentialSum(longn){re...
直接用英文逗号分隔就可以了,比如:inerfaceIHello{StringsayHello(Stringname);}interfaceIHi{StringsayHi(Stringname);}classServiceImplimplementsIHello,IHi{//实现三个四个。。。n个接口都是使用逗号分隔publicStringsayHello(Stringname){return"Hello,"+name;}publicStringsayHi(Stringname){return"Hi,"+name;}}补充知识:Java一个类实现的多个接口,有相同签名的default方...
对于这个问题应该用JVM的工作步骤来解释,首先看如下代码classX{Yb=newY();X(){System.out.print("X");}}classY{Y(){System.out.print("Y");}}publicclassZextendsX{Yy=newY();Z(){System.out.print("Z");}publicstaticvoidmain(String[]args){newZ();//结果是YXYZ}}这段代码的执行过程如下:1.在栈内存定义变量此时为初始值,定义方法。基本数据类型为0,引用数据类型为nu...
一:前=>后上图为jsp前端代码点击提交按钮后,通过form表单里面action(路劲,Enter)传递给名为Enter的java后端,则后端通过jsp中的表单,取到name为id(随意命名,id)的值下图为java取值代码二:后=>前上图为后端代码,java通过request.setAttribute("命名",值),将“账号或密码错误”这几个字存到request里,在通过第二排代码的跳转页面将这几个字传递回“Enter.jsp”jsp页面,其后的代码不用在意,跳转时必要的,照搬就好。提示...