对于常生活中,我们要访问一个网站,首先就是输入域名,域名通过路由器传到DNS服务器,然后经过解析,然后服务器将解析后的目标服务器IP通过路由传给客户机,客户机再根据这个目标服务器的IP通过路由将请求传给目标服务器! IP层的特点:不可靠,无连接协议! 以上是大致介绍:下面来从IP层详细分析一下这之间的过程!先走1,走完再走2,最后按照路线3走! 当客户端发送请求时,从IP层面上,IP层首先将本机IP加到请求数据包中,然后,将目标地址加到数据包中,再通过链路层加上本机mac地址和下一个路由的mac地址,此时数据包就转换成了数据帧,数据帧通过网络传给目标mac的路由器后,路由器将数据帧中起始mac地址改为自身的起始mac地址,经过路由器解析IP层的域名服务器的地址(域名服务器地址是计算机已经配好的地址)选择下一次要走哪个路由器,然后将那个路由器的mac地址填在数据帧的目标路由mac地址的位置。将数据帧传至下一个路由在解析替换mac地址,直到域名解析服务器为止,域名解析服务器解析域名,将域名转换成请求服务器 继续阅读 >>


畅柯 18/11/30 23:21:00
前面已经将基本的哈夫曼编码和哈夫曼译码方法结合一些简单的应用作了总结,了解详情,本有为这块也就这样了,没得玩了!最后发现自己Too Young!Too Simple!试着做了一个题,搞了大概一天吧!才搞出来!具体题目如下: 已知某段通信报文内容,对该报文进行哈弗曼编码,并计算平均码长。 (1)统计报文中各字符出现的频度。(字符集范围为52个英文字母,空格,英文句号。报文长度<=200) (2)构造一棵哈弗曼树,依次给出各字符编码结果。 (3)给字符串进行编码。 (4)给编码串进行译码。 (5)计算平均码长。 规定: (1)结点统计:以ASCII码的顺序依次排列,例如:空格,英文句号,大写字母,小写字母。 (2)构建哈弗曼树时:左子树根结点权值小于等于右子树根结点权值。 (3)选择的根节点权值相同时,前者构建为双亲的左孩子,后者为右孩子。 (4)生成编码时:左分支标0,右分支标1。 输入 第一部分:报文内容,以'#'结束。 第二部分:待译码的编码串。 输出 依次输出报文编码串、译码串、平均码长,三 继续阅读 >>


畅柯 18/11/30 20:14:07
文章目录什么是窗口窗口的目的滑动窗口发送窗口示意图ACK 里的重要信息如何滑动窗口大小和缓冲区的关系 什么是窗口 窗口是包含在 TCP 头里的一个16位的字段 窗口是一个已被发送方注入但还没有完成确认 (比如, 发送方已经发送, 却还没有收到 ACK) 的分组的集合, 窗口大小就是这个分组的数量. 滑动窗口在发送方和接收方又分为接收窗口和发送窗口 发送窗口记录了哪些分组可以被释放, 哪些分组正在等待 ACK. 和哪些分组还不能在排队等待发送 接收窗口记录着哪些分组已经被接收和确认, 哪些分组是是接下来期望收到的 (和分配多少内存来保存他们), 以及哪些分组即使被接受也会因为内存的限制而被抛弃 窗口的目的 我们知道数据的传输建立在网络层之上, 但是网络层是不可靠的, 他不关心数据是否已经正确到达对端, 上一篇说过 TCP 是建立在不可靠传输上的可靠协议 所以 TCP 要解决 : 数据包的丢失 数据包没有按顺序到达对端 (接收方收到的是乱序的) 网络实际的传输带宽和两端处理数据速度的不理想而导致可能出 继续阅读 >>


吕子健 18/11/29 23:22:55
触发器简介 什么是触发器 触发器这个名字实际上起的非常生动了,就是指的在数据库系统中发生某一个动作(比如增删改都是可选的动作)时自动触发预先设置好的另外一个动作,包括但不限于基本的增删改,再配合IF ELSE语句可以实现很多非常强大的功能。 触发器的优点 触发器的优点在于,可以使用简单的配置来实现复杂的功能,这些功能如果想要在应用层面去实现往往需要比较多的代码量。 触发器的缺点 触发器有一个显而易见的缺点,尤其是在MySQL中,由于MySQL仅支持行触发模式,假如数据库系统中现在有一条触发器的功能是:当前表有新数据插入时,将数据同时插入另外一张表,此时,如果我们使用INSERT语句一次性向当前表中插入一千条数据(使用类似于INSERT INTO cur_table(id,name) VALUES(1,’周一‘) (2,'周二')....(1000,'周一千')的批量插入语句),由于行触发的缘故,我们设定的插入触发器将会被触发1000次,这将带来严重的性能问题! 因此,在对性能有要求的场景下不要使用 继续阅读 >>


刘付杰 18/11/26 17:03:20
之前写了好多博客,本以为17级不会有群博了,就自然的将博客当成自己畅所欲言的地方!今天早上进小组群博看了,什么时候17级全已经加到群博里面了!!!此时的我,怎么说呢?“忍一时越想越气,退一步越想越亏”,开玩笑的,不过本来我真本着我的博客给我自己看的想法写的博客,这下无死角的曝光了,所以赶紧把以前比较坑的博文该删的删,该改的改,肃清一切垃圾博文!天真的觉得这就行了,但群博里面的文章还是以前的垃圾文章,哎,删不了,以前的就算了,在这里给读者道个歉,真抱歉以后一定好好做总结。好了,欢迎大家浏览我们的群博!在浏览时请理智的避开我的文章!本人姓 畅! 作者:qq_41681241 发表于 2018/11/26 14:22:30 原文链接 https://blog.csdn.net/qq_41681241/article/details/84540936 继续阅读 >>


畅柯 18/11/26 14:22:30
Java中,想要创建一个线程池有两种方式,分别是使用Executors的工厂方法创建和直接使用ThreadPoolExecutor去创建一个线程池。 在阿里巴巴开发手册中有讲,在有多线程开发的需求时,强制使用线程池,避免因为“过度切换”而引起的资源耗尽问题,并且创建线程池时需通过ThreadPoolExecutor的方式去创建。原文如下: 【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。 说明:使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。 【强制】线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 说明:Executors返回的线程池对象的弊端如下: 1)FixedThreadPool和SingleThreadPool:   允许的请 继续阅读 >>


祝一迪 18/11/26 12:05:26
布局管理器 FlowLayout流式布局管理器 BorderLayout 边界布局管理器 GridLayout 网格布局管理器 CardLayout卡片布局管理器 GridBagLayout 网格包布局管理器 容器中的布局通常是有布局管理器控制,每个Container都有一个与他相关的缺省布局管理器,Panel容器默认的是流式布局管理器,Frame默认是BorderLayout,我们可以通过调用setLayout来改变布局管理器。 package projects1; import java.awt.Button; public class Title { public static void main(String[] args) { MyFrame3 tt= new MyFrame3("example"); tt.init(); } } class MyFrame extends Frame{ public MyFrame(String title) { //设置框体标 继续阅读 >>


畅柯 18/11/25 22:15:16
十大经典排序算法(动图演示) 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。  0.2 算法复杂度 0.3 相关概念 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。 空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。  1、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素, 继续阅读 >>


胡锦雲 18/11/25 20:53:41
1.什么是监听器? web监听器是一种能监听某个对象状态变化的组件,重点在于监听域对象(比如ServletContext,HttpSession,ServletRequest)的变化。可以在某些动作前后增加处理 ,实现监控。 2.监听器的相关概念 事件源 :指被监听的对象 request session context 监听器: 监听事件源的对象 ,有8个 注册监听器: 监听器与事件源绑定 相应行为: 监听到事件源变化的时,去做什么事情 3.监听器的作用 统计在线人数,利用HttpSessionLisener 加载初始化信息:利用ServletContextListener 统计网站访问量 实现访问监控 4.监听器原理 使用代理设计模式,如下图                   图片来自高新强老师的网课 什么是代理设计模式? 简单来讲就是某一个对象发生某一个事件时,通知另一个对象,让另一个对象做某事。 5. 监听器的编写步骤 编写一个监听器类去实现监听器接口 继续阅读 >>


陈健源 18/11/25 16:48:57
今天又摸了一天鱼,对所学概率论等专业课真的提不起兴趣,上课光顾着看手机,上了一上午的课,看了一上午手机,真是当代败类大学生的典范呀!因为是星期四,不知道课程咋安排的,星期五一节课,老师有事,不上,所以直接放三天半的假!本来打算开黑,算了算了!!!要学的还是太多了,不敢那些没有意义的了!所以,中午一放学,我就在实验室完成了昨天没完成的博客,也是这几天一直纠结的网络编程方方面的问题,然后吃了午饭就跑图书馆去了!看一些网络方面的的书,在图书馆泡了一下午,不知道在图书馆睡了多长时间,反正书也没看多少,不过不是很亏,因为没有打游戏。希望自己尽快跳出王者之坑吧!下午七点就来到实验室,觉得自己一天不能没有收获呀!我先前看的APUE在宿舍,然后就不了一波C++,看的内容就是智能指针,我这人有个习惯,就是随即学,随即用,马上搞懂!然后记录防止遗忘! 好了,不扯淡了,我们知道c和c++相对于其他编程语言是相当自由的语言,给了用户很大的权限,可能是相信用户吧!它允许用户自由分配计算机内存,然后用户需手动释放,但是这就带来了一 继续阅读 >>


畅柯 18/11/23 12:10:12