从Effective Java第5章(泛型):
Run Code Online (Sandbox Code Playgroud)// 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);这两个声明中的哪一个更可取,为什么?在公共API中,第二个更好,因为它更简单.您传入一个列表 - 任何列表 - 并且该方法交换索引元素.没有类型参数需要担心.通常,如果类型参数在方法声明中仅出现一次,请将其替换为通配符.
我不明白为什么第二个选项对我的API客户来说更简单?我可以将相同的参数传递给第一和第二种方法.第二个需要辅助方法来进行通配符捕获.有人可以解释为什么推荐第二个?谢谢!
是否可以在Pycharm/Intellij Idea中的任何提交之前运行指定的脚本?我想确保测试没有被破坏.谢谢.
我在我的应用程序中有一个奇怪的django会话错误:有时(大约10次,每天约20000)用户的会话信息被删除.我通过日志文件跟踪它:在页面A,有用户会话的信息,在提交表单后,在下一页他的会话为空.我尝试了两种类型的存储:memcached + db和db,这个问题适用于它们.我尝试重现这些场景,但是正如我所说,所有这些都按预期工作,这种情况非常罕见.我还检查了这个问题是否存在于不同的用户,并且对于它们来说每次都不会重现.我没有任何想法如何找到根本原因,我不知道在这里发布什么作为描述.如果有人有任何想法,请告诉我.如果它很重要,我正在使用django 1.2 + FastCGI运行我的应用程序.谢谢!
UPD:我检查并看到在两个连续请求期间,使用的会话密钥没有改变,首先请求有一个实际的会话状态,而在第二个会话变量与空相关.
是否可以设置log4j来创建gziped日志文件而无需创建中间.log文件?有几种滚动策略(按日期滚动等),但它们首先创建解压缩文件.
我正在使用 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) 我需要在主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 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 在打印到日志中时不可读。是否可以调整此查询,以便使用嵌套选择?
我在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)
所以看起来缓冲区是在第一次回复后自动释放的。有这样的缓冲区的正确方法是什么?
当我需要将空值视为相等时,如何创建唯一约束。
为了
更改表 T1 添加约束 T1_UN 唯一 (nvl(C1, ' '))
我明白了
ORA-00904: : invalid identifier
Run Code Online (Sandbox Code Playgroud)
nvl 点数
谢谢!
为了防止出现问题,当我更新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) 我正在以这种方式进行异步 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) django ×3
java ×3
apache ×1
asynchronous ×1
browser ×1
caching ×1
client-side ×1
django-admin ×1
django-orm ×1
generics ×1
gunicorn ×1
log4j ×1
logging ×1
netty ×1
oracle ×1
pycharm ×1
python ×1
python-2.7 ×1
setuptools ×1