草庐IT

Try-finally

全部标签

java - 删除 final 关键字如何改变程序的行为方式?

这个问题主要不是关于字符串。出于学术好奇,我想知道变量上的final修饰符如何改变程序的行为。以下示例表明这是可能的。这些行打印truefinalStringx="x";System.out.println(x+x=="xx");但是这些行打印falseStringx="x";System.out.println(x+x=="xx");除了String实习之外,如果从变量声明中删除修饰符final,是否还有任何其他因素会导致程序的行为发生变化?我假设程序编译时使用或不使用修饰符。请不要投票将其作为Comparingstringswith==whicharedeclaredfinalin

MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

遇到MySQLTransactionRollbackException:Lockwaittimeoutexceeded;tryrestartingtransaction这个错误时,通常意味着你的数据库事务在尝试获取一个锁时等待了太长时间。这通常发生在有长时间运行的事务持有锁,而其他事务在等待这个锁时超过了锁等待超时的时间。要解决这个问题,你可以按照以下步骤进行排查和解决1.确定哪个事务持有锁首先,需要找出哪个事务持有了锁并导致其他事务等待。你可以通过运行以下SQL命令来查看当前的锁情况:sqlSHOWENGINEINNODBSTATUS;这个命令会显示InnoDB的许多内部运行信息,包括锁等待

java - 你能指望 .finalize() 被调用吗?

我试图检测我的一些Java代码以确保对象被正确地垃圾收集,但我惊讶地发现它并没有像我预期的那样频繁地被调用。我现在想知道这是因为检测错误还是我需要解决的实际内存泄漏。VisualVM分析器似乎表明是前者。问题是我有一个处理请求的线程,并且在请求中创建了数千个临时对象。有时,这个线程写入的套接字意外关闭,线程遇到异常而死。当Thread结束时,似乎不会对这些对象调用.finalize()。这是不信任我的仪器的原因吗? 最佳答案 Finalize()不是解决方案。如果有的话,你不知道什么时候会调用终结器。如果您的问题是异常,请使用try

java keytool 给出 "final block not properly padded"

根据step3bofthisJettyguideforusingKeytoolandOpenSSL,laststep,我正在执行命令:keytool-importkeystore-srckeystorejetty.pkcs12-srcstoretypePKCS12-destkeystorekeystore当我运行命令时,我得到:keytoolerror:java.io.IOException:failedtodecryptsafecontentsentry:javax.crypto.BadPaddingException:Givenfinalblocknotproperlypadded

java - 先验证还是 try catch ?

假设我有一个如下所示的函数:publicvoidsaveBooking(/*someinputs*/){//saveintodatabase}在保存到数据库之前,我必须做各种验证。我在主程序中可以做的是这样的://doallthevalidationsanddoanynecessaryhandling.Then...saveBooking(/*inputs*/);有了这个,我确信所有数据在保存到数据库之前都必须通过所有要求的验证。但是,这意味着函数saveBooking()密切依赖于验证方法。每次我想调用saveBooking()时,我都必须确保不会忘记调用验证。或者,我可以将所有验证

java - static final char[] 线程安全吗?

如果我有privatestaticfinalchar[]SOME_CHARS;那个线程安全吗?我的意思是,如果我有多个线程引用该数组中的字符(但不更改它们),会出现什么问题吗?例如privateclasssomeThreadextendsThread(){publicvoidrun(){for(inti=0;i换句话说,我是否需要将char[]放入某种支持线程的Java集合中? 最佳答案 如果你在初始化后不更改它们,应该没问题。(请注意,这依赖于它是一个staticfinal变量-初始化类的方式将确保所有线程都能正确看到初始化的数组

Java:错误定义的 finalize 方法会造成内存泄漏

在Java中,如果没有指向x的强引用并且x符合垃圾回收条件,垃圾回收将调用对象x的finalize方法。如果finalize方法永远不会终止,这会导致内存泄漏吗?publicclassX{protectedvoidfinalize(){while(true){}}} 最佳答案 是的,很容易测试publicclassX{protectedvoidfinalize(){while(true){}}publicstaticvoidmain(String[]args)throwsException{while(true){newX();}}

java - java中static final transient的作用是什么?

在我正在处理的代码库中,几乎所有声明为staticfinalString的变量也都声明为transient。所以我有这样的字段:publicstaticfinaltransientStringVERSION="1.0";每当我发现这些transient关键字时,我很想删除它们,因为我认为它没有任何用处。在这种情况下,使用或不使用transient在行为上有什么区别吗? 最佳答案 static字段是隐式transient(当序列化一个static字段时,它的值无论如何都会丢失)。所以确实,不需要同时声明两者。

java - 每个抛出异常的语句的 try/catch 是否被视为反模式?

我目前正在审查同事的Java代码,我看到很多情况下,每个可能抛出异常的语句都被封装在自己的try/catch中。catchblock都执行相同的操作(哪个操作与我的问题无关)。对我来说,这似乎是一种代码味道,我确实记得读过它是一种常见的反模式。但是我找不到任何关于此的引用资料。对于每条抛出异常的语句,try/catch都被视为反模式吗?支持这一点的论据是什么?构造示例:(与原始问题无关,所以请不要介意这个例子的其他问题,因为它只是为了说明我的意思。)publicintfoo(){intx,y=7;try{x=bar(y);}catch(SomeExceptione){return0;}

java - 内部类非final变量java

我需要更改内部类中的变量,但我遇到了臭名昭著的“无法引用在不同方法中定义的内部类中的非最终变量”错误。voidonStart(){bt.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){intq=i;}});}我很快创建了一个包含所有我想要更改的内容的类,并在内部类之外创建了该类的最终版本classtemp{intq;}voidonStart(){finaltempx=newtemp();bt.setOnClickListener(newView.OnClickListener(){publicv