0%

ARP 协议

ARP协议的作用

  • ARP是一种地址解析协议,ARP的存在是为了能在端到端通信时的寻找到端地址;ARP由设备的ip地址获取到设备的mac硬件地址,从而能跟该设备通信;
  • 在网络层,有ip地址和路由作为寻路的导向,即通过封装源地址和目的地址,以及路由,一个ip包在不考虑mac层的时候大概是这样传输的:
    端设备手机pc等–>(交换机)路由器—>下一个路由器—>下一个终端设备
    阅读全文 »

PF_PACKET的使用:

PF_PACKET简介:

是linux下的用于发送和接收二层(mac层)的套接字:

阅读全文 »

论代码的效率和可读性的权衡

高效代码可读性差:

有一些代码,占用额外内存小,即run in place,且执行的速度快,即复杂度O()低,但是可读性差,即使注释了,修改起来也容易出错,如:
对链表的操作:举一个leetcode的例子:(这个例子不是很典型,能说明问题即可)
reverse a linklist from m to n;
1->3->4->5->null and m,n(ex:2,4);
return 1->5->4->2->null;
上面例子一开始可以想到,头插法,或者将范围内的那一段用新的处理过的链表替换掉,即只需要处理该片段的头和尾部,当然可能还有其他方法,这里先不考虑;
于是,头插法不是很复杂,但是在这里不用额外的内存时,需要频繁的改变next指针和对pre元素做临时保存,使得代码可读性差,所以可以考虑以下方案:
在替换的内存小时,可以采用后者,让代码可读性高些,方便维护和(被替代~更容易被炒鱿鱼的风险哈哈)
在内存小时,采用前者,爱怎么指怎么指,看不懂不管哈哈哈

MTU

这是一篇关于MTU的介绍文章,MTU是MAC层中数据包的最大值,下面通过这几个部分来介绍:

理论部分:

1、MTU(Maximum Transmission Unit)如何定义:

  • 指的是通信协议中的某一层上面所能通过的最大数据包大小
  • 这里指mac层上面能通过的IP分组的最大值;我们知道,在tcp层传输数据的时候,在未指定上层使用http协议时,可以发送任何大小的数据。数据到了ip层时,需要加上ip头然后传递到mac层去加mac头,那在这个传递的过程中,包是不是越大越好,会做什么处理?
    阅读全文 »

c compile time memory layout

  标题:从一个简单的程序开始,介绍几种间接或直接debug出c程序内存布局的方法:

  概述:首先介绍几个概念:

阅读全文 »

c执行期内存布局和调试:

在生成目标文件后,还没被执行时还是一个静态文件,当被执行时,可能会进行,动态链接等
1、将目标文件装入:

阅读全文 »

android adb command

从android群英传中学习到额外的几个adb指令,是之前没接触到的:
adb list targets
adb install -r xx.apk -r为覆盖
adb shell df

阅读全文 »

一个典型的androidmanifest文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.ksx.helloworld">
<!-- more -->
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="hallo"//app的名字和显示在bar上的文字
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">//活动的注册
        <android:label="this is hallo">//会覆盖上面的
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />//声明为主活动

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>