直到昨天我的应用程序工作正常,但我所做的是,由于某些原因,我不得不在Android Studio中使用不同的工作空间打开相同的应用程序.从那时起,当我尝试运行应用程序时,我得到了以下异常,所以我已经删除了新创建的工作节奏,但我仍然坚持以下的胖异常.请帮助我,因为我是android的新手
Throwing OutOfMemoryError "Failed to allocate a 170 byte allocation with 74 free bytes and 74B until OOM" (recursive case)
"main" prio=5 tid=1 Runnable
| group="main" sCount=0 dsCount=0 obj=0x74430970 self=0xb4606800
| sysTid=1905 nice=0 cgrp=apps sched=0/0 handle=0xb777c160
| state=R schedstat=( 0 0 0 ) utm=83 stm=36 core=0 HZ=100
| stack=0xbf15b000-0xbf15d000 stackSize=8MB
| held mutexes= "mutator lock"(shared held)
at java.lang.String.<init>(String.java:233)
at java.lang.String.<init>(String.java:191)
at java.io.ByteArrayOutputStream.toString(ByteArrayOutputStream.java:175)
at java.util.jar.ManifestReader.readValue(ManifestReader.java:181)
at java.util.jar.ManifestReader.readHeader(ManifestReader.java:107)
at java.util.jar.ManifestReader.readEntries(ManifestReader.java:59)
at java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:311)
at java.util.jar.JarVerifier.readCertificates(JarVerifier.java:268)
at java.util.jar.JarFile.getInputStream(JarFile.java:380)
at libcore.net.url.JarURLConnectionImpl.getInputStream(JarURLConnectionImpl.java:222)
at java.net.URL.openStream(URL.java:470)
at …Run Code Online (Sandbox Code Playgroud) 我知道Kinesis Stream中的数据记录将在24小时内自动删除.但是在我的应用程序中,当我将一些数据写入流时,如果我想第二次写入其他数据,则应首先删除先插入的数据.请任何人帮助我,因为我不熟悉使用AWS Kinesis Stream ...我没有从Kinesis Service API获得任何帮助......
很长一段时间我一直面临这个问题,通过良好的实践来实现以下场景.我遇到了问题.如果我在某个地方出错,建议我或指导我.详情如下.
1)我有一个充当服务器套接字程序的PLC.我有一个Java客户端套接字程序来读取服务器中的数据.
由于此处PLC是服务器,它建立被动通信,当客户端启动通信时,服务器向客户端提供来自特定区域的数据,该区域如下所示

正如您在图像中看到的,对于每次读取,客户端程序应从服务器发送区域获取从第一个字节到最后一个字节的所有数据.根据客户端程序提供的偏移量和长度,它处理数据并将其存储到数据库中.
注意:每次客户端程序都应获得具有相同偏移量和长度的类似数据.
2)我不确定我是否可以通过单个套接字连接实现此功能(已尝试但未获得预期结果),是从服务器读取数据,处理数据,将其存储在db中然后关闭套接字.并再次重新创建套接字.而且我每隔1秒就会这样做.这意味着我创建了很多套接字.
整体结构可以如下图所示
3)我用来从服务器获取数据的客户端代码如下
try {
socket = new Socket(host, port);
is = socket.getInputStream();
outputBuffer = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int read;
if((read = is.read(buffer)) != -1) {
outputBuffer.write(buffer, 0, read);
}
/* All Processing work */
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
System.out.println("Before closing the socket");
try {
is.close();
socket.close();
} …Run Code Online (Sandbox Code Playgroud) 我是Swagger的新手,我开始使用Spring Boot构建非常简单的Web服务.
问题是,我招摇配置后,在浏览器中,当我键入本地主机:8080 /招摇,ui.html使用动态Servlet时我得到一个表示"无法推断基本URL一些奇怪的弹出消息,这下面的屏幕这是常见的.注册或当API在API网关后面时".
我知道这似乎是一个重复的问题,但我无法解决这个问题.接下来,我发布了屏幕截图和完整的代码,我没有出错.如果我出错了,请让我明白.
代码
SwaggerConfig.java
package com.test.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import static springfox.documentation.builders.PathSelectors.regex;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket productApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.paths(regex("/greet.*"))
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
TestApplication.java
package com.test.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages="com.test.controllers")
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
TestController.java
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/greet")
public class TestController { …Run Code Online (Sandbox Code Playgroud) 我想以 64 字节的间隔读取一个文件。而且我也不想使用任何内部实现缓冲的功能。我想手动进行缓冲。所以我开始使用 fs.read()。我很努力,但我真的不知道如何设置位置,告诉从文件中读取的位置和缓冲区中的偏移量以开始写入。
所以我找到了很少的资源并开始自己实现。但我所做的似乎完全错误。请在下面找到我的代码。
app.get('/manualBufferAnother', function (req, res, next) {
var filePath = path.join(__dirname, 'Koala.jpg');
console.log("FilePath is: "+filePath);
var fileName = path.basename(filePath);
var mimeType = mime.lookup(filePath);
var stat = fs.statSync(filePath);
res.writeHead(200, {
"Content-Type": mimeType,
"Content-Disposition" : "attachment; filename=" + fileName,
'connection': 'keep-alive',
"Content-Length": stat.size,
"Transfer-Encoding": "chunked"
});
fs.open(filePath, 'r', function(err, fd) {
var completeBufferSize = stat.size;
var offset = 0; //is the offset in the buffer to start writing at
var length = …Run Code Online (Sandbox Code Playgroud) 我是java中这个并发编程的新手,并提出了以下场景,我在混淆时使用它.
场景1:在下面的代码中,我试图通过在GPSService类上调用.start ()来运行线程,这是一个Runnable实现.
int clientNumber = 0;
ServerSocket listener = new ServerSocket(port);
while (true) {
new GPSService(listener.accept(), clientNumber++, serverUrl).start();
}
Run Code Online (Sandbox Code Playgroud)
场景2:在下面的代码中,我试图通过使用ExecutorService类来运行线程,如图所示
int clientNumber = 0;
ServerSocket listener = new ServerSocket(port);
while(true) {
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(new GPSService(listener.accept(), client++, serverUrl));
executor.shutdown();
while (!executor.awaitTermination(1, TimeUnit.SECONDS)) {
// Threads are still running
System.out.println("Thread is still running");
}
// All threads are completed
System.out.println("\nThread completed it's execution and terminated successfully\n");
}
Run Code Online (Sandbox Code Playgroud)
我的问题是
在并发编程中调用线程的最佳实践是什么?
当我使用第一个或第二个时,我会得到什么结果(麻烦)?
注意:我一直面临着第一个场景的问题,即每隔几天该程序就会被吊死.那么,当我使用第一种方法时,该问题是否与预期有关.
任何好的/有用的答案将不胜感激:)谢谢
我能够对节点中的函数表达式执行 Joi 验证,如下所示
export var shippingInfo = Joi.object().keys({
expectedDeliveryDate:Joi.date().required(),
isRegisteredCompanyAddress:Joi.number().required(),
addressLine:Joi.string(),
country:Joi.string(),
state:Joi.string(),
city:Joi.string(),
zipcode:Joi.string()
});
Run Code Online (Sandbox Code Playgroud)
但问题是,我最近开始研究打字稿。所以在这里,我有几个类,我应该像在上面的函数表达式中那样执行 Joi 验证。即我想验证下面的类
export class ShippingInfo {
expectedDeliveryDate: Date,
isRegisteredCompanyAddress: number,
addressLine:string,
country:string,
state:string,
city:string,
zipcode:string
}
Run Code Online (Sandbox Code Playgroud)
我应该如何对上述课程进行验证。应该对类级别还是对象级别进行验证?如何?
以下场景解释了我的问题.
我有一个充当服务器套接字程序的PLC.我编写了一个客户端Java程序,通过与PLC的套接字通信进行通信.
在此过程中发生的步骤是:
1)对于每一秒,我的客户端程序碰巧与PLC通信,读取流中的数据,临时将数据存储在ByteArrayOutputStream中并关闭输入流和套接字.以下片段给出了这个想法
try {
socket = new Socket(host, port);
is = socket.getInputStream();
outputBuffer = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int read;
if((read = is.read(buffer)) != -1) {
outputBuffer.write(buffer, 0, read);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
System.out.println("Before closing the socket");
try {
is.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("After closing the socket");
} …Run Code Online (Sandbox Code Playgroud) 我正在努力将我的项目从 Java 8 迁移到 Java 11。所以我使用了 Spring 5.1.0、Java 11、Eclipse 4.16 和 Tomcat 9。我能够成功构建源代码。但当谈到测试时,他们却失败了。
这是我在 pom.xml 中进行测试的内容。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.27.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我的测试用例在 Java 8 中的上述依赖关系下运行得非常好。但是当我将代码迁移到 Java 11 时,我遇到了以下异常。
ERROR: org.springframework.test.context.TestContextManager - Caught exception while allowing
TestExecutionListener
[org.springframework.test.context.support.DependencyInjectionTestExecutionListener@54e063d] to
prepare test instance [com.test.SomeTest2@4293943]
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:122) ~[Spring-test-5.1.0.RELEASE.JAR:5.1.0.RELEASE]
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DefaultTestCDependencyInjectionTestExecutionListenerontext.java:122) ~[Spring-test-5.1.0.RELEASE.JAR:5.1.0.RELEASE]
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DefaDefaultTestCDependencyInjectionTestExecutionListenerontextultTestContext.java:122) ~[Spring-test-5.1.0.RELEASE.JAR:5.1.0.RELEASE]
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:312) ~[Spring-test-5.1.0.RELEASE.JAR:5.1.0.RELEASE]
at …Run Code Online (Sandbox Code Playgroud) 我知道提出这样的问题很奇怪.但我没有选择.问题是
我遇到了一个要求,我碰巧添加了一个条件,其中,如果有一个输入作为字符串,我应该能够允许所有只包含一个单词的字符串.所以如果有很多话,我应该拒绝.当我对这样的字符串没有特异性时,如何添加这样的检查.
java ×6
node.js ×2
sockets ×2
android ×1
classpath ×1
concurrency ×1
eclipse ×1
file-io ×1
javascript ×1
joi ×1
junit ×1
maven ×1
spring ×1
spring-boot ×1
string ×1
swagger ×1
swagger-ui ×1
typescript ×1
validation ×1