小编dbf*_*dbf的帖子

键入参数vs无界通配符

从Effective Java第5章(泛型):

// Two possible declarations for the swap method
public static <E> void swap(List<E> list, int i, int j);
public static void swap(List<?> list, int i, int j);
Run Code Online (Sandbox Code Playgroud)

这两个声明中的哪一个更可取,为什么?在公共API中,第二个更好,因为它更简单.您传入一个列表 - 任何列表 - 并且该方法交换索引元素.没有类型参数需要担心.通常,如果类型参数在方法声明中仅出现一次,请将其替换为通配符.

我不明白为什么第二个选项对我的API客户来说更简单?我可以将相同的参数传递给第一和第二种方法.第二个需要辅助方法来进行通配符捕获.有人可以解释为什么推荐第二个?谢谢!

java generics

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

如何在Pycharm/Intellij Idea中提交之前运行测试

是否可以在Pycharm/Intellij Idea中的任何提交之前运行指定的脚本?我想确保测试没有被破坏.谢谢.

intellij-idea pre-commit-hook pycharm

7
推荐指数
1
解决办法
3087
查看次数

django会话的棘手问题:有时会话信息被删除

我在我的应用程序中有一个奇怪的django会话错误:有时(大约10次,每天约20000)用户的会话信息被删除.我通过日志文件跟踪它:在页面A,有用户会话的信息,在提交表单后,在下一页他的会话为空.我尝试了两种类型的存储:memcached + db和db,这个问题适用于它们.我尝试重现这些场景,但是正如我所说,所有这些都按预期工作,这种情况非常罕见.我还检查了这个问题是否存在于不同的用户,并且对于它们来说每次都不会重现.我没有任何想法如何找到根本原因,我不知道在这里发布什么作为描述.如果有人有任何想法,请告诉我.如果它很重要,我正在使用django 1.2 + FastCGI运行我的应用程序.谢谢!

UPD:我检查并看到在两个连续请求期间,使用的会话密钥没有改变,首先请求有一个实际的会话状态,而在第二个会话变量与空相关.

django django-sessions

7
推荐指数
1
解决办法
1216
查看次数

log4j - 将日志文件压缩到gz上

是否可以设置log4j来创建gziped日志文件而无需创建中间.log文件?有几种滚动策略(按日期滚动等),但它们首先创建解压缩文件.

java logging log4j

5
推荐指数
1
解决办法
4510
查看次数

导入错误:需要“packaging.requirements”包

我正在使用 ubuntu 运行 VPS:

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty
Run Code Online (Sandbox Code Playgroud)

我试图将 Python 从 2.7.6 升级到 2.7.16。

刚刚升级 Gunicorn 库后无法启动

Traceback (most recent call last):
  File "/home/user/bin/python-2.7/bin/gunicorn", line 7, in <module>
    from gunicorn.app.wsgiapp import run
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 9, in <module>
    from gunicorn.app.base import Application
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/gunicorn/app/base.py", line 12, in <module>
    from gunicorn import util
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/gunicorn/util.py", line 12, in <module>
    import pkg_resources
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 82, in <module>
    __import__('pkg_resources.extern.packaging.requirements')
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/pkg_resources/extern/__init__.py", line 61, in load_module …
Run Code Online (Sandbox Code Playgroud)

python setuptools python-2.7 gunicorn

5
推荐指数
1
解决办法
2834
查看次数

显示Django管理员索引中每个模型的实例数

我需要在主django站点管理页面显示对象数量.例如,在我需要显示的模型列表中

Elephants (6) 
Run Code Online (Sandbox Code Playgroud)

代替

Elephants
Run Code Online (Sandbox Code Playgroud)

我将此代码添加到我的模型中:

class Elephant(models.Model):
    ....
    class Meta:
        verbose_name_plural = 'Elephants ' + '(' + unicode(count_elephants()) + ')'
Run Code Online (Sandbox Code Playgroud)

其中count_elephants()计算对象数.问题是verbose_name_plural是在服务器启动时计算的,在删除/插入对象时不会调用,因此该计算值变得无关紧要.是否有可能以正确的方式做到这一点?谢谢!

django django-admin

4
推荐指数
1
解决办法
1695
查看次数

Django orm 子查询 - 不带替换的子句

我需要使用 Django ORM 构建一个查询,在 SQL 中看起来像这样:

select * from A where id not in (select a_id from B where ... )
Run Code Online (Sandbox Code Playgroud)

我尝试使用这样的代码:

ids = B.objects.filter(...)
a_objects = A.object.exclude(id__in=Subquery(ids.values('a__id'))).all()
Run Code Online (Sandbox Code Playgroud)

问题是 Django 生成的查询不是嵌套选择,而是如下所示

select * from A where id not in (1, 2, 3, 4, 5 ....)
Run Code Online (Sandbox Code Playgroud)

where in 子句显式列出了应排除的所有 id,导致结果 sql 在打印到日志中时不可读。是否可以调整此查询,以便使用嵌套选择?

django django-orm

3
推荐指数
1
解决办法
545
查看次数

在netty中重用bytebuf

我在Netty有一个http服务。对于一组请求,在HTTP正文中仅使用“ {}”即可得到相同的答复。我有个主意是避免为每个这样的请求等创建新的缓冲区,所以我刚刚使用了:

private static final ByteBuf EMPTY_REPLY = Unpooled.copiedBuffer("{}", CharsetUtil.UTF_8);
Run Code Online (Sandbox Code Playgroud)

在我的SimpleChannelInboundHandler中。它只对第一个查询有效,之后我开始有

WARNING: Failed to mark a promise as success because it has failed already: DefaultChannelPromise@48c81b24(failure: io.netty.handler.codec.EncoderException: io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1), unnotified cause:
io.netty.handler.codec.EncoderException: io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
    at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:106)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
    at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:801)
    at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:814)
    at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:794)
    at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:831)
    at travel.ServerHandler.writeResult(ServerHandler.java:475)
Run Code Online (Sandbox Code Playgroud)

所以看起来缓冲区是在第一次回复后自动释放的。有这样的缓冲区的正确方法是什么?

netty

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

在 Oracle 中使用 nvl 创建唯一约束

当我需要将空值视为相等时,如何创建唯一约束。

为了

更改表 T1 添加约束 T1_UN 唯一 (nvl(C1, ' '))

我明白了

 ORA-00904: : invalid identifier
Run Code Online (Sandbox Code Playgroud)

nvl 点数

谢谢!

oracle unique-constraint

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

如何正确设置css/js静态缓存

为了防止出现问题,当我更新CSS/JS媒体文件和浏览器不要求新版本时,因为他们使用这个解决方案来缓存这些文件:https://github.com/jaddison/django-cachebuster,它会添加?<文件的时间戳>到CSS/JS文件名(用/media/main.css?20012931203128替换/media/main.css.我假设它会强制浏览器在更改时间戳(文件更新)时重新加载css文件并使用本地缓存版本但是我在Apache日志(以及firebug)中看到的是浏览器(至少是Firefox)为每次重新加载页面请求CSS/JS文件,即使在获得304代码之后,请参阅日志中的片段:

XXX.255.115.60 - - [24/Jul/2011:04:17:25 -0700] "GET /media/main.css?333900240611 HTTP/1.1" 304 172 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
XXX.255.115.60 - - [24/Jul/2011:04:17:26 -0700] "GET /media/main.js?270101180511 HTTP/1.1" 304 173 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
XXX.255.115.60 - - [24/Jul/2011:04:17:34 -0700] "GET /media/main.css?333900240611 HTTP/1.1" 304 172 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
XXX.255.115.60 - - [24/Jul/2011:04:17:35 -0700] "GET /media/main.js?270101180511 HTTP/1.1" 304 173 "" "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
XXX.255.115.60 - - …
Run Code Online (Sandbox Code Playgroud)

browser apache caching client-side

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

用另一个 CompletableFuture 结果完成 CompletableFuture

我正在以这种方式进行异步 http 调用

public CompletableFuture<String> doPost(String path, String json) {
        CompletableFuture<String> result = new CompletableFuture<>();
        Request request = new Request.Builder().url(this.address + path).post(RequestBody.create(json, JSON)).build();
        httpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(@NotNull Call call, @NotNull IOException e) {
                result.completeExceptionally(new TerminationException());
            }

            @Override
            public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                result.complete(response.body().string());
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

但响应可能包含我需要重试的代码之一,代码应该是

@Override
            public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                if (!retries.contains(responce.code()) {
                    result.complete(response.body().string());
                } else {
                    // Do retry here
                } …
Run Code Online (Sandbox Code Playgroud)

java asynchronous completable-future

0
推荐指数
1
解决办法
71
查看次数