草庐IT

行为不当

全部标签

带有尾部 '.. ' 的 Java 文件 canonicalPath 导致不一致的行为

我目前正在研究一些与pathTraversal相关的安全机制,并遇到了java.io.File.getCanonicalPath()的奇怪行为。我认为CanonicalPath将始终代表抽象底层文件的真正唯一路径。但是,如果文件名由两个点和一个空格组成,则CanonicalPath似乎不再代表正确的路径。例子如下:Fileroot=newFile("c:/git/");Stringrelative="../..\\";FileconcatFile=newFile(root.getCanonicalPath(),relative);System.out.println("ConcatFi

java - 将游戏部署到服务器会导致奇怪的行为

我使用HTML5WebSockets和java作为后端开发了一个类似breakout的游戏,并且最近将我的游戏部署在Glassfish服务器上,该服务器运行在20美元的Digitaloceandroplet(3GB内存,2cpu)上。在开发游戏时,我与IntelliJ和一位同事一起使用Netbeans,在我们的PC上运行的Glassfish服务器上部署我们的WAR文件时,一切都按预期工作。但是,当在droplet上部署完全相同的WAR文件时,球的移动速度似乎快了3倍。我尝试通过在虚拟机上安装与Droplet相同的Ubuntu服务器并执行与安装OpenJDK、Glassfish等相同的步

java - TypeToken 嵌套泛型类型的意外泛型行为

我有TypeToken类用于表示一些通用类型,如下所示:TypeToken>listOfStrings=newTypeToken>{}这很好用,TypeToken只是classTypeToken{}使用简单的方法来获取该类型。现在我想为List这样的常见类型创建简单的方法更多动态用法:TypeToken>numbers=list(extendsType(Number.class))使用:publicstaticTypeTokenextendsType(Classtype){returnnull;}publicstaticTypeToken>list(TypeTokentype){ret

行为附加到注释的 Java 设计问题

假设我通过使用@transactions注释来使用JPA。因此,为了让任何方法在事务下运行,我添加了一个@transaction注释,BINGO我的方法在事务下运行。为了实现上述目标,我们需要为该类提供一个接口(interface),并且该实例由某个容器管理。此外,我应该始终从接口(interface)引用中调用该方法,以便代理对象可以启动事务。所以我的代码看起来像:classBar{@InjectprivateFooIfoo;...voiddoWork(){foo.methodThatRunUnderTx();}}classFooImplimplementsFooI{@Overrid

java - spring 中默认的 hibernate session 控制行为是什么?

我有一个使用spring和hibernate的3层应用程序(Controller->服务->dao),事务应用于服务层。我没有配置OpenSessionInViewInterceptor或OpenSessionInViewFilter,我想知道hibernatesession控制行为。每个事务或每个请求打开session?谢谢! 最佳答案 如果您使用的是HibernateTransactionManager,Session将绑定(bind)到当前线程,并在事务结束时通过提交或回滚刷新和关闭。另见10.Transactionmanag

java - BigDecimal.stripTrailingZeroes() 行为的澄清

为什么下面的代码打印出0.00而不是0?BigDecimalbig=newBigDecimal("0.00");big=big.stripTrailingZeros();System.out.println(big.toPlainString());以下是stripTrailingZeroes的文档:ReturnsBigDecimalwhichisnumericallyequaltothisonebutwithanytrailingzerosremovedfromtherepresentation.Forexample,strippingthetrailingzerosfromtheB

java - 日历的奇怪行为

我正面临java.util.Calendar的奇怪行为.问题是,当我在两者之间添加一个方法调用Calendar#getTime()时,我得到的结果是正确的,但是当我直接获得一周的Dates时调用Calendar#getTime()它指的是下周而不是当前周。请考虑以下代码片段:publicclassGetDatesOfWeek{publicstaticvoidmain(String[]args){SimpleDateFormatsdf=newSimpleDateFormat("dd-MM-yyyy");Calendarcal=Calendar.getInstance();cal.set(

java - 当作业重叠时,spring @scheduled cron 的预期行为是什么?

我有一个每小时运行一次的作业,我正在使用Spring的@scheduledcron来安排它。如果工作需要一个多小时,我从HowtopreventoverlappingschedulesinSpring?了解到在第一个作业运行时,下一个作业不会启动。但这是否意味着它会在第一份工作完成后开始,还是错过了机会?如果我有一个需要10小时的作业,所有错过的cron作业是否会排队,然后在第一个作业在10小时后完成时一个接一个地执行,还是只运行第一个作业?谢谢! 最佳答案 默认情况下,执行是阻塞的和单线程的,这意味着它们不会并发运行。如果您希望作

java - 两个接口(interface)指定具有相同签名的方法,但指定具有不同的行为?

我有一些课publicclassmyClassimplementsA,B其中A和B都包含一个方法publicintdoSomething();,但是A.doSomething由接口(interface)指定执行与B.doSomething不同的操作.我已阅读TwointerfaceswithsamemethodsignatureimplementedinJavaclass,但这并没有真正解决我的问题,因为这些方法被重写以做同样的事情,但正如我上面所说,我的问题是关于何时在接口(interface)中指定它们来做不同的事情。例如,假设A.doSomething()应该返回0,而B.doS

java - C 和 Java 中 PreIncrement 和 PostIncrement 运算符的行为

这个问题在这里已经有了答案:Whyaretheseconstructsusingpreandpost-incrementundefinedbehavior?(14个答案)关闭9年前。我正在VisualC++和Java中运行以下程序:VisualC++voidmain(){inti=1,j;j=i+++i+++++i;printf("%d\n",j);}输出:6Java:publicclassIncrement{publicstaticvoidmain(String[]args){inti=1,j;j=i+++i+++++i;System.out.println(j);}}输出:7为什么