我使用Entity Framework Code First开始了我的项目.当我准备好时,我将我的数据库和代码上传到我的主机提供商.一切正常.
我需要在我的一个类中添加一个新字段,我不想丢失数据库中的数据.因此,我尝试了一些关于使用Code First Migrations的博客文章.我做了以下事情:
当我访问该网站时,我收到以下错误消息:自创建数据库以来,支持'blahblah'上下文的模型已更改.考虑使用Code First Migrations来更新数据库.
我究竟做错了什么?
使用thymeleaf有一种方法来装饰我的布局w /我的页面特定的JavaScript和JavaScript包括?
<!--My Layout -->
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div th:replace="fragments/header :: header">
</div>
<div class="container">
<div layout:fragment="content">
</div>
</div>
</body>
</html>
<!--My Page -->
<!DOCTYPE html>
<html layout:decorator="layout">
<head>
</head>
<body>
<div layout:fragment="content">
hello world
</div>
<script src="pageSpecific1.js"></script>
<script src="pageSpecific2.js"></script>
<script>
alert("hello world")
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我需要不断更新和查询mysql数据库(我不认为我需要一个servlet来做这个,只是一个普通的java类).但我不知道如何调用该类或在servlet启动时运行它.
用户名为“JonTester1”的用户说他 4 小时前访问的一些页面真的很慢。我如何才能看到JonTester1在 App Insights 中所做的一切以排除故障/知道他指的是哪些页面?
似乎User Id
在 App Insights 中是一些 Azure 生成的匿名事物,例如u7gbh
Azure 与它自己对同一用户的想法有关(通过 cookie?)。它根本不知道我们应用程序的用户名。
我也看到了在应用程式深入分析一个单独的字段叫Auth Id
(或user_AuthenticatedId
某些地方),看起来到有时有实际的用户名,例如“JonTester1”填补了-但并不总是......虽然我没有看到任何提及的文档中的这个领域,似乎很有希望。我们的应用程序的代码/配置应该如何设置Auth Id
以确保每个 App Insights 日志/遥测都已设置?
相关的 MS 文档:
new TelemtryClient()
setAuth...
JS 函数调用(仍然没有跟踪用户的工作客户端 JS 的完整示例),您不需要任何服务器端代码来跟踪两个客户端的自定义用户 ID和发送到 Azure 的服务器端遥测......但它也显示了显式代码来新建 TelemetryClient() …我正在使用 Tess4J(Tesseract 的 JNA 包装器),并尝试tess.doOCR(myFile)
从单页 PDF 调用 OCR 文本。
我安装了 GhostScript(通过使用yum install ghostscript
),gs -h
工作正常。
我的应用程序服务器正在使用64-bit JVM
,并且我有gsdll64.dll
,以及 64 位 tesseract dll 的liblept168.dll
和libtesseract302.dll
在类路径中。
tess.doOCR(myFile)
调用时,会记录以下内容:
GPL Ghostscript 8.70 (2014-09-22)
Copyright (C) 2014 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Run Code Online (Sandbox Code Playgroud)
但随后就到此为止了。该计划不再继续。
更新 -
看起来真正的问题来自这个错误:
java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native …
类似于File.insert.execute上的Java Google Drive SDK SocketTimeoutException
上载成千上万个文件,似乎每50个文件中就有1个抛出
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
at sun.security.ssl.InputRecord.read(InputRecord.java:480)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
at com.google.api.client.http.javanet.NetHttpResponse.<init>(NetHttpResponse.java:36)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:94)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:965)
at com.google.api.client.googleapis.media.MediaHttpUploader.executeCurrentRequestWithoutGZip(MediaHttpUploader.java:545)
at com.google.api.client.googleapis.media.MediaHttpUploader.executeCurrentRequest(MediaHttpUploader.java:562)
at com.google.api.client.googleapis.media.MediaHttpUploader.executeUploadInitiation(MediaHttpUploader.java:519)
at com.google.api.client.googleapis.media.MediaHttpUploader.resumableUpload(MediaHttpUploader.java:384)
at com.google.api.client.googleapis.media.MediaHttpUploader.upload(MediaHttpUploader.java:336)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:418)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
...
Run Code Online (Sandbox Code Playgroud)
上 files().insert().execute()
我不确定插入文件时收到此异常的“含义”。
exponential back-off and retry
此错误时该怎么办?我在Windows 64位上使用tesseract 3和Java 8到OCR扫描的PDF.我已经按照Tess4j页面上的说明使用了64位版本的所需DLL,并安装了64位Ghostscript.
当我使用正常的@Test(无参数)运行我的单元测试时,代码运行正常,所以我想我已经正确安装了所有内容.
当我用2个并行线程运行它时(见下文),我得到一个例外.
我在这里已经阅读了相关的主题,但建议使用我正在使用的Tesseract1(我已经尝试了两个).
有任何想法吗?
这是代码:
// @Test // works
@Test(invocationCount = 2, threadPoolSize = 2)
public void testOcr() throws OcrException, TesseractException {
File scannedPdf = new File(this.getClass().getClassLoader().getResource("scanned.pdf").getFile());
// Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping
Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping
String str = instance.doOCR(scannedPdf);
System.out.println("OCR Result: " + str);
}
Run Code Online (Sandbox Code Playgroud)
这是例外:
log4j:WARN No appenders could be found for logger (org.ghost4j.Ghostscript).
log4j:WARN Please initialize …
Run Code Online (Sandbox Code Playgroud) 我有一个业务案例,其中需要依次发生3件事:
现在,抽象类FileTransfer提供了1. downloadFiles()和3. upload()的实现,但不提供2. process()- 子类(例如MusicFileTransfer或VideoFileTransfer或PDFFileTransfer)将在2. process( )阶段。
因此,使抽象类看起来像这样很明显:
public abstract class FileTransfer {
public void download() {
// implementation provided
}
public abstract void process(); // implementation not provided
public void upload() {
// implementation provided
}
}
Run Code Online (Sandbox Code Playgroud)
但是有一个问题- 永远 不会有这样的时间,例如MusicFileTransfer在download()或任何其他顺序之前调用process()。该进程必须始终为1. download(),2。process(),然后为3. upload()。
所以我想像这样:
public void doTransfer() {
// private methods since we want to enforce this order of execution
download(); // implem provided
process(); // abstract method
upload(); // implem provided
}
Run Code Online (Sandbox Code Playgroud)
在FileTransfer中包装这三个调用。但是为了使子类MusicFileTransfer覆盖process()...,它必须是公共的或受保护的(非私有的)。 …
我有两个用Maven构建的库,然后安装到本地仓库中.
在我的应用程序中,我正在使用这两个库,因此我以标准方式在我的pom中引用它们:
<dependency>
<groupId>...</groupId>
<artifactId>simple-google-drive-manager</artifactId>
<version>1.0-SNAPSHOT</version
</dependency>
<dependency>
<groupId>...</groupId>
<artifactId>PdfBoxUtils</artifactId>
<version>1.0-SNAPSHOT</version
</dependency>
Run Code Online (Sandbox Code Playgroud)
两个库是PdfBoxUtils和simple-google-drive-manager
在Eclipse中,在Maven依赖项下,大多数事情都artifactId-version.jar
按预期列出.但对于我制作的自定义库,Eclipse认识到它们位于相同的工作空间中,而不是包含jar,包括项目本身.
我不想要这个!令人困惑,我希望能够强制这个项目使用本地安装的库,而不仅仅是库项目源中的当前库.
我如何让eclipse 实际使用本地仓库中的JAR而不是引用本地项目?
我正在使用PDFBox和iText从各种语言创建一个简单(只是段落)的pdf文档.就像是 :
pdfBox:
private static void createPdfBoxDocument(File from, File to) {
PDDocument document = null;
try {
document = new TextToPDF().createPDFFromText(new FileReader(from));
document.save(new FileOutputStream(to));
} finally {
if (document != null)
document.close();
}
}
private void createPdfBoxDoc() throws IOException, FileNotFoundException, COSVisitorException {
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
PDType1Font font = PDType1Font.TIMES_ROMAN;
contentStream.setFont(font, 12);
contentStream.beginText();
contentStream.moveTextPositionByAmount(100, 400);
contentStream.drawString("š");
contentStream.endText();
contentStream.close();
document.save("test.pdf");
document.close();
}
Run Code Online (Sandbox Code Playgroud)
itext …
所以今天我脑子里有了一个想法...而且我想听一些反馈.我有一个Java应用程序,需要每5分钟检查一个目录.简单而简单的应用程序需要每五分钟运行一次.
看起来像cronjob的一个很好的候选人,但我想知道...为什么不保持逻辑/时间在应用程序中像这样(显然简化):
public static void main(String[] args) {
while(true) { // repeatedly execute...
// do the work/job
Thread.sleep(600 * 1000); // make the thread sleep for 5 minutes
}
}
Run Code Online (Sandbox Code Playgroud)
我看到的一个重要缺点是" 一旦它开始,我们如何停止这个应用程序?删除它?
除了那个之外,还有其他重要的缺点吗?
我应该停止做白日梦而只是使用cron工作吗?