我正在使用Joda Time 2.1库.
我写了一个方法来比较给定日期是否在日期范围之间.我希望它包含在开始日期和结束日期.LocalDate我使用过,因为我不想考虑时间部分只有日期部分.
下面是它的代码.
isDateBetweenRange(LocalDate start,LocalDate end,LocalDate target){
System.out.println("Start Date : "
+start.toDateTimeAtStartOfDay(DateTimeZone.forID("EST"));
System.out.println("Target Date : "
+targettoDateTimeAtStartOfDay(DateTimeZone.forID("EST"));
System.out.println("End Date : "
+end.toDateTimeAtStartOfDay(DateTimeZone.forID("EST"));
System.out.println(target.isAfter(start));
System.out.println(target.isBefore(end));
}
Run Code Online (Sandbox Code Playgroud)
上述方法的输出是:
Start Date: 2012-11-20T00:00:00.000-05:00
Target Date: 2012-11-20T00:00:00.000-05:00
End Date : 2012-11-21T00:00:00.000-05:00
target.isAfter(start) : false
target.isBefore(end) : true
Run Code Online (Sandbox Code Playgroud)
我的问题是target.isAfter(start)假的,即使target日期和start具有相同的值.
我想要,target >= start但这里只考虑target > start.
我希望它具有包容性.
这是否意味着该isAfter方法专门找到匹配?
我已经通过Jav Time的javadoc,但没有找到任何关于它的东西.
能告诉我这段java代码吗?我无法理解这种语法.
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个方法getCalendarFromClass,它返回一个对象Calendar.
我正在LocalDate使用fromCalendarFields方法将其转换为Joda Time API .
LocalDate.fromCalendarFields(a.getCalendarFromClass());
Run Code Online (Sandbox Code Playgroud)
但是如何TimeZone在执行此转换时指定,因为我没有在javadoc中找到它.
fromCalendarFields方法的javadoc 提到:
从日历查询每个字段并将其分配给LocalDate.如果您一直使用日历作为本地日期,忽略该区域,这将非常有用.
我看到我周围的人在控制器类的单元测试中使用Spring MVC,这对单元测试的用途没有帮助.
单元测试应该测试你的控制器类的实际实现,这可以通过简单的Junit测试而不是使用Spring Mock MVC更准确地实现.
但问题出现了,那么Spring Mock MVC的实际用途是什么呢?你需要什么?
假设我有以下代码:
@Controller
@RequestMapping("/systemusers")
public class SystemUserController
{
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String getUser(final Model model)
{
// some logic to return user's details as json
return UserDetailsPage;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用Junit比使用Spring Mock MVC更准确地测试这个类/控制器(它所做的只是生成一些可以用junit声明的json).
我也可以使用Spring Mock MVC测试,就像使用正确的端点返回正确的HTTP状态和正确的响应页面字符串一样.
但这是不是意味着我们正在测试Spring MVC的功能而不是测试方法的实际代码?
PS:我把代码保持在最低限度,我认为足以解释我的问题.假设没有编译错误.
我有一个index.jsp页面,我有一个表单,用户输入一些数据,使用Controller servlet存储在数据库中.
我想index.jsp在数据库中输入数据后显示与该表单相同的页面().此外,我想显示用户在数据库中输入的所有条目.
我试过用的forward()方法RequestDispatcher.它工作正常(意味着我能够再次显示相同的表单,并使用JSTL显示该用户在表单下输入的所有数据).
但问题是每当用户按下Refresh or F5按钮时,所有先前的数据也会输入到数据库中,并且当我显示所有数据时,也会出现重复的条目.
我想过使用POST-REDIRECT-GET模式,但问题是当我重定向时我没有使用JSTL显示这些数据.
我该怎么做?
我memcache(安装在php5上)和memcached(通过libmemcached安装在php7.2上)都连接到同一个memcached daemon/server.
Memcache::get完全正常,并按照我的期望获取数据.但是当我这样做时Memcached::get,它总是返回0.
我已经检查过使用这两个扩展时我已经压缩了.我也尝试在Memcached::OPT_BINARY_PROTOCOLfor 之间切换memcached,它仍然产生相同的null结果.
有趣的是,当我使用memcached扩展添加键/值对并使用相同的键检索时,我得到了我添加的正确/正确的值.
我现在无能为力,因为它不适用于已经存储在memcached服务器中的数据.
编辑1:我确实telnet到我的memcached服务器,并检查它实际上有值.另外,我检查了返回的结果代码Memcached::getResultCode是不是任何一种失败.
编辑2:我可能会进一步缩小范围.我注意到,当我["key1" => "value1"]从memcache-php5脚本中保存时,它会正确地存储和检索数据.但是当我尝试使用memcached-php7.1脚本检索相同的数据时,它返回0.
之后,我使用telnet从memcached服务器中删除了密钥"key1"的数据.然后我["key1" => "value1"]使用memcached-php7.1脚本保存,它可以正确检索数据.但是当尝试使用memcache-php5脚本检索它时,它会返回一些序列化数据"a:1:{s:4:\"key1\";s:6:\"value1\";}"(这是json_encoded输出)
因此,为了升级,我可能必须删除/刷新所有内容并使用memcached扩展在memcached服务器中重新创建条目.
我在共享主机上托管了一个网站。他们安装了 php 5.2.13。
我知道 SQL 注入的漏洞,我想阻止它。
所以我想使用 PDO 或 mysqli 来防止它。
但是问题是我phpinfo();以前查看宿主环境php设置信息的时候,
发现PDO没有mysql驱动,里面也不支持mysqli。
所以我想知道使用旧的 mysql_* 函数(以及类似的函数mysql_real_escape_string)是否安全。
我在 SO 上看过这个,但对我没有多大帮助。 当 mysqli 和 PDO 不可用时,准备好的语句可能吗?
更新:
我忘了提到大多数查询都很简单。没有使用表单,因此不会使用用户输入进行查询。所有查询都将使用必要的参数进行硬编码,并且一旦设置就不会更改。
我的代码中的一个方法抛出UnknownHostException异常
我第一次有这样一个catch块:
catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("Custom Message "+e.getMessage());
if(e instanceof java.net.UnknownHostException){
System.out.println("Unknown Host Ex");
}else{
System.out.println("OTHER ERROR");
}
}
Run Code Online (Sandbox Code Playgroud)
我面临的问题是,该if条件永远不会评估为真,因此我无法输出有一些主机错误.
你可以看到我sysout之前有一个打印这个:
Custom Message ; nested exception is:
java.net.UnknownHostException: abc.xyz
Run Code Online (Sandbox Code Playgroud)
在那之后我写了一个单独的catch块来处理,UnknownHostException但仍然没有被抓住.
我在类中重载了以下两种方法:
public class Test{
public static void main(String []args) throws ParseException{
Test t = new Test();
t.testMethod(null);
}
public void testMethod(Object o){
System.out.println("Object");
}
public void testMethod(String s){
System.out.println("String");
}
}
Run Code Online (Sandbox Code Playgroud)
当我调用该方法时,testMethod它会打印"String".
当我再添加一个重载方法时:
public void testMethod(StringBuilder sb){
System.out.println("String");
}
Run Code Online (Sandbox Code Playgroud)
它抛出了编译器错误:The method testMethod is ambigous for type Test..
所有这些都发生在我调用方法时 null
我的问题是:
我们的一位客户正在尝试使用以下JDBC URL连接到Oracle数据库:
jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER=ON)LOAD_BALANCE=OFF)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=server1.domain.com)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=server2.domain.com)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=FOO)))
Run Code Online (Sandbox Code Playgroud)
他们得到这个错误:
Caused by: oracle.net.ns.NetException: NL Exception was generated
at oracle.net.resolver.AddrResolution.resolveAddrTree(AddrResolution.java:614) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:411) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:672) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:237) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301) ~[ojdbc5_11g-11.2.0.1.0.jar:11.2.0.1.0]
Run Code Online (Sandbox Code Playgroud)
问题:
我之前从未见过这样的连接URL.它看起来更像是TNSNAMES.ORA中的一个条目.如何找出此连接字符串的含义?
什么可能导致这个无用的错误消息?