小编Yan*_*ski的帖子

VirtualBox无法注册已存在的硬盘

我创建了一个虚拟磁盘文件VM_1_Ubuntu.vdi.然后我把它移到另一个文件夹中.我尝试更新VM设置(右键单击虚拟机 - >设置 - >存储 - >控制器SATA选项卡,VM_1_Ubuntu.vdi路径).我想设置一条新路.

它说无法注册已经存在的硬盘

virtualbox

131
推荐指数
6
解决办法
8万
查看次数

排序集的值

我试图对一组元素进行排序但是无法做到这一点.这是我正在尝试做的代码

public static void main(String [] args){
    Set<String> set=new HashSet<String>();
    set.add("12");
    set.add("15");
    set.add("5");
    List<String> list=asSortedList(set);
}

public static
<T extends Comparable<? super T>> List<T> asSortedList(Collection<T> c) {
  List<T> list = new ArrayList<T>(c);
  Collections.sort(list);
  return list;
}
Run Code Online (Sandbox Code Playgroud)

但这种或其他方式不起作用,因为它始终给我相同的顺序,它们已被填充12,15,5

java collections

39
推荐指数
3
解决办法
14万
查看次数

部署到Docker时外部化Spring Boot属性

在我的Spring Boot应用程序中,我想要将属性外部化以在Docker容器中运行.首次部署时,my-server/src/main/resources/application.yml应用程序按预期加载和使用当前所属的属性.一切正常.

但是,我的问题是我需要这些属性可以根据需要更新,所以我需要application.yml在Docker容器上访问一次该文件.但此时,它build/docker/在运行buildDocker任务之前未包含在目录中,因此在首次部署后不会复制或访问.

所以,我试过的是将Yaml文件复制到docker/构建目录,将其复制到可访问的目录(/opt/meanwhileinhell/myapp/conf),并使用该spring.config.location属性将配置的位置传递给我的Dockerfile中的Jar:

ENTRYPOINT  ["java",\
...
"-jar", "/app.jar",\
"--spring.config.location=classpath:${configDirectory}"]
Run Code Online (Sandbox Code Playgroud)

看看在Docker容器上运行的Command我可以看到这是预期的:

/app.jar --spring.config.location=classpath:/opt/meanwhileinhell/myapp/conf]
Run Code Online (Sandbox Code Playgroud)

但是,当我更新此文件中的属性并重新启动Docker容器时,它没有获取更改.文件权限是:

-rw-r--r-- 1 root root  618 Sep  5 13:59 application.yml
Run Code Online (Sandbox Code Playgroud)

文件规定:

配置自定义配置位置时,除默认位置外,还会使用它们.在默认位置之前搜索自定义位置.

我似乎无法弄清楚我做错了什么或错误解释,但更重要的是,这是将这种类型的Docker场景的配置外部化的正确方法吗?

docker spring-boot dockerfile spring-boot-configuration

22
推荐指数
6
解决办法
4万
查看次数

Flatmap嵌套集合

我有一个对象列表,其中一些可以是集合.我想得到一个普通物体流.

List<Object> objects = List.of(1, 2, "SomeString", List.of(3, 4, 5, 6), 
    7, List.of("a", "b", "c"),
    List.of(8, List.of(9, List.of(10))));
Run Code Online (Sandbox Code Playgroud)

我想获得一个包含元素的流.

1, 2, "SomeString", 3, 4, 5, 6, 7, "a", "b", "c", 8, 9, 10
Run Code Online (Sandbox Code Playgroud)

我试过了

Function<Object, Stream<Object>> mbjectToStreamMapper = null; //define it. I have not figured it out yet!
objects.stream().flatMap(ObjectToStreamMapper).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

我还检查了一个示例,该示例演示了如何使用递归函数来展平集合.但是,在此示例中.collect(Collectors.toList());用于保持中间结果.Collectors.toList()是一个终端操作,它将立即开始处理流.我想得到一个流,我可以稍后重复.


更新

我同意评论,有一个由不同性质的对象组成的流是一个可怕的想法.我只是为了简单起见写了这个问题.在现实生活中,我可以听到不同的事件,并从传入的流处理一些业务对象,其中一些可以发送对象流,其他 - 只是单个对象.

java java-stream flatmap

17
推荐指数
2
解决办法
635
查看次数

使用-Xmx和-Xms通过gradlew运行应用程序

我有一个申请.我通过它运行

gradlew run-app
Run Code Online (Sandbox Code Playgroud)

或调试

gradlew debug-app
Run Code Online (Sandbox Code Playgroud)

有用.如何将'-Xmx'参数传递给我运行的应用程序(调试)?没有edditing build.gradle文件可以这样做吗?

我发现这个 Gradle未知的命令行选项'-X'

我尝试时遇到类似的错误

gradlew debug-app -Xmx2000m
Run Code Online (Sandbox Code Playgroud)

错误

FAILURE: Build failed with an exception.

* What went wrong:
Problem configuring task :debug-app from command line.
> Unknown command-line option '-X'.
Run Code Online (Sandbox Code Playgroud)

我试图gradle.propertiesGRADLE_USER_HOME目录中创建一个文件(默认情况下,它是USER_HOME/.gradle).

org.gradle.jvmargs=-XX\:MaxHeapSize\=4256m -Xmx4256m -Xms2000m
Run Code Online (Sandbox Code Playgroud)

我也试过org.gradle.jvmargs=-Xmx2000m在项目文件夹中gradle.properties.

即便如此,当我运行应用程序时,我看到Commited Memory大小<520 MiB

在此输入图像描述

这是我将其作为普通Java应用程序运行的时候

在此输入图像描述

在第二种情况下,当我使用-Xms,-Xmx作为普通Java应用程序运行应用程序时,Commited Memory大小约为3.5 GiB,因为我传递了-Xmx4512m -Xms2512m参数.

jvm memory-management gradle gradlew

15
推荐指数
3
解决办法
2万
查看次数

如何在类路径中放置javaagent的类

我正在尝试开发一个javaagent,它可以在asm-4的帮助下编写代码.现在我遇到了一个非常基本的问题,javaagent的类加载器没有看到asm依赖,因此失败了.我是否必须提供一个jar-with-dependencies(又名maven build plugin),它包含代理所需的所有类,或者是否有另一种方法将类添加到java代理?直接在类路径中引用jar asm-all.jar没有帮助.构建jar-with-dependencies最初没有帮助,因为无法使用程序集插件设置Premain-Class属性.感谢帮助;-)

java classpath javaagents maven

10
推荐指数
2
解决办法
1万
查看次数

UseContainerSupport VM参数有什么作用?

此选项在docker文件中有什么作用?

ENTRYPOINT java -XX:+UseContainerSupport $JAVA_OPTIONS -jar /myapp.jar
Run Code Online (Sandbox Code Playgroud)

如果没有此参数,docker容器会启动吗?我检查了一篇文章

启用内存支持

但我仍然不清楚。

java docker

8
推荐指数
2
解决办法
2207
查看次数

将freemarker模板写入String输出

我想在String中有freemarker模板输出.我有一个freemarker模板文件commonTemplate.ftl.

<div>
    <div>
        <h1>${userDetails.name}</h1>
        ${userDetails.birthday}  ${userDetails.id}
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

和Java代码填充模型并将输出打印到控制台App.java.

public class App {

    private Service service = new Service();


    public void execute() {
        Configuration configuration = prepareConfiguration();
        // Load templates from resources/templatess.
        configuration.setClassForTemplateLoading(App.class, "/templates");

        try {
            Template template = configuration.getTemplate("commonTemplate.ftl");

            // Console output
            Writer out = new OutputStreamWriter(System.out);
            template.process(prepareData(), out);
            out.flush();

        } catch (IOException | TemplateException e) {
            throw new RuntimeException(e);
        }
    }

    private Configuration prepareConfiguration() {
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
        configuration.setDefaultEncoding("UTF-8");
        configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
        configuration.setLogTemplateExceptions(false);
        return …
Run Code Online (Sandbox Code Playgroud)

java freemarker

7
推荐指数
1
解决办法
1万
查看次数

httpservletrequest getCookies()或getHeader()

我想接受来自客户的数据.每种方法的优缺点是什么?

HttpServletRequest request = retriveRequest();
Cookie [] cookies = request.getCookies();
for (Cookie cookie : cookies) {
     if ("my-cookie-name".equals(cookie.getName())) {
          String value = cookie.getValue();
         //do something with the cookie's value.
     }
}
Run Code Online (Sandbox Code Playgroud)

要么

String request.getHeader("header-name");
Run Code Online (Sandbox Code Playgroud)

当我读到如何在HTTP协议中传递cookie?

Cookie在请求(客户端 - >服务器)和响应(服务器 - >客户端)中作为HTTP标头传递.

java servlets

6
推荐指数
1
解决办法
2万
查看次数

JDBC结果集检索LocalDateTime

我运行一个简单的查询来从MySQL数据库中检索一行.我得到了ResultSet,我需要从中检索一个LocalDateTime对象.我的数据库表.

CREATE TABLE `some_entity` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `title` varchar(45) NOT NULL,
  `text` varchar(255) DEFAULT NULL,
  `created_date_time` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

我需要通过id检索一些实体.

String SELECT = "SELECT ID, TITLE, TEXT, CREATED_DATE_TIME FROM some_entity WHERE some_entity.id = ?";
PreparedStatement selectPreparedStatement = connection.prepareStatement(SELECT);
try {
    selectPreparedStatement.setLong(1, id);
    ResultSet resultSet = selectPreparedStatement.executeQuery();
    if (resultSet.next()) {
        Long foundId = resultSet.getLong(1);
        String title = resultSet.getString(2);
        String text = resultSet.getString(3);
        LocalDateTime createdDateTime …
Run Code Online (Sandbox Code Playgroud)

java mysql jdbc java-time

4
推荐指数
1
解决办法
3050
查看次数