在过去的几个小时里,我一直试图绕过这个问题,但无法理解.我想我还是要习惯函数式编程风格;)
我编写了一个递归函数,遍历目录结构并对某些文件执行操作.此函数使用异步IO方法.现在我想在整个遍历完成时执行一些操作.
如何在执行所有parse
调用但仍使用异步IO功能后确保执行此操作?
var fs = require('fs'),
path = require('path');
function parse(dir) {
fs.readdir(dir, function (err, files) {
if (err) {
console.error(err);
} else {
// f = filename, p = path
var each = function (f, p) {
return function (err, stats) {
if (err) {
console.error(err);
} else {
if (stats.isDirectory()) {
parse(p);
} else if (stats.isFile()) {
// do some stuff
}
}
};
};
var i;
for (i = 0; i < files.length; i++) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Compose 中实现一个布局,其中水平滚动的项目Row
应具有相同的高度,因此较小的项目应调整为行中最大项目的大小。我知道内在大小,但我就是无法让它发挥作用。另外,我不想为 分配固定高度Row
,因为 Row 的高度也应该是其最大子可组合项的高度。
这是简化的布局
@Composable
fun Screen(
modifier: Modifier = Modifier,
) {
Row(
modifier = modifier
.height(IntrinsicSize.Min)
.horizontalScroll(state = rememberScrollState()),
horizontalArrangement = Arrangement.spacedBy(10.dp),
) {
Item(
text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy " +
"eirmod tempor invidunt ut labore et dolore magna aliquyam"
)
Item(
text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy " +
"eirmod tempor invidunt …
Run Code Online (Sandbox Code Playgroud) 鉴于以下课程
abstract class AbstractClass {
@Inject SomeDependency someDependency;
}
class SomeClass extends AbstractClass {
@Inject AnotherDependency anotherDepenency;
public void onCreate() {
component = // Get component instance somehow
component.inject(this);
}
}
Run Code Online (Sandbox Code Playgroud)
在Dagger 2中,当将依赖项注入到从包含依赖项的抽象基类扩展的类中时,Dagger Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead.
在编译期间显示了该类型的警告.
但是,如果我重写/实现onCreate()
中AbstractClass
并调用依赖注入有,也依赖someDependency
将被注入这两次可能会导致意外的行为.一旦onCreate()
中AbstractClass
和一次onCreate()
的SomeClass
.
在防止重复注入依赖项的同时摆脱此警告的最佳解决方案是什么?
我正在学习Scala,我在设计案例类时遇到了一些问题.我需要两个具有相同属性的案例类.所以我认为从一个定义这些属性的抽象基类继承是个好主意.但是这段代码无法编译
abstract class Resource(val uri : String)
case class File(uri : String) extends Resource(uri)
case class Folder(uri : String) extends Resource(uri)
Run Code Online (Sandbox Code Playgroud)
因为uri
在这种情况下类构造函数会覆盖uri
基类的属性.
设计这个的正确方法是什么?
我希望能够做这样的事情
val arr = Array[Resource](File("test"), Folder("test2"))
arr.foreach { r : Resource => r match {
case f : File => println("It's a file")
case f : Folder => println("It's a folder")
} }
Run Code Online (Sandbox Code Playgroud)
"等效"Java代码应该是这样的
abstract class Resource {
private String uri;
public Resource(String uri) {
this.uri = uri
}
public String getUri() { …
Run Code Online (Sandbox Code Playgroud) 我有一个绑定到持久服务的Android应用程序(一旦启动startService()
).
该服务是应用程序不可或缺的一部分,因此几乎在每个Activity中都使用.因此,我想只绑定一次服务(而不是在每个Activity中绑定/解除绑定)并在我的应用程序的生命周期内保持绑定.
我已经从Application扩展并绑定到Application#onCreate()中的服务.但是我现在遇到的问题是我不知道我的应用程序何时存在,因为从未调用Application#onTerminate(),请参阅JavaDoc:
此方法用于模拟过程环境.永远不会在生产Android设备上调用它,只需杀死它们即可删除进程; 这样做时不会执行任何用户代码(包括此回调).
那么如何从Application中绑定的服务中干净地取消绑定?
我正在使用Jersey JAX-RS参考实现在Scala中开发REST Web服务,我遇到了一个奇怪的错误.
我正在尝试使用ContentDisposition.ContentDispositionBuilder创建ContentDisposition对象.
ContentDisposition.ContentDispositionBuilder
有两种类型T extends ContentDisposition.ContentDispositionBuilder
和V extends ContentDisposition
.该方法type
的ContentDisposition
返回建设者实例.
代码
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).build()
Run Code Online (Sandbox Code Playgroud)
然而有效
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
Run Code Online (Sandbox Code Playgroud)
产生编译错误
error: value build is not a member of ?0
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
^
Run Code Online (Sandbox Code Playgroud)
(注意,type
需要将其放在"引号"中,因为它是Scala中的关键字)
fileName
中ContentDispositionBuilder
返回的实例T
所以这应该实际工作.
我不懂.任何的想法?我顺便使用Scala 2.9.0.1.
更新:
这有效.但为什么我需要这里的铸造?
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
.fileName("dummy")
.asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
.build()
Run Code Online (Sandbox Code Playgroud) 我正在开发具有 3 年以上 Kotlin 开发经验的 Android 应用程序,并希望逐步将其迁移到 Flutter 功能。我使用“添加 2 个应用程序”集成的选项 B,其中我依赖于模块的源代码。Flutter 编写的功能通过FlutterActivity
或集成到原生 Android 应用程序中FlutterFragment
。这对第一个功能很有用,但是现在我在迁移第二个功能时遇到了问题。第二个功能需要包camera
和firebase_ml_vision
. 现在的问题是camera
需要最小 SDK 为 21,但生成的 Android 代码.android
将最小 SDK 设置为 16。另外firebase_ml_vision
需要初始化 Firebase,这也需要添加到.android
. 我正在考虑添加.android
到 VCS 并添加所需的更改,但这是生成的代码。它在flutter clean
被调用和生成时被删除flutter pub get
。当 Flutter 更改/删除它时,我将不得不不断调整生成的代码:(.android
仅托管在 Flutter 项目从 IDE(或命令行)运行时启动的“骨架”Android 应用程序。它不是主机应用程序(旧的原生应用程序),其中已经配置了 Firebase。但是,该.android
应用程序用于快速开发周期。如果由于上述限制我无法再使用它,我将始终必须启动原生 Android 应用程序(主机)并失去许多好处Flutter 像热重载 :( 有没有人遇到过同样的问题?
更新:
在本文中,他们明确指出.android
不应修改或添加到 VCS。他们甚至以该camera
模块为例。但是,这不起作用,可以通过几个简单的步骤重现: …
我正在开发一个Java应用程序,它包含一个服务器和一个客户端(将来可能有多个客户端),可以在不同的主机上运行.
对于这两者之间的通信,我目前使用自定义协议,该协议由通过网络套接字发送的JSON消息组成,并且两端都转换回Java Bean对象.然而,应用程序越复杂,我注意到这种方法不符合我的标准并且过于复杂.
我正在寻找一个完善的,可能标准化的替代方案.
我已经看过远程方法调用(RMI),但是读到协议很慢(网络开销很大).
我正在寻找的技术应该是轻量级的(协议和库明智的),健壮的,可能支持压缩(如果它支持大的话!),可能支持加密,良好的文档和良好的建立(例如Apache项目).它应该像使用RMI调用远程对象上的方法一样简单,但没有缺点.
你能推荐什么?
在多线程Java应用程序中,我需要迭代一组对象.由于在我迭代它们时,另一个线程可以修改集合和对象,我需要使用同步.
但是不建议使用嵌套的同步块,因为它们可能导致死锁.我该如何解决这个问题?
Collection<Data> dataCollection = something.getDataCollection();
synchronized ( dataCollection ) {
for ( final Data data : dataCollection ) {
synchronized ( data ) {
data.doSomething(); // doSomething() changes object state
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想知道Hashtable#hashCode()
当Hashtable
只包含每对具有相同键和值的条目时,Java的默认实现是否被破坏.
请参阅以下应用程序:
public class HashtableHash {
public static void main(final String[] args) {
final Hashtable<String, String> ht = new Hashtable<String, String>();
final int h1 = ht.hashCode();
System.out.println(h1); // output is 0
ht.put("Test", "Test");
final int h2 = ht.hashCode();
System.out.println(h2); // output is 0 ?!?
// Hashtable#hashCode() uses this algorithm to calculate hash code
// of every element:
//
// h += e.key.hashCode() ^ e.value.hashCode()
//
// The result of XOR on identical hash codes is always …
Run Code Online (Sandbox Code Playgroud) 有一些问题解释了如何关闭表单字段的自动完成功能,但是我在这里有一个具体问题:
我已将 设为autocomplete="off"
和<form>
所有表单字段。当用户使用浏览器后退按钮从表单目标页面返回到原始页面(包含表单)时,我想防止浏览器预填充字段。表单字段使用一些不支持预填充值的 jQuery UI 小部件。用户在提交表单之前必须与表单进行交互。
这在 Firefox、Chrome、Safari 中按预期工作。但是它在 Internet Explorer 中不起作用(我测试了版本 8 和 9)。当通过浏览器的后退按钮返回页面时,IE 仍然会填写字段。
这是一个静态 HTML 页面,因此我无法执行一些后端操作,例如设置随机表单字段名称/ID。
我能做些什么?
我想在Bouncy Castle中使用AES 256位加密,我想知道是否仍然需要" Java密码学扩展(JCE)无限强度管辖权政策文件 ",因为我收到java.security.InvalidKeyException: Illegal key size
以下代码的例外:
public class AES256 {
public static void main(String[] args) throws Exception {
Security.addProvider(new BouncyCastleProvider());
final KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(256); // doesn't work for 192, too
final byte[] encoded = keyGen.generateKey().getEncoded();
final SecretKeySpec keySpec = new SecretKeySpec(encoded, "AES");
final Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
// Please ignore static IV for this example
final IvParameterSpec iv = new IvParameterSpec(new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, …
Run Code Online (Sandbox Code Playgroud) java ×5
android ×3
scala ×2
aes ×1
asynchronous ×1
autocomplete ×1
bind ×1
bouncycastle ×1
case ×1
class ×1
dagger ×1
dagger-2 ×1
encryption ×1
flutter ×1
forms ×1
hashcode ×1
hashtable ×1
html ×1
inference ×1
inheritance ×1
ipc ×1
javascript ×1
jersey ×1
nested ×1
node.js ×1
rmi ×1
rpc ×1
service ×1
types ×1
unbind ×1