小编Don*_*ows的帖子

java.sql.SQLException:数据库已锁定

我们在代码中使用sqlite056.jar.在批量插入数据库时​​,我们在提交时会在线获取异常.

代码行

<object of Connection>.commit();
<object of Connection>.setAutoCommit(true);
Run Code Online (Sandbox Code Playgroud)

例外

java.sql.SQLException: database locked
Run Code Online (Sandbox Code Playgroud)

java sqlite

10
推荐指数
3
解决办法
2万
查看次数

用于检测内存泄漏的工具

如purify和valgrind等内存泄漏检测工具如何工作?

如何设计和实现我自己的工具?

c c++ unix memory-leaks memory-management

10
推荐指数
2
解决办法
2094
查看次数

为什么gets()不起作用?

我在Unix中用C编程,我gets用来读取键盘的输入.我总是得到这个警告,程序停止运行:

warning: this program uses gets(), which is unsafe.
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么会这样?

c

10
推荐指数
3
解决办法
2万
查看次数

减少内存流失的方法

背景

我有一个Spring批处理程序,它读取一个文件(我正在使用的示例文件大小约为4 GB),对该文件进行少量处理,然后将其写入Oracle数据库.

我的程序使用1个线程来读取文件,使用12个工作线程来进行处理和数据库推送.

我正在搅拌很多很多年轻的生成内存,这导致我的程序比我想象的要慢.

建立

JDK 1.6.18
弹簧批2.1.x
4核心机16 GB RAM

-Xmx12G 
-Xms12G 
-NewRatio=1 
-XX:+UseParallelGC
-XX:+UseParallelOldGC
Run Code Online (Sandbox Code Playgroud)

问题

有了这些JVM参数,我可以为Tenured Generation提供大约5.x GB的内存,为Young Generation提供大约5.X GB的内存.

在处理这个文件的过程中,我的Tenured Generation很好.它增长到最大可能3 GB,我从来不需要做一个完整的GC.

然而,年轻一代最多次击中它.它高达5 GB范围,然后发生并行次要GC并将Young Gen清除至500MB.Minor GCs比完整的GC更好,但是它仍然会减慢我的程序(我很确定当年轻的gen集合发生时应用程序仍然会冻结,因为我看到数据库活动已经消失).我花费超过5%的计划时间冻结为小型GC,这似乎过多.我会说在处理这个4 GB文件的过程中,我会通过50-60GB的年轻生成内存.

我在程序中没有看到任何明显的缺陷.我试图遵守一般的OO原则并编写干净的Java代码.我试图不要无缘无故地创建对象.我正在使用线程池,并且尽可能传递对象而不是创建新对象.我将开始分析应用程序,但我想知道是否有人有一些好的一般经验法则或反模式,以避免导致过多的内存流失?50-60GB的内存流失是否可以处理4GB文件?我是否必须恢复到像对象池这样的JDk 1.2技巧?(尽管Brian Goetz做了一个演示文稿,其中包括为什么对象池是愚蠢的,我们不再需要这样做.我相信他比我更信任自己...... :))

java garbage-collection memory-management spring-batch

10
推荐指数
2
解决办法
6107
查看次数

如何设置Apache CXF客户端以使用WebSphere truststore?(收到"找不到可信证书"例外.)

首先,我将从摘要开始.我正在使用Apache CXF客户端通过SSL与使用自签名证书的Apache CXF服务提供商进行通信.我将证书导入到客户端服务器的WebSphere信任,但我仍然收到"javax.net.ssl.SSLHandshakeException:出现SSLHandshakeException调用https://somesvcprovider.com/appname/svc/myservice:com.ibm.jsse2.util .h:找不到可信证书"例外.

现在,这是详细信息:

我有一个Apache CXF Web服务客户端,我使用Spring进行配置,客户端部署到WebSphere 6.1应用程序服务器.CXF客户端与不同WebSphere服务器上的Apache CXF服务提供程序进行通信.通信使用SSL.

服务提供商使用自签名证书.我已经通过管理控制台将提供者的证书导入客户端服务器上的WebSphere信任库.我通过SSL证书和密钥管理> SSL配置> NodeDefaultSSLSettings>密钥库和证书> NodeDefaultTrustStore>签署者证书完成了这项工作; 然后我使用"从端口检索"工具导入证书.

但是,在尝试联系服务提供者时仍然收到此错误:"javax.net.ssl.SSLHandshakeException:SSLHandshakeException调用https://somesvcprovider.com/appname/svc/myservice:com.ibm.jsse2.util.h:找不到可信证书".

Spring配置文件如下:

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:sec="http://cxf.apache.org/configuration/security"
  xmlns:http="http://cxf.apache.org/transports/http/configuration"
  xmlns:jaxws="http://cxf.apache.org/jaxws"
  xsi:schemaLocation="
      http://cxf.apache.org/configuration/security
      http://cxf.apache.org/schemas/configuration/security.xsd
      http://cxf.apache.org/transports/http/configuration
      http://cxf.apache.org/schemas/configuration/http-conf.xsd
      http://cxf.apache.org/jaxws
      http://cxf.apache.org/schemas/jaxws.xsd
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd">
    <http:conduit name="*.http-conduit">
        <!-- deactivate HTTPS url hostname verification (localhost, etc) -->
        <!-- WARNING ! disableCNcheck=true should not used in production. -->
        <http:tlsClientParameters disableCNCheck="true" />
    </http:conduit>
    <!-- Read properties from property file(s). -->
    <bean id="propertyPlaceholderConfigurer"
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <!-- The *.spring.properties files are prefixed …
Run Code Online (Sandbox Code Playgroud)

ssl websphere cxf websphere-6.1

10
推荐指数
2
解决办法
1万
查看次数

Java:实施双向链接对象

我正在用Java设计一个游戏引擎.

这个引擎的核心是两个类Asset和Attribute,其中Asset有一个Attributes列表.大多数属性不需要链接回其属性,这意味着属性可以并且经常出现在多个资产的列表中.但是,有一个名为UniqueAttribute的Attribute扩展,它是特定于其Asset的那些实现,并使用链接返回.

  1. 理想情况下,如果我删除其他代码,我的Asset的addAttribute方法看起来像这样:

    public void addAttribute(Attribute attribute){
      if(attribute instanceof UniqueAttribute)
        ((UniqueAttribute)attribute).setAsset(this);
      attributeList.add(attribute);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    不幸的是,由于它们位于不同的包中,因此UniqueAttribute.setAsset()必须是公共的.这使得该方法对引擎的外部用户开放,并且虽然我可以通过直接使用这种方法来解决它是一个错误 - 它似乎相当草率.

  2. 第二个选项是在构造时为UniqueAttribute提供Asset,这意味着创建时的代码看起来像这样:

    asset.addAttribute(new UniqueAttribute(asset));
    
    Run Code Online (Sandbox Code Playgroud)

    虽然我可以添加check-and-throwable或assert来确认传入了正确的资产,但我基本上依赖于用户连接这两者,我也不愿意这样做.

  3. 第三种选择是咬住子弹并将50个java文件全部放入同一个包中,这样我就可以使用标准的可见性.

是否有某种图案或某种东西可以帮助将这两者联系在一起而不会暴露电线,或者迫使我将所有东西都放入一个大包装中?

不相关的咆哮:我一直不喜欢java中的子包的概念并没有真正以任何有意义的方式扩展.就java而言,一个子包只是一个不同的包,并且在很多情况下我可以使用与此直接相关的更多可见性修饰符.

java reference unique hyperlink

10
推荐指数
1
解决办法
299
查看次数

比较JAX-RS和Spring Rest服务

我正在开发一个安全的Web应用程序,它可以执行金融交易并使用spring.哪个更适合用于安全性,JAX-RS服务或弹簧支架服务?我认为,我们已经在应用程序中使用它与春天去,如果它提供的功能,那么为什么去JAX-RS,但正如我所说的一个高度安全的网络应用程序,人们会买东西,使金融交易,所以我必须看哪哪个更适合使用.

我跟着下面的博客还有点困惑......

任何人都可以建议哪些更有用?

spring jax-rs spring-security

10
推荐指数
1
解决办法
6462
查看次数

Java发生之前和线程安全

假设我有一个包装HashMap的类,如下所示:

public final class MyClass{

     private final Map<String, String> map;

     //Called by Thread1
     public MyClass( int size ){
         this.map = new HashMap<String, String>( size );
     }

     //Only ever called by Thread2
     public final String put( String key, String val ){
        return map.put( key, value );
     }

     //Only ever called by Thread2
     public final String get( String key ){
        return map.get( key );
     }

     //Only ever called by Thread2
     public final void printMap(  ){
       //Format and print the contents of the …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading thread-safety happens-before

10
推荐指数
1
解决办法
357
查看次数

将多个对象设置为水晶报表的数据源

我想在我的c#windows应用程序中制作一个水晶报告,关键是我想使用.net对象作为我的报告数据源,我在互联网上找到它的示例代码如下,并使用它们并且它工作正常:

        ArrayList Mainlst = new ArrayList();
        Mainlst.Add(new testOBJ { Firstname = "test1", Lastname = "test11" });
        Mainlst.Add(new testOBJ { Firstname = "test2", Lastname = "test21" });
        Mainlst.Add(new testOBJ { Firstname = "test3", Lastname = "test31" });
        Mainlst.Add(new testOBJ { Firstname = "test4", Lastname = "test41" });
        Mainlst.Add(new testOBJ { Firstname = "test5", Lastname = "test51" });
        testCrystalReport rpt = new testCrystalReport ();
        rpt.SetDataSource(Mainlst);
        crystalReportViewer1.ReportSource = rpt;
Run Code Online (Sandbox Code Playgroud)

但我想为这些重复的信息发送额外的对象,例如学校信息,但我不能发送这个额外的对象,有没有任何解决方案,我可以发送多个对象到水晶报告?当然我知道我可以使用多个数据表和数据集作为水晶报表数据源,但在这里我只想使用对象和IEnumerables作为水晶报表的数据源.

.net c# crystal-reports

9
推荐指数
2
解决办法
2万
查看次数

如何处理REST异常?

我们正在讨论如何处理REST异常.

响应内容类型:JSON

我们有两个解决方案:

  1. 将所有未经检查的异常作为JSON响应抛出.
  2. 发送请求无效的响应代码.

参数:

  • 当它出错时,为什么要返回JSON?只需发送无效的响应代码.

相反的观点:

  • 响应代码太技术化,无法处理普通开发人员.

你的发言是什么?

rest json web-services cxf

9
推荐指数
2
解决办法
9127
查看次数