我正在尝试在Mac OS X的命令行上启动IntelliJ以使用它的diff工具.理论上idea.sh diff file1 file2
应该工作.在实践中,该文件存在一些问题,我认为我已经解决了这个问题(删除了一些readlink等参数).
但是当它开始,它要我输入许可证信息(即使的IntelliJ的实例已经运行和许可证是存在的).这让我相信Mac OS X上的命令行界与非命令行界有某种分离?真的吗?
此外,当我选择30天eval时,它继续给我以下例外:
java.lang.IllegalArgumentException: Argument 0 for @NotNull parameter of com/intellij/openapi/fileEditor/impl/FileEditorProviderManagerImpl.getProviders must not be null
at com.intellij.openapi.fileEditor.impl.FileEditorProviderManagerImpl.getProviders(FileEditorProviderManagerImpl.java)
at com.intellij.openapi.diff.impl.highlighting.EditorPlaceHolder.setContent(EditorPlaceHolder.java:73)
at com.intellij.openapi.diff.impl.highlighting.DiffPanelState$1.run(DiffPanelState.java:38)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:864)
...
Run Code Online (Sandbox Code Playgroud) 我很想在我的发布版本中包含调试信息,这些信息可以发送给客户.据我所知,唯一的缺点是二进制文件大小增加了25%.优点是我可以获得一个可立即使用的崩溃转储,更容易分析.我愿意忍受25%的增长.我还缺少其他任何缺点吗?
这是一个C项目,我想要做的就是链接/调试/生成调试信息
我试图在功能编程的新jdk8版本中做一些看起来相对基本的东西,但是无法让它工作.我有这个工作代码:
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.*;
public class so1 {
public static void main() {
List<Number> l = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Callable<Object>> checks = l.stream().
map(n -> (Callable<Object>) () -> {
System.out.println(n);
return null;
}).
collect(Collectors.toList());
}
}
Run Code Online (Sandbox Code Playgroud)
它需要一个数字列表并生成一个可以打印出来的函数列表.然而,显式转换为Callable似乎是多余的.对我和IntelliJ来说似乎.我们都同意这也应该有效:
List<Callable<Object>> checks = l.stream().
map(n -> () -> {
System.out.println(n);
return null;
}).
collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
so1.java:10: error: incompatible types: cannot infer type-variable(s) R
List<Callable<Object>> checks = l.stream().map(n -> () -> {System.out.println(n); return null;}).collect(Collectors.toList());
^
(argument mismatch; bad return type …
Run Code Online (Sandbox Code Playgroud) 我认为对NaN进行任何数学运算的结果都应该给我一个NaN,但是 Math.round(Float.NaN) == 0
Math.round()的这种行为的基本原理是什么?
奇怪的是,C#的行为有所不同:http://msdn.microsoft.com/en-us/library/75ks3aby.aspx
我有一些代码,它们都是在Windows和Linux上构建的.此时Linux总是32位,但Windows是32位和64位.Windows希望time_t为64位,而Linux仍然将其作为32位.我很好,除了在某些地方time_t值转换为字符串.所以当time_T是32位时,它应该用%d完成,当它是64位时用%lld ...这样做的聪明方法是什么?另外:任何想法我如何找到time_t传递给printf样式函数来解决这个问题的所有地方?
编辑:我想出将TT_FMT声明为"%d"或"%lld",然后将我的printfs更改为printf("time:%d,register:blah")为printf("time:"TT_FMT",注册:blah")有更好的方法吗?我如何找到它们?
将代码从32位移植到64位.有很多地方
int len = strlen(pstr);
Run Code Online (Sandbox Code Playgroud)
这些都会产生警告,因为strlen()返回的是size_t,它是64位,而int仍然是32位.所以我一直在用它们取而代之
size_t len = strlen(pstr);
Run Code Online (Sandbox Code Playgroud)
但我只是意识到这是不安全的,因为size_t是无符号的,它可以被视为代码签名(我实际上碰到了一个导致问题的情况,谢谢你,单元测试!).
盲目地将strlen返回到(int)感觉很脏.或者也许它不应该?
所以问题是:这有一个优雅的解决方案吗?我可能在代码库中有一千行代码; 我不能手动检查它们中的每一个,测试覆盖率目前介于0.01和0.001%之间.
我正在尝试设置 structlog 并设置日志级别。我的代码如下所示:
import structlog
import logging
filepath=open("out.log",'a')
logging.basicConfig(
level=logging.INFO
)
structlog.configure(
processors=[structlog.stdlib.filter_by_level],
wrapper_class=structlog.BoundLogger,
context_class=dict,
logger_factory=structlog.PrintLoggerFactory(filepath),
)
logger = structlog.getLogger()
logger.info('test')
Run Code Online (Sandbox Code Playgroud)
这失败了:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.8/site-packages/structlog/_base.py", line 189, in _proxy_to_logger
args, kw = self._process_event(method_name, event, event_kw)
File "/usr/local/lib/python3.8/site-packages/structlog/_base.py", line 149, in _process_event
event_dict = proc(self._logger, method_name, event_dict)
File "/usr/local/lib/python3.8/site-packages/structlog/stdlib.py", line 381, in filter_by_level
if logger.isEnabledFor(_NAME_TO_LEVEL[name]):
AttributeError: 'PrintLogger' object has no attribute 'isEnabledFor'
Run Code Online (Sandbox Code Playgroud)
好吧,当然。我不应该将 PrintLogger 与 stdlib 处理器一起使用。但我想按日志级别进行过滤(因为这就是日志记录通常的工作方式,嗯?)那么我该怎么做呢?我想我需要使用其他记录器工厂,但是哪一个呢?当然 structlog.stdlib.LoggerFactory 可以工作,但它不会重定向到文件。
所以我说:好吧,我将创建自己的过滤器:
def …
Run Code Online (Sandbox Code Playgroud) 我有
@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration(defaultRollback = true, transactionManager = "transactionManager")
@Before
@Transactional
public void mySetup() {
// insert some records in db
}
@After
@Transactional
public void myTeardown() {
// delete some records
}
@Test
@Transactional
public void testMy() {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:mySetup,testMy和myTeardown都会在同一个事务中运行吗?看起来他们应该这样,但我得到一些奇怪的错误,这可能表明他们互相踩着.
我正在寻找一种用于记录和重放TCP流的一面进行测试的工具.我看到记录整个TCP流(服务器和客户端)的工具,用于测试防火墙等,但我正在寻找的是一种工具,它只记录客户端提交的流量(带有计时信息),然后重新提交到服务器进行测试.
我在DISTINCT上表现不佳.解释计划表明它正在进行SORT(GROUP BY),听起来不对.我希望某种HASH聚合能产生更好的结果.是否有提示告诉oracle使用HASH进行DISTINCT而不是排序?我在类似情况下使用了/*+ USE_HASH_AGGREGATION*/,但它不适用于DISTINCT.
所以这是我原来的查询:
SELECT
count(distinct userid) n, col
FROM users
GROUP BY col;
Run Code Online (Sandbox Code Playgroud)
用户有30M行,每个用户ID有12次.此查询需要70秒.
现在我们将其重写为
SELECT
count(userid) n, col
FROM
(SELECT distinct userid, col FROM users)
GROUP BY col
Run Code Online (Sandbox Code Playgroud)
这需要40秒.现在添加提示来做hash而不是sort:
SELECT
count(userid) n, col
FROM
(SELECT /*+ USE_HASH_AGGREGATION */ distinct userid, col FROM users)
GROUP BY col
Run Code Online (Sandbox Code Playgroud)
这需要10秒钟.
如果有人能够向我解释为什么会发生这种情况,或者我如何能够将第一个简单的查询打造成与第3个一样好的工作,那将是非常棒的.
我关心查询简单性的原因是因为实际生成了这些查询.
计划:1)慢:
----------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | OMem | 1Mem | Used-Mem | Used-Tmp|
-------------------------------------------------------------------------------------------------------------------- …
Run Code Online (Sandbox Code Playgroud) java ×3
32bit-64bit ×2
c ×2
portability ×2
build ×1
debugging ×1
java-8 ×1
junit ×1
lambda ×1
macos ×1
nan ×1
networking ×1
oracle ×1
python ×1
spring ×1
sql ×1
structlog ×1
tcp ×1
testing ×1
unit-testing ×1