小编Don*_*gyi的帖子

Java和Cobol的区别

任何人都可以帮助比较和对比Java和cobol在技术差异和架构设计风格方面

java cobol

5
推荐指数
1
解决办法
7883
查看次数

同步异常

我有两个线程,一个线程处理队列,另一个线程将内容添加到队列中。

  1. 我想在队列处理线程完成处理队列后将其置于睡眠状态
  2. 我想让第二个线程告诉它在将项目添加到队列时唤醒

然而,这些函数在调用时调用System.Threading.SynchronizationLockException: Object synchronization method was called from an unsynchronized block of codeMonitor.PulseAll(waiting);因为我尚未将函数与等待对象同步。[我不想这样做,我希望能够在将项目添加到队列时进行处理]。我怎样才能实现这个目标?

Queue<object> items = new Queue<object>();
object waiting = new object();
Run Code Online (Sandbox Code Playgroud)

第一个线程

public void ProcessQueue()
{
 while (true)
 {
   if (items.Count == 0)
     Monitor.Wait(waiting);

    object real = null;
    lock(items) {
    object item = items.Dequeue();
    real = item;
    }
    if(real == null)
        continue;
    .. bla bla bla
 } 
}
Run Code Online (Sandbox Code Playgroud)

第二个线程涉及

public void AddItem(object o)
{
 ... bla bla bla
 lock(items)
 {
 items.Enqueue(o);
 } …
Run Code Online (Sandbox Code Playgroud)

c# queue multithreading monitor

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

Oracle SQL Loader将数据拆分为不同的表

我有一个如下所示的数据文件:

    1            2          3        4             5            6    
FirstName1 | LastName1 | 4224423 | Address1 | PhoneNumber1 | 1/1/1980
FirstName2 | LastName2 | 4008933 | Address1 | PhoneNumber1 | 1/1/1980
FirstName3 | LastName3 | 2344327 | Address1 | PhoneNumber1 | 1/1/1980
FirstName4 | LastName4 | 5998943 | Address1 | PhoneNumber1 | 1/1/1980
FirstName5 | LastName5 | 9854531 | Address1 | PhoneNumber1 | 1/1/1980
Run Code Online (Sandbox Code Playgroud)

我的DB有2个表,一个用于PERSON,一个用于ADDRESS,因此我需要在PERSON中存储列1,2,3和6,在ADDRESS中存储列4和5.SQL Loader文档中提供的所有示例都解决了这种情况,但仅针对固定大小的列,并且我的数据文件是管道分隔的(并且将其分为2个不同的数据文件不是一个选项).

有人知道怎么做吗?

一如既往的帮助将深深体会.

oracle multiple-tables delimited-text sql-loader

5
推荐指数
1
解决办法
1264
查看次数

Java协变返回类型不适用于重写枚举实例的方法?

我花了很长时间与谷歌一起找到关于这个主题的一些信息,但是与Java枚举和协变返回类型相关的结果几乎不存在.

所以:是否可以使用带有枚举方法的协变返回类型,在枚举类中定义一个方法,然后在实例中覆盖它,如下所示:

package enumcovariance.test;

public enum CovariantEnum {

    INT_INSTANCE(new Integer(3)) {
        @Override
        public Integer getData () {
            return (Integer) super.getData();
        }
    },

    STR_INSTANCE("Hello world") {
        @Override
        public String getData () {
            return (String) super.getData();
        }
    };

    private final Object data;

    private CovariantEnum(Object data) {
        this.data = data;
    }

    public Object getData () {
        return data;
    }

}
Run Code Online (Sandbox Code Playgroud)

然后像这样利用协方差:

package enumcovariance.test;

import org.junit.Test;


public class CovariantEnumTest {

    @Test
    public void intEnumTest () {
        Integer i = CovariantEnum.INT_INSTANCE.getData();
    }

    @Test
    public void …
Run Code Online (Sandbox Code Playgroud)

java enums types return covariant

5
推荐指数
1
解决办法
738
查看次数

写在xml的末尾

我有多个Xml文件,在List<File>.我想要的是使用Xsl将这些xml转换为一个Xml:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" indent="yes"/>

<xsl:template match="testsuites">
    <xsl:call-template name="summary"/>
</xsl:template>

 <xsl:template name="summary">
           <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
         <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
         <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
 <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
         <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
          <xsl:attribute name="class">
                <xsl:choose>
                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
                </xsl:choose>
            </xsl:attribute>
         <Build>
          <NombreTest><xsl:value-of select="$testCount"/></NombreTest>
          <Failures><xsl:value-of select="$failureCount"/></Failures>
          <Erreurs><xsl:value-of select="$errorCount"/></Erreurs>
         <PercentSucces><xsl:call-template name="display-percent">
                    <xsl:with-param name="value" select="$successRate"/>
                </xsl:call-template></PercentSucces>
          <ExecTime><xsl:call-template name="display-time">
                   <xsl:with-param name="value" select="$timeCount"/>
                </xsl:call-template> </ExecTime>
          </Build> 
       </xsl:template>

<xsl:template match="failure">
    <xsl:call-template name="display-failures"/>
</xsl:template> …
Run Code Online (Sandbox Code Playgroud)

java xml xslt

5
推荐指数
1
解决办法
216
查看次数

我可以创建一个反序列化我的对象的字符串版本的构造函数吗?

我正在使用Delphi帮助文件中的ComponentToString部分中的示例对对象(TComponent后代)进行序列化和反序列化.这样我就可以将对象存储在数据库的VARCHAR字段中.

当我需要从存储在数据库中的字符串实例化我的类的新实例时,我可以使用表单的构造函数来实现CreateFromString(AOwner: TComponent; AData: String)吗?或者我是否必须使用返回组件类实例的非类方法?

如果我可以使用构造函数版本,如何将ReadComponent的返回值"映射"到构造函数创建的"self"?

这是帮助文件中的反序列化示例:

function StringToComponentProc(Value: string): TComponent;
var
  StrStream:TStringStream;
  BinStream: TMemoryStream;
begin
  StrStream := TStringStream.Create(Value);
  try
    BinStream := TMemoryStream.Create;
    try
      ObjectTextToBinary(StrStream, BinStream);
      BinStream.Seek(0, soFromBeginning);
      Result:= BinStream.ReadComponent(nil);
    finally
      BinStream.Free;
    end;
  finally
    StrStream.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi serialization delphi-2010

5
推荐指数
1
解决办法
655
查看次数

JDBC连接使用不同的文件

首先抱歉标题的名称,但我不知道怎么放另一个,因为英语不是我的母语.

我有以下方法连接到数据库:

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

public class PgConnect {
    public  void connect() {
        Connection connection = null;
        try {
            connection = DriverManager.getConnection("jdbc:postgresql://pgserver:5432/db", "test","test123");
        } catch (SQLException e) {
            System.out.println("Connection Failed! Check output console");
            e.printStackTrace();
            return;
        }
        if (connection != null) {
            System.out.println("Connection working");
        } else {
            System.out.println("Failed to make connection!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要做的是包括PgConnect下面代码中的方法.基本上我需要这个,因为我有很多类型的SQL对数据库的调用,并且这种方式的更改很容易维护,因为凭证/主机只能在一个文件上.

我相信改变应该是我发表评论的地方

// i want to change this, for using the method on the first file. 
Run Code Online (Sandbox Code Playgroud)

如果我错了,请纠正我.

import java.sql.DriverManager;
import java.sql.Connection;
import …
Run Code Online (Sandbox Code Playgroud)

java methods jdbc

5
推荐指数
1
解决办法
1957
查看次数

Guice :是否有可能获得给定特定父/接口/注释的所有绑定实例?

我知道这可能不是最纯粹形式的依赖注入,但假设我必须使用:

@Inject
Injector injector;
Run Code Online (Sandbox Code Playgroud)

使用这个注入器,是否有可能获得所有给定的绑定实例:

  1. 每个实例都会继承的父类?
  2. 每个实例将实现的接口?
  3. 每个实例都有一个注释?

我看到了Injector#findBindingsByType()方法,但我不确定它在这方面是否有帮助。

guice guice-servlet

5
推荐指数
1
解决办法
6441
查看次数

dompdf忽略宽度属性

我正在尝试创建一个在页面上有三个黑框的PDF.我编写了以下内容..

  <?php
  require_once("dompdf_config.inc.php");

  $html =
    '
  <!DOCTYPE html>
  <html>
  <head>
  <meta charset="utf-8" />
  <title></title>
  <style type="text/css">

  .main
  {
  border: 0pt solid black;
  }
  .gutter
  {
  width: 100px;
  border: 1px solid black;
  }
  .card
  {
  width:50px;
  height:50px;
  border: 0px solid black;
  }
  </style>
  </head>
  <body>
  <table class="main" >
    <tbody>
      <tr>
        <td class="gutter"> </td>
        <td class="card"> </td>
        <td class="gutter"> </td>
        <td class="card"> </td>
        <td class="gutter"> </td>
      </tr>
    </tbody>
  </table>
  </body>
  </html>';

  $dompdf = new DOMPDF();
  $dompdf->load_html($html);
  $dompdf->render();
  $dompdf->stream("sample.pdf");
  ?>
Run Code Online (Sandbox Code Playgroud)

width属性完全被忽略.我在纸张的顶部有3个非常窄的盒子.

php dompdf

5
推荐指数
1
解决办法
6858
查看次数

在sql脚本中一起使用sum和max

我已经更新了查询,但现在出现的错误是:SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便在第7行的"AS max_parameter_value FROM tcs.parameter_values_archieve"附近使用正确的语法

    SELECT sum(max_pv) SUM_MAX,
       sum(min_pv) SUM_MIN,
       sum(max_pv) - sum(min_pv) DIFF
  FROM (SELECT t.parameter_value, t.created_date, t.meter_id, parameter_id
          FROM tcs.parameter_values_archieve t
         INNER JOIN (SELECT meter_id,
                           MAX(parameter_value) max_pv AS max_parameter_value
                      FROM tcs.parameter_values_archieve
                     where created_date like '2013-01-01%'
                       and created_date <= '2013-01-01 20:00:00'
                       and meter_id between 1 and 16
                       and parameter_id = 1
                     GROUP BY meter_id) q ON t.meter_id = q.meter_id
                                         AND t.parameter_value =
                                             q.max_parameter_value) MAX_TBL,
       (SELECT t.parameter_value, t.created_date, t.meter_id, parameter_id
          FROM tcs.parameter_values_archieve t
         INNER JOIN (SELECT meter_id,
                           MIN(parameter_value) min_pv AS …
Run Code Online (Sandbox Code Playgroud)

mysql sql database

5
推荐指数
1
解决办法
1204
查看次数