我想格式化并将大型Map(1.785.530条目)的内容写入文本文件.大约85%的条目被处理后,它变得很慢,然后我得到了OutOfMemoryException.
出现同样的错误,即使我:
flush()或打电话close()给我FileWriterBufferedWriterStringBuffer在写入文件之前将每行写入a这是我的代码:
private static final TreeMap<Date, Integer> accessesPerSecondMap = new
TreeMap<>();
...
private static void writeOutputFile() throws IOException {
FileWriter writer = new FileWriter(FILENAME_OUTPUT);
writer.write("Date");
writer.write(',');
writer.write("Request Count");
writer.write('\n');
for (Date date : accessesPerSecondMap.keySet()) {
// first and last date are not precise so do not write it in the
// file
if (date == accessesPerSecondMap.firstKey()
|| date == accessesPerSecondMap.lastKey()) {
continue;
}
writer.write(String.valueOf(date));
System.out.println("FileMerger …Run Code Online (Sandbox Code Playgroud) 在 AWS Amplify 上构建时遇到以下错误:
语法错误:无法读取未定义的属性“映射”(0:未定义)
这是我的代码:
import React from 'react';
import ReactDOM from 'react-dom';
export default class BusinessHTTPService {
static getBusinessList = () => {
return axios.get(`${API_BASE}business-categories/?`).then(response => response.data);
};
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>Run Code Online (Sandbox Code Playgroud)
我正在寻求实现一个非常简单的算法,该算法使用强力反向跟踪来解决数独网格.我现在面临的问题是,我在执行中,我有两个实例变量Sudoku称为类row和col,对应于空单元格的行和列在代表数独网格二维数组.
当我的solve()方法执行时,它首先检查是否没有任何空单元格,在这种情况下拼图已经完成.否则,同一方法将空单元格的行和列分配给实例变量row和包含网格col的Sudoku对象.之后,for循环验证通过方法调用可以在该空单元格中放置哪个数字isSafe(int n)(此方法检查是否满足拼图的约束,我可以保证它完美地运行).因此,该isSafe()方法在空单元格中放置一个数字,然后solve()在该Sudoku对象上再次对该方法进行递归调用.
如果我们遇到了无法满足的约束,那么我们将a重新分配0给最后一个row并且col填充了.这就是问题所在!由于程序不断更新row和col变量,因此每次递归调用都会丢失旧实例.我一直在试图弄清楚如何存储这些值,以便程序可以在回溯时撤消操作.我想过互推col及row到堆栈,但我真的不知道该去哪里.
有人能告诉我解决这个问题的简单方法是什么?我不包括整个班级,如果你觉得它有用,请告诉我,我会发布.
class Sudoku {
int SIZE, N, row, col;
int Grid[][];
public boolean solve() {
if (!this.findNextZero()) return true;
for (int num = 1; num <= 9; num++) {
if (isSafe(num)) {
this.Grid[this.row][this.col] = num;
if (this.solve()) return true;
this.Grid[this.row][this.col] …Run Code Online (Sandbox Code Playgroud) 我正在尝试Settings Activity使用a PreferenceActivity.问题是ActionBar无论我做什么都不会出现.
我试过getSupportActionBar,getActionBar,setActionBar.什么都行不通.我用ActionBars 看到其他应用程序设置.他们不用PreferenceActivity吗?
java android android-preferences android-activity android-actionbar
在内部构建集合时Option,每次尝试使集合的下一个成员都可能失败,从而使集合整体失败.在第一次未能成为会员时,我想立即放弃并返回None整个收藏.在Scala中执行此操作的惯用方法是什么?
这是我提出的一种方法:
def findPartByName(name: String): Option[Part] = . . .
def allParts(names: Seq[String]): Option[Seq[Part]] =
names.foldLeft(Some(Seq.empty): Option[Seq[Part]]) {
(result, name) => result match {
case Some(parts) =>
findPartByName(name) flatMap { part => Some(parts :+ part) }
case None => None
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,如果任何调用findPartByName返回None,则allParts返回None.否则,allParts返回Some包含集合的集合Parts,所有集合都保证有效.空集合是可以的.
以上优点是它findPartByName在第一次失败后停止呼叫.但foldLeft无论如何,仍然会为每个名称迭代一次.
这是一个版本,只要findPartByName返回一个拯救None:
def allParts2(names: Seq[String]): Option[Seq[Part]] = Some(
for (name <- …Run Code Online (Sandbox Code Playgroud) 让我们想象一个问题:我有一个REST服务,它使用Java/MySQL/Spring和HTTP/JSON技术实现.REST服务的客户端是移动应用程序.所以有人可能会反编译代码并获得REST服务的API.(是的,代码是混淆等的,但无论如何).
问题:有一种POST方法可以向应用程序的其他用户汇款.我很担心,有人可以获得API,编写机器人并使此POST请求每秒500或5,000或甚至50,000次.结果,他可能会发送比实际更多的钱,因为如果同时处理1000个请求,那么对于所有1000个请求,余额检查可能会成功,但是一个帐户上的实际金额可能只够用于,假设,50个请求.
所以,基本上,它更像是具有多个线程的标准"竞争"条件.问题是,我有多台服务器,无论如何它们彼此无关.那么,300个请求可以来到服务器A,300个请求可以来到服务器B并且其他请求可以来到服务器C.
我最好的想法是使用"SELECT ... FOR UPDATE"之类的东西并在数据库级别上进行同步.但是,我想考虑另一种解决方案.
任何想法或建议?
我正在为我的 Android 项目创建一个 Gradle 任务,该任务需要知道编译.class文件的路径。我怎样才能得到这条路?我找到了一些建议(这里和这里;另请参阅Gradle 文档SourceSet),它们sourceSets.main.output.classDir会给我这条路径,但是当我尝试使用它时,出现错误
'output'在源集上找不到属性main。
即使我创建一个新的、最小的项目,也会发生这种情况build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
}
}
apply plugin: 'android'
android {
compileSdkVersion 22
buildToolsVersion "20.0.0"
task printClassesDir << {
println sourceSets.main.output.classesDir
}
}
Run Code Online (Sandbox Code Playgroud)
这个最小的项目构建得很好,但是如果我运行 task 会出现那个错误printClassesDir。如何.class在我的任务中获取文件输出目录?
我也试过的建议,<build variant>.javaCompile.classpath从这个回答另一个问题。我能够访问这个属性
applicationVariants.find{it.name == 'debug'}.javaCompile.classpath
Run Code Online (Sandbox Code Playgroud)
但是这个文件集合是空的。
作为参考,这里是我的最小项目的其他文件:
src/main/AndroidManifest.xml<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="a.b">
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="22" />
<application> …Run Code Online (Sandbox Code Playgroud) android gradle source-sets build.gradle android-gradle-plugin
我正在使用 JUnit 来测试访问 Postgres 数据库的存储库。
我的所有测试数据都是手动设置的,因此我确切地知道我期望在结果中得到什么值。我在测试使用的语句时遇到了麻烦current_timestamp,例如select * from phone_number where current_timestamp <= expires;
问题是我的测试数据是恒定的,但current_timestamp随着每次测试执行而随时间推移。
有没有办法让current_timestamp返回值恒定?
当然,这将是多种选择之一,我还有三种解决方案:
base_date timestamp default current_time)。所有其他数据被定义为该纪元数据之后的间隔(例如base_date + interval '1 day')。了解测试的大致运行时间后,我可以设置expires在测试期间绝对不会超出的时间戳(例如,base_date运行时间为秒后的几小时后)。不过,在我的测试数据中包含变量值会使检查变得更加困难。current_timestamp并在我的所有语句中使用额外的时间戳参数,在正常使用(在Java中)中将类似于System.currentTimeMillis()或new java.util.Date()(在任何情况下,“现在”),并且在我的测试中我可以传递恒定日期。不过,我不喜欢这个解决方案,因为a)它引入了正常使用(测试之外)中不需要的更改b)附加参数是附加错误的来源。current_timestamp除非存在某个值(表明“测试模式”已打开),否则该过程将返回,并且应返回一个常量。这实际上可能效果最好,但如果 Postgres 中有一种简单的方法来控制current_timestamp返回的内容,则可能没有必要。在sbt控制台,sbt版本0.13.5,Scala版本2.11.1,我可以得到javax.script.ScriptEngineScala:
scala> val engine = new javax.script.ScriptEngineManager().getEngineByName("scala")
engine: javax.script.ScriptEngine = scala.tools.nsc.interpreter.IMain@bf78a9
Run Code Online (Sandbox Code Playgroud)
但是,我不能用它:
scala> engine.eval("3")
[init] error: error while loading Object, Missing dependency 'object scala in compiler mirror', required by /usr/lib/jvm/java-7-openjdk-i386/jre/lib/rt.jar(java/lang/Object.class)
Failed to initialize compiler: object scala in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programatically, settings.usejavacp.value = true.
scala.reflect.internal.MissingRequirementError: object …Run Code Online (Sandbox Code Playgroud) 以下查询对我来说非常好:
SELECT * From Customers
WHERE Customers.ContactName = (SELECT FirstName
FROM Employees as E, orders as O
WHERE <condition>
LIMIT 1);
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用LIKE而不是=与子查询的结果进行比较,则不会得到任何结果。如何LIKE '%%'在上述查询中使用?
java ×5
android ×2
scala ×2
build.gradle ×1
filewriter ×1
gradle ×1
jsr223 ×1
junit ×1
monads ×1
mysql ×1
optional ×1
postgresql ×1
reactjs ×1
recursion ×1
rest ×1
sbt ×1
scala-2.11 ×1
scala-option ×1
source-sets ×1
sql ×1
sql-like ×1
subquery ×1
sudoku ×1