我将版本junit
升级到4.11并得到:
[WARNING] [deprecation] Assert in junit.framework has been deprecated
[WARNING] [deprecation] Assert in junit.framework has been deprecated
....
Run Code Online (Sandbox Code Playgroud)
如何迁移?
我第一次听到标记时读到:
我检查Logger对象的可用方法:
并找到接口:
我得到的更深入的信息:
但仍然困惑...请注意,我问为什么,而不是如何使用它们,所以这不是重复:
更新似乎在使用标记时,您还需要编写自定义Java代码,而不是在XML或.property文件中进行配置...
更新2来自http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator
Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
"This is a serious an error requiring the admin's attention",
new Exception("Just testing"));
Run Code Online (Sandbox Code Playgroud) function foo() {}
我进行搜索查询info bash
并查看POSIX的相关章节中的函数关键字,但没有找到.
什么是function
一些bash脚本中使用的关键字?这是一些不赞成的语法吗?
我是Java世界的新手(7年的低级平原C).
当我开始阅读Java相关网站时:
我对现有的术语感到困惑:
我找到了许多关于术语定义的资源(还有更多):
但是这些资源中的每一个都根据自己的目的来定义它们,在一般情况下我仍然无法区分模块和组件.
请在大图中解释这些术语的含义(可以是单一类平台,制作容器需要多少模块等).
更新2019年来自https://www.artima.com/lejava/articles/reuse3.html(我的重点介绍)
Bill Venners:框架,平台和工具包之间的区别是什么,以及不同的灵活性需求是什么?
Erich Gamma:通过平台,我将长期稳定性联系在一起.在平台上构建是安全的.平台提供兼容性保证.框架通常没有这种质量,我已经看到许多框架在稳定性方面的失败.如果你看一下Eclipse,是的,它包括框架,工具包,并提供平台API.所有这些都捆绑为插件.框架抽象并提供更高级别的默认功能.为此,框架需要得到控制.这种失控可导致有时被称为框架炎.
Bill Venners:工具包没有因为......
Erich Gamma:使用工具包,您可以创建并调用工具包对象并注册侦听器以对事件做出反应.你在掌控之中.框架试图控制并告诉您何时做什么.一个工具包为您提供了基石 …
如何将资金从一个账户转移到另一个账户?对于:
public class Account {
public Account(BigDecimal initialAmount) {...}
public BigDecimal getAmount() {...}
public void setAmount(BigDecimal amount) {...}
}
Run Code Online (Sandbox Code Playgroud)
我希望伪代码:
public boolean transfer(Account from, Account to, BigDecimal amount) {
BigDecimal fromValue = from.getAmount();
if (amount.compareTo(fromValue) < 0)
return false;
BigDecimal toValue = to.getAmount();
from.setAmount(fromValue.add(amount.negate()));
to.setAmount(toValue.add(amount));
return true;
}
Run Code Online (Sandbox Code Playgroud)
在多线程环境中安全地更新帐户,我看到危险情况如下:
acc1 --> acc2 || acc2 --> acc1
acc1 --> acc2 || acc2 --> acc3 || acc3 --> acc1
...
Run Code Online (Sandbox Code Playgroud)
最简单的解决方案是对共享对象进行阻止,但对于以下情况来说效率低下:
acc1 --> acc2 || acc3 --> acc4 and acc1 != acc3 …
Run Code Online (Sandbox Code Playgroud) 这段代码:
interface Config {
int MAX_CONN = 20;
}
Run Code Online (Sandbox Code Playgroud)
编译和按我的预期工作.它看起来像是:
interface Config {
public static final int MAX_CONN = 20;
}
Run Code Online (Sandbox Code Playgroud)
对于Java接口中的常量,"public static final"是多余的吗?这对于Java 1.1,1.2,1.3,1.4,...,1.8是否适用,或者是否在Java版本中进行了更改?
在Java中,Web应用程序捆绑在WAR中.默认情况下,许多servlet容器将使用WAR名称作为应用程序的上下文名称.
因此myapp.war被部署到http://example.com/myapp.
问题是webapp认为它的"root"是"root",或者只是"/",而HTML会认为应用程序的根目录是"/ myapp".
Servlet API和JSP具有帮助管理它的工具.例如,如果在servlet中执行:response.sendRedirect("/ mypage.jsp"),则容器将在上下文之前创建url:http://example.com/myapp/mypage.jsp ".
但是,您不能使用HTML中的IMG标记来执行此操作.如果你做<img src ="/ myimage.gif"/>你可能会得到404,因为你真正想要的是"/myapp/myimage.gif".
许多框架都具有可识别上下文的JSP标记,并且在JSP中有不同的方法来制作正确的URL(没有特别优雅的方法).
对于编码人员来说,跳出何时使用"App Relative"网址与绝对网址是一个很小的问题.
最后,还存在需要动态创建URL的Javascript代码以及CSS中的嵌入式URL(用于背景图像等)的问题.
我很好奇其他人使用什么技术来缓解和解决这个问题.许多人只是简单地将其编写并硬编码,无论是服务器根目录还是他们碰巧使用的任何上下文.我已经知道答案了,那不是我想要的.
你是做什么?
正在使用的技术堆栈:
Java 8 MapStruct:1.2.0.Final Lombok:1.16.18 IDE:IntelliJ - 已经安装了Lombok插件
@Getter
和@Setter
注释时,我遇到了问题,mapstruct
无法找到属性并说:Unknown property "id" in result type com.vg.once.dto.OneDto. Did you mean "null"?
以下是项目文件:
实体对象:One.java:
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class One {
private int id;
private Integer version;
private int projectId;
private String title;
private String code;
private int sortOrder;
}
Run Code Online (Sandbox Code Playgroud)
DTO对象:OneDTO.java:
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class OneDto {
private int id;
private …
Run Code Online (Sandbox Code Playgroud) intellij-idea lombok java-8 mapstruct intellij-lombok-plugin
安全代码new Set()
可能如下所示:
let items = [];
for (let item of set)
if (isBad(item))
items.push(item);
for (let item of items)
set.delete(item)
Run Code Online (Sandbox Code Playgroud)
我可以简化代码:
for (let item of set)
if (isBad(item))
set.delete(item);
Run Code Online (Sandbox Code Playgroud)
安全代码new Map()
可能如下所示:
let keys = [];
for (let [key, val] of map)
if (isBadKey(key) || isBadValue(val))
keys.push(key);
for (let key of keys)
map.delete(key)
Run Code Online (Sandbox Code Playgroud)
我可以简化代码:
for (let [key, val] of map)
if (isBadJey(key) || isBadValue(val))
map.delete(key)
Run Code Online (Sandbox Code Playgroud) 目前,我们使用FTP来维护构建工件分发和第三方产品(仅供内部使用).
工件是docs(HTML/pdf/chm/...),libs(.dll/.so/.a/.jar/...),程序(.exe/.jar/...)等等.它们不限于Java/.NET,可以来自不同的文化(固件,驱动程序,移动/工作站,GUI,Win/Linux/Mac/Solaris/AIX等).
为了使hierarhy orginize我们使用这样的路径:
ftp://3pp/VENDOR/PRODUCT/VERSION/... ftp://3pp/opensource/PACKAGE-x.x.x.tar.bz2 ftp://dist/PRODUCT/VERSION/...
为了维护工件的描述,我们使用README和CHANGES普通测试文件(reStructuredText).
这个架构中缺少什么?
我不是在寻找现有的解决方案.一些包管理器如rpm/dpkg,听说过Maven repo等......
请推荐Build Artifact Repository Managers.听到缺点和限制也很好.
UPDATE
java ×5
architecture ×1
artifacts ×1
bash ×1
contextpath ×1
ecmascript-6 ×1
enterprise ×1
final ×1
interface ×1
java-8 ×1
java-ee ×1
javascript ×1
jls ×1
jsp ×1
junit ×1
junit4 ×1
log4j ×1
logback ×1
logging ×1
lombok ×1
mapstruct ×1
repository ×1
servlets ×1
slf4j ×1
static ×1
terminology ×1