我有两个线程,一个线程处理队列,另一个线程将内容添加到队列中。
然而,这些函数在调用时调用System.Threading.SynchronizationLockException: Object synchronization method was called from an unsynchronized block of code,Monitor.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) 我有一个如下所示的数据文件:
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个不同的数据文件不是一个选项).
有人知道怎么做吗?
一如既往的帮助将深深体会.
我花了很长时间与谷歌一起找到关于这个主题的一些信息,但是与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) 我有多个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 > 0">Failure</xsl:when>
<xsl:when test="$errorCount > 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) 我正在使用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) 首先抱歉标题的名称,但我不知道怎么放另一个,因为英语不是我的母语.
我有以下方法连接到数据库:
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) 我知道这可能不是最纯粹形式的依赖注入,但假设我必须使用:
@Inject
Injector injector;
Run Code Online (Sandbox Code Playgroud)
使用这个注入器,是否有可能获得所有给定的绑定实例:
我看到了Injector#findBindingsByType()方法,但我不确定它在这方面是否有帮助。
我正在尝试创建一个在页面上有三个黑框的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个非常窄的盒子.
我已经更新了查询,但现在出现的错误是: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)