这是我的清单:
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)
事实证明错误......
我在主类中有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) Spring Boot 使用 PropertySource 顺序,旨在允许合理地覆盖值,属性按以下顺序考虑:
但我不喜欢这个。我怎样才能改变它?
任何枚举可以在几个月以下关联?
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) 需要找出给定的字符串是否仅仅包含特定数字-例如,“ 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)
有没有一种更简单,更优雅的方法来进行上述操作,而又避免了所有数字一一列出?
在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 可在控制台中单击。
我有一个具有以下错误消息的应用程序:
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 或 …
我使用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) 当通过Thread#getStackTrace()or从另一个线程请求堆栈跟踪时ThreadMXBean#getThreadInfo(long[], int),是否所有线程都必须进入安全点,从而必须等到所有其他线程都进入安全点?
这个博客似乎表明情况是这样的:
无论您是对单个线程还是所有线程进行采样,您都达到了全局安全点(至少在 OpenJDK 上,Zing 略有不同,但作为分析器供应商 OpenJDK 是您的假设。)
这意味着从单个线程获取堆栈跟踪与获取所有堆栈跟踪一样具有侵入性(就高开销而言,由于全局安全点命中的频率增加)。
但是对于 OpenJDK 来说,这实际上/仍然如此吗?您是否有任何指示为什么会这样或相关源代码?
我在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这样的值会失败.