小编MK.*_*MK.的帖子

Mac OS X上的命令行IntelliJ

我正在尝试在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)

macos intellij-idea

32
推荐指数
6
解决办法
3万
查看次数

Visual Studio:在发布版本中调试信息

我很想在我的发布版本中包含调试信息,这些信息可以发送给客户.据我所知,唯一的缺点是二进制文件大小增加了25%.优点是我可以获得一个可立即使用的崩溃转储,更容易分析.我愿意忍受25%的增长.我还缺少其他任何缺点吗?

这是一个C项目,我想要做的就是链接/调试/生成调试信息

debugging build debug-symbols visual-studio

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

java lambda返回一个lambda

我试图在功能编程的新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)

java lambda functional-programming java-8

21
推荐指数
2
解决办法
7732
查看次数

为什么Math.round()为NaN参数返回0?

我认为对NaN进行任何数学运算的结果都应该给我一个NaN,但是 Math.round(Float.NaN) == 0

Math.round()的这种行为的基本原理是什么?

奇怪的是,C#的行为有所不同:http://msdn.microsoft.com/en-us/library/75ks3aby.aspx

java floating-point nan

19
推荐指数
2
解决办法
3556
查看次数

便携式处理64/32位time_t的方法

我有一些代码,它们都是在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")有更好的方法吗?我如何找到它们?

c portability 32bit-64bit

16
推荐指数
2
解决办法
2万
查看次数

64位上的int vs size_t

将代码从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%之间.

c portability 32bit-64bit

16
推荐指数
3
解决办法
2万
查看次数

使用 structlog 设置日志级别

我正在尝试设置 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)

python structlog

13
推荐指数
2
解决办法
9451
查看次数

@Before和@Transactional

我有

@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都会在同一个事务中运行吗?看起来他们应该这样,但我得到一些奇怪的错误,这可能表明他们互相踩着.

java junit spring unit-testing

12
推荐指数
2
解决办法
5350
查看次数

tcp流重播工具

我正在寻找一种用于记录和重放TCP流的一面进行测试的工具.我看到记录整个TCP流(服务器和客户端)的工具,用于测试防火墙等,但我正在寻找的是一种工具,它只记录客户端提交的流量(带有计时信息),然后重新提交到服务器进行测试.

testing networking network-programming tcp

11
推荐指数
1
解决办法
8184
查看次数

oracle明确做排序

我在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)

sql oracle

10
推荐指数
1
解决办法
1733
查看次数