小编And*_*eas的帖子

使用Lambda表达式对多个属性进行排序

这是我的清单:

Name: Ben     || Age: 5 || Group: 1
Name: Andy    || Age: 6 || Group: 2
Name: Charlie || Age: 6 || Group: 2
Name: Ben     || Age: 5 || Group: 1
Name: Andy    || Age: 5 || Group: 2
Name: Charlie || Age: 5 || Group: 1
Run Code Online (Sandbox Code Playgroud)

我想对列表进行排序Group,如果Group等于那么Age,如果Age是等于那么Name.但到目前为止,我只能使用Lambda表达式按一个属性排序:

list.sort((Object o1, Object o2) -> o1.getGroup().compareTo(o2.getGroup()));
Run Code Online (Sandbox Code Playgroud)

如果我试试

o1.getGroup().compareTo(o2.getGroup()) && o1.getAge().compareTo(o2.getAge())
Run Code Online (Sandbox Code Playgroud)

事实证明错误......

java lambda java-8

7
推荐指数
2
解决办法
7160
查看次数

WebAppContext将参数传递给servlet构造函数

我在主类中有webAppContext,我有一个servlet,它有WebServlet注释和带args的构造函数.我怎么能把args从Main类传递给Servlet?

Main.java:

String webappDirLocation = "src/main/java/frontend/webapp/";
WebAppContext webAppContext = new WebAppContext();
webAppContext.setResourceBase("public_html");
webAppContext.setContextPath("/");
webAppContext.setDescriptor(webappDirLocation + "WEB-INF/web.xml");
webAppContext.setConfigurations(new Configuration[]{
                new AnnotationConfiguration(), new WebXmlConfiguration(),
                new WebInfConfiguration(),
                new PlusConfiguration(),
                new MetaInfConfiguration(),
                new FragmentConfiguration(),
                new EnvConfiguration()}
);
webAppContext.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*/classes/.*");
webAppContext.setParentLoaderPriority(true);
Run Code Online (Sandbox Code Playgroud)

web.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        metadata-complete="false"
        version="3.0">
</web-app>
Run Code Online (Sandbox Code Playgroud)

Servlet的:

@WebServlet(name = "WebSocketGameServlet", urlPatterns = {"/gameplay"})
public class WebSocketGameServlet extends WebSocketServlet {
    static final Logger logger = LogManager.getLogger(GameWebSocket.class);
    private final static int IDLE_TIME = 6000 * 1000;
    private AccountService accountService;
    private …
Run Code Online (Sandbox Code Playgroud)

java jetty servlet-3.0

5
推荐指数
1
解决办法
666
查看次数

Spring Boot:更改 PropertySource 的顺序

Spring Boot 使用 PropertySource 顺序,旨在允许合理地覆盖值,属性按以下顺序考虑:

  1. 命令行参数。
  2. 来自 SPRING_APPLICATION_JSON 的属性(嵌入环境变量或系统属性中的内联 JSON)
  3. 来自 java:comp/env 的 JNDI 属性。
  4. Java 系统属性 (System.getProperties())。
  5. 操作系统环境变量。
  6. 仅具有 random.* 属性的 RandomValuePropertySource。
  7. 打包 jar 之外的特定于配置文件的应用程序属性(application-{profile}.properties 和 YAML 变体)
  8. 打包在 jar 内的特定于配置文件的应用程序属性(application-{profile}.properties 和 YAML 变体)
  9. 打包的 jar 之外的应用程序属性(application.properties 和 YAML 变体)。
  10. 打包在 jar 内的应用程序属性(application.properties 和 YAML 变体)。
  11. @Configuration 类上的 @PropertySource 注释。
  12. 默认属性(使用 SpringApplication.setDefaultProperties 指定)。

但我不喜欢这个。我怎样才能改变它?

java spring

5
推荐指数
1
解决办法
7443
查看次数

如何在java中打印Hijrah月份?

任何枚举可以在几个月以下关联?

1 Muharram
2 Safar
3 Rabi\u02bb I
  Rabi\u02bb II
  Jumada I
  Jumada II
  Rajab
  Sha\u02bbban
  Ramadan
  Shawwal
  Dhu\u02bbl-Qi\u02bbdah
  Dhu\u02bbl-Hijjah
Run Code Online (Sandbox Code Playgroud)

java monthcalendar hijri

5
推荐指数
1
解决办法
89
查看次数

检查字符串是否仅包含特定数字(例如“ 111”)

需要找出给定的字符串是否仅仅包含特定数字-例如,“ 111”,“ 2”,“ 33”应返回true。

“ 12”应返回false。

空字符串(“”)也应返回true。

该字符串仅包含数字,没有其他字符。

编写了一个看起来有效的丑陋的Java正则表达式,但不禁认为应该以更短的方式编写它:

str.matches("1*|2*|3*|4*|5*|6*|7*|8*|9*|0*")
Run Code Online (Sandbox Code Playgroud)

有没有一种更简单,更优雅的方法来进行上述操作,而又避免了所有数字一一列出?

java regex string

5
推荐指数
1
解决办法
68
查看次数

使用 log4j 在控制台中单击类名和行号

log4j.properties下面显示使用记录事件的位置%l。带有完全限定的类名和方法名的输出有点太长了。

# root logger option
log4j.rootLogger=INFO, stdout, file

# redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%p: %d{yyyy-MM-dd HH:mm:ss} %l] %m%n

# redirect log messages to a log file, support file rolling
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p: %d{yyyy-MM-dd HH:mm:ss} %l] %m%n
Run Code Online (Sandbox Code Playgroud)

实际输出:

在此处输入图片说明

[INFO: 2015-08-30 14:24:07 com.mypackage.MyAction.execute(MyAction.java:64)] This is an INFO message.
Run Code Online (Sandbox Code Playgroud)

ConversionPattern属性文件中什么是正确的,所以它只需要位置的可点击部分?

预期输出:

[INFO: 2015-08-30 14:24:07 MyAction.java:64] This is an INFO message.
Run Code Online (Sandbox Code Playgroud)

在哪里:

MyAction.java:64 可在控制台中单击。

java eclipse logging log4j

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

如何修复“SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。

我有一个具有以下错误消息的应用程序:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Run Code Online (Sandbox Code Playgroud)

在我尝试为应用程序运行任何脚本后,会出现此消息。我发现,正如它所说,它不会创建日志,因此当出现故障时我会空手而归。

我在最接近 CentOS 和 Redhat 的 Amazon Linux 2 中运行它。

我找到了以下资源: 这个问题在这里 得到解决:http : //www.slf4j.org/codes.html#StaticLoggerBinder我可以从这里得到我需要的 jar:https : //repo1.maven.org/maven2/ org/slf4j/slf4j-simple/1.6.2/slf4j-simple-1.6.2.jar 将这个 jar 放入我的应用程序的 /lib 后,没有任何变化。

其他文章描述了将此文件添加到类路径。在 Linux 中,我得到了这个:

# java -classpath /opt/opendj/lib/slf4j-simple-1.6.2.jar org.slf4j.impl.StaticLoggerBinder
Error: Could not find or load main class org.slf4j.impl.StaticLoggerBinder
# java -jar /opt/opendj/lib/slf4j-simple-1.6.2.jar org.slf4j.impl.StaticLoggerBinder
no main manifest attribute, in /opt/opendj/lib/slf4j-simple-1.6.2.jar
Run Code Online (Sandbox Code Playgroud)

我是否试图将其添加到类路径中?

如果需要,您可以通过执行以下操作来重现此问题: 重现行为的步骤:在 CentOS 或 …

java libraries

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

当文档中某处存在异常大的值时,SAX解析器读取XML元素的一部分

我使用SAX解析器从大型XML文件中读取一些元素.下面是我为此目的使用的示例XML和SAX解析器代码.

<someOtherElement>231</someOtherElement>
<someMoreOtherElement>1233.00213</someMoreOtherElement>
...
<elementToRead1>31.0.1</elementToRead1>
<elementToRead2>ABCD-XYZ-1.0</elementToRead2>
Run Code Online (Sandbox Code Playgroud)

解析器代码:

public class MyHandler extends DefaultHandler {

    private String elementToRead1

    private Boolean flag1 = false;

    private String elementToRead2

    private Boolean flag2 = false;

    public void readValues(final String xmlString) throws XMLParseException {
        SAXXMLParser.parseString(xmlString, this);
    }

    @Override
    public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) {

        if (""elementToRead1"".equals(qName)) {
            flag1 = true;
        }

        if (""elementToRead2"".equals(qName)) {
            flag2 = true;
        }
    }

    @Override
    public void characters(final char ch[], final int start, …
Run Code Online (Sandbox Code Playgroud)

java sax saxparser

3
推荐指数
1
解决办法
1169
查看次数

从特定线程请求堆栈跟踪是否需要所有线程都处于安全点?

当通过Thread#getStackTrace()or从另一个线程请求堆栈跟踪时ThreadMXBean#getThreadInfo(long[], int),是否所有线程都必须进入安全点,从而必须等到所有其他线程都进入安全点?

这个博客似乎表明情况是这样的:

无论您是对单个线程还是所有线程进行采样,您都达到了全局安全点(至少在 OpenJDK 上,Zing 略有不同,但作为分析器供应商 OpenJDK 是您的假设。)

这意味着从单个线程获取堆栈跟踪与获取所有堆栈跟踪一样具有侵入性(就高开销而言,由于全局安全点命中的频率增加)。

但是对于 OpenJDK 来说,这实际上/仍然如此吗?您是否有任何指示为什么会这样或相关源代码?

java performance profiling jvmti

3
推荐指数
1
解决办法
208
查看次数

在java中相应地打印double值

我在Java中有双重值,如下所示:

2.3422
45.3267
25.0
Run Code Online (Sandbox Code Playgroud)

我想要打印的是:

2.34
45.32
25
Run Code Online (Sandbox Code Playgroud)

所以我使用了以下方法

DecimalFormat form=new DecimalFormat("#0.00");
form.format(value);
Run Code Online (Sandbox Code Playgroud)

但我面临的问题是25.0它打印25.0但是我想打印25只是我该怎么办?

请注意,将double值转换为整数将适用于25.0但是对于像2.3422这样的值会失败.

java double

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