精华内容
下载资源
问答
  • IDEA 在某个包下创建多个子,子不在同级问题
    万次阅读 多人点赞
    2017-12-05 12:34:15

    在使用IDEA创建包时会出现这样一种场景,就是当一个空包很长时,比如com.secbro.drools.model。这个时候如果你想给drools或model创建同级的包,你会发现,默认创建的包不是同级的,而是在model下面的。 
    如下图,如果创建drools同级的包: 
    这里写图片描述

    解决方案

    此问题的原因是包显示模式的问题,将默认的“Hide empty Middle Packages”勾选项去掉,这样就不会把中间空包进行合并,也就不存在上面的问题了。 
    这里写图片描述

    更多相关内容
  • 发现打出的jar里没有所要依赖的jar,于是又在IDEA控制台执行path/to/maven/bin/mvn assembly:assembly命令后,发现又一个个Download很多依赖的jar,而这些jar我原先就已经好了,此时打包的时间很,...

    在我利用Maven构建好一个工程后,在IDEA的Maven Projects里双击package,发现打出的jar包里没有所要依赖的jar包,于是又在IDEA控制台执行path/to/maven/bin/mvn assembly:assembly命令后,发现又一个个Download很多依赖的jar包,而这些jar包我原先就已经下好了,此时打包的时间很长很长,以至于我无法忍受。(此时pom.xml中已经有maven-scala-plugin、maven-compiler-plugin、maven-assembly-plugin、maven-surefire-plugin这些plugin)
    在这里插入图片描述
    经过一番搜寻,在pom.xml中添加maven-shade-plugin,最终的pom.xml如下:

    <build>
        <plugins>
          <plugin>
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <version>2.15.2</version>
            <executions>
              <execution>
                <goals>
                  <goal>compile</goal>
                  <goal>testCompile</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
    
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.3</version>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
            </configuration>
          </plugin>
    
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19</version>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
    
          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-shade-plugin</artifactId>
             <version>2.4.3</version>
             <executions>
                  <execution>
                    <phase>package</phase>
                    <goals>
                      <goal>shade</goal>
                    </goals>
                    <configuration>
                      <filters>
                        <filter>
                          <artifact>*:*</artifact>
                          <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                          </excludes>
                        </filter>
                      </filters>
                      <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                          <mainClass></mainClass>
                        </transformer>
                      </transformers>
                    </configuration>
                  </execution>
                </executions>
              </plugin>
        </plugins>
        <defaultGoal>compile</defaultGoal>
      </build>
    

    添加后等待Maven加载完,再次点击package,不一会儿Maven就打包完成,会打成两个jar包,一个是无依赖的jar即original-boya-1.0-SNAPSHOT.jar;一个是有依赖的jar即boya-1.0-SNAPSHOT.jar,里面包括了所依赖的其他jar包
    在这里插入图片描述

    展开全文
  • TCP 、UDP、IP的最大长度是多少?

    万次阅读 2017-08-10 12:01:18
    的长度
     

           对于UDP协议来说,整个包的最大长度为65535,其中包头长度是65535-20=65515; 

           对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS,Maxitum Segment Size)决定,MSS就是TCP数据包每次能够传  输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需  要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值  确定为这次连接的最大MSS值。 

    IP层: 

             对于IP协议来说,IP包的大小由MTU决定(IP数据包长度就是MTU-28(包头长度)。 MTU值越大,封包就越大,理论上可增加传送速率,但 MTU值又不能设得太大,因为封包太大,传送时出现错误的机会大增。一般默认的设置,PPPoE连接的最高MTU值是1492, 而以太网 (Ethernet)的最高MTU值则是1500,而在Internet上,默认的MTU大小是576字节。


           那么就一个问题, 用wireshark捕包。 为什么frame那一行是1514bytes?

         以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步吗+1字节帧开始定界符+6字节的目的MAC+6字节的源MAC+2字节的帧类型+1500+4字节的CRC校验


    按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢?原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、CRC校验之外的数据,其最大值是6+6+2+1500=1514。
       如下图:
     

    Preamble

    Destination MAC address

    Source MAC address

    Type/Length

    User Data

    Frame Check Sequence (FCS)

    8

    6

    6

    2

    46 - 1500

    4

    Allowed Packet Lengths

    Ethernet packets with less than the minimum 64 bytes for an Ethernet packet (header + user data + FCS) are padded to 64 bytes, which means that if there's less than 64-(14+4) = 46 bytes of user data, extra padding data is added to the packet.

    【注1】在wireshark中,捕捉到的ARP数据包的长度,很多时候是42bytes,有时候是60bytes。

    这个长度取决于发送ARP Request端的操作系统的ARP包编码方式【是否在ARP数据包末端添加18个0x00的padding】

    【注2】有的TCP或UDP数据包的长度也可能小于60bytes。

    这里用wireshark可以具体来分析看的,在过滤条件输入:frame.len<61
       可以看到包的大小有42的arp和54的tcp包
        
       

    展开全文
  • 最近开发中遇到以下:需要客户端建立一个链接,然后服务器端持有这个链接,当有时间变换(如任务的状态改变),需要后端将事件推送给任务对应的责任人。因为博主之前也研究过WebSocket,开发了个简单的聊天室,但是...

    最近开发中遇到以下:需要客户端建立一个链接,然后服务器端持有这个链接,当有时间变换(如任务的状态改变),需要后端将事件推送给任务对应的责任人。因为博主之前也研究过WebSocket,开发了个简单的聊天室,但是这次这次应用到实际,我就在想TCP的这个长连接在不发生异常的情况下可以维持多久?在思考这个问题时,我就在想Http建立的TCP短连接,是什么时候断开连接的?基于这个问题,我就写了个简单的测试用例,通过tcpdump来抓包,对长连接和短连接进行对比分析。

    ​ 下面我们来简单的介绍下长连接和短连接的概念。

    ​ 首先是TCP,三次握手建立连接,四次挥手释放连接,示意图如下:

    TCP连接建立和释放的过程图

    ​ 短连接就如上图所示,数据传输完成后,一般由客户端发起释放连接的信号,也可以看到,短连接是进行一次请求,请求结束后断开连接,那就回到上面令博主疑惑的问题了,建立连接我们都知道,Http请求到达服务器,就会立刻建立TCP连接,那是什么时候断开的呢?是服务器return了结果后立刻结束么,还是别的情况,别急,后面我们会来给大家讲解。

    ​ 长连接,和短连接最简单最直接的区别就是,他是为了服务器和客户端间的一个频繁的交互,之前的浏览器端定时的ajax轮询会消耗大量的资源,现在已经很少有人使用了;另一个,长连接比短连接更大的一个优势就是,服务器端可以维护和客户端建立的这个TCP通信的channel,这样就可以让服务器主动的给客户端发送数据,也等同于实现了全双工通信,这个也是相比ajax轮询更大的一个优势,可以实现事件的实时通知。

    基于上面所讲的,我们来分析下长连接和短连接的优缺点:

    1. 长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接;
    2. 长连接如果不主动关闭,这个连接会长久的存在,并且如果长连接滥用,或者不加任何限制,会导致连接数过多,会对服务器的产生较大的压力,因此长连接在使用时要慎用,做好评估和限制;
    3. 短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。

    ​ 下面,我们就开始使用tcpdump来进行抓包来分析上面让我们疑惑的两个问题,首先,我们启动服务端,长连接就是我们使用的WebSocket,短连接就是一个简单的无业务逻辑的一个接口,

    ​ 在电脑上启动tcpdump,命令如下,其中-w指定抓到的包的输入路径,如果没有-w的话,会将包输出到shell窗口:

    sudo tcpdump -i lo0 -w /tmp/tcpdump/1.pcap port 8080
    

    tcpdump命令的详解大家可以参考这篇博客:https://www.jianshu.com/p/b281964a8459

    ​ 本文为了更好的分析,将日志输出到文件,并使用wireshark软件进行分析,数据包如下:
    TCP长连接抓包分析
    ​ 从中我们可以看到,红框中的为TCP连接建立的过程,红色箭头是创建WebSocket的请求,后面我们可以看到,数据反而发送就是TCP和WebSocket协议了,后面客户端和服务端之间的数据发送就无须建立TCP连接了,这和我们预料的是一致。

    ​ 但是困扰我们的一个问题:长连接在不发生异常的情况下可以维持多久?经过博主的测试,4个小时是没有任何问题的,具体多久就没有继续测试啦。。。而且,这个连接的保持应该有客户端来进行,可以定时的检查连接的状态,如果链接断开,可以重新建立连接,这样可以保证连接的畅通,事件可以及时的有服务端推送到客户端。

    ​ 下面我们来分析短连接,大家也也在思考一下困扰我们的问题:TCP短连接是什么时候断开的?结果可能和你预期的不太一样,下面我们一起来看下:

    ​ 接口代码如下:

    @GetMapping("/create")
    public String onCreate(){
        log.info("---------1111");
        return "OK";
    }
    

    ​ 下面就是直接在浏览器上输入url,按下回车键,并请求五次,每次的时间间隔为3s左右,wireshark分析得到的数据包如下:

    HTTP请求抓包分析
    由上图我们可以看到,第一次调用接口时,创建了TCP连接,但是之后的每隔三秒的再次调用,是没有重新创建TCP连接的,而是使用了之前已经创建好的连接,最后,在经过一段时间后,TCP断开连接,因为wireshark中没有时间,我们截取原始的数据包来展示TCP断开连接的时间,
    TCP连接断开
    上图是一次Http请求的所有报文,也是一次TCP连接的建立和断开,从中我们可以看到,连接的建立和数据的发送很快就结束了,但是连接的断开时在数据发送结束差不多45s开始的,由客户端发送,ack 116,服务器端真正断开连接是在约一分钟后。

    ​ 是不是和你预料的结果不太一致呢?但是为什么会导致这个结果呢,大家看下面这张截图:
    在这里插入图片描述
    之前,在http/1.0中,一个服务器发送完http响应后,会断开TCP连接。但是这样每次请求都会重新建立和断开TCP连接,开销太大。所以虽然标准中没有设定,某些服务器对Connection:keep-alive的Header进行了支持。意思是说,完成这个HTTP请求后,不要断开HTTP请求使用的TCP连接。这样的好处是连接可以被重复使用,之后发送HTTP请求的时候就不用再重新建立TCP连接了。这也符合我们刚才截图中的结果,这样,如果我们频繁的请求,Http短连接也是可以满足需求的,可见在我们开发中,有很多问题都有人为我们考虑到了。

    ​ 我们可以做一个实验,修改请求头中的Connection,值改为close,这就需要我们在postMan中调用,结果如下图所示:
    在这里插入图片描述
    可以看到,连接的建立和断开非常的快,这也符合我们最开始的设想。

    讲到这里,大家对长连接和短连接应该都很明白了,迷惑我们的两个问题也都很清楚了,希望本文能对大家有所帮助,如果有什么疑问,欢迎评论留言交流。

    最后,原创不易,喜欢的话请点赞支持,谢谢。

    展开全文
  • 出于最近对im研究的兴趣,看到smack里有个30s发送一个空消息的线程,了解了关于心跳,keepalive的知识。 TCP的socket本身就是连接的,那么为什么还要心跳呢?搜索到的资料解释如下:一:内网机器如果不主动...
  • 、什么是连接

    千次阅读 2017-11-20 19:11:09
    HTTP1.1规定了默认保持连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST、不四次握手),等待在同域名继续用这通道传输数据;相反的就是短连接。  ...
  • 连接和端连接 心跳机制

    千次阅读 2017-08-15 22:45:29
    当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三次握手的,而释放则需要4次握手, ...
  • Wireshark抓分析一个耗时20秒的请求

    万次阅读 2018-04-08 17:38:08
    这篇博文分享的是我们针对一个耗时20秒的请求,用Wireshark进行抓分析的过程。请求的流程是这样的:客户端浏览器 -&gt; SLB(负载均衡) -&gt; ECS(云服务器) -&gt; SLB -&gt; 客户端浏览器。下面是...
  • Maven 下载jar时进度条时间不动

    千次阅读 2017-08-07 16:49:55
    博主是七年工作经验的软件狗,经常和Java、idea、maven这种奇奇怪怪的东西打交道。最近工作的时候,博主遇到了很奇怪的问题。...在进行build时,报大堆jar找不到,博主分析,应该是本地库中缺少ja
  • 环境: websphere8.5.5.13 + JDK...现象如图所示:上传war之后就会一直卡在第步页面,时间没有反应,查看系统进程,java进程CPU一直在100%之上; 查看日志: 日志显示多次报错: java.net.SocketTi...
  • 什么是心跳

    万次阅读 2017-11-10 20:06:10
    心跳就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳。   用来判断对方(设备,进程或其它网元)是否正常运行,采用定时发送简单的...
  • 计算机网络——网络抓实战

    千次阅读 多人点赞 2021-11-21 09:16:53
    摘要 本博文主要是将计算机网络中的利用的概念进行的验证核测试。 网络实战工具 linux :tcpdump window:Wireshark 这两者实际上是搭配使用的,先用 tcpdump ...tcpdump 在 Linux 如何抓? tcpdump 提供了大
  • 次网络丢问题排查的经历

    万次阅读 2019-09-06 10:25:18
    前两天,有一个同事跑来找我帮忙。说他们项目现场出现了一个奇怪的事情。在做性能测试的时候,发现偶尔会出现消息延迟增大的问题,有时候一条消息发出去,需要5秒钟才能够被对方收到。如此的延迟已经严重影响了...
  • War是什么??

    万次阅读 多人点赞 2019-03-03 18:37:35
    进行发布,打成war的好处是不会缺少目录,并且只管理好一个发布文件就好,并且tomcat服务器能够自动识别,将war放在tomcat容器的webapps,启动服务,即可运行该项目,该war会自动解压出一个同名的文件夹。...
  • Intellij IDEA创建(package)问题解决方案

    万次阅读 多人点赞 2017-08-05 20:02:09
    问题在使用IDEA创建时会出现这样一种场景,就是当一个时,比如com.secbro.drools.model。这个时候如果你想给drools或model创建同级的,你会发现,默认创建的不是同级的,而是在model下面的。 如图...
  • wireshark抓tcp长度的疑惑

    万次阅读 2015-03-21 15:21:55
    本来就是两条很普通的192.168.10.90发给195的fin,195回应ack,但是这两个的长度是挺诡异的,为什么一个是54,一个是60呢,而且查看60长度的,发现在TCP协议的数据区有6个字节的00。 那么这6个字节的00又是...
  • 通过抓工具抓APP就连不上网的解决方案

    万次阅读 多人点赞 2020-03-11 17:47:23
    笔者最近抓某款APP,使用了各种抓工具,但是只要通过抓工具,APP就连不上网络,自然就无法顺利获取APP的数据信息,很是匪夷所思,这到底是款何方神圣的APP。 不服气的我瞎折腾了7天时间,最终在逆向大神...
  • Android Studio 打包APK(详细版)

    万次阅读 多人点赞 2021-01-07 15:22:01
    Android Studio 打包APK前言正文总结 前言 ...  Android打包APK在开发中是必不可少的一个环节,相信你可能已经会了,或者在别的博客中看到过了,但是其实还有一些细节是你所不知道的。 总结 ...
  • tcpdump时间抓

    千次阅读 2013-04-02 09:05:24
    -W: 最多写入多少文件,编号从00到19,19号写满后,从00号文件重新开始循环写 -C: 每文件的大小上限,以M为单位;-C 20 -W 50 就是说,最多写入50pcap文件,每文件大小最大20M(总共最多占磁盘1G),...
  • Ubuntu制作deb的方法详解

    万次阅读 多人点赞 2016-10-16 12:55:27
    CSDN GitHub Ubuntudeb的方法详解 AderXCoding/system/tools/...1 认识deb1.1 认识debdeb是Unix系统(其实主要是Linux)的安装包,基于 tar ,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。
  • 最近遇到比较麻烦的事情,需要整个晚上甚至更时间启用Wireshark抓,分析网络是否有异常,甚至在抓的同时要开启迅雷等下载软件,或者进行VOIP通话等,鬼知道晚上抓的有多大。不管三七二十,启动wires
  • Charles抓不到,这篇绝对解决了!

    万次阅读 多人点赞 2019-08-26 19:51:56
    绝对 能解决Charles抓不到的问题!(MAC) 我是刚刚使用的charles工具,所以基本是都是跟着百度搜索的文章进行的安装和调试。但是由于不熟悉,就会出问题。如果你也是因为打开charles抓不到数据,下面这些方法绝对...
  • 手把手教你Charles抓工具使用

    万次阅读 多人点赞 2020-06-07 20:51:43
    Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, ...
  • MAC最好用的抓工具--charles简单操作教程

    万次阅读 多人点赞 2018-06-11 23:52:30
    那么什情况我们会需要使用抓工具呢,比如我想查看一个接口请求的参数、返回值,还有移动设备上的http请求、https请求,有了charles一下搞定,妈妈再也不用担心我的学习了,咳咳......,回归正题,介绍一下...
  • 最近很多同学,说面试的时候被问道,有没有用过什么抓工具,其实抓工具并没有什么很难的工具,...那么下面就给大家推荐几款抓工具,好好学习。 常见4种抓工具的对比 、httpwatch: 1.httpwatch与...
  • http请求与请求返回的是什么

    千次阅读 2016-10-31 16:19:19
    1 HTTP请求  HTTP请求(GET、POST等请求方法)由三个...下面一个HTTP请求(GET)的例子:  GET /index.jsp HTTP/1.1 Accept-Language: zh-cn Connection: Keep-Alive  Host: 1Array2.168.0.106 Content-
  • http之 半 粘包

    千次阅读 2018-12-24 18:11:35
    短连接: 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行次HTTP操作,就建立次连接,但任务结束就中断连接。 也可以这样说:短连接是指SOCKET连接后...连接指建立SOCKET连接后不管...
  • 一个简单的例子是std::tuple的声明: template class tuple; 这里的三个点“...”表示这个模板参数是变的。 有了这个强大的工具,我们可以编写更加丰富的函数,例如任意类型参数的printf等。由于这个技术还比较...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,624,517
精华内容 1,049,806
关键字:

下面长一个包是怎么回事