你好java福音传道者!
我使用Eclipse进行Java开发已有一年多了.Eclipse非常适合支持IDE中的所有内容.但在我看来,它永远不会完美地完成这些任务.
我花了很多时间在一个微调器前面等待,因为有些进程占用了我所有的CPU.用户界面非常老式,不直观,迟钝.我努力了,但无法配置满足我要求的黑暗主题.
Eclipse是好的,但这是我每天都在工作的工具,它应该更好,更有趣!
我偶尔会使用Sublime Text来编写像python这样的脚本语言,我很欣赏它.显然,这个轻量级编辑器有很多插件,似乎提供了Eclipse开发人员使用的Eclipse开发人员的功能.但我不确定它们有多成熟以及它们如何协同工作.
在花一天时间尝试之前,有没有人有使用Sublime进行Java开发的经验?
我不想错过的功能是:
Sublime Text 2可以提供这些功能,是否值得从Eclipse更改?
谢谢你的帮助!
我喜欢Kotlin的解构功能,它们帮助我整理代码并专注于基本功能.
我遇到了一个案例,我无法弄清楚正确的语法,如何通过破坏重新分配变量?
var (start, end) = startEndDate(198502)
// intellij neither accept this ...
start, end = startEndDate(200137)
// ... nor this
(start, end) = startEndDate(200137)
Run Code Online (Sandbox Code Playgroud) 我正在学习熊猫,并在这里遇到这个问题.
我创建了一个跟踪所有用户的数据框以及他们执行某些操作的次数.
为了更好地理解我创建此示例的问题:
import pandas as pd
data = [
{'username': 'me', 'bought_apples': 2, 'bought_pears': 0},
{'username': 'you', 'bought_apples': 1, 'bought_pears': 1}
]
df = pd.DataFrame(data)
df['bought_something'] = df['bought_apples'] > 0 or df['bought_pears'] > 0
Run Code Online (Sandbox Code Playgroud)
在最后一行中,我想添加一个列,指示用户是否已经购买了一些东西.
弹出此错误:
ValueError:Series的真值是不明确的.使用a.empty,a.bool(),a.item(),a.any()或a.all().
我理解熊猫系列中的歧义点(这里也有解释),但我无法将其与问题联系起来.
有趣的是这有效
df['bought_something'] = df['bought_apples'] > 0
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
我和kotlin一起面临春天的问题.
我有一个控制器bean(没有接口btw),它通过主构造函数有一个自动连接的服务bean.
除非我为控制器使用缓存注释,否则它工作正常.显然,spring缓存会在引擎盖下生成一个代理类来处理缓存.
我的代码看起来像这样:
@RestController
@RequestMapping("/regions/")
open class RegionController @Autowired constructor(val service: RegionService) {
@RequestMapping("{id}", method = arrayOf(RequestMethod.GET))
@Cacheable(cacheNames = arrayOf("regions"))
fun get(@PathVariable id: Long): RegionResource {
return this.service.get(id)
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是当执行该方法的零指示字例外,实际上this.service
是null
这在技术上是不可能的,因为它是在一个科特林非空变量.
我假设spring生成的类代理用null值而不是autowired bean初始化类.这必须是使用kotlin和spring的常见陷阱.你是怎么绕过这个问题的?
这是我使用 golang 的第二天,我可能会问一个非常基本的问题:
我想替换字符串的一部分,这就是strings.Replace的用途:
func Replace(s, old, new string, n int) string
Run Code Online (Sandbox Code Playgroud)
最后一个参数是从字符串开头开始old
被 - 替换的次数。new
有没有类似的从末尾开始的标准函数?
从Java切换后我在Kotlin中感到很舒服,并且无法找到如何结合错误消息使用Kotlin的断言功能.
听起来很简单,我只需要类似Java的东西
assert count > 5 : "value too small"
Run Code Online (Sandbox Code Playgroud)
我试过了
assert(count > 5, "value too small")
Run Code Online (Sandbox Code Playgroud)
但是,第二个论点需要() -> Any
.怎么实现呢?
另一个初学者对golang的问题:
我可以写:
for i := 0; i < 10; i++ {}
Run Code Online (Sandbox Code Playgroud)
但如果我想i
成为一个特定的类型int64
,显然我不应该写:
for var i int64 = 0; i < 10; i++ {}
Run Code Online (Sandbox Code Playgroud)
我很惊讶我无法在for循环的start语句中指定一个类型.我需要写这样的东西:
var i int64
for i = 0; i < 10; i++ {}
Run Code Online (Sandbox Code Playgroud)
我在这里错过了一点吗?它有什么解释吗?
该文档未涵盖用于将变量转换为字符串的语言环境.一个例子:
val d = 0.1234
val s = "$d"
Run Code Online (Sandbox Code Playgroud)
将s
是0.1234
或0,1234
反映我的机器的本地(de_AT
)?
有什么方法可以调整吗?
我需要将许多文件上传到S3,按顺序完成该作业需要几个小时.这正是Kotlin的新协程所擅长的,所以我想先给他们一次尝试,而不是再用一些基于线程的执行服务来摆弄.
这是我的(简化)代码:
fun upload(superTiles: Map<Int, Map<Int, SuperTile>>) = runBlocking {
val s3 = AmazonS3ClientBuilder.standard().withRegion("eu-west-1").build()
for ((x, ys) in superTiles) {
val jobs = mutableListOf<Deferred<Any>>()
for ((y, superTile) in ys) {
val job = async(CommonPool) {
uploadTile(s3, x, y, superTile)
}
jobs.add(job)
}
jobs.map { it.await() }
}
}
suspend fun uploadTile(s3: AmazonS3, x: Int, y: Int, superTile: SuperTile) {
val json: String = "{}"
val key = "$s3Prefix/x4/$z/$x/$y.json"
s3.putObject(PutObjectRequest("my_bucket", ByteArrayInputStream(json.toByteArray()), metadata))
}
Run Code Online (Sandbox Code Playgroud)
问题是:代码仍然非常慢,并且日志记录显示请求仍然按顺序执行:作业在创建下一个作业之前完成.只有极少数情况下(十分之一)我才能看到同时运行的工作.
为什么代码运行速度不快/同时?我能做些什么呢?
我有一个kotlin文件,其中包含几个程序包级别的函数,并且没有任何类。我想将日志记录添加到此类中,但是很难找到一种优雅的方式来给记录器一个标识符。
这是一个例子
package com.example.myproject.my_package
import org.slf4j.LoggerFactory
private val log = LoggerFactory.getLogger("com.example.myproject.my_package")
fun bla(term: String) {
log.info("invoked with $term")
}
Run Code Online (Sandbox Code Playgroud)
使用类找到良好的标识符有非常好的最佳实践:链接1 链接2。如果没有课程怎么办?
我想避免手动编写标识符,并在包名称更改时对其进行调整。有没有办法在kotlin中获得软件包名称?