Java9的新StackWalker功能让我意识到,如果可以将Eclipse(最好是IntelliJ)配置为使用可以修改IDE调试器中正常调用堆栈视图的自定义StackWalker,那将会很棒.
我想要做的是在调试JavaEE程序时隐藏例如特定的技术堆栈条目,但在许多第三方支持库中也是如此.一般情况下,我希望选项省略一些通常不感兴趣的特定(可自定义)堆栈帧,例如基于(通配符)包或类名.理想情况下,"步入"也会自动跳过这些帧并逐步进入"未抑制"堆栈帧.
有人知道Eclipse或IntelliJ中是否已有这样的功能.如果它没有专门使用StackWalker,但在概念上类似的东西是没关系的.或者您知道是否在任一IDE中计划了这样的功能.
我有以下代码:
public String myMethod(String keyValue) {
Map<String, Integer> keyValueToRowIndex = ...
Integer rowIndex = (keyValue == null) ? 0 : keyValueToRowIndex.get(keyValue);
if (rowIndex == null)
return null;
...
}
Run Code Online (Sandbox Code Playgroud)
Eclipse给出了"死代码"警告return null;.删除测试keyValue == null也删除了警告,但我没有看到额外的测试如何使return语句死代码.显然,如果地图中没有包含某些非null的条目keyValue,那么rowIndex仍然可以为null.或者我在这里遗漏了什么?
我已经看到了类似的Eclipse问题(例如这里),但这个问题似乎是一个不同的,更简单的问题.
是什么区别name,beanName和mappedName属性标注@EJB在EJB3.0?
我在网上发现了这个链接 -
http://www.tutorialspoint.com/ejb/ejb_annotations.htm
name-用于指定的名称将用于查找引用bean环境.beanName-用于提供名字的引用bean. mappedName-用于指定JNDI名称的引用bean. 如何在名称中name与beanName属性有什么不同?
我正在寻找一种方法来检索(在运行时)源顺序中的类的字段,以便我可以执行自己的"初始化处理",这将基于声明的顺序.我知道Javadoc Class.getDeclaredFields()明确声明没有订单得到保证.
关于SO的一些答案指向Javassist但我没有找到任何证据表明javassist在没有行号信息的情况下有任何此类保证.
然而,这个"源顺序"由Java编译器使用,因为此代码无法编译:
private int a = 10 * b;
private int b = 5;
Run Code Online (Sandbox Code Playgroud)
显然,b目前尚不知道a正在宣布的价值.
这个初始化顺序也必须存在于字节码中,因为在运行时初始化必须以相同的顺序发生(被授予,这只是这些边缘情况的要求:-(但这使我认为自然的事情是存储.class文件中的源顺序.
问题:
JVM/Byte Code如何以声明的顺序初始化成员字段,这些信息是否可以用于重建字段的源顺序?
有没有其他保证的方法来实现同样的目标.像Javassist这样的第三方工具可以,但必须"保证"或至少"在特定条件下保证".
是否有任何特定的Java实现可以保证顺序Class.getDeclaredFields()(可能在特定条件下(哪些))?
为了您的信息,我需要源订单来重建订单很重要的遗留语言的行为.我不喜欢明确添加顺序,例如通过添加数组或注释,因为我希望尽可能保持源的可读性.
- 编辑 - 一个重要的注意事项可能是我需要"遍历"的字段都将被注释,例如@MyComplexType(len = 4).父类将需要此元信息来构造一种内存映射.然而,我不想用订购信息来混淆这个注释,因为我发现这会妨碍可读性和可维护性.
我使用以下 log4j2 配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5.5level %-60.60logger - %msg%n" />
<Filters>
<ThresholdFilter level="info" onMatch="ACCEPT"
onMismatch="DENY" />
</Filters>
</Console>
<RollingFile name="RollingFile"
fileName="${sys:log.file}"
filePattern="${sys:log.parent.path}\$${date:yyyy-MM}\${sys:log.file.name}-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>
%d{yyy-MM-dd HH:mm:ss.SSS} [%30.30t]%-10.10level%-60.60logger - %msg%n
</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="60 MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="RollingFile" />
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
当文件位置作为命令行参数传递时,系统参数被设置,然后函数 reconfigureLog() 设置属性
public static void reconfigureLog(String logPath)
{
File logFile = new File(logPath);
System.setProperty("log.file", logPath);
System.setProperty("log.parent.path", logFile.getParent()); …Run Code Online (Sandbox Code Playgroud) I'm experimenting with standalone JPA and JTA/XA transaction management provided by Atomikos.
My simple unit test persists 3 records, wrapped in a JTA UserTransaction.
When using H2 as backing database, the test works fine.
When using MySQL as the backing database, the second persist throws this exception:
com.mysql.jdbc.jdbc2.optional.MysqlXAException: XAER_INVAL: Invalid arguments (or unsupported command)
(see full stack trace and logging below). The log file gives more detail:
WARNING: XA resource 'jdbc/mysqlDs': resume for XID '3139322E3136382E31342E3131372E746D30303030323030303831:3139322E3136382E31342E3131372E746D32' raised -5: invalid arguments were …
如果内容长度未知,则 AmazonS3Client 和 TransferManager 将内容缓存在内存中,导致内存不足异常。
所以我想使用分段上传(低级 API)。但是我没有找到使用输入流上传的方法(示例在文件中)。
我尝试通过输入流但没有结果。
我的代码 ::(在 Vaadin 上传接收器中)
@Override
public OutputStream receiveUpload(final String filename, String mimeType) {
this.fileName=filename;
PipedOutputStream pos=null;
try {
pos= new PipedOutputStream();
final InputStream is = new PipedInputStream(pos);
new Thread(){
@Override
public void run(){
try{
List<PartETag> partETags = new ArrayList<PartETag>();
InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(
bucketName, filename);
InitiateMultipartUploadResult initResponse =
s3.initiateMultipartUpload(initRequest);
long partSize = 5 * 1024 * 1024; // Set part size to 5 MB.
int size = 1024;
byte[] buffer = …Run Code Online (Sandbox Code Playgroud) 这个完美简单的测试失败了IllegalArgumentException("HOUR_OF_DAY 2 -> 3"),我没有理由.您可以将任何小时,天,月,年更改为任何其他值,并且测试成功.在我测试的任何JRE中都失败了.似乎是GregorgianCalendar实现中的内部问题?还是我错过了一些明显的东西?
import java.util.Calendar;
public class DateTest extends TestCase
{
/** test if 2011/03/27 02:30:00 converts to a valid date.
* shouldn't throw any exception, however this throws
* IllegalArgumentException("HOUR_OF_DAY 2 -> 3)
*/
@Test
public void testDate()
{
Calendar cal = Calendar.getInstance();
cal.setLenient(false);
cal.clear();
cal.set(Calendar.SECOND, 00);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.HOUR_OF_DAY, 02);
cal.set(Calendar.DAY_OF_MONTH, 27);
cal.set(Calendar.MONTH, 03 - 1); // needs to be 0-based
cal.set(Calendar.YEAR, 2011);
cal.getTime();
}
}
Run Code Online (Sandbox Code Playgroud) 我有2列的excel表:基线,当前.
基准价格和当前价格是实际价格.
例如:
base | curr
-----|-----
10 | 15
8 | 8
9 | 5
1 | 2
-----|-----
27 | 28
Run Code Online (Sandbox Code Playgroud)
现在,我需要差异,如果更高的当前价格..在我们的例子中,第一行和最后一行有更大的当前价格,所以我需要公式返回6(= 15-10 + 2-1).
有没有办法在excel公式中做到这一点?我需要遍历所有行并标记curr> base行,然后为每个结果执行求和(curr-base).
我用sumproduct和其他函数(sumifs等)尝试了它没有帮助...
任何想法如何解决这个问题?
谢谢!
我从 UI 传递语言代码和国家/地区代码来创建Locale对象。如何设置此 Locale 对象HttpServletRequest,以便在 Web 应用程序中的任何位置都可以使用此 Locale 对象HttpServletRequest.getLocale()?