自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 【小菜学网络】集线器

采用以太网进行通信的主机,需要通过网线之类的介质连接到一起。那么,如何将多根网线连接在一起呢?最简单的方式是将所有网线接到一个 集线器 ( hub )上,如下图:集线器构造集线器内部构造很简单,可以理解成只是把所有网线连接起来而已。换句话讲,集线器充当了 共用导线 的功能。这样一来,从某个端口发送出去的电信号,将被传送到所有其他端口:注释:这里 端口 ( port )是指集线器的插口,或称为网口。换句话讲,从一台主机发送出来的数据,将被传送到所有其他主机上。 以 A

2021-01-21 08:47:23 274

原创 【小菜学网络】MAC地址详解

上一小节介绍了以太网帧的结构,以及帧中各个字段的作用。参与以太网通讯的实体,由以太网地址唯一标识。以太网地址也叫做 MAC 地址,我们对它仍知之甚少。以太网地址在不同场景,称谓也不一样,常用叫法包括这些:以太网地址MAC 地址硬件地址物理地址网卡地址网卡在以太网中,每台主机都需要安装一个物理设备并通过网线连接到一起:这个设备就是 网卡 ( NIC ),网络接口卡 ( network interface card )的简称。有些文献也将网卡称为 网络接口控制器 ( network

2021-01-13 18:58:36 2942

原创 【小菜学网络】以太网帧结构

上一小节,我们通过一个虚构的协议,初步认识了数据链路层的工作原理。数据链路层主要解决由若干主机组成的本地网络的通讯问题,主机寻址 和 信道复用 思想在其中发挥着关键作用。数据链路层有一个非常重要的协议—— 以太网协议 。接下来,我们一起来揭开它的神秘面纱!使用以太网协议进行通信的主机间,必须通过某种介质直接相连。通信介质可以是真实的物理设备,如网线、网卡等;也可以是通过虚拟化技术实现的虚拟设备。以太网帧在以太网中,数据通信的基本单位是 以太网帧 (&nbsp

2020-12-16 08:45:39 3234

原创 【小菜学网络】数据链路层概述

上一小节,我们以两台主机为例,讨论了一个理想化的物理层模型。 现在,我们将问题进一步延伸:多台主机如何实现两两通讯呢?我们以三台主机为例进行讨论:如上图,有 3 台主机,名字分别是: ant 、 bee 以及 cicada 。 为了实现主机间通讯,我们将三者连接到一根共用导线。每台主机都可以改变导线电平,也可以检测导线电平。 与此同时,假设在硬件层面,多方通讯冲突仲裁机制已经实现并且可用。 这样,是否就解决了多主机通讯问题呢?寻址假设, ant 向 bee 发送一个数据 11110000 (粗体)。

2020-12-15 08:25:39 178 1

原创 【小菜学网络】物理层概述

物理层概述通讯模型假设,计算机网络现在还没有被发明出来,作为计算机科学家的你,想在两台主机间传输数据,该怎么办?这时,你可能会想到,用一根电缆将两台主机连接起来:物理课大家都学过,电压可以分为 低电平 和 高电平 。因此,我们可以通过控制电平高低,来达到传输信息的目的: 主机①控制电缆电平的高低, 主机②检测电平的高低,主机间数据传输便实现了!用数学语言进一步抽象:以低电平表示 0 ,高电平表示 1 。这样就得到一个理想化的信道:

2020-12-10 21:44:38 127

原创 【Python源码剖析】对象模型概述

Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅。与其他面向对象编程语言相比, Python 有自己独特的一面。 这让很多开发人员在学习 Python 时,多少有些无所适从。 那么,Python 对象模型都有哪些特色呢?一切皆对象首先,在 Python 世界, 基本类型也是对象 ,与通常意义的“对象”形成一个有机统一。 换句话讲, Python 不再区别对待基本类型和对象,所有基本类型内部均由对象实现。 一个整数是一个对象,一个字符串也是一个对象:>>&gt

2020-06-08 09:57:34 187

原创 QUIC,快速UDP网络连接协议

QUIC,快速UDP网络连接协议QUIC ,即 快速UDP网络连接 ( Quick UDP Internet Connections ), 是由 Google 提出的实验性网络传输协议 ,位于 OSI 模型传输层。 QUIC 旨在解决 TCP 协议的缺陷,并最终替代 TCP 协议, 以减少数据传输,降低连接建立延迟时间,加快网页传输速度。QUIC 主要特点有:多流设计;低等待延迟;加密...

2020-03-19 11:57:16 1176

原创 一文说清文本编码那些事

一文说清文本编码那些事一直以来,编码问题像幽灵一般,不少开发人员都受过它的困扰。试想你请求一个数据,却得到一堆乱码,丈二和尚摸不着头脑。有同事质疑你的数据是乱码,虽然你很确定传了 UTF-8 ,却也无法自证清白,更别说帮同事 debug 了。有时,靠着百度和一手瞎调的手艺,乱码也能解决。尽管如此,还是很羡慕那些骨灰级程序员。为什么他们每次都能犀利地指出问题,并快速修复呢?原因在于,他们早就把...

2020-03-17 10:43:43 188

原创 用 Python 读写 Excel 表格

Python 可以读写 Excel 表格吗?当然可以。 Python 下有很多类库可以做到, openpyxl 就是其中的佼佼者。openpyxl 的设计非常漂亮 ,你一定会喜欢它!不信请往下看:工作簿开始 openpyxl 前,无需提前建好工作簿( Workbook )。 只需导入 Workbook 类,便可在内存中创建新工作簿并开始操作:>>> from openp...

2020-03-01 11:15:44 327

原创 Python装饰器高级用法

在Python中,装饰器一般用来修饰函数,实现公共功能,达到代码复用的目的。在函数定义前加上@xxxx,然后函数就注入了某些行为,很神奇!然而,这只是语法糖而已。原文地址:https://python-book.readthedocs.io微信公众号:小菜学编程 (coding-fan)场景假设,有一些工作函数,用来对数据做不同的处理:def work_bar(data): ...

2019-02-24 22:16:44 152

原创 VRRP虚IP漂移

简介VRRP 是 Virtual Router Redundancy Protocol 的简称,即 虚拟路由冗余协议 。原文地址:https://linux-network-programming.readthedocs.ioQQ交流群:Linux网络编程,群号:183196643欢迎关注我们的公众号:小菜学编程 (coding-fan)...

2019-02-22 11:30:51 1185

原创 Go语言之旅:基本类型

原文地址:https://learn-linux.readthedocs.io 欢迎关注我们的公众号:小菜学编程 (coding-fan)Go 内置了以下基本类型:布尔bool字符串string整数int int8 int16 int32 int64uint uint8 uint16 uint32 uint64字节byte , uint8 的别名U...

2018-08-14 13:29:45 161

原创 Go语言之旅:包

每个 Go 程序都是由一些包组成的。 原文地址:https://golang-book.readthedocs.io 欢迎关注我们的公众号:小菜学编程 (coding-fan)程序从 main 包开始执行。package mainimport ( "fmt" "math/rand")func main() { fmt.Println("...

2018-08-13 09:33:36 191

原创 Go语言之旅:快速开始

Go是一门优雅的语言,同时兼顾了开发效率和执行性能。那么,如何开发Go语言程序呢? 原文地址:https://golang-book.readthedocs.io 欢迎关注我们的公众号:小菜学编程 (coding-fan)安装开始开发之前,需要先搭建好开发环境。首先,需要安装 Go 开发工具, 点击:Go下载 。Go 提供多种下载版本:源码包 需要先编译才...

2018-08-12 11:20:56 1314

原创 网络七层协议之数据链路层

前一节讨论了一个理想化模型——两服务器通讯。 现在,我们把问题进一步拓展一下:多台机器如何实现两两通讯? 原文地址:https://learn-linux.readthedocs.io QQ交流群:Linux网络编程,群号:183196643 欢迎关注我们的公众号:小菜学编程 (coding-fan)多服务器通讯问题 注解 为了简化接下来的讨论,我...

2018-08-10 13:29:33 714

原创 网络七层协议之物理层

原文地址:https://learn-linux.readthedocs.io 。 QQ交流群:Linux网络编程,群号:183196643 欢迎关注我们的公众号:小菜学编程 (coding-fan)我们以一个非常简单的例子开始:两服务器通讯问题如上图,有两台服务器,分别是 Server 1 和 Server&

2018-08-09 18:24:18 428

原创 Linux文件描述符

在Linux通用I/O模型中,I/O操作系列函数(系统调用)都是围绕一个叫做文件描述符的整数展开。这不禁让人产生疑问:这个整数代表什么?一个数值代表一个文件吗?随便传一个整数进去调用可以吗? 原文地址:https://learn-linux.readthedocs.io 。 玩转Linux旧群已满,请加新群:278378501 。 欢迎关注我们的公众号:小菜学编程 (c...

2018-08-08 18:50:55 313

原创 Linux系统调用原理

操作系统通过系统调用为运行于其上的进程提供服务。当用户态进程发起一个系统调用, CPU 将切换到 内核态 并开始执行一个 内核函数 。 内核函数负责响应应用程序的要求,例如操作文件、进行网络通讯或者申请内存资源等。 原文地址:https://learn-linux.readthedocs.io 玩转Linux旧群已满,请...

2018-08-06 10:31:44 191

翻译 跳表:一种平衡树的概率性替代品

_ 跳表是一种可以替代平衡树的数据结构。跳表追求的是概率性平衡,而不是严格平衡。因此,跟平衡二叉树相比,跳表的插入和删除操作要简单得多,执行也更快。_二叉树可以用来实现字典和有序表等抽象数据结构。在元素随机插入的场景,二叉树可以很好应对。然而,在有序插入的情况下,二叉树就退化了(链表),性能非常差。如果有办法对待插入元素进行随机排列,二叉树大概率可以运行良好。大部分情况下,插入是在线进行的,因此随机

2017-06-20 09:30:47 1794

原创 Python代码热替换

为什么需要热替换代码re't

2014-04-21 20:53:19 2840

原创 网络爬虫实现原理

何谓网络爬虫网络爬虫就是

2014-04-20 13:10:00 1197

原创 面试题集锦

大端小端#include int main(int argc, char *argv[]){ int arr[] = {0x64636261, 0x65006667}; printf("%s\n", (char *)arr); return 0;}如上所示,这段代码输出什么?

2014-04-19 15:58:44 507

原创 HTTP协议简介

现在web发展如火如荼,web开发人员也越来越多,

2014-04-14 20:42:11 740

原创 Linux下套接字编程简例

下面上代码,首先sh

2014-04-14 14:40:40 620

原创 Linux系统调用

syscall#include #include #include #include int myprint(char *msg, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j){ uint64_t syswrite_no=1, ret; uint64_t write_fd=1,

2013-11-17 16:46:56 1138

空空如也

空空如也

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

TA关注的人

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