小编Ale*_*xis的帖子

如何捕获netty中的所有异常

据我所知,netty通过覆盖方法exceptionCaught()来处理异常.但我想要的是一个可以处理所有异常的处理程序.所以,管道应该是这样的:

InboundExceptionHandler - inboundHandler1 - inboundHandler2 - outboundHandler1 - outboundHandler2 - OutboundExceptionHandler

这意味着我应该在头部和尾部分开的管道中放置2个异常处理程序.但我觉得它看起来很难看.任何更好的主意?

java exception-handling netty

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

在netty中ctx.write()和ctx.channel().write()之间有什么区别?

我注意到ctx与处理程序不同,即使这些处理程序位于同一个管道中,例如

    p.addLast("myHandler1", new MyHandler1());
    p.addLast("myHandler2", new MyHandler2());
Run Code Online (Sandbox Code Playgroud)

在MyHander1

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    System.err.println("My 1 ctx: " + ctx + " channel: " + ctx.channel());
    super.channelRead(ctx, msg);
}
Run Code Online (Sandbox Code Playgroud)

在MyHandler2中

@Override
protected void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    System.err.println("My 2 ctx: " + ctx + " channel: " + ctx.channel());
}
Run Code Online (Sandbox Code Playgroud)

和输出:

My 1 ctx: io.netty.channel.DefaultChannelHandlerContext@ba9340 channel: [id: 0xdfad3a16, /127.0.0.1:60887 => /127.0.0.1:8090] 
My 2 ctx: io.netty.channel.DefaultChannelHandlerContext@1551d7f channel: [id: 0xdfad3a16, /127.0.0.1:60887 => /127.0.0.1:8090]
Run Code Online (Sandbox Code Playgroud)

我注意到ctx是不同的,但通道是相同的

那么调用ctx.write()和ctx.channel().write()之间有什么区别吗?

java netty

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

为什么mmap()(内存映射文件)比read()更快

我最近正在研究Java NIO的MappedByteBuffer.我已经阅读了一些关于它的帖子,所有人都提到"mmap()比read()更快"

在我的结论中:

  1. 我对待MappedByteBuffer == Memory Mapped File == mmap()

  2. read()必须通过以下方式读取数据:磁盘文件 - >内核 - >应用程序,因此它具有上下文切换和缓冲区复制

  3. 他们都说mmap()比read()具有更少的复制或系统调用,但据我所知,它还需要在您第一次访问文件数据时从磁盘文件中读取.所以第一次读它:虚拟地址 - >内存 - >页面错误 - >磁盘文件 - >内核 - >内存.除了你可以随机访问它,最后3个步骤(磁盘文件 - >内核 - >内存)与read()完全相同,那么mmap()如何比read()更少复制或系统调用?

  4. mmap()和交换文件之间的关系是什么,os是否会将最少使用的内存文件数据放入交换(LRU)?因此,当您第二次访问这些数据时,操作系统会从交换但不是磁盘文件中检索它们(不需要复制到内核缓冲区),这就是为什么mmap()具有较少的复制和系统调用?

  5. 在java中,MappedByteBuffer是从堆中分配的(它是一个直接缓冲区).所以当你从MappedByteBuffer中读取时,是否意味着它需要从Java堆外部再添加一个额外的内存副本到java堆中?

谁能回答我的问题?谢谢 :)

c java linux io operating-system

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

导入的com.google.api.client无法在Eclipse中解析

我收到此错误:

The import com.google.api.client cannot be resolved

我的配置如下:

项目属性 - Android:

在此输入图像描述

Java构建路径:

在此输入图像描述

重新启动Eclipse后,我仍然会收到以下错误.

在此输入图像描述

有人可以帮忙吗?谢谢:D

java google-app-engine android

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

客户端在收到标题"200 OK"后请求超时时通过Squid接收什么

据我所知,squid会504 gateway timeout在发出请求超时时发送.但是,如果客户端已经收到响应头,该怎么办200 ok?我的意思是响应数据以分块编码的形式发回.

例如:头部"200 ok"身体部位"a"身体部位"b"身体部位"c".收到"200 ok"并且"a",请求超时发生后,这次鱿鱼会做什么,它会504 gateway timeout回发给客户端吗?如果是这样,客户端是否可以收到此标头,"504 gateway timeout"因为它已收到标头"200 ok"

proxy http squid

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

Gitlab - git的身份验证失败太多

自上周以来,我的命令行git无法正常工作,我记得的是我将一个本地文件夹初始化为git版本控制,并为其添加一个远程git参考.然后我的git无法推或拉.表明:

git clone git@gitlab.xxx.com:xxx/myproj.git myproj
Cloning into 'myproj'...
Received disconnect from 192.168.xxx.xxx: 2: Too many authentication failures for git
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)

有点奇怪的是,我在JetBrain Idea中的版本控制工作正常,它仍然可以拉动或推动那个无法拉入命令行的项目.

我之前已经将id_rsa.pub添加到gitlab,现在我再次重新添加它,但它不起作用.

我的ssh调试信息

ssh -v git@gitlab.xxx.com

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to gitlab.xxx.com [192.168.xxx.xxx] port 22.
debug1: Connection established.
debug1: identity file /Users/abc/.ssh/id_rsa type …
Run Code Online (Sandbox Code Playgroud)

git ssh gitlab

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

Hive查询太慢而且失败

我在Hive txt表中执行了"group by"查询

select day,count(*) from mts_order where source="MTS_REG_ORDER" group by day;
Run Code Online (Sandbox Code Playgroud)

但它显示:

    Error: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask. Vertex re-running, vertexName=Map 1, vertexId=vertex_1496722904961_13822_1_00Vertex re-running, vertexName=Map 1, vertexId=vertex_1496722904961_13822_1_00Vertex failed, vertexName=Reducer 2, vertexId=vertex_1496722904961_13822_1_01, diagnostics=[Task failed, taskId=task_1496722904961_13822_1_01_000222, diagnostics=[TaskAttempt 0 failed, info=[Error: Error while running task ( failure ) : org.apache.tez.runtime.library.common.shuffle.orderedgrouped.Shuffle$ShuffleError: error in shuffle in Fetcher_O {Map_1} #0
    at org.apache.tez.runtime.library.common.shuffle.orderedgrouped.Shuffle$RunShuffleCallable.callInternal(Shuffle.java:303)
    at org.apache.tez.runtime.library.common.shuffle.orderedgrouped.Shuffle$RunShuffleCallable.callInternal(Shuffle.java:285)
    at org.apache.tez.common.CallableWithNdc.call(CallableWithNdc.java:36)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Map_1: …
Run Code Online (Sandbox Code Playgroud)

hadoop hive hadoop-yarn tez

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

Guava CharMatcher中BREAKING_WHITESPACE和WHITESPACE之间有什么区别

在番石榴CharMatcher中有2个内部类BREAKING_WHITESPACE和WHITESPACE,BREAKING_WHITESPACE的定义是:一个空格,可以解释为单词之间的中断以进行格式化

这是什么意思?

谁能回答这个问题?

如果你能为diff提供一个例子,那就太好了

Thx提前

java whitespace guava

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

“ Socks代理”和“支持CONNECT请求的HTTP代理”之间有什么区别

我知道袜子代理是一个代理,它仅将流量中继到dst ip:port和一个支持CONNECT请求的HTTP代理,它也仅将流量中继到http请求标头中的dest主机。 (例如效率)?

https proxy networking http socks

5
推荐指数
4
解决办法
881
查看次数

Hive执行"insert into ... values ..."非常慢

我构建了一个hadoop和hive集群并尝试进行一些测试.但它真的很慢.

table value_count

+--------------------------------------------------------------+--+
|                        createtab_stmt                        |
+--------------------------------------------------------------+--+
| CREATE TABLE `value_count`(                                  |
|   `key` int,                                                 |
|   `count` int,                                               |
|   `create_date` date COMMENT '????')                         |
| COMMENT 'This is a group table'                              |
| ROW FORMAT SERDE                                             |
|   'org.apache.hadoop.hive.ql.io.orc.OrcSerde'                |
| STORED AS INPUTFORMAT                                        |
|   'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'          |
| OUTPUTFORMAT                                                 |
|   'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'         |
| LOCATION                                                     |
|   'hdfs://avatarcluster/hive/warehouse/test.db/value_count'  |
| TBLPROPERTIES (                                              |
|   'COLUMN_STATS_ACCURATE'='{\"BASIC_STATS\":\"true\"}',      |
|   'numFiles'='7',                                            |
|   'numRows'='7',                                             |
|   'rawDataSize'='448',                                       | …
Run Code Online (Sandbox Code Playgroud)

hadoop hive hadoop-yarn tez

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

netty分配的direct buffer的内存在哪里,内核空间还是用户空间?

我使用netty 4编写了一个简单的http客户端。据我所知,如果我使用HeapBuffer,当我在ChannelInboundHandler中获取ByteBuffer时

@Override
public void channelRead(ChannelHandlerContext ctx, final ByteBuf msg) throws Exception {
    // do nothing with the msg
}
Run Code Online (Sandbox Code Playgroud)

来自网站的字节应该是一个类似的过程(即使我不调用 ByteBuf.read)

socket -> kernel space -> user space
Run Code Online (Sandbox Code Playgroud)

这些字节应该在java堆中,对吧?

我想知道如果我使用DirectBuffer,当“channelRead”触发时,如果我不调用ByteBuf.read,来自网站的字节在哪里,它们是在内核空间还是在用户空间?它是否比我使用 HeapBuffer 少了一次内存复制(因为它不会复制到用户空间)?

java nio netty

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

如果在迭代时修改集合而不抛出ConcurrentModificationException,会发生什么

众所周知,我们不能在迭代它时修改非线程安全的集合,因为它会抛出一个ConcurrentModificationException

但我想知道的是,如果它不会抛出异常并让迭代和修改同时发生会发生什么.

例如,在迭代时从HashMap中删除一个元素.

  1. 去掉.由于删除操作不会改变HashMap中底层表的长度,我认为这不是迭代的问题.

  2. 放.也许问题只发生在Put触发器调整大小()时,因为基础表将被洗牌.

我的分析是否正确?

java iterator data-structures

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