Arrays.asList(int )如何返回List ?

在做简单的程序时我注意到了这个问题。 int[] example = new int[10]; List exampleList = Arrays.asList(example);// Compilation error here 返回编译错误,因为cannot convert from List to List 。 但是java中不允许使用List ,为什么会出现这种编译错误? 我不是在质疑autoboxing,我只是想知道Arrays.asList如何返回List 。 asList实现是 public static List asList(T… a) { return new ArrayList(a); } 所以它将int []视为T就是为什么会发生这种情况。

Maven和eclipse:将非Maven或外部jar添加到项目中的可靠方法?

Maven很棒。 它主要通过在pom配置中指定依赖包的版本来使我脱离jar依赖地狱,并自动应用它们。 它还通过m2e与Eclipse进行了很好的集成,因此可以在IDE中无缝地工作。 这对于Maven全局已知的依赖项来说非常有用。 但是,有时候,有些库需要包含在Maven存储库中不可用的项目中。 在这种情况下,我通常将它们添加到项目中的lib/目录中。 只要它们在类路径中就可以编译。 但是,问题是导入项目时会自动包含它们。 我一直在容忍这个问题,包括半生不熟的修复和黑客攻击太长时间了。 每次有人安装这个项目时,我都要告诉他们手动将lib/的jar添加到他们的Eclipse构建路径中,以便所有错误消失。 类似于以下内容: 我正在寻找一种方法来自动化这个过程,这种方式适用于mvn命令行程序和Eclipse:更多的是强调Eclipse,因为在导入它们时只需要编译的项目很好。 我不想为此设置一个repo服务器,也没有任何内部专有组件可以保证在本地设置任何东西。 我只有一些jar文件,开发人员不使用Maven; 我想和他们一起编译……我应该能够将它们包含在我的软件发行中,对吧? 我真的在寻找一种合理的方法来实现它,它也可以在Eclipse中运行而不用大惊小怪。 这是我发现有希望的一种解决方案 ,但肯定似乎没有这个问题的权威解决方案。 唯一接近的另一件事是maven-addjars-plugin ,它可以正常工作但只能在命令行上运行。 这个插件还不错,配置非常合理: com.googlecode.addjars-maven-plugin addjars-maven-plugin 1.0.5 add-jars ${project.basedir}/lib/java-aws-mturk ${project.basedir}/lib/not-in-maven 但是,试图让它在Eclipse中运行需要将以下关于生命周期映射的混乱添加到你的pom.xml ,这是我从未开始工作的; 我甚至认为它没有配置为实际向Eclipse构建路径添加任何内容。 org.eclipse.m2e lifecycle-mapping 1.0.0 com.googlecode.addjars-maven-plugin addjars-maven-plugin [1.0.5,) add-jars

如何在Spring Boot应用程序中配置嵌入式MongDB进行集成测试?

我有一个相当简单的Spring Boot应用程序,它公开一个小的REST API并从MongoDB的一个实例中检索数据。 对MongoDB实例的查询通过基于Spring Data的存储库进行。 下面的一些关键代码。 // Main application class @EnableAutoConfiguration(exclude={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) @ComponentScan @Import(MongoConfig.class) public class ProductApplication { public static void main(String[] args) { SpringApplication.run(ProductApplication.class, args); } } // Product repository with Spring data public interface ProductRepository extends MongoRepository { Page findAll(Pageable pageable); Optional findByLineNumber(String lineNumber); } // Configuration for “live” connections @Configuration public class […]

如何强制Commons HTTPClient 3.1仅对HTTPS使用TLS 1.2?

我希望强制Apache Commons HTTP-Client ( 3.1版)使用TLS 1.2作为HTTPS的唯一协议。 这是因为服务器应该升级到TLS 1.2并且不再接受任何旧协议(导致返回“连接重置”)。 对于进一步的上下文,可能不相关,HTTP-Client与Axis2一起用于创建SOAP; 用于设置HttpClient的一些代码如下: MultiThreadedHttpConnectionManager connMgr = new MultiThreadedHttpConnectionManager(); this.httpClient = new HttpClient(connMgr); // initialize HttpClient parameters HttpClientParams hcParams = this.httpClient.getParams(); // Maximum time to wait to receive connection from pool hcParams.setConnectionManagerTimeout(this.maxWait); hcParams.setSoTimeout(this.timeout); hcParams.setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(this.retryCount, false)); // Initialize global Connection manager parameters HttpConnectionManagerParams cmParams = connMgr.getParams(); cmParams.setDefaultMaxConnectionsPerHost(this.maxActive); cmParams.setStaleCheckingEnabled(this.checkStaleConnections); […]

使用Canvas在Java中绘图

我想用Java的Canvas画画,但不能让它工作,因为我不知道我在做什么。 这是我的简单代码: import javax.swing.JFrame; import java.awt.Canvas; import java.awt.Graphics; import java.awt.Color; public class Program { public static void main(String[] args) { JFrame frmMain = new JFrame(); frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frmMain.setSize(400, 400); Canvas cnvs = new Canvas(); cnvs.setSize(400, 400); frmMain.add(cnvs); frmMain.setVisible(true); Graphics g = cnvs.getGraphics(); g.setColor(new Color(255, 0, 0)); g.drawString(“Hello”, 200, 200); } } 窗口上没有任何内容。 我觉得Canvas是纸,而Graphics是我的铅笔,我错了吗? 它是如何工作的?

如何在春季启动时加载@Cache?

我正在使用spring-cache来改进数据库查询,其工作正常如下: @Bean public CacheManager cacheManager() { return new ConcurrentMapCacheManager(“books”); } @Cacheable(“books”) public Book getByIsbn(String isbn) { return dao.findByIsbn(isbn); } 但现在我想在启动时预先填充完整的书籍缓存。 这意味着我想调用dao.findAll()并将所有值放入缓存中。 此例程不应仅定期安排。 但是,在使用@Cacheable时,如何显式填充缓存?

JAX-WS Sharepoint 401未经授权的NTLM

我尝试通过JAX-WS访问Sharepoint列表,如此处所述 但是,当运行下面的代码时,我得到: java.lang.Exception: Exception. See stacktrace.com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized Sharepoint需要NTLM身份validation。 可能是什么问题? 非常感谢! public static ListsSoap sharePointListsAuth(String userName, String password) throws Exception { ListsSoap port = null; if (userName != null && password != null) { try { Lists service = new Lists(); port = service.getListsSoap(); System.out.println(“Web Service Auth Username: ” […]

处理Spring Security中基本身份validation的未经授权的错误消息

我试图在我的Web应用程序中使用Spring Security 3.0.5。 基本上,我想要一个通过HTTP GET以json格式返回数据的Web服务。 我已经实现了一个RESTful服务,它在请求url http://localhost:8080/webapp/json时返回数据。 使用以下curl命令可以正常工作 > curl http://localhost:8080/webapp/json {“key”:”values”} 使用spring security添加基本身份validation后,我可以使用以下命令获取数据 > curl http://localhost:8080/webapp/json Apache Tomcat/6.0.29 – Error report ….. > curl -u username:password http://localhost:8080/webapp/json {“key”:”values”} 前一个命令返回标准的tomcat错误页面,因为它现在需要用户名和密码。 我的问题是,是否有可能以打印出我自己的错误消息的方式处理拒绝访问? 即 > curl http://localhost:8080/webapp/json {“error”:”401″, “message”:”Username and password required”} 这是我的spring安全配置和AccessDeniedHandler 。 正如您所看到的,我正在尝试添加access-denied-handler ,它只是通过servlet响应打印出一个字符串,但它仍然不会在命令行上打印我自己的消息。 … AccessDeniedHandler.java package webapp.error; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import […]

“新BigDecimal(13.3D)”导致不精确的“13.3000000000000007105 ..”?

Java的BigDecimal怎么会这么痛苦呢? Double d = 13.3D; BigDecimal bd1 = new BigDecimal(d); BigDecimal bd2 = new BigDecimal(String.valueOf(d)); System.out.println(“RESULT 1: “+bd1.toString()); System.out.println(“RESULT 2: “+bd2.toString()); RESULT 1: 13.300000000000000710542735760100185871124267578125 RESULT 2: 13.3 是否存在需要结果1的情况? 我知道Java 1.5改变了toString()方法,但这是预期的后果吗? 另外我意识到BigDecimal有doubleValue()等,但我正在使用的库有助于使用toString()而我无法改变:-( 干杯。

远程病例中的Lazy / Eager加载策略(JPA)

我遇到了像大多数尝试使用ORM进行远程处理的人一样的LazyLoadingexception。 在大多数情况下,切换到急切的提取解决了问题(延迟加载/非primefaces查询/线程安全/ n + 1问题……)。 但是如果你正在处理一个非常大的对象图,那么渴望获取也会有缺点。 在大多数用例中不需要加载整个对象图。 加载需要的更多数据(或从db加载它们并提取所需的子集)感觉很糟糕。 那么有什么替代方法可以解决这类问题(在运行时)? 我见过: 将数据访问依赖项注入域对象,并让对象决定加载延迟或急切: 感觉不好 ! 域层应独立于任何服务。 域注入也是一项昂贵的操作。 域应该是无知的数据访问,应该使用或不使用数据访问。 除了需要更多数据的用例之外,获取所有惰性内容:看起来效果更好但这种方式会强制许多客户端=>服务器/数据库往返。 懒惰字段的初始化也会遭受痛苦(尝试使用JPA)。 这种方式不具有通用性 ,并且受到上述相同的惰性限制。 在Lazy类中封装持久性:更复杂,没有与ORM互操作的最佳实践。 膨胀的服务层(这么多“手写”代码感觉很糟糕 )。 对每个用例使用完整的预测:我们将最终使用SQL并放弃ORM的好处。 DTO /虚拟代理层强制执行更多复杂性并使代码更难维护(Wormhole antipattern >> Bloat)。 我想了很多其他的方式。 也许通用投影white./black listning是一个解决方案。 Idea(黑名单):使用提取操作的边界定义类名列表。 如果属性匹配并且它是惰性的,则删除惰性(CGLIB)代理并使用null填充该值。 否则,简单地防止获取(并将值保留为null)。 因此,我们可以在DAO中设置明确的界限。 示例: ProductDao.findByName(“Soap”,Boundaries.BLACKLIST,”Category, Discount”)最后两个参数也可以绑定到Boundaries对象中。 Idea(白名单):与黑名单一样,但您必须声明属性应加载到白名单中。 你怎么看待这样的解决方案? (可能的问题,限制,优点……)我应该如何在java中编写这个? 也许通过AOP匹配DAO方法(因为我能够修改cglib代理行为)?