我有HTML5音频元素
<audio src="/sounds/call.wav" id="audio1" repeated="0" repetitions="1" class="audio_sound"></audio>
Run Code Online (Sandbox Code Playgroud)
如果我尝试element.play()
在Chrome网络控制台中显示奇怪的错误.
未捕获(在promise中)DOMException:无法加载,因为找不到支持的源.
我没有找到任何线索,为什么会出现此错误以及如何解决它.
我有一个构建为 docker 镜像的 Maven 项目。我正在使用spotify/dockerfile-maven来构建这个镜像,并在 on 上自动将它推送到 docker.hub mvn clean install
。该build
阶段顺利通过。但是push
我有这个错误:
[ERROR] denied: requested access to the resource is denied
[WARNING] An attempt failed, will retry 1 more times
org.apache.maven.plugin.MojoExecutionException: Could not push image
at com.spotify.plugin.dockerfile.PushMojo.execute(PushMojo.java:90)
........
Caused by: com.spotify.docker.client.exceptions.DockerException: denied: requested access to the resource is denied
at com.spotify.plugin.dockerfile.LoggingProgressHandler.handleError(LoggingProgressHandler.java:105)
at com.spotify.plugin.dockerfile.LoggingProgressHandler.progress(LoggingProgressHandler.java:63)
......
Run Code Online (Sandbox Code Playgroud)
这是我的插件配置:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}-istio</repository>
<tag>latest</tag>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在minikube安装上运行的k8上运行两项服务。因此,我有服务Foo
和Bar
,因此在访问服务时,Foo
它必须触发服务Bar
才能获取数据。
这是Foo
服务
的部署配置foo-deployment.yaml
:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: foo-server
labels:
app: foo-server
spec:
replicas: 1
template:
metadata:
labels:
app: foo-server
serving: "true"
spec:
containers:
- name: foo-server
image: foo-container
env:
- name: BAR_SERVICE_URL
value: http://bar-server:8081
ports:
- containerPort: 8080
name: http
Run Code Online (Sandbox Code Playgroud)
foo-svc.yaml
:
apiVersion: v1
kind: Service
metadata:
name: foo-server
labels:
app: foo-server
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
name: http
selector:
app: foo-server …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的gradle项目,我想在Docker容器中构建
我有一个多级docker构建.第一阶段只是从github克隆项目.第二阶段必须建立项目,以便我可以在最后阶段运行它.但它失败了
FROM gradle:4.2.1-jdk8-alpine
WORKDIR /app
COPY --from=0 /app/myProject /app
RUN ./gradlew build --stacktrace
Run Code Online (Sandbox Code Playgroud)
该命令./gradlew build --stacktrace
无法执行,并因错误而失败:
FAILURE: Build failed with an exception.
* What went wrong:
Could not update /app/.gradle/3.5-rc-2/file-changes/last-build.bin
Run Code Online (Sandbox Code Playgroud)
和堆栈跟踪:
org.gradle.api.UncheckedIOException: Could not update /app/.gradle/3.5-rc-2/file-changes/last-build.bin
at org.gradle.api.internal.changedetection.state.FileTimeStampInspector.updateOnFinishBuild(FileTimeStampInspector.java:72)
at org.gradle.api.internal.changedetection.state.BuildScopeFileTimeStampInspector.stop(BuildScopeFileTimeStampInspector.java:38)
at org.gradle.internal.concurrent.CompositeStoppable.stop(CompositeStoppable.java:98)
.....
Caused by: java.io.FileNotFoundException: /app/.gradle/3.5-rc-2/file-changes/last-build.bin (Permission denied)
at java.io.FileOutputStream.open0(Native Method)
......
Run Code Online (Sandbox Code Playgroud)
为什么docker用户没有权限在工作目录中创建文件以及如何添加这些权限?简单RUN chmod 777 /app
不起作用告诉我:chmod: /app: Operation not permitted
我正在尝试清理 Mac 上的一些空间,但我注意到.gradle
文件夹需要4.49GB
. 它里面,我可以看到,有一个cache
是文件夹1.23GB
大,wrapper
这是3.18GB
大的。在wrapper
文件夹内我可以看到这样的结构:
gradle-2.13-all
gradle-3.1-bin
gradle-3.5-rc-2-bin
gradle-3.5.1-bin
gradle-4.2-all
gradle-4.2.1-bin
Run Code Online (Sandbox Code Playgroud)
等等。所以这看起来像是一些仍然存在的旧数据。我没有找到任何 gradle 命令来清理它的旧数据,也没有发现这些数据是否重要。所以问题是可以删除什么来释放一些空间?
我注意到save(T entity)
spring-data JpaRepository 中有一个非常奇怪的行为。
我有实体Foo foo
,我正在尝试使用 repository 保存它fooRepository.save(foo)
。我的问题是,保存后foo
,我传递给save()
方法的实例已更改。我不指望这个,我很奇怪我找不到任何与它相关的问题。
这是预期的行为吗?
我是 Kotlin 和协程的新手,我正在尝试了解协程 API,所以我很可能做错了什么。所以我有某种对象的列表,我试图对这些对象中的每一个应用一些长时间运行的处理。
val listOfFoos = listOf(Foo(1), ..., Foo(n))
listOfFoos.forEach { longRunningJob(it) }
fun longRunningJob(foo: Foo) {
runBlocking{
delay(2000) //hardcoded delay for testing
}
//do something else
}
Run Code Online (Sandbox Code Playgroud)
当然,这是并发运行它的完美候选者,所以这里使用的是好的旧线程:
listOfFoos.map { thread(start = true) { longRunningJob(it) } }.forEach { it.join() }
Run Code Online (Sandbox Code Playgroud)
当我测量它的执行时间时,它measureTimeMillis
给了我大约 2 秒的时间,这看起来非常好,因为每个都longRunningJob
并行运行。但是协程要好得多,因为它没有用于上下文切换的线程那样的开销。所以这是我使用协程的实现:
val deferredResults =
listOfFoos.map { GlobalScope.async { longRunningJob(it) } }
runBlocking {
deferredResults.awaitAll()
}
Run Code Online (Sandbox Code Playgroud)
但是这个实现在大约 4 秒内完成了执行,这根本不是我所期望的,如果我向列表中添加更多元素,执行时间也会增加。
那么我在这里做错了什么?
我有两个集成测试类。其中一个类依赖于与外部服务通信的 bean,所以我需要模拟这个 bean,这@MockBean
似乎是完美的。为了将一些种子注入数据库,我使用flyway
的是afterMigrate.sql
. 所以这里很热,它看起来像:
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
@SpringBootTest
@Transactional
@Rollback
class FooTest {
@Autowired
private MyService myService;
}
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
@SpringBootTest
@Transactional
@Rollback
class BarTest {
@MockBean
private ExternalService;
@Autowired
private MyService myService;
}
Run Code Online (Sandbox Code Playgroud)
并且afterMigrate.sql
:
INSERT INTO my_table (id, name) VALUES (1, 'John Doe')
Run Code Online (Sandbox Code Playgroud)
当我注释的问题似乎ExternatService
是@MockBean
因为现在的afretMigrate.sql
运行两次,我得到的错误:
java.lang.IllegalStateException: Failed to load ApplicationContext
....
Message : ERROR: duplicate key value violates unique constraint "my_table_pkey"
Run Code Online (Sandbox Code Playgroud)
当我将其更改@MockBean
为@Autowired
错误时,错误消失了,并且创建了上下文没有任何问题。此外,如果我BarTest …
当 spring 应用程序准备好时,我需要执行一些工作,类似于@Scheduled
但我希望它只执行一次。我找到了一些方法来做到这一点,例如@PostConstruct
在 bean 上使用,使用@EventListener
or InitializingBean
,但是,所有这些方法都不符合我的需要。如果在此逻辑的执行过程中出现问题,我想忽略它,以便应用程序无论如何都会启动。但是使用这些方法应用程序会崩溃。
当然,我可以用 包围逻辑,try-catch
它会起作用。但是,还有更优雅的方式吗?
我对Golang很新.我正在寻找一种方法来为编组和解组做一些自定义的东西json
.我找到了实现Marshaller
和Unmarshaller
接口的解决方案.
这是我struct
实现的接口(我也实现了Stringer):
type Data struct {
Foo string `json:"foo"`
bar string
}
func (d Data) MarshalJSON() ([]byte, error) {
return []byte("{\"foo\":\"test\",\"bar\":\"data\"}"), nil
}
func (d Data) String() string {
return fmt.Sprintf("Foo: %s, bar: %s", d.Foo, d.bar)
}
func (d Data) UnmarshalJSON(b []byte) error {
d.bar = "testtest"
d.Foo = "data"
return nil
}
Run Code Online (Sandbox Code Playgroud)
对于Marshaller
一切正常:
data := &Data{}
marshal, _ := json.Marshal(data)
fmt.Println(string(marshal))
Run Code Online (Sandbox Code Playgroud)
输出如预期:
{ "foo" 的: "测试", "杆": "数据"}
但是Unmarshaller并没有像我期望的那样工作: …
java ×4
spring ×3
docker ×2
gradle ×2
audio ×1
build.gradle ×1
chromium ×1
concurrency ×1
coroutine ×1
dns ×1
dockerhub ×1
flyway ×1
go ×1
hibernate ×1
html5 ×1
javascript ×1
jpa ×1
json ×1
kotlin ×1
kube-dns ×1
kubernetes ×1
macos ×1
marshalling ×1
maven ×1
minikube ×1
mockito ×1
spring-boot ×1
spring-data ×1
spring-test ×1
startup ×1
storage ×1