我正在读一本名为" 算法简介 "的书.我想很多人都知道.我刚刚碰到一个看似相当困难的问题:
编写一个O(n)-time非递归过程,给定一个n节点二叉树,打印出每个节点的密钥.在树本身之外使用不超过恒定的额外空间,并且在过程中不要修改树,即使是暂时的.
我看到还有另外一个问题:如何在没有额外内存的情况下在O(n)时间遍历二叉树,但主要区别在于我无法修改树.我正在考虑使用一些访问过的标志,但我还没有提出正确的解决方案.这可能是我看不到的明显的东西.你会如何设计一个解决这个问题的算法?即使是对答案的一些指示也会受到赞赏.
我想知道是否打破一个带有span标签的单词来改变第一个字母的字体大小,会影响谷歌机器人读取这个单词的能力吗?受此影响的词语是关键词.
什么是"好"的java代码生成库?我在JaxMe中找到了一代人,但它很穷而且年老.我喜欢通过java代码生成java代码.所以基本上使用一个lib告诉它必须生成一个具体的类或接口与X字段,Y方法等,然后写入文件系统..我知道框架使用它们,但找不到一个独立的lib .. - Ed
我和我的同事现在有几个星期有争议.我想听听社区对此的看法.
我们在申请中使用guice.在这个应用程序的UI部分,我更喜欢通过DI和自定义注释(也就是工厂的位置)来实例化所有字段和组件,并在buildUI方法中将它们连接起来.
看起来如下:
我的方法:
@Inject
@PreConfigured(caption="foo", width="100%")
Label field;
private void buildUI() {
this.addComponent(field);
}
Run Code Online (Sandbox Code Playgroud)
我还写了一些数据绑定和i18n的注释.
我的同事这样做:
他的方法:
private Label field;
private void buildUI() {
field = new Label();
field.setCaption("foo");
field.setWidth("100%");
this.addComponent(field);
}
Run Code Online (Sandbox Code Playgroud)
这里的代码可能很长.考虑到数据绑定和其他主题,第二个代码可以变得更长,而我的方法只是另一个注释.
我的理由是:
他的理由是:
但是,我还阅读了福勒的一些文章,他说,定位注射(用场注射替代)是一个糟糕的设计决定.但是在其他项目中没有重用的视图呢?
Field Injection是一个糟糕的设计吗?或者上面介绍的另一种方式更优雅?
亲切的问候基督徒
PS:我知道讨论只是基于意见而开始,但这是一个长期持续的讨论(setter vs constructor injection),这可能是值得放手的.
我正在尝试将protobuf参数传递给REST端点,但我得到了
org.springframework.web.client.HttpServerErrorException:500 null
每次我试试.我现在拥有的是这样的:
@RestController
public class TestTaskEndpoint {
@PostMapping(value = "/testTask", consumes = "application/x-protobuf", produces = "application/x-protobuf")
TestTaskComplete processTestTask(TestTask testTask) {
// TestTask is a generated protobuf class
return generateResult(testTask);
}
}
@Configuration
public class AppConfiguration {
@Bean
ProtobufHttpMessageConverter protobufHttpMessageConverter() {
return new ProtobufHttpMessageConverter();
}
}
@SpringBootApplication
public class JavaConnectorApplication {
public static void main(String[] args) {
SpringApplication.run(JavaConnectorApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试看起来像这样:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@WebAppConfiguration
public class JavaConnectorApplicationTest {
@Configuration
public static class RestClientConfiguration {
@Bean
RestTemplate restTemplate(ProtobufHttpMessageConverter hmc) …Run Code Online (Sandbox Code Playgroud) 我有一个PublishSubject和一个Subscriber我用来处理(可能)无限的预处理数据流.问题是某些元素可能包含一些错误.我想忽略它们并继续处理.我怎么能这样做?我尝试过这样的事情:
val subject = PublishSubject.create<String>()
subject.retry().subscribe({
println("next: $it")
}, {
println("error")
}, {
println("complete")
})
subject.onNext("foo")
subject.onNext("bar")
subject.onError(RuntimeException())
subject.onNext("wom")
subject.onComplete()
Run Code Online (Sandbox Code Playgroud)
我的问题是没有任何错误处理方法可以帮助我:
onErrorResumeNext()- 指示Observable在遇到错误时发出一系列项目
onErrorReturn(?)- 指示Observable在遇到错误时发出特定项目
onExceptionResumeNext(?)- 指示Observable在遇到异常后继续发出项目(但不是另一种可抛出的项目)
retry(?)- 如果源Observable发出错误,请重新订阅它,希望它能完成而不会出错
retryWhen(?)- 如果源Observable发出错误,请将该错误传递给另一个Observable以确定是否重新订阅源
我尝试retry()了例子,但它无限期地在错误之后挂起我的进程.
我也试过,onErrorResumeNext()但它没有按预期工作:
val backupSubject = PublishSubject.create<String>()
val subject = PublishSubject.create<String>()
var currentSubject = subject
subject.onErrorResumeNext(backupSubject).subscribe({
println("next: $it")
}, {
println("error")
currentSubject = backupSubject
}, {
println("complete")
})
backupSubject.subscribe({
println("backup")
}, {
println("backup error")
})
currentSubject.onNext("foo")
currentSubject.onNext("bar") …Run Code Online (Sandbox Code Playgroud) 我在 Kotlin 中遇到 SAM 问题。我正在开发一个具有接受 lambda 函数的库。我的问题是我不能简单地写这个:
fun myFun(someLambda: (A) -> B) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
因为如果 Java 用户想要调用它,他们需要将 a 传递Function1给它,这不是很好的用户体验。如果我创建一个 SAM:
fun myFun(someSam: Function<A, B>) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
那么对于 Kotlin 用户来说就很麻烦了。到目前为止,我一直在做的是,我采用了 SAM 方式,并为 Kotlin 用户的所有这些函数添加了一个扩展函数,它只是转换为 SAM 函数:
inline fun <A, B> MyClass.someFun(crossinline fn: (A) -> B) {
return someFun(object : Function<A, B> {
override fun accept(value: A): B {
return fn.invoke(value)
}
})
}
Run Code Online (Sandbox Code Playgroud)
这种方法有很多样板,而且也很难维护。有更好的替代方案来解决这个问题吗?
我已经升级了我的 Kotlin 多平台项目以使用 Gradle 6.0.1:
gradle wrapper --gradle-version 6.0.1 --distribution-type all
Run Code Online (Sandbox Code Playgroud)
现在我的构建正在崩溃。它无法识别我添加为项目依赖项的常见模块:
dependencies {
commonMainApi("mygroup:mylib:$myversion")
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 Kotlin DSL,这个项目也是一个多平台项目。我得到的是一堵文本墙,详细说明了所有无法解析的导入(所有导入都应该是从common我的依赖项中的common模块导入到我的项目中的模块)。
我所做的唯一一件事就是升级到 Gradle 6.0.1。如果我恢复以前的状态,我的构建就可以了。我究竟做错了什么?
我已经在一个项目上工作了一段时间,有一天我试图在调试模式下运行我的项目,但我收到了以下错误消息:
Failed to find Premain-Class manifest attribute in C:\Users\myuser\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlinx\kotlinx-coroutines-core-metadata\1.3.8-native-mt-1.4.0-rc\5b54677a19ebb20ec7dac0d9e4dfc806df327df\kotlinx-coroutines-core-metadata-1.3.8-native-mt-1.4.0-rc.jar
Error occurred during initialization of VM
agent library failed to init: instrument
Run Code Online (Sandbox Code Playgroud)
我试过
.gradle从项目和我的 HOME 目录中删除文件夹但没有任何帮助。
我能做些什么来解决这个问题?我没有更改可以实现这一点的代码,它在一天前工作。
我的文件中有一个 husky 预提交钩子package.json:
"husky": {\n "hooks": {\n "pre-commit": "npx pretty-quick --staged"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我的项目中还有一个.prettierrc文件:
{\n "printWidth": 100,\n "singleQuote": false,\n "trailingComma": "all"\n}\nRun Code Online (Sandbox Code Playgroud)\n我的问题是,当我更改文件(已正确格式化)并运行时,npx pretty-quick --staged我会看到我所期望的内容:
Finding changed files since git revision 88264bc2a.\n Found 1 changed file.\n\xe2\x9c\x85 Everything is awesome!\nRun Code Online (Sandbox Code Playgroud)\n但是当我尝试使用git commit钩子运行相同的命令时,我得到以下输出:
husky > pre-commit (node v14.17.0)\n Finding changed files since git revision 88264bc2a.\n Found 1 changed file.\n\xe2\x9c\x8d\xef\xb8\x8f Fixing up src/somefile.ts.\n\xe2\x9c\x85 Everything is awesome!\nRun Code Online (Sandbox Code Playgroud)\n它不应该修复该文件,因为它已经正确格式化。我检查了配置选项pretty-quick,没有选项可以确定它正在使用哪个更漂亮的配置,而且我也无法明确告诉它要使用哪个配置(尽管我只有一个 …