并发集合的包含方法是无用的吗?

if(concurrentHashMap.containKey(key)) { // oops, v has been removed in another thread right after current thread // complete containKey calling Value v = concurrentHashMap.get(key); // do something on v // null pointer exception } 似乎并发集合的包含类方法是无用的,以解决上述问题: Vaule v = concurrentHashMap.get(key); if(v != null) { // ok, hold v’s reference // do something on v } 我对吗?

Spring AuthenticationFailureHandler和WebSecurityConfigurerAdapter loginPage()

编辑:解决了。 在这篇文章后看到我的评论 我目前正在使用Spring-Security实现Web应用程序。 我已经实现了一个自定义AuthenticationFailureHandler ,它检查用户是否经常尝试使用错误的凭据登录(并阻止他几分钟)。 但正常的登录失败应该将用户重定向到登录页面,参数错误( /login?error )。 此页面显示错误消息,例如“您输入的密码错误” AutenticationFailureHandler看起来像这样(没有无代码的代码) public class CustomAuthenticationHandler implements AuthenticationFailureHandler { // Some variables @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { // some logic here.. request.setAttribute(“param”, “error”); response.sendRedirect(“/login?error”); } 我的WebApplicationSecurity类如下所示: @Configuration @EnableWebMvcSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired CustomAuthenticationHandler customAuthenticationHandler; @Override protected void […]

Android – 如何从游标中删除项目?

假设我使用以下光标来获取某人的通话记录: String[] strFields = { android.provider.CallLog.Calls.NUMBER, android.provider.CallLog.Calls.TYPE, android.provider.CallLog.Calls.CACHED_NAME, android.provider.CallLog.Calls.CACHED_NUMBER_TYPE }; String strOrder = android.provider.CallLog.Calls.DATE + ” DESC”; Cursor mCallCursor = getContentResolver().query( android.provider.CallLog.Calls.CONTENT_URI, strFields, null, null, strOrder ); 现在我将如何删除此光标中的第i项? 这也可能是一个光标获取音乐列表等等。所以我必须问 – 这甚至可能吗? 我可以理解某些游标不允许第三方应用程序从中删除。 谢谢。

HBase:primefaces’检查行不存在并创建’操作

我建议这应该是常见的情况之一,但可能在谷歌搜索时使用错误的关键字。 我只需要用完全随机的密钥创建新的表记录。 假设我获得了具有良好随机性的密钥(几乎是随机的)。 但是,我不能100%确定没有行存在。 所以我需要primefaces地做什么: 有行键检查还没有行。 如果行存在则拒绝操作。 如果没有退出,请创建行。 我在这个主题上找到的最有用的信息是关于HBase行锁的文章。 我认为HBase行锁是合适的解决方案,但我想在没有显式行锁定的情况下更好地做到这一点。 ICV看起来不合适,因为我确实希望密钥是随机的。 如果他们可以在“行不存在”条件下工作,那么CAS会很棒,但看起来他们不能。 显式行锁具有区域拆分问题等缺点。 有人可以加入有用的建议吗? 优选的API是基于Java的,但实际上它更多的是概念而不是实现。

访问被拒绝(“java.io.FilePermission”“执行”)

我是beginner.it是我写的第一个小程序 我想用applet运行exe应用程序 java代码 package appletexample; import java.io.*; import java.awt.*; import java.applet.Applet; public class Welcome extends Applet { public void init() { String execommand = “C:\\windows\\notepad.exe” ; try { Process proc = Runtime.getRuntime().exec(execommand) ; } catch(IOException ieo) { System.out.println(“Problem starting ” + execommand) ; } } } java.policy.applet grant { permission java.security.AllPermission; }; 我在eclipse中运行此代码Run As->Java Applet工作并打开NotePade但是当Export->Jar […]

使用带有IMAP的javax.mail获取来自GMail的消息的UID

我正在使用javax.mail使用IMAP从GMail检索邮件。 我还希望获得应用于每个邮件的标签,因此我将遍历商店中的所有文件夹(实际上是标签)并为彼此下载邮件。 我使用ImapFolder的getUID方法获取每条消息的UID,然后比较它们以识别不同文件夹中的相同邮件。 例如,如果我将邮件“Hello”标记为“A”和“B”,我将遍历文件夹“收件箱”,“A”和“B”,并从每个文件夹中获取相同的邮件; 所以我可以保留一个标有“收件箱”,“A”和“B”的副本。 但是,getUID方法返回文件夹相对ID,因此相同的邮件可能在不同的文件夹中具有不同的ID,或者不同的邮件可能在不同的文件夹中具有相同的ID。 在这个例子中。 “HellO”可能在“A”中显示为邮件1,在“B”中显示为邮件2。 有没有办法获得每个邮件的商店相对ID,独立于文件夹? 或者更好的方法来获取附加到单个邮件的标签?

如何为具有圆角的JDialog设置3D边框?

我可以在我的JDialog中添加圆角边框,如在Java Swing中如何创建圆角标题边框 。 但它仍然是一种颜色。 我想让边框看起来像3D。 这是我尝试的方式。 Graphics2D g2d = (Graphics2D) g; Color c1 = getBackground(); Color c2 = color1.darker(); int w = getWidth(); int h = getHeight(); GradientPaint gp = new GradientPaint( 0, 0, c1, 0, h, c2); g2d.setPaint(gp); g2d.fill3DRect(0,0, w, h,true); 然后,没有3D外观,但边框已经扩大了边框颜色。 我怎样才能做到这一点? 任何示例代码或链接将受到高度赞赏。

即使数据库已关闭,如何使App服务器启动?

我正在使用spring和hibernate。 我的应用程序有3个模块。 每个模块都有一个特定的数据库 因此,Application处理3个数据库。 在服务器启动时,如果任何一个数据库关闭,则服务器不会启动。 我的要求是即使其中一个数据库关闭,服务器应该在其他模块的数据库启动时启动 ,用户可以在其他两个模块上工作。 请建议我如何实现这一目标? 我使用的是spring 3.x和hibernate 3.x. 我也在使用c3p0连接池 。 应用服务器是Tomcat 。 谢谢!

为什么强制垃圾收集会增加分配给java进程的内存?

所以我有这个代码: public static void main(String[] args) throws Exception { Thread.sleep(5000); System.out.println(“Creating array…”); Integer[] integers = new Integer[Integer.MAX_VALUE/32]; Thread.sleep(5000); System.out.println(“Destroying array”); integers = null; //System.gc (); //System.runFinalization (); Thread.sleep(60000); } 当我运行这段代码后,我会在大约5秒钟后看到268 MB的ram被分配给Activity Monitor中的java进程。 当我在控制台中看到“销毁arrays”后取消注释注释行(System.gc和以下行)时,分配的内存增加到278 MB。 我可以理解内存没有被释放,因为System.gc()只是对JVM的一个暗示,但为什么10MB会增加呢? 此时加载到内存中的是什么?

从批处理文件中运行java程序,在IDE中运行正常

我正在为我的新笔记本电脑上的一个class级做一些基本的java作业 – 问题是,我似乎无法使用教师给我的指示从我的批处理文件中编译和运行程序。 我在Path Variables设置中将Path变量设置为我的JDK。 我的程序是一个简单的运输程序,用于跟踪货运信息 – 我在NetBeans中完美地运行程序(我们的指导员建议我们用它来开发代码),但他将使用批处理文件对它们进行测试,所以我们’还建议我们在我们的系统上使用我们创建的系统对它们进行测试 – 非常简单。 问题是,我似乎无法让这个工作。 我以前从来没有这样做过,但是我已经使用.bat文件来编译和运行C ++程序,以及在unix系统上使用makefile,所以我觉得因为不自己搞清楚这一点我绝对是愚蠢的但是我的搜索都没有返回任何有用的解决方案。 我的程序包含3个.java文件: Shipment.java – 包含在ShipmentHW1类中实现的抽象方法的接口 ShipmentHW1.java – 一个实现Shipment中抽象方法的类,并具有构造函数等来创建可用对象 TestShipment.java – 此程序的主类,它根据预设参数利用和创建ShipmentHW1对象。 这是超级基本的东西,而且,它在NetBeans IDE中运行得非常好。 给我们的说明声明批处理文件在包目录中(在这种情况下,我在我的桌面上留下了一个名为“shipping”的单独文件夹,这是包名称 – 不应该是任何问题) ,3 .java文件的位置。 他们说如果你不需要明确列出JDK的路径,那么你可以简单地 javac TestShipment.java java TestShipment.java pause 之后我得到错误,谈论它如何“找不到符号Shipment s = new ShipmentHW1();” 我试过添加导入,但由于它们在同一个包中,它甚至不应该是一个问题。 目录路径是 C:\Users\X\Desktop\shipping 所有7个文件都包含在: TestShipment.java TestShipment.class Shipment.java Shipment.class ShipmentHW1.java ShipmentHW1.class doHW1.bat 有谁有想法吗? 如果我太模糊,我可以提供更多信息 此外,我在Windows […]