自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 资源 (7)
  • 收藏
  • 关注

原创 从0到1用java再造tcpip协议栈:使用责任链模式实现ICMP错误数据报解析

上一节我们讲述了ICMP协议的数据格式,说到了ICMP数据报包含两种类型的信息:错误消息和控制消息。同时我们详细解析了包含错误消息时的数据格式,本节我们使用代码来实现ICMP错误数据报的解析。 上图显示的是ICMP数据报包含错误消息时的格式。它一个特点是底层数据格式需要根据上头type和code两个字段指定,这两个字段不同数值的组合对应底层不同数据结构,由于type有125种取值,而对应固定的t...

2018-12-28 07:26:57 477 1

原创 从0到1用java再造tcpip协议栈:ICMP协议的原理和实现

绝大多数TCPIP传输协议基于IP寻址协议,然后建造在IP之上的TCP和UDP两种协议用于控制数据包的传输。问题在于这些协议只关注数据传输,在传输过程中如果出现错误信息,或者是网络出现某种异常情况需要数据发送双方做一些控制操作时,我们就需要在这些协议的控制范围之外传递一些有关数据发送的控制信息,这些数据的发送就必须依赖于控制数据报协议,也就是ICMP协议。 ICMP协议在保证数据的准确发送上发挥了...

2018-12-22 17:18:45 1102

原创 深度学习进阶:使用keras开发非串行化神经网络

我们当前所开发的网络都遵循同一个模式,那就是串行化。多个网络层按照前后次序折叠起来,数据从底层输入,然后从最高层输出,其结构如下图: 事实上这种形式很不灵活,在很多应用场景中不实用。有些应用场景需要网络同时接收多种输入,有些应用场景要求网络能同时又多种输出,有些需要网络内部的网络层发送分叉,像一颗多叉树那样。有一些更复杂的网络结构是,它同时接收来自不同网络的输出,试想我们想要预测二手车在市场上的...

2018-12-19 12:26:24 531

原创 从0到1用java再造tcpip协议栈:实现ARP协议层

经过前两节的准备,我们完成了数据链路层,已经具备了数据包接收和发送的基础设施,本机我们在此基础上实现上层协议,我们首先从实现ARP协议开始。先简单认识一下ARP协议,ARP是一种寻址协议,它要找寻目标的物理地址,连接在互联网上的设备有两种地址,一种叫IP,也就是我们常见的192.168.2.1这类地址,另一种叫物理地址,例如我们电脑上的mac地址。 为何要使用两种地址呢?这类似与个人的名字与身份证...

2018-12-13 17:55:51 974

原创 从0到1用java再造tcpip协议栈:使用jpacap模拟数据链路层

我们上一节成功使用jpcap获得了网卡硬件,我们要重新构造tcp/ip协议栈,那么就需要做两部分工作。一部分由上层协议完成,他们的工作是将要发送的数据进行封装,主要是在数据包上添加包头数据结构,包头里有很多控制字节,用于不同节点间进行数据传送时对传送过程的控制和调整,了解,掌握,实现每层数据协议的包头结构以及数据控制流程是我们系列课程的重点和难点。 有了上层数据封装后,剩下的就需要下层硬件将数据准...

2018-12-05 16:34:49 655

原创 使用java自造TCP/IP协议栈:使用JPCAP实现数据发包

从本节开始,我们打算使用java把tcp/ip网络协议栈重新实现一遍。这是一个不小的野心,自然也是一个不小的工程,好在前面顺利完成了操作系统,编译器两门课程的实现,这给了我极大的信心。整个互联网系统分为三大支柱,分别是操作系统,编译器,和网络协议,我们完成了前面三者,还剩第三者一直孤悬在那,直到今天我终于下定决心,尝试着把tcp/ip协议栈也重新实现一遍。 对于网络协议栈而言,绝大多数人都是”只见...

2018-12-05 16:33:44 2317 1

一个java实现的简易编译器

这是一个用java实现的简易的编译器,他能将一个具有加法和乘法的算术表达式编译成类汇编语言,这是我博文对应的代码,具体请参看我的博文: http://blog.csdn.net/tyler_download/article/details/50668983 例如输入 1+2*3+4; end end是必须的,表示输入结束,然后程序输出: t0 = 1 t1 = 2 t2 = 3 t1 *= t2 t0 += t1 t1 = 4 t0 += t1

2016-02-18

一个android 文本比对app的实现代码

这是一个android版的beyond comparer, 它的功能是找出两个文本的最大共同子串,其算法思想是LCS, 但我利用Hirschberg 的动态规划算法将存储复杂度由O(n^2)改为O(n), 具体详情请参看我的博文: http://blog.csdn.net/tyler_download/article/details/49820515

2015-11-16

Android 4.4 App Development Essential

亚马逊上五星级的android开发入门书,它将android开发的概念,流程娓娓道来,详细讲解了开发环境的搭建,调试,并逐步讲解开发的各个知识点,并提供动手实践的实例和程序,极大地降低了学习曲线,是想进入android移动开发的绝佳入门资料

2014-11-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除